diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml index 5d734ca4..ee7da062 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 e40b7be8..90150e96 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 b3f81064..3370dbfa 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 ac81fe63..faec26e2 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 e38e2222..01a50abd 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 db6b7e65..b6ac8a15 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 49169d81..0bcccee5 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 d48ae29f..d34de376 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 00000000..86143395 --- /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 00000000..608c2472 --- /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 00000000..dd228f17 --- /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 00000000..2adae022 --- /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 00000000..9b6c7fb2 --- /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 00000000..99e7f1fd --- /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 00000000..56b5a6f5 --- /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 00000000..390d99bb --- /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 00000000..689db6b9 --- /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 00000000..e8754b21 --- /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 00000000..6d059dae --- /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 00000000..57c07363 --- /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 00000000..c7cbbd24 --- /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 00000000..7f7c1b6a --- /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 00000000..6408342c --- /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 00000000..f6579e7a --- /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 00000000..6023cb4c --- /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 00000000..22d0fb42 --- /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 00000000..aa013df1 --- /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 00000000..cf57acfb --- /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 00000000..48a93f32 --- /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 00000000..37f9debd --- /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 00000000..4a31b424 --- /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 00000000..19d68f7a --- /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 00000000..9c867075 --- /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 00000000..74ef2b31 --- /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 00000000..7ac86b51 --- /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 00000000..d7697c48 --- /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 00000000..76cf7baf --- /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 00000000..ac3468c0 --- /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 00000000..dfb0642d --- /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 00000000..614d38c8 --- /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 00000000..7ef02afb --- /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 00000000..0d62e559 --- /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 00000000..7d658310 --- /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 00000000..5d57ab22 --- /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 00000000..48081666 --- /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 00000000..f64af1ea --- /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 00000000..c6781218 --- /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 00000000..59bddafa --- /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 00000000..7fae183f --- /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 00000000..d6fd9d31 --- /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 00000000..3942ef13 --- /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 00000000..656010c6 --- /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 87d12eb8..a2b1ffdb 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 4699c649..c08b36d1 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 19ab18e7..4b7b643d 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 00000000..975845ad --- /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 88230a3a..1e085e00 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==