@sentry/bundler-plugins 10.60.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +29 -0
- package/README.md +31 -0
- package/build/cjs/babel-plugin/constants.js +126 -0
- package/build/cjs/babel-plugin/constants.js.map +1 -0
- package/build/cjs/babel-plugin/experimental.js +334 -0
- package/build/cjs/babel-plugin/experimental.js.map +1 -0
- package/build/cjs/babel-plugin/index.js +508 -0
- package/build/cjs/babel-plugin/index.js.map +1 -0
- package/build/cjs/core/build-plugin-manager.js +583 -0
- package/build/cjs/core/build-plugin-manager.js.map +1 -0
- package/build/cjs/core/debug-id-upload.js +184 -0
- package/build/cjs/core/debug-id-upload.js.map +1 -0
- package/build/cjs/core/glob.js +10 -0
- package/build/cjs/core/glob.js.map +1 -0
- package/build/cjs/core/index.js +113 -0
- package/build/cjs/core/index.js.map +1 -0
- package/build/cjs/core/logger.js +29 -0
- package/build/cjs/core/logger.js.map +1 -0
- package/build/cjs/core/options-mapping.js +115 -0
- package/build/cjs/core/options-mapping.js.map +1 -0
- package/build/cjs/core/sentry/telemetry.js +127 -0
- package/build/cjs/core/sentry/telemetry.js.map +1 -0
- package/build/cjs/core/sentry/transports.js +108 -0
- package/build/cjs/core/sentry/transports.js.map +1 -0
- package/build/cjs/core/utils.js +298 -0
- package/build/cjs/core/utils.js.map +1 -0
- package/build/cjs/core/version.js +6 -0
- package/build/cjs/core/version.js.map +1 -0
- package/build/cjs/esbuild/index.js +208 -0
- package/build/cjs/esbuild/index.js.map +1 -0
- package/build/cjs/rollup/index.js +193 -0
- package/build/cjs/rollup/index.js.map +1 -0
- package/build/cjs/vite/index.js +28 -0
- package/build/cjs/vite/index.js.map +1 -0
- package/build/cjs/webpack/component-annotation-transform.js +29 -0
- package/build/cjs/webpack/component-annotation-transform.js.map +1 -0
- package/build/cjs/webpack/index.js +25 -0
- package/build/cjs/webpack/index.js.map +1 -0
- package/build/cjs/webpack/webpack4and5.js +185 -0
- package/build/cjs/webpack/webpack4and5.js.map +1 -0
- package/build/cjs/webpack/webpack5.js +11 -0
- package/build/cjs/webpack/webpack5.js.map +1 -0
- package/build/esm/babel-plugin/constants.js +123 -0
- package/build/esm/babel-plugin/constants.js.map +1 -0
- package/build/esm/babel-plugin/experimental.js +332 -0
- package/build/esm/babel-plugin/experimental.js.map +1 -0
- package/build/esm/babel-plugin/index.js +505 -0
- package/build/esm/babel-plugin/index.js.map +1 -0
- package/build/esm/core/build-plugin-manager.js +561 -0
- package/build/esm/core/build-plugin-manager.js.map +1 -0
- package/build/esm/core/debug-id-upload.js +161 -0
- package/build/esm/core/debug-id-upload.js.map +1 -0
- package/build/esm/core/glob.js +8 -0
- package/build/esm/core/glob.js.map +1 -0
- package/build/esm/core/index.js +82 -0
- package/build/esm/core/index.js.map +1 -0
- package/build/esm/core/logger.js +27 -0
- package/build/esm/core/logger.js.map +1 -0
- package/build/esm/core/options-mapping.js +111 -0
- package/build/esm/core/options-mapping.js.map +1 -0
- package/build/esm/core/sentry/telemetry.js +118 -0
- package/build/esm/core/sentry/telemetry.js.map +1 -0
- package/build/esm/core/sentry/transports.js +92 -0
- package/build/esm/core/sentry/transports.js.map +1 -0
- package/build/esm/core/utils.js +271 -0
- package/build/esm/core/utils.js.map +1 -0
- package/build/esm/core/version.js +4 -0
- package/build/esm/core/version.js.map +1 -0
- package/build/esm/esbuild/index.js +190 -0
- package/build/esm/esbuild/index.js.map +1 -0
- package/build/esm/package.json +1 -0
- package/build/esm/rollup/index.js +172 -0
- package/build/esm/rollup/index.js.map +1 -0
- package/build/esm/vite/index.js +24 -0
- package/build/esm/vite/index.js.map +1 -0
- package/build/esm/webpack/component-annotation-transform.js +27 -0
- package/build/esm/webpack/component-annotation-transform.js.map +1 -0
- package/build/esm/webpack/index.js +21 -0
- package/build/esm/webpack/index.js.map +1 -0
- package/build/esm/webpack/webpack4and5.js +168 -0
- package/build/esm/webpack/webpack4and5.js.map +1 -0
- package/build/esm/webpack/webpack5.js +8 -0
- package/build/esm/webpack/webpack5.js.map +1 -0
- package/build/types/babel-plugin/constants.d.ts +27 -0
- package/build/types/babel-plugin/constants.d.ts.map +1 -0
- package/build/types/babel-plugin/experimental.d.ts +51 -0
- package/build/types/babel-plugin/experimental.d.ts.map +1 -0
- package/build/types/babel-plugin/index.d.ts +56 -0
- package/build/types/babel-plugin/index.d.ts.map +1 -0
- package/build/types/core/build-plugin-manager.d.ts +82 -0
- package/build/types/core/build-plugin-manager.d.ts.map +1 -0
- package/build/types/core/debug-id-upload.d.ts +17 -0
- package/build/types/core/debug-id-upload.d.ts.map +1 -0
- package/build/types/core/glob.d.ts +5 -0
- package/build/types/core/glob.d.ts.map +1 -0
- package/build/types/core/index.d.ts +53 -0
- package/build/types/core/index.d.ts.map +1 -0
- package/build/types/core/logger.d.ts +14 -0
- package/build/types/core/logger.d.ts.map +1 -0
- package/build/types/core/options-mapping.d.ts +82 -0
- package/build/types/core/options-mapping.d.ts.map +1 -0
- package/build/types/core/sentry/telemetry.d.ts +14 -0
- package/build/types/core/sentry/telemetry.d.ts.map +1 -0
- package/build/types/core/sentry/transports.d.ts +5 -0
- package/build/types/core/sentry/transports.d.ts.map +1 -0
- package/build/types/core/types.d.ts +570 -0
- package/build/types/core/types.d.ts.map +1 -0
- package/build/types/core/utils.d.ts +87 -0
- package/build/types/core/utils.d.ts.map +1 -0
- package/build/types/core/version.d.ts +2 -0
- package/build/types/core/version.d.ts.map +1 -0
- package/build/types/esbuild/index.d.ts +6 -0
- package/build/types/esbuild/index.d.ts.map +1 -0
- package/build/types/rollup/index.d.ts +56 -0
- package/build/types/rollup/index.d.ts.map +1 -0
- package/build/types/vite/index.d.ts +9 -0
- package/build/types/vite/index.d.ts.map +1 -0
- package/build/types/webpack/component-annotation-transform.d.ts +11 -0
- package/build/types/webpack/component-annotation-transform.d.ts.map +1 -0
- package/build/types/webpack/index.d.ts +5 -0
- package/build/types/webpack/index.d.ts.map +1 -0
- package/build/types/webpack/webpack4and5.d.ts +99 -0
- package/build/types/webpack/webpack4and5.d.ts.map +1 -0
- package/build/types/webpack/webpack5.d.ts +5 -0
- package/build/types/webpack/webpack5.d.ts.map +1 -0
- package/build/types-ts3.8/babel-plugin/constants.d.ts +27 -0
- package/build/types-ts3.8/babel-plugin/experimental.d.ts +51 -0
- package/build/types-ts3.8/babel-plugin/index.d.ts +56 -0
- package/build/types-ts3.8/core/build-plugin-manager.d.ts +82 -0
- package/build/types-ts3.8/core/debug-id-upload.d.ts +17 -0
- package/build/types-ts3.8/core/glob.d.ts +5 -0
- package/build/types-ts3.8/core/index.d.ts +53 -0
- package/build/types-ts3.8/core/logger.d.ts +14 -0
- package/build/types-ts3.8/core/options-mapping.d.ts +82 -0
- package/build/types-ts3.8/core/sentry/telemetry.d.ts +14 -0
- package/build/types-ts3.8/core/sentry/transports.d.ts +5 -0
- package/build/types-ts3.8/core/types.d.ts +570 -0
- package/build/types-ts3.8/core/utils.d.ts +87 -0
- package/build/types-ts3.8/core/version.d.ts +2 -0
- package/build/types-ts3.8/esbuild/index.d.ts +6 -0
- package/build/types-ts3.8/rollup/index.d.ts +56 -0
- package/build/types-ts3.8/vite/index.d.ts +9 -0
- package/build/types-ts3.8/webpack/component-annotation-transform.d.ts +11 -0
- package/build/types-ts3.8/webpack/index.d.ts +5 -0
- package/build/types-ts3.8/webpack/webpack4and5.d.ts +99 -0
- package/build/types-ts3.8/webpack/webpack5.d.ts +5 -0
- package/package.json +153 -0
- package/sentry-esbuild-debugid-injection-file.js +20 -0
- package/sentry-release-injection-file.js +4 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"options-mapping.js","sources":["../../../src/core/options-mapping.ts"],"sourcesContent":["import type { Logger } from './logger';\nimport type {\n Options as UserOptions,\n SetCommitsOptions,\n RewriteSourcesHook,\n ResolveSourceMapHook,\n IncludeEntry,\n ModuleMetadata,\n ModuleMetadataCallback,\n} from './types';\nimport { determineReleaseName } from './utils';\n\nexport type NormalizedOptions = {\n org: string | undefined;\n project: string | string[] | undefined;\n authToken: string | undefined;\n url: string;\n headers: Record<string, string> | undefined;\n debug: boolean;\n silent: boolean;\n errorHandler: ((err: Error) => void) | undefined;\n telemetry: boolean;\n disable: boolean;\n sourcemaps:\n | {\n disable?: boolean | 'disable-upload';\n assets?: string | string[];\n ignore?: string | string[];\n rewriteSources?: RewriteSourcesHook;\n resolveSourceMap?: ResolveSourceMapHook;\n filesToDeleteAfterUpload?: string | string[] | Promise<string | string[] | undefined>;\n }\n | undefined;\n release: {\n name: string | undefined;\n inject: boolean;\n create: boolean;\n finalize: boolean;\n vcsRemote: string;\n setCommits:\n | (SetCommitsOptions & {\n shouldNotThrowOnFailure?: boolean;\n })\n | false\n | undefined;\n dist?: string;\n deploy?:\n | {\n env: string;\n started?: number | string;\n finished?: number | string;\n time?: number;\n name?: string;\n url?: string;\n }\n | false;\n uploadLegacySourcemaps?: string | IncludeEntry | Array<string | IncludeEntry>;\n };\n bundleSizeOptimizations:\n | {\n excludeDebugStatements?: boolean;\n excludeTracing?: boolean;\n excludeReplayCanvas?: boolean;\n excludeReplayShadowDom?: boolean;\n excludeReplayIframe?: boolean;\n excludeReplayWorker?: boolean;\n }\n | undefined;\n reactComponentAnnotation:\n | {\n enabled?: boolean;\n ignoredComponents?: string[];\n _experimentalInjectIntoHtml?: boolean;\n }\n | undefined;\n _metaOptions: {\n telemetry: {\n metaFramework: string | undefined;\n bundlerMajorVersion: string | undefined;\n };\n };\n applicationKey: string | undefined;\n moduleMetadata: ModuleMetadata | ModuleMetadataCallback | undefined;\n _experiments: {\n injectBuildInformation?: boolean;\n } & Record<string, unknown>;\n};\n\nexport const SENTRY_SAAS_URL = 'https://sentry.io';\n\n// oxlint-disable-next-line complexity\nexport function normalizeUserOptions(userOptions: UserOptions): NormalizedOptions {\n const options = {\n org: userOptions.org ?? process.env['SENTRY_ORG'],\n project:\n userOptions.project ??\n (process.env['SENTRY_PROJECT']?.includes(',')\n ? process.env['SENTRY_PROJECT'].split(',').map(p => p.trim())\n : process.env['SENTRY_PROJECT']),\n authToken: userOptions.authToken ?? process.env['SENTRY_AUTH_TOKEN'],\n url: userOptions.url ?? process.env['SENTRY_URL'] ?? SENTRY_SAAS_URL,\n headers: userOptions.headers,\n debug: userOptions.debug ?? false,\n silent: userOptions.silent ?? false,\n errorHandler: userOptions.errorHandler,\n telemetry: userOptions.telemetry ?? true,\n disable: userOptions.disable ?? false,\n sourcemaps: userOptions.sourcemaps,\n release: {\n ...userOptions.release,\n name: userOptions.release?.name ?? process.env['SENTRY_RELEASE'] ?? determineReleaseName(),\n inject: userOptions.release?.inject ?? true,\n create: userOptions.release?.create ?? true,\n finalize: userOptions.release?.finalize ?? true,\n vcsRemote: userOptions.release?.vcsRemote ?? process.env['SENTRY_VSC_REMOTE'] ?? 'origin',\n setCommits: userOptions.release?.setCommits as\n | (SetCommitsOptions & { shouldNotThrowOnFailure?: boolean })\n | false\n | undefined,\n },\n bundleSizeOptimizations: userOptions.bundleSizeOptimizations,\n reactComponentAnnotation: userOptions.reactComponentAnnotation,\n _metaOptions: {\n telemetry: {\n metaFramework: userOptions._metaOptions?.telemetry?.metaFramework,\n bundlerMajorVersion: userOptions._metaOptions?.telemetry?.bundlerMajorVersion,\n },\n },\n applicationKey: userOptions.applicationKey,\n moduleMetadata: userOptions.moduleMetadata,\n _experiments: userOptions._experiments ?? {},\n };\n\n if (options.release.setCommits === undefined) {\n if (\n process.env['VERCEL'] &&\n process.env['VERCEL_GIT_COMMIT_SHA'] &&\n process.env['VERCEL_GIT_REPO_SLUG'] &&\n process.env['VERCEL_GIT_REPO_OWNER'] &&\n // We only want to set commits for the production env because Sentry becomes extremely noisy (eg on slack) for\n // preview environments because the previous commit is always the \"stem\" commit of the preview/PR causing Sentry\n // to notify you for other people creating PRs.\n process.env['VERCEL_TARGET_ENV'] === 'production'\n ) {\n options.release.setCommits = {\n shouldNotThrowOnFailure: true,\n commit: process.env['VERCEL_GIT_COMMIT_SHA'],\n previousCommit: process.env['VERCEL_GIT_PREVIOUS_SHA'],\n repo: `${process.env['VERCEL_GIT_REPO_OWNER']}/${process.env['VERCEL_GIT_REPO_SLUG']}`,\n ignoreEmpty: true,\n ignoreMissing: true,\n };\n } else {\n options.release.setCommits = {\n shouldNotThrowOnFailure: true,\n auto: true,\n ignoreEmpty: true,\n ignoreMissing: true,\n };\n }\n }\n\n if (options.release.deploy === undefined && process.env['VERCEL'] && process.env['VERCEL_TARGET_ENV']) {\n options.release.deploy = {\n env: `vercel-${process.env['VERCEL_TARGET_ENV']}`,\n url: process.env['VERCEL_URL'] ? `https://${process.env['VERCEL_URL']}` : undefined,\n };\n }\n\n return options;\n}\n\n/**\n * Validates a few combinations of options that are not checked by Sentry CLI.\n *\n * For all other options, we can rely on Sentry CLI to validate them. In fact,\n * we can't validate them in the plugin because Sentry CLI might pick up options from\n * its config file.\n *\n * @param options the internal options\n * @param logger the logger\n *\n * @returns `true` if the options are valid, `false` otherwise\n */\nexport function validateOptions(options: NormalizedOptions, logger: Logger): boolean {\n const setCommits = options.release?.setCommits;\n if (setCommits) {\n if (!setCommits.auto && !(setCommits.repo && setCommits.commit)) {\n logger.error(\n 'The `setCommits` option was specified but is missing required properties.',\n 'Please set either `auto` or both, `repo` and `commit`.',\n );\n return false;\n }\n if (setCommits.auto && setCommits.repo && setCommits) {\n logger.warn(\n 'The `setCommits` options includes `auto` but also `repo` and `commit`.',\n 'Ignoring `repo` and `commit`.',\n 'Please only set either `auto` or both, `repo` and `commit`.',\n );\n }\n }\n\n if (options.release?.deploy && typeof options.release.deploy === 'object' && !options.release.deploy.env) {\n logger.error(\n 'The `deploy` option was specified but is missing the required `env` property.',\n 'Please set the `env` property.',\n );\n return false;\n }\n\n if (options.project && Array.isArray(options.project)) {\n if (options.project.length === 0) {\n logger.error(\n 'The `project` option was specified as an array but is empty.',\n 'Please provide at least one project slug.',\n );\n return false;\n }\n // Check each project is a non-empty string\n const invalidProjects = options.project.filter(p => typeof p !== 'string' || p.trim() === '');\n if (invalidProjects.length > 0) {\n logger.error('The `project` option contains invalid project slugs.', 'All projects must be non-empty strings.');\n return false;\n }\n }\n\n return true;\n}\n"],"names":["determineReleaseName"],"mappings":"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"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
2
|
+
|
|
3
|
+
const SentryCli = require('@sentry/cli');
|
|
4
|
+
const core = require('@sentry/core');
|
|
5
|
+
const optionsMapping = require('../options-mapping.js');
|
|
6
|
+
const transports = require('./transports.js');
|
|
7
|
+
const utils = require('../utils.js');
|
|
8
|
+
const version = require('../version.js');
|
|
9
|
+
|
|
10
|
+
const _interopDefault = e => e && e.__esModule ? e.default : e;
|
|
11
|
+
|
|
12
|
+
const SentryCli__default = /*#__PURE__*/_interopDefault(SentryCli);
|
|
13
|
+
|
|
14
|
+
const SENTRY_SAAS_HOSTNAME = "sentry.io";
|
|
15
|
+
const stackParser = core.createStackParser(core.nodeStackLineParser());
|
|
16
|
+
function createSentryInstance(options, shouldSendTelemetry, buildTool, buildToolMajorVersion) {
|
|
17
|
+
const clientOptions = {
|
|
18
|
+
platform: "node",
|
|
19
|
+
runtime: { name: "node", version: global.process.version },
|
|
20
|
+
dsn: "https://4c2bae7d9fbc413e8f7385f55c515d51@o1.ingest.sentry.io/6690737",
|
|
21
|
+
tracesSampleRate: 1,
|
|
22
|
+
sampleRate: 1,
|
|
23
|
+
release: version.LIB_VERSION,
|
|
24
|
+
integrations: [],
|
|
25
|
+
tracePropagationTargets: ["sentry.io/api"],
|
|
26
|
+
stackParser,
|
|
27
|
+
beforeSend: (event) => {
|
|
28
|
+
event.exception?.values?.forEach((exception) => {
|
|
29
|
+
delete exception.stacktrace;
|
|
30
|
+
});
|
|
31
|
+
delete event.server_name;
|
|
32
|
+
return event;
|
|
33
|
+
},
|
|
34
|
+
beforeSendTransaction: (event) => {
|
|
35
|
+
delete event.server_name;
|
|
36
|
+
return event;
|
|
37
|
+
},
|
|
38
|
+
// We create a transport that stalls sending events until we know that we're allowed to (i.e. when Sentry CLI told
|
|
39
|
+
// us that the upload URL is the Sentry SaaS URL)
|
|
40
|
+
transport: transports.makeOptionallyEnabledNodeTransport(shouldSendTelemetry)
|
|
41
|
+
};
|
|
42
|
+
core.applySdkMetadata(clientOptions, "node");
|
|
43
|
+
const client = new core.ServerRuntimeClient(clientOptions);
|
|
44
|
+
const scope = new core.Scope();
|
|
45
|
+
scope.setClient(client);
|
|
46
|
+
setTelemetryDataOnScope(options, scope, buildTool, buildToolMajorVersion);
|
|
47
|
+
return { sentryScope: scope, sentryClient: client };
|
|
48
|
+
}
|
|
49
|
+
function setTelemetryDataOnScope(options, scope, buildTool, buildToolMajorVersion) {
|
|
50
|
+
const { org, project, release, errorHandler, sourcemaps, reactComponentAnnotation } = options;
|
|
51
|
+
scope.setTag("upload-legacy-sourcemaps", !!release.uploadLegacySourcemaps);
|
|
52
|
+
if (release.uploadLegacySourcemaps) {
|
|
53
|
+
scope.setTag(
|
|
54
|
+
"uploadLegacySourcemapsEntries",
|
|
55
|
+
Array.isArray(release.uploadLegacySourcemaps) ? release.uploadLegacySourcemaps.length : 1
|
|
56
|
+
);
|
|
57
|
+
}
|
|
58
|
+
scope.setTag("module-metadata", !!options.moduleMetadata);
|
|
59
|
+
scope.setTag("inject-build-information", !!options._experiments.injectBuildInformation);
|
|
60
|
+
if (release.setCommits) {
|
|
61
|
+
scope.setTag("set-commits", release.setCommits.auto === true ? "auto" : "manual");
|
|
62
|
+
} else {
|
|
63
|
+
scope.setTag("set-commits", "undefined");
|
|
64
|
+
}
|
|
65
|
+
scope.setTag("finalize-release", release.finalize);
|
|
66
|
+
scope.setTag("deploy-options", !!release.deploy);
|
|
67
|
+
scope.setTag("custom-error-handler", !!errorHandler);
|
|
68
|
+
scope.setTag("sourcemaps-assets", !!sourcemaps?.assets);
|
|
69
|
+
scope.setTag("delete-after-upload", !!sourcemaps?.filesToDeleteAfterUpload);
|
|
70
|
+
scope.setTag("sourcemaps-disabled", !!sourcemaps?.disable);
|
|
71
|
+
scope.setTag("react-annotate", !!reactComponentAnnotation?.enabled);
|
|
72
|
+
scope.setTag("node", process.version);
|
|
73
|
+
scope.setTag("platform", process.platform);
|
|
74
|
+
scope.setTag("meta-framework", options._metaOptions.telemetry.metaFramework ?? "none");
|
|
75
|
+
scope.setTag("application-key-set", options.applicationKey !== void 0);
|
|
76
|
+
scope.setTag("ci", !!process.env["CI"]);
|
|
77
|
+
scope.setTags({
|
|
78
|
+
organization: org,
|
|
79
|
+
project: Array.isArray(project) ? project.join(", ") : project ?? "undefined",
|
|
80
|
+
bundler: buildTool
|
|
81
|
+
});
|
|
82
|
+
if (buildToolMajorVersion) {
|
|
83
|
+
scope.setTag("bundler-major-version", buildToolMajorVersion);
|
|
84
|
+
}
|
|
85
|
+
scope.setUser({ id: org });
|
|
86
|
+
}
|
|
87
|
+
async function allowedToSendTelemetry(options) {
|
|
88
|
+
const { silent, org, project, authToken, url, headers, telemetry, release } = options;
|
|
89
|
+
if (telemetry === false) {
|
|
90
|
+
return false;
|
|
91
|
+
}
|
|
92
|
+
if (url === optionsMapping.SENTRY_SAAS_URL) {
|
|
93
|
+
return true;
|
|
94
|
+
}
|
|
95
|
+
const cli = new SentryCli__default(null, {
|
|
96
|
+
url,
|
|
97
|
+
authToken,
|
|
98
|
+
org,
|
|
99
|
+
project: utils.getProjects(project)?.[0],
|
|
100
|
+
vcsRemote: release.vcsRemote,
|
|
101
|
+
silent,
|
|
102
|
+
headers
|
|
103
|
+
});
|
|
104
|
+
let cliInfo;
|
|
105
|
+
try {
|
|
106
|
+
cliInfo = await cli.execute(["info"], false);
|
|
107
|
+
} catch {
|
|
108
|
+
return false;
|
|
109
|
+
}
|
|
110
|
+
const cliInfoUrl = cliInfo.split(/(\r\n|\n|\r)/)[0]?.replace(/^Sentry Server: /, "")?.trim();
|
|
111
|
+
if (cliInfoUrl === void 0) {
|
|
112
|
+
return false;
|
|
113
|
+
}
|
|
114
|
+
return new URL(cliInfoUrl).hostname === SENTRY_SAAS_HOSTNAME;
|
|
115
|
+
}
|
|
116
|
+
async function safeFlushTelemetry(sentryClient) {
|
|
117
|
+
try {
|
|
118
|
+
await sentryClient.flush(2e3);
|
|
119
|
+
} catch {
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
exports.allowedToSendTelemetry = allowedToSendTelemetry;
|
|
124
|
+
exports.createSentryInstance = createSentryInstance;
|
|
125
|
+
exports.safeFlushTelemetry = safeFlushTelemetry;
|
|
126
|
+
exports.setTelemetryDataOnScope = setTelemetryDataOnScope;
|
|
127
|
+
//# sourceMappingURL=telemetry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"telemetry.js","sources":["../../../../src/core/sentry/telemetry.ts"],"sourcesContent":["import SentryCli from '@sentry/cli';\nimport type { Client } from '@sentry/core';\nimport type { ServerRuntimeClientOptions } from '@sentry/core';\nimport { applySdkMetadata, ServerRuntimeClient } from '@sentry/core';\nimport type { NormalizedOptions } from '../options-mapping';\nimport { SENTRY_SAAS_URL } from '../options-mapping';\nimport { Scope } from '@sentry/core';\nimport { createStackParser, nodeStackLineParser } from '@sentry/core';\nimport { makeOptionallyEnabledNodeTransport } from './transports';\nimport { getProjects } from '../utils';\nimport { LIB_VERSION } from '../version';\n\nconst SENTRY_SAAS_HOSTNAME = 'sentry.io';\n\nconst stackParser = createStackParser(nodeStackLineParser());\n\nexport function createSentryInstance(\n options: NormalizedOptions,\n shouldSendTelemetry: Promise<boolean>,\n buildTool: string,\n buildToolMajorVersion: string | undefined,\n): { sentryScope: Scope; sentryClient: Client } {\n const clientOptions: ServerRuntimeClientOptions = {\n platform: 'node',\n runtime: { name: 'node', version: global.process.version },\n\n dsn: 'https://4c2bae7d9fbc413e8f7385f55c515d51@o1.ingest.sentry.io/6690737',\n\n tracesSampleRate: 1,\n sampleRate: 1,\n\n release: LIB_VERSION,\n integrations: [],\n tracePropagationTargets: ['sentry.io/api'],\n\n stackParser,\n\n beforeSend: event => {\n event.exception?.values?.forEach(exception => {\n delete exception.stacktrace;\n });\n\n delete event.server_name; // Server name might contain PII\n return event;\n },\n\n beforeSendTransaction: event => {\n delete event.server_name; // Server name might contain PII\n return event;\n },\n\n // We create a transport that stalls sending events until we know that we're allowed to (i.e. when Sentry CLI told\n // us that the upload URL is the Sentry SaaS URL)\n transport: makeOptionallyEnabledNodeTransport(shouldSendTelemetry),\n };\n\n applySdkMetadata(clientOptions, 'node');\n\n const client = new ServerRuntimeClient(clientOptions);\n const scope = new Scope();\n scope.setClient(client);\n\n setTelemetryDataOnScope(options, scope, buildTool, buildToolMajorVersion);\n\n return { sentryScope: scope, sentryClient: client };\n}\n\nexport function setTelemetryDataOnScope(\n options: NormalizedOptions,\n scope: Scope,\n buildTool: string,\n buildToolMajorVersion?: string,\n): void {\n const { org, project, release, errorHandler, sourcemaps, reactComponentAnnotation } = options;\n\n scope.setTag('upload-legacy-sourcemaps', !!release.uploadLegacySourcemaps);\n if (release.uploadLegacySourcemaps) {\n scope.setTag(\n 'uploadLegacySourcemapsEntries',\n Array.isArray(release.uploadLegacySourcemaps) ? release.uploadLegacySourcemaps.length : 1,\n );\n }\n\n scope.setTag('module-metadata', !!options.moduleMetadata);\n scope.setTag('inject-build-information', !!options._experiments.injectBuildInformation);\n\n // Optional release pipeline steps\n if (release.setCommits) {\n scope.setTag('set-commits', release.setCommits.auto === true ? 'auto' : 'manual');\n } else {\n scope.setTag('set-commits', 'undefined');\n }\n scope.setTag('finalize-release', release.finalize);\n scope.setTag('deploy-options', !!release.deploy);\n\n // Miscellaneous options\n scope.setTag('custom-error-handler', !!errorHandler);\n scope.setTag('sourcemaps-assets', !!sourcemaps?.assets);\n scope.setTag('delete-after-upload', !!sourcemaps?.filesToDeleteAfterUpload);\n scope.setTag('sourcemaps-disabled', !!sourcemaps?.disable);\n\n scope.setTag('react-annotate', !!reactComponentAnnotation?.enabled);\n\n scope.setTag('node', process.version);\n scope.setTag('platform', process.platform);\n\n scope.setTag('meta-framework', options._metaOptions.telemetry.metaFramework ?? 'none');\n\n scope.setTag('application-key-set', options.applicationKey !== undefined);\n\n scope.setTag('ci', !!process.env['CI']);\n\n scope.setTags({\n organization: org,\n project: Array.isArray(project) ? project.join(', ') : (project ?? 'undefined'),\n bundler: buildTool,\n });\n\n if (buildToolMajorVersion) {\n scope.setTag('bundler-major-version', buildToolMajorVersion);\n }\n\n scope.setUser({ id: org });\n}\n\nexport async function allowedToSendTelemetry(options: NormalizedOptions): Promise<boolean> {\n const { silent, org, project, authToken, url, headers, telemetry, release } = options;\n\n // `options.telemetry` defaults to true\n if (telemetry === false) {\n return false;\n }\n\n if (url === SENTRY_SAAS_URL) {\n return true;\n }\n\n const cli = new SentryCli(null, {\n url,\n authToken,\n org,\n project: getProjects(project)?.[0],\n vcsRemote: release.vcsRemote,\n silent,\n headers,\n });\n\n let cliInfo;\n try {\n // Makes a call to SentryCLI to get the Sentry server URL the CLI uses.\n // We need to check and decide to use telemetry based on the CLI's response to this call\n // because only at this time we checked a possibly existing .sentryclirc file. This file\n // could point to another URL than the default URL.\n cliInfo = await cli.execute(['info'], false);\n } catch {\n return false;\n }\n\n const cliInfoUrl = cliInfo\n .split(/(\\r\\n|\\n|\\r)/)[0]\n ?.replace(/^Sentry Server: /, '')\n ?.trim();\n\n if (cliInfoUrl === undefined) {\n return false;\n }\n\n return new URL(cliInfoUrl).hostname === SENTRY_SAAS_HOSTNAME;\n}\n\n/**\n * Flushing the SDK client can fail. We never want to crash the plugin because of telemetry.\n */\nexport async function safeFlushTelemetry(sentryClient: Client): Promise<void> {\n try {\n await sentryClient.flush(2000);\n } catch {\n // Noop when flushing fails.\n // We don't even need to log anything because there's likely nothing the user can do and they likely will not care.\n }\n}\n"],"names":["createStackParser","nodeStackLineParser","LIB_VERSION","makeOptionallyEnabledNodeTransport","applySdkMetadata","ServerRuntimeClient","Scope","SENTRY_SAAS_URL","SentryCli","getProjects"],"mappings":"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"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
2
|
+
|
|
3
|
+
const https = require('node:https');
|
|
4
|
+
const node_stream = require('node:stream');
|
|
5
|
+
const node_zlib = require('node:zlib');
|
|
6
|
+
const core = require('@sentry/core');
|
|
7
|
+
const path = require('node:path');
|
|
8
|
+
const node_fs = require('node:fs');
|
|
9
|
+
|
|
10
|
+
function _interopNamespace(e) {
|
|
11
|
+
if (e && e.__esModule) return e;
|
|
12
|
+
const n = Object.create(null, { [Symbol.toStringTag]: { value: 'Module' } });
|
|
13
|
+
if (e) {
|
|
14
|
+
for (const k in e) {
|
|
15
|
+
n[k] = e[k];
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
n.default = e;
|
|
19
|
+
return n;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
const https__namespace = /*#__PURE__*/_interopNamespace(https);
|
|
23
|
+
|
|
24
|
+
const GZIP_THRESHOLD = 1024 * 32;
|
|
25
|
+
function streamFromBody(body) {
|
|
26
|
+
return new node_stream.Readable({
|
|
27
|
+
read() {
|
|
28
|
+
this.push(body);
|
|
29
|
+
this.push(null);
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
function createRequestExecutor(options) {
|
|
34
|
+
const { hostname, pathname, port, protocol, search } = new URL(options.url);
|
|
35
|
+
return function makeRequest(request) {
|
|
36
|
+
return new Promise((resolve, reject) => {
|
|
37
|
+
core.suppressTracing(() => {
|
|
38
|
+
let body = streamFromBody(request.body);
|
|
39
|
+
const headers = {};
|
|
40
|
+
if (request.body.length > GZIP_THRESHOLD) {
|
|
41
|
+
headers["content-encoding"] = "gzip";
|
|
42
|
+
body = body.pipe(node_zlib.createGzip());
|
|
43
|
+
}
|
|
44
|
+
const req = https__namespace.request(
|
|
45
|
+
{
|
|
46
|
+
method: "POST",
|
|
47
|
+
headers,
|
|
48
|
+
hostname,
|
|
49
|
+
path: `${pathname}${search}`,
|
|
50
|
+
port,
|
|
51
|
+
protocol
|
|
52
|
+
},
|
|
53
|
+
(res) => {
|
|
54
|
+
res.on("data", () => {
|
|
55
|
+
});
|
|
56
|
+
res.on("end", () => {
|
|
57
|
+
});
|
|
58
|
+
res.setEncoding("utf8");
|
|
59
|
+
const retryAfterHeader = res.headers["retry-after"] ?? null;
|
|
60
|
+
const rateLimitsHeader = res.headers["x-sentry-rate-limits"] ?? null;
|
|
61
|
+
resolve({
|
|
62
|
+
statusCode: res.statusCode,
|
|
63
|
+
headers: {
|
|
64
|
+
"retry-after": retryAfterHeader,
|
|
65
|
+
"x-sentry-rate-limits": Array.isArray(rateLimitsHeader) ? rateLimitsHeader[0] || null : rateLimitsHeader
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
);
|
|
70
|
+
req.on("error", reject);
|
|
71
|
+
body.pipe(req);
|
|
72
|
+
});
|
|
73
|
+
});
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
function makeNodeTransport(options) {
|
|
77
|
+
const requestExecutor = createRequestExecutor(options);
|
|
78
|
+
return core.createTransport(options, requestExecutor);
|
|
79
|
+
}
|
|
80
|
+
function makeOptionallyEnabledNodeTransport(shouldSendTelemetry) {
|
|
81
|
+
return (nodeTransportOptions) => {
|
|
82
|
+
const nodeTransport = makeNodeTransport(nodeTransportOptions);
|
|
83
|
+
return {
|
|
84
|
+
flush: (timeout) => nodeTransport.flush(timeout),
|
|
85
|
+
send: async (request) => {
|
|
86
|
+
if ("__SENTRY_INTERCEPT_TRANSPORT__" in global && Array.isArray(global.__SENTRY_INTERCEPT_TRANSPORT__)) {
|
|
87
|
+
global.__SENTRY_INTERCEPT_TRANSPORT__.push(request);
|
|
88
|
+
return { statusCode: 200 };
|
|
89
|
+
}
|
|
90
|
+
if (await shouldSendTelemetry) {
|
|
91
|
+
if (process.env["SENTRY_TEST_OUT_DIR"]) {
|
|
92
|
+
const outDir = process.env["SENTRY_TEST_OUT_DIR"];
|
|
93
|
+
node_fs.mkdirSync(outDir, { recursive: true });
|
|
94
|
+
const path$1 = path.join(outDir, "sentry-telemetry.json");
|
|
95
|
+
node_fs.appendFileSync(path$1, `${JSON.stringify(request)},
|
|
96
|
+
`);
|
|
97
|
+
return { statusCode: 200 };
|
|
98
|
+
}
|
|
99
|
+
return nodeTransport.send(request);
|
|
100
|
+
}
|
|
101
|
+
return { statusCode: 200 };
|
|
102
|
+
}
|
|
103
|
+
};
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
exports.makeOptionallyEnabledNodeTransport = makeOptionallyEnabledNodeTransport;
|
|
108
|
+
//# sourceMappingURL=transports.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transports.js","sources":["../../../../src/core/sentry/transports.ts"],"sourcesContent":["/**\n * This is a simplified version of the Sentry Node SDK's HTTP transport.\n */\nimport * as https from 'node:https';\nimport { Readable } from 'node:stream';\nimport { createGzip } from 'node:zlib';\nimport { createTransport, suppressTracing } from '@sentry/core';\nimport type {\n BaseTransportOptions,\n Transport,\n TransportMakeRequestResponse,\n TransportRequest,\n TransportRequestExecutor,\n} from '@sentry/core';\nimport { join } from 'node:path';\nimport { appendFileSync, mkdirSync } from 'node:fs';\n\n// Estimated maximum size for reasonable standalone event\nconst GZIP_THRESHOLD = 1024 * 32;\n\n/**\n * Gets a stream from a Uint8Array or string\n * Readable.from is ideal but was added in node.js v12.3.0 and v10.17.0\n */\nfunction streamFromBody(body: Uint8Array | string): Readable {\n return new Readable({\n read() {\n this.push(body);\n this.push(null);\n },\n });\n}\n\n/**\n * Creates a RequestExecutor to be used with `createTransport`.\n */\nfunction createRequestExecutor(options: BaseTransportOptions): TransportRequestExecutor {\n const { hostname, pathname, port, protocol, search } = new URL(options.url);\n return function makeRequest(request: TransportRequest): Promise<TransportMakeRequestResponse> {\n return new Promise((resolve, reject) => {\n suppressTracing(() => {\n let body = streamFromBody(request.body);\n\n const headers: Record<string, string> = {};\n\n if (request.body.length > GZIP_THRESHOLD) {\n headers['content-encoding'] = 'gzip';\n body = body.pipe(createGzip());\n }\n\n const req = https.request(\n {\n method: 'POST',\n headers,\n hostname,\n path: `${pathname}${search}`,\n port,\n protocol,\n },\n res => {\n res.on('data', () => {\n // Drain socket\n });\n\n res.on('end', () => {\n // Drain socket\n });\n\n res.setEncoding('utf8');\n\n // \"Key-value pairs of header names and values. Header names are lower-cased.\"\n // https://nodejs.org/api/http.html#http_message_headers\n const retryAfterHeader = res.headers['retry-after'] ?? null;\n const rateLimitsHeader = res.headers['x-sentry-rate-limits'] ?? null;\n\n resolve({\n statusCode: res.statusCode,\n headers: {\n 'retry-after': retryAfterHeader,\n 'x-sentry-rate-limits': Array.isArray(rateLimitsHeader)\n ? rateLimitsHeader[0] || null\n : rateLimitsHeader,\n },\n });\n },\n );\n\n req.on('error', reject);\n body.pipe(req);\n });\n });\n };\n}\n\n/**\n * Creates a Transport that uses native the native 'http' and 'https' modules to send events to Sentry.\n */\nfunction makeNodeTransport(options: BaseTransportOptions): Transport {\n const requestExecutor = createRequestExecutor(options);\n return createTransport(options, requestExecutor);\n}\n\n/** A transport that can be optionally enabled as a later time than it's\n * creation */\nexport function makeOptionallyEnabledNodeTransport(\n shouldSendTelemetry: Promise<boolean>,\n): (options: BaseTransportOptions) => Transport {\n return nodeTransportOptions => {\n const nodeTransport = makeNodeTransport(nodeTransportOptions);\n\n return {\n flush: timeout => nodeTransport.flush(timeout),\n send: async request => {\n // If global.__SENTRY_INTERCEPT_TRANSPORT__ is an array, we push the\n // envelope into it for testing purposes.\n if ('__SENTRY_INTERCEPT_TRANSPORT__' in global && Array.isArray(global.__SENTRY_INTERCEPT_TRANSPORT__)) {\n global.__SENTRY_INTERCEPT_TRANSPORT__.push(request);\n return { statusCode: 200 };\n }\n\n if (await shouldSendTelemetry) {\n if (process.env['SENTRY_TEST_OUT_DIR']) {\n const outDir = process.env['SENTRY_TEST_OUT_DIR'];\n mkdirSync(outDir, { recursive: true });\n const path = join(outDir, 'sentry-telemetry.json');\n appendFileSync(path, `${JSON.stringify(request)},\\n`);\n return { statusCode: 200 };\n }\n\n return nodeTransport.send(request);\n }\n\n return { statusCode: 200 };\n },\n };\n };\n}\n"],"names":["Readable","suppressTracing","createGzip","https","createTransport","mkdirSync","path","join","appendFileSync"],"mappings":"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"}
|
|
@@ -0,0 +1,298 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
2
|
+
|
|
3
|
+
const findUp = require('find-up');
|
|
4
|
+
const path = require('path');
|
|
5
|
+
const fs = require('fs');
|
|
6
|
+
const os = require('os');
|
|
7
|
+
const crypto = require('crypto');
|
|
8
|
+
const childProcess = require('child_process');
|
|
9
|
+
const MagicString = require('magic-string');
|
|
10
|
+
|
|
11
|
+
const _interopDefault = e => e && e.__esModule ? e.default : e;
|
|
12
|
+
|
|
13
|
+
const findUp__default = /*#__PURE__*/_interopDefault(findUp);
|
|
14
|
+
const path__default = /*#__PURE__*/_interopDefault(path);
|
|
15
|
+
const fs__default = /*#__PURE__*/_interopDefault(fs);
|
|
16
|
+
const os__default = /*#__PURE__*/_interopDefault(os);
|
|
17
|
+
const crypto__default = /*#__PURE__*/_interopDefault(crypto);
|
|
18
|
+
const childProcess__default = /*#__PURE__*/_interopDefault(childProcess);
|
|
19
|
+
const MagicString__default = /*#__PURE__*/_interopDefault(MagicString);
|
|
20
|
+
|
|
21
|
+
function arrayify(maybeArray) {
|
|
22
|
+
return Array.isArray(maybeArray) ? maybeArray : [maybeArray];
|
|
23
|
+
}
|
|
24
|
+
function getPackageJson({ cwd, stopAt } = {}) {
|
|
25
|
+
return lookupPackageJson(cwd ?? process.cwd(), path__default.normalize(stopAt ?? os__default.homedir()));
|
|
26
|
+
}
|
|
27
|
+
function parseMajorVersion(ver) {
|
|
28
|
+
let version = ver;
|
|
29
|
+
if (version.startsWith("v")) {
|
|
30
|
+
version = version.slice(1);
|
|
31
|
+
}
|
|
32
|
+
const regex = /^[\^~]?(\d+)(\.\d+)?(\.\d+)?(-.+)?/;
|
|
33
|
+
const match = version.match(regex);
|
|
34
|
+
if (match) {
|
|
35
|
+
return parseInt(match[1], 10);
|
|
36
|
+
}
|
|
37
|
+
const coerced = parseInt(version, 10);
|
|
38
|
+
if (!Number.isNaN(coerced)) {
|
|
39
|
+
return coerced;
|
|
40
|
+
}
|
|
41
|
+
const gteLteRegex = /^[<>]=\s*(\d+)(\.\d+)?(\.\d+)?(-.+)?/;
|
|
42
|
+
const gteLteMatch = version.match(gteLteRegex);
|
|
43
|
+
if (gteLteMatch) {
|
|
44
|
+
return parseInt(gteLteMatch[1], 10);
|
|
45
|
+
}
|
|
46
|
+
const ltRegex = /^<\s*(\d+)(\.\d+)?(\.\d+)?(-.+)?/;
|
|
47
|
+
const ltMatch = version.match(ltRegex);
|
|
48
|
+
if (ltMatch) {
|
|
49
|
+
const major = parseInt(ltMatch[1], 10);
|
|
50
|
+
if (
|
|
51
|
+
// minor version > 0
|
|
52
|
+
typeof ltMatch[2] === "string" && parseInt(ltMatch[2].slice(1), 10) > 0 || // patch version > 0
|
|
53
|
+
typeof ltMatch[3] === "string" && parseInt(ltMatch[3].slice(1), 10) > 0
|
|
54
|
+
) {
|
|
55
|
+
return major;
|
|
56
|
+
}
|
|
57
|
+
return major - 1;
|
|
58
|
+
}
|
|
59
|
+
const gtRegex = /^>\s*(\d+)(\.\d+)?(\.\d+)?(-.+)?/;
|
|
60
|
+
const gtMatch = version.match(gtRegex);
|
|
61
|
+
if (gtMatch) {
|
|
62
|
+
return parseInt(gtMatch[1], 10);
|
|
63
|
+
}
|
|
64
|
+
return void 0;
|
|
65
|
+
}
|
|
66
|
+
const PACKAGES_TO_INCLUDE_VERSION = [
|
|
67
|
+
"react",
|
|
68
|
+
"@angular/core",
|
|
69
|
+
"vue",
|
|
70
|
+
"ember-source",
|
|
71
|
+
"svelte",
|
|
72
|
+
"@sveltejs/kit",
|
|
73
|
+
"webpack",
|
|
74
|
+
"vite",
|
|
75
|
+
"gatsby",
|
|
76
|
+
"next",
|
|
77
|
+
"remix",
|
|
78
|
+
"rollup",
|
|
79
|
+
"esbuild"
|
|
80
|
+
];
|
|
81
|
+
function getDependencies(packageJson) {
|
|
82
|
+
const dependencies = Object.assign(
|
|
83
|
+
{},
|
|
84
|
+
packageJson["devDependencies"] ?? {},
|
|
85
|
+
packageJson["dependencies"] ?? {}
|
|
86
|
+
);
|
|
87
|
+
const deps = Object.keys(dependencies).sort();
|
|
88
|
+
const depsVersions = deps.reduce(
|
|
89
|
+
(depsVersions2, depName) => {
|
|
90
|
+
if (PACKAGES_TO_INCLUDE_VERSION.includes(depName)) {
|
|
91
|
+
const version = dependencies[depName];
|
|
92
|
+
const majorVersion = parseMajorVersion(version);
|
|
93
|
+
if (majorVersion) {
|
|
94
|
+
depsVersions2[depName] = majorVersion;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
return depsVersions2;
|
|
98
|
+
},
|
|
99
|
+
{}
|
|
100
|
+
);
|
|
101
|
+
return { deps, depsVersions };
|
|
102
|
+
}
|
|
103
|
+
function lookupPackageJson(cwd, stopAt) {
|
|
104
|
+
const jsonPath = findUp__default.sync(
|
|
105
|
+
(dirName) => {
|
|
106
|
+
if (path__default.normalize(dirName) === stopAt) {
|
|
107
|
+
return findUp__default.stop;
|
|
108
|
+
}
|
|
109
|
+
return findUp__default.sync.exists(`${dirName}/package.json`) ? "package.json" : void 0;
|
|
110
|
+
},
|
|
111
|
+
{ cwd }
|
|
112
|
+
);
|
|
113
|
+
if (!jsonPath) {
|
|
114
|
+
return void 0;
|
|
115
|
+
}
|
|
116
|
+
try {
|
|
117
|
+
const jsonStr = fs__default.readFileSync(jsonPath, "utf8");
|
|
118
|
+
const json = JSON.parse(jsonStr);
|
|
119
|
+
if ("name" in json || "private" in json) {
|
|
120
|
+
return json;
|
|
121
|
+
}
|
|
122
|
+
} catch {
|
|
123
|
+
}
|
|
124
|
+
const newCwd = path__default.dirname(path__default.resolve(`${jsonPath}/..`));
|
|
125
|
+
return lookupPackageJson(newCwd, stopAt);
|
|
126
|
+
}
|
|
127
|
+
function stringToUUID(str) {
|
|
128
|
+
const sha256Hash = crypto__default.createHash("sha256").update(str).digest("hex");
|
|
129
|
+
const v4variant = ["8", "9", "a", "b"][sha256Hash.substring(16, 17).charCodeAt(0) % 4];
|
|
130
|
+
return `${sha256Hash.substring(0, 8)}-${sha256Hash.substring(8, 12)}-4${sha256Hash.substring(13, 16)}-${v4variant}${sha256Hash.substring(17, 20)}-${sha256Hash.substring(20, 32)}`.toLowerCase();
|
|
131
|
+
}
|
|
132
|
+
function gitRevision() {
|
|
133
|
+
let gitRevision2;
|
|
134
|
+
try {
|
|
135
|
+
gitRevision2 = childProcess__default.execSync("git rev-parse HEAD", { stdio: ["ignore", "pipe", "ignore"], windowsHide: true }).toString().trim();
|
|
136
|
+
} catch {
|
|
137
|
+
}
|
|
138
|
+
return gitRevision2;
|
|
139
|
+
}
|
|
140
|
+
function determineReleaseName() {
|
|
141
|
+
const possibleReleaseNameOfGitProvider = (
|
|
142
|
+
// GitHub Actions - https://help.github.com/en/actions/configuring-and-managing-workflows/using-environment-variables#default-environment-variables
|
|
143
|
+
process.env["GITHUB_SHA"] || // GitLab CI - https://docs.gitlab.com/ee/ci/variables/predefined_variables.html
|
|
144
|
+
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/
|
|
145
|
+
process.env["BITBUCKET_COMMIT"]
|
|
146
|
+
);
|
|
147
|
+
const possibleReleaseNameOfCiProvidersWithSpecificEnvVar = (
|
|
148
|
+
// AppVeyor - https://www.appveyor.com/docs/environment-variables/
|
|
149
|
+
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
|
|
150
|
+
process.env["CODEBUILD_RESOLVED_SOURCE_VERSION"] || // AWS Amplify - https://docs.aws.amazon.com/amplify/latest/userguide/environment-variables.html
|
|
151
|
+
process.env["AWS_COMMIT_ID"] || // Azure Pipelines - https://docs.microsoft.com/en-us/azure/devops/pipelines/build/variables?view=azure-devops&tabs=yaml
|
|
152
|
+
process.env["BUILD_SOURCEVERSION"] || // Bitrise - https://devcenter.bitrise.io/builds/available-environment-variables/
|
|
153
|
+
process.env["GIT_CLONE_COMMIT_HASH"] || // Buddy CI - https://buddy.works/docs/pipelines/environment-variables#default-environment-variables
|
|
154
|
+
process.env["BUDDY_EXECUTION_REVISION"] || // Builtkite - https://buildkite.com/docs/pipelines/environment-variables
|
|
155
|
+
process.env["BUILDKITE_COMMIT"] || // CircleCI - https://circleci.com/docs/variables/
|
|
156
|
+
process.env["CIRCLE_SHA1"] || // Cirrus CI - https://cirrus-ci.org/guide/writing-tasks/#environment-variables
|
|
157
|
+
process.env["CIRRUS_CHANGE_IN_REPO"] || // Codefresh - https://codefresh.io/docs/docs/codefresh-yaml/variables/
|
|
158
|
+
process.env["CF_REVISION"] || // Codemagic - https://docs.codemagic.io/yaml-basic-configuration/environment-variables/
|
|
159
|
+
process.env["CM_COMMIT"] || // Cloudflare Pages - https://developers.cloudflare.com/pages/platform/build-configuration/#environment-variables
|
|
160
|
+
process.env["CF_PAGES_COMMIT_SHA"] || // Drone - https://docs.drone.io/pipeline/environment/reference/
|
|
161
|
+
process.env["DRONE_COMMIT_SHA"] || // Flightcontrol - https://www.flightcontrol.dev/docs/guides/flightcontrol/environment-variables#built-in-environment-variables
|
|
162
|
+
process.env["FC_GIT_COMMIT_SHA"] || // Heroku #1 https://devcenter.heroku.com/articles/heroku-ci
|
|
163
|
+
process.env["HEROKU_TEST_RUN_COMMIT_VERSION"] || // Heroku #2 https://docs.sentry.io/product/integrations/deployment/heroku/#configure-releases
|
|
164
|
+
process.env["HEROKU_SLUG_COMMIT"] || // Railway - https://docs.railway.app/reference/variables#git-variables
|
|
165
|
+
process.env["RAILWAY_GIT_COMMIT_SHA"] || // Render - https://render.com/docs/environment-variables
|
|
166
|
+
process.env["RENDER_GIT_COMMIT"] || // Semaphore CI - https://docs.semaphoreci.com/ci-cd-environment/environment-variables
|
|
167
|
+
process.env["SEMAPHORE_GIT_SHA"] || // TravisCI - https://docs.travis-ci.com/user/environment-variables/#default-environment-variables
|
|
168
|
+
process.env["TRAVIS_PULL_REQUEST_SHA"] || // Vercel - https://vercel.com/docs/v2/build-step#system-environment-variables
|
|
169
|
+
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)
|
|
170
|
+
process.env["ZEIT_GITHUB_COMMIT_SHA"] || process.env["ZEIT_GITLAB_COMMIT_SHA"] || process.env["ZEIT_BITBUCKET_COMMIT_SHA"]
|
|
171
|
+
);
|
|
172
|
+
const possibleReleaseNameOfCiProvidersWithGenericEnvVar = (
|
|
173
|
+
// CloudBees CodeShip - https://docs.cloudbees.com/docs/cloudbees-codeship/latest/pro-builds-and-configuration/environment-variables
|
|
174
|
+
process.env["CI_COMMIT_ID"] || // Coolify - https://coolify.io/docs/knowledge-base/environment-variables
|
|
175
|
+
process.env["SOURCE_COMMIT"] || // Heroku #3 https://devcenter.heroku.com/changelog-items/630
|
|
176
|
+
process.env["SOURCE_VERSION"] || // Jenkins - https://plugins.jenkins.io/git/#environment-variables
|
|
177
|
+
process.env["GIT_COMMIT"] || // Netlify - https://docs.netlify.com/configure-builds/environment-variables/#build-metadata
|
|
178
|
+
process.env["COMMIT_REF"] || // TeamCity - https://www.jetbrains.com/help/teamcity/predefined-build-parameters.html
|
|
179
|
+
process.env["BUILD_VCS_NUMBER"] || // Woodpecker CI - https://woodpecker-ci.org/docs/usage/environment
|
|
180
|
+
process.env["CI_COMMIT_SHA"]
|
|
181
|
+
);
|
|
182
|
+
return possibleReleaseNameOfGitProvider || possibleReleaseNameOfCiProvidersWithSpecificEnvVar || possibleReleaseNameOfCiProvidersWithGenericEnvVar || gitRevision();
|
|
183
|
+
}
|
|
184
|
+
function generateReleaseInjectorCode({
|
|
185
|
+
release,
|
|
186
|
+
injectBuildInformation
|
|
187
|
+
}) {
|
|
188
|
+
let code = `e.SENTRY_RELEASE={id:${JSON.stringify(release)}};`;
|
|
189
|
+
if (injectBuildInformation) {
|
|
190
|
+
const buildInfo = getBuildInformation();
|
|
191
|
+
code += `e.SENTRY_BUILD_INFO=${JSON.stringify(buildInfo)};`;
|
|
192
|
+
}
|
|
193
|
+
return new CodeInjection(code);
|
|
194
|
+
}
|
|
195
|
+
function generateModuleMetadataInjectorCode(metadata) {
|
|
196
|
+
return new CodeInjection(
|
|
197
|
+
`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],${JSON.stringify(
|
|
198
|
+
metadata
|
|
199
|
+
)});`
|
|
200
|
+
);
|
|
201
|
+
}
|
|
202
|
+
function getBuildInformation() {
|
|
203
|
+
const packageJson = getPackageJson();
|
|
204
|
+
const { deps, depsVersions } = packageJson ? getDependencies(packageJson) : { deps: [], depsVersions: {} };
|
|
205
|
+
return {
|
|
206
|
+
deps,
|
|
207
|
+
depsVersions,
|
|
208
|
+
nodeVersion: parseMajorVersion(process.version)
|
|
209
|
+
};
|
|
210
|
+
}
|
|
211
|
+
function stripQueryAndHashFromPath(path2) {
|
|
212
|
+
return path2.split("?")[0].split("#")[0];
|
|
213
|
+
}
|
|
214
|
+
function replaceBooleanFlagsInCode(code, replacementValues) {
|
|
215
|
+
const ms = new MagicString__default(code);
|
|
216
|
+
Object.keys(replacementValues).forEach((key) => {
|
|
217
|
+
const value = replacementValues[key];
|
|
218
|
+
if (typeof value === "boolean") {
|
|
219
|
+
ms.replaceAll(key, JSON.stringify(value));
|
|
220
|
+
}
|
|
221
|
+
});
|
|
222
|
+
if (ms.hasChanged()) {
|
|
223
|
+
return {
|
|
224
|
+
code: ms.toString(),
|
|
225
|
+
map: ms.generateMap({ hires: "boundary" })
|
|
226
|
+
};
|
|
227
|
+
}
|
|
228
|
+
return null;
|
|
229
|
+
}
|
|
230
|
+
function getTurborepoEnvPassthroughWarning(envVarName) {
|
|
231
|
+
return process.env["TURBO_HASH"] ? `
|
|
232
|
+
You seem to be using Turborepo, did you forget to put ${envVarName} in \`passThroughEnv\`? https://turbo.build/repo/docs/reference/configuration#passthroughenv` : "";
|
|
233
|
+
}
|
|
234
|
+
function getProjects(project) {
|
|
235
|
+
if (Array.isArray(project)) {
|
|
236
|
+
return project;
|
|
237
|
+
}
|
|
238
|
+
if (project) {
|
|
239
|
+
return [project];
|
|
240
|
+
}
|
|
241
|
+
return void 0;
|
|
242
|
+
}
|
|
243
|
+
function serializeIgnoreOptions(ignoreValue) {
|
|
244
|
+
const DEFAULT_IGNORE = ["node_modules"];
|
|
245
|
+
const ignoreOptions = Array.isArray(ignoreValue) ? ignoreValue : typeof ignoreValue === "string" ? [ignoreValue] : DEFAULT_IGNORE;
|
|
246
|
+
return ignoreOptions.reduce((acc, value) => acc.concat(["--ignore", String(value)]), []);
|
|
247
|
+
}
|
|
248
|
+
function containsOnlyImports(code) {
|
|
249
|
+
const codeWithoutImports = code.replace(/^\s*import\s+(?:'[^'\n]*'|"[^"\n]*"|`[^`\n]*`)[\s;]*$/gm, "").replace(/^\s*import\b[^'"`\n]*\bfrom\s+(?:'[^'\n]*'|"[^"\n]*"|`[^`\n]*`)[\s;]*$/gm, "").replace(/^\s*export\b[^'"`\n]*\bfrom\s+(?:'[^'\n]*'|"[^"\n]*"|`[^`\n]*`)[\s;]*$/gm, "").replace(/\/\*[\s\S]*?\*\//g, "").replace(/\/\/.*$/gm, "").replace(/["']use strict["']\s*;?/g, "").trim();
|
|
250
|
+
return codeWithoutImports.length === 0;
|
|
251
|
+
}
|
|
252
|
+
class CodeInjection {
|
|
253
|
+
constructor(body = "") {
|
|
254
|
+
this.body = body;
|
|
255
|
+
this.header = `!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};`;
|
|
256
|
+
this.footer = "}catch(e){}}();";
|
|
257
|
+
}
|
|
258
|
+
code() {
|
|
259
|
+
if (this.isEmpty()) {
|
|
260
|
+
return "";
|
|
261
|
+
}
|
|
262
|
+
return this.header + this.body + this.footer;
|
|
263
|
+
}
|
|
264
|
+
isEmpty() {
|
|
265
|
+
return this.body.length === 0;
|
|
266
|
+
}
|
|
267
|
+
append(code) {
|
|
268
|
+
if (code instanceof CodeInjection) {
|
|
269
|
+
this.body += code.body;
|
|
270
|
+
} else {
|
|
271
|
+
this.body += code;
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
clear() {
|
|
275
|
+
this.body = "";
|
|
276
|
+
}
|
|
277
|
+
clone() {
|
|
278
|
+
return new CodeInjection(this.body);
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
exports.CodeInjection = CodeInjection;
|
|
283
|
+
exports.arrayify = arrayify;
|
|
284
|
+
exports.containsOnlyImports = containsOnlyImports;
|
|
285
|
+
exports.determineReleaseName = determineReleaseName;
|
|
286
|
+
exports.generateModuleMetadataInjectorCode = generateModuleMetadataInjectorCode;
|
|
287
|
+
exports.generateReleaseInjectorCode = generateReleaseInjectorCode;
|
|
288
|
+
exports.getBuildInformation = getBuildInformation;
|
|
289
|
+
exports.getDependencies = getDependencies;
|
|
290
|
+
exports.getPackageJson = getPackageJson;
|
|
291
|
+
exports.getProjects = getProjects;
|
|
292
|
+
exports.getTurborepoEnvPassthroughWarning = getTurborepoEnvPassthroughWarning;
|
|
293
|
+
exports.parseMajorVersion = parseMajorVersion;
|
|
294
|
+
exports.replaceBooleanFlagsInCode = replaceBooleanFlagsInCode;
|
|
295
|
+
exports.serializeIgnoreOptions = serializeIgnoreOptions;
|
|
296
|
+
exports.stringToUUID = stringToUUID;
|
|
297
|
+
exports.stripQueryAndHashFromPath = stripQueryAndHashFromPath;
|
|
298
|
+
//# sourceMappingURL=utils.js.map
|