@sentry/bundler-plugin-core 0.0.1-alpha.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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../src/getReleaseName.ts","../../src/sentry/telemetry.ts","../../src/sentry/api.ts","../../src/sentry/sourcemaps.ts","../../src/sentry/releasePipeline.ts","../../src/sentry/logger.ts","../../src/index.ts"],"sourcesContent":["import * as child_process from \"child_process\";\n\nfunction getGitBranchHead(): string | undefined {\n try {\n return child_process.execSync(\"git rev-parse HEAD\").toString().trim();\n } catch (e) {\n // no git installed\n return undefined;\n }\n}\n\nexport function getReleaseName(releaseName?: string): string {\n if (releaseName) {\n return releaseName;\n }\n\n // Env var SENTRY_RELEASE takes presendace over other env vars listed below\n // this is why we are looking for it before proceeding with others\n if (process.env[\"SENTRY_RELEASE\"]) {\n return process.env[\"SENTRY_RELEASE\"];\n }\n\n const ENV_VARS = [\n \"SOURCE_VERSION\", // Heroku #1 https://devcenter.heroku.com/changelog-items/630\n \"HEROKU_SLUG_COMMIT\", // Heroku #2: https://docs.sentry.io/product/integrations/deployment/heroku/#configure-releases\n \"CODEBUILD_RESOLVED_SOURCE_VERSION\", // AWS CodeBuild: https://docs.aws.amazon.com/codebuild/latest/userguide/build-env-ref-env-vars.html\n \"CIRCLE_SHA1\", // CircleCI: https://circleci.com/docs/2.0/env-vars/\n \"VERCEL_GIT_COMMIT_SHA\", // Vercel docs: https://vercel.com/docs/concepts/projects/environment-variables#system-environment-variables\n ];\n\n const releaseFromEnvironmentVar = ENV_VARS.find((key) => Object.keys(process.env).includes(key));\n\n if (releaseFromEnvironmentVar) {\n return process.env[releaseFromEnvironmentVar] as string;\n }\n\n const gitBranchHead = getGitBranchHead();\n\n if (gitBranchHead) {\n return gitBranchHead;\n } else {\n throw new Error(\"Could not return a release name\");\n }\n}\n","import {\n defaultStackParser,\n Hub,\n Integrations,\n makeMain,\n makeNodeTransport,\n NodeClient,\n} from \"@sentry/node\";\nimport { Span } from \"@sentry/tracing\";\nimport { AxiosError } from \"axios\";\nimport { BuildContext } from \"../types\";\n\nexport function makeSentryClient(\n dsn: string,\n telemetryEnabled: boolean,\n org?: string\n): { client: NodeClient; hub: Hub } {\n const client = new NodeClient({\n dsn,\n\n enabled: telemetryEnabled,\n tracesSampleRate: telemetryEnabled ? 1.0 : 0.0,\n sampleRate: telemetryEnabled ? 1.0 : 0.0,\n\n release: __PACKAGE_VERSION__,\n integrations: [new Integrations.Http({ tracing: true })],\n tracePropagationTargets: [\"sentry.io/api\"],\n\n stackParser: defaultStackParser,\n transport: makeNodeTransport,\n\n debug: true,\n });\n\n const hub = new Hub(client);\n\n hub.configureScope((scope) => {\n if (org) {\n scope.setTag(\"org\", org);\n }\n });\n\n //TODO: This call is problematic because as soon as we set our hub as the current hub\n // we might interfere with other plugins that use Sentry. However, for now, we'll\n // leave it in because without it, we can't get distributed traces (which are pretty nice)\n // Let's keep it until someone complains about interference.\n // The ideal solution would be a code change in the JS SDK but it's not a straight-forward fix.\n makeMain(hub);\n\n return { client, hub };\n}\n\n/**\n * Adds a span to the passed parentSpan or to the current transaction that's on the passed hub's scope.\n */\nexport function addSpanToTransaction(\n ctx: BuildContext,\n op?: string,\n description?: string\n): Span | undefined {\n const { hub, parentSpan } = ctx;\n const actualSpan = parentSpan || hub.getScope()?.getTransaction();\n const span = actualSpan?.startChild({ op, description });\n hub.configureScope((scope) => scope.setSpan(span));\n\n return span;\n}\n\nexport function captureMinimalError(error: unknown | Error | AxiosError, hub: Hub) {\n const isAxiosError = error instanceof AxiosError;\n const sentryError =\n error instanceof Error\n ? {\n name: `${isAxiosError && error.status ? error.status : \"\"}: ${error.name}`,\n message: error.message,\n stack: error.stack,\n }\n : {};\n\n hub.captureException(sentryError);\n}\n","import { Hub } from \"@sentry/node\";\nimport axios from \"axios\";\nimport FormData from \"form-data\";\nimport { Options } from \"../types\";\nimport { captureMinimalError } from \"./telemetry\";\n\nconst API_PATH = \"/api/0\";\nconst USER_AGENT = `sentry-bundler-plugin/${__PACKAGE_VERSION__}`;\n\nconst sentryApiAxiosInstance = ({\n authToken,\n customHeaders,\n}: Required<Pick<Options, \"authToken\">> & Pick<Options, \"customHeaders\">) =>\n axios.create({\n headers: { ...customHeaders, \"User-Agent\": USER_AGENT, Authorization: `Bearer ${authToken}` },\n });\n\nexport async function createRelease({\n org,\n project,\n release,\n authToken,\n sentryUrl,\n sentryHub,\n customHeaders,\n}: {\n release: string;\n project: string;\n org: string;\n authToken: string;\n sentryUrl: string;\n sentryHub: Hub;\n customHeaders?: Record<string, string>;\n}): Promise<void> {\n const requestUrl = `${sentryUrl}${API_PATH}/organizations/${org}/releases/`;\n\n const releasePayload = {\n version: release,\n projects: [project], // we currently only support creating releases for a single project\n dateStarted: new Date(),\n dateReleased: new Date(), //TODO: figure out if these dates are set correctly\n };\n\n try {\n await sentryApiAxiosInstance({ authToken, customHeaders }).post(requestUrl, releasePayload, {\n headers: { Authorization: `Bearer ${authToken}` },\n });\n } catch (e) {\n captureMinimalError(e, sentryHub);\n throw e;\n }\n}\n\nexport async function deleteAllReleaseArtifacts({\n org,\n project,\n release,\n authToken,\n sentryUrl,\n sentryHub,\n customHeaders,\n}: {\n org: string;\n release: string;\n sentryUrl: string;\n authToken: string;\n project: string;\n sentryHub: Hub;\n customHeaders?: Record<string, string>;\n}): Promise<void> {\n const requestUrl = `${sentryUrl}${API_PATH}/projects/${org}/${project}/files/source-maps/?name=${release}`;\n\n try {\n await sentryApiAxiosInstance({ authToken, customHeaders }).delete(requestUrl, {\n headers: {\n Authorization: `Bearer ${authToken}`,\n },\n });\n } catch (e) {\n captureMinimalError(e, sentryHub);\n throw e;\n }\n}\n\nexport async function updateRelease({\n release,\n org,\n authToken,\n sentryUrl,\n project,\n sentryHub,\n customHeaders,\n}: {\n release: string;\n org: string;\n authToken: string;\n sentryUrl: string;\n project: string;\n sentryHub: Hub;\n customHeaders?: Record<string, string>;\n}): Promise<void> {\n const requestUrl = `${sentryUrl}${API_PATH}/projects/${org}/${project}/releases/${release}/`;\n\n const releasePayload = {\n dateReleased: new Date().toISOString(),\n };\n\n try {\n await sentryApiAxiosInstance({ authToken, customHeaders }).put(requestUrl, releasePayload, {\n headers: { Authorization: `Bearer ${authToken}` },\n });\n } catch (e) {\n captureMinimalError(e, sentryHub);\n throw e;\n }\n}\n\nexport async function uploadReleaseFile({\n org,\n project,\n release,\n authToken,\n sentryUrl,\n filename,\n fileContent,\n sentryHub,\n customHeaders,\n}: {\n org: string;\n release: string;\n sentryUrl: string;\n authToken: string;\n project: string;\n filename: string;\n fileContent: string;\n sentryHub: Hub;\n customHeaders?: Record<string, string>;\n}) {\n const requestUrl = `${sentryUrl}${API_PATH}/projects/${org}/${project}/releases/${release}/files/`;\n\n const form = new FormData();\n form.append(\"name\", filename);\n form.append(\"file\", Buffer.from(fileContent, \"utf-8\"), { filename });\n\n try {\n await sentryApiAxiosInstance({ authToken, customHeaders }).post(requestUrl, form, {\n headers: {\n Authorization: `Bearer ${authToken}`,\n \"Content-Type\": \"multipart/form-data\",\n },\n });\n } catch (e) {\n captureMinimalError(e, sentryHub);\n throw e;\n }\n}\n","import path from \"path\";\nimport fs from \"fs\";\n\nexport type FileRecord = {\n name: string;\n content: string;\n};\n\nexport function getFiles(path: string, allowedExtensions: string[]): FileRecord[] {\n const includedFiles = getAllIncludedFileNames(path, allowedExtensions, []);\n\n return includedFiles.map((filename) => {\n const content = fs.readFileSync(filename, { encoding: \"utf-8\" });\n return { name: \"~\" + filename.replace(new RegExp(`^${path}`), \"\"), content };\n });\n}\n\nfunction getAllIncludedFileNames(\n dirPath: string,\n allowedExtensions: string[],\n accFiles: string[]\n): string[] {\n const files = fs.readdirSync(dirPath);\n\n files\n .map((file) => path.join(dirPath, \"/\", file))\n .forEach((file) => {\n if (fs.statSync(file).isDirectory()) {\n accFiles = accFiles.concat(getAllIncludedFileNames(file, allowedExtensions, accFiles));\n } else {\n if (allowedExtensions.some((e) => file.endsWith(e))) {\n accFiles.push(file);\n }\n }\n });\n\n return accFiles;\n}\n","// Build a facade that exposes necessary sentry functionality\n// Idea: We start out with Sentry-CLI and replace the cli-commands one by one afterwards.\n// Goal: eventually replace everything sentry-cli does with \"native\" code here\n// Reason: We don't want to depend on a binary that gets downloaded in a postinstall hook\n// - no fixed version\n// - huge download\n// - unnecessary functionality\n\nimport { Options, BuildContext } from \"../types\";\nimport { createRelease, deleteAllReleaseArtifacts, uploadReleaseFile, updateRelease } from \"./api\";\nimport { getFiles } from \"./sourcemaps\";\nimport { addSpanToTransaction } from \"./telemetry\";\n\nexport async function createNewRelease(\n release: string,\n options: Options,\n ctx: BuildContext\n): Promise<string> {\n const span = addSpanToTransaction(ctx, \"function.plugin.create_release\");\n\n // TODO: pull these checks out of here and simplify them\n if (options.authToken === undefined) {\n ctx.logger.warn('Missing \"authToken\" option. Will not create release.');\n return Promise.resolve(\"nothing to do here\");\n } else if (options.org === undefined) {\n ctx.logger.warn('Missing \"org\" option. Will not create release.');\n return Promise.resolve(\"nothing to do here\");\n } else if (options.url === undefined) {\n ctx.logger.warn('Missing \"url\" option. Will not create release.');\n return Promise.resolve(\"nothing to do here\");\n } else if (options.project === undefined) {\n ctx.logger.warn('Missing \"project\" option. Will not create release.');\n return Promise.resolve(\"nothing to do here\");\n }\n\n await createRelease({\n release,\n authToken: options.authToken,\n org: options.org,\n project: options.project,\n sentryUrl: options.url,\n sentryHub: ctx.hub,\n customHeaders: options.customHeaders,\n });\n\n ctx.logger.info(\"Successfully created release.\");\n\n span?.finish();\n return Promise.resolve(\"nothing to do here\");\n}\n\nexport async function uploadSourceMaps(\n release: string,\n options: Options,\n ctx: BuildContext\n): Promise<string> {\n const span = addSpanToTransaction(ctx, \"function.plugin.upload_sourcemaps\");\n // This is what Sentry CLI does:\n // TODO: 0. Preprocess source maps\n // - (Out of scope for now)\n // - For rewriting source maps see https://github.com/getsentry/rust-sourcemap/blob/master/src/types.rs#L763\n // TODO: 1. Creates a new release to make sure it exists\n // - can we assume that the release will exist b/c we don't give unplugin users the\n // option to skip this step?\n // TODO: 2. download already uploaded files and get their checksums\n // TODO: 3. identify new or changed files (by comparing checksums)\n // TODO: 4. upload new and changed files\n // - CLI asks API for chunk options https://github.com/getsentry/sentry-cli/blob/7b8466885d9cfd51aee6fdc041eca9f645026303/src/utils/file_upload.rs#L106-L112\n // - WTF?\n // - don't upload more than 20k files\n // - upload files concurrently\n // - 2 options: chunked upload (multiple files per chunk) or single file upload\n const {\n include,\n ext,\n // ignore,\n // ignoreFile,\n // rewrite,\n // sourceMapReference,\n // stripPrefix,\n // stripCommonPrefix,\n // validate,\n // urlPrefix,\n // urlSuffix,\n org,\n project,\n authToken,\n url,\n } = options;\n\n // TODO: pull these checks out of here and simplify them\n if (authToken === undefined) {\n ctx.logger.warn('Missing \"authToken\" option. Will not create release.');\n return Promise.resolve(\"nothing to do here\");\n } else if (org === undefined) {\n ctx.logger.warn('Missing \"org\" option. Will not create release.');\n return Promise.resolve(\"nothing to do here\");\n } else if (url === undefined) {\n ctx.logger.warn('Missing \"url\" option. Will not create release.');\n return Promise.resolve(\"nothing to do here\");\n } else if (project === undefined) {\n ctx.logger.warn('Missing \"project\" option. Will not create release.');\n return Promise.resolve(\"nothing to do here\");\n }\n\n ctx.logger.info(\"Uploading Sourcemaps.\");\n\n //TODO: Remove this once we have internal options. this property must always be present\n const fileExtensions = ext || [];\n const files = getFiles(include, fileExtensions);\n\n ctx.logger.info(`Found ${files.length} files to upload.`);\n\n return Promise.all(\n files.map((file) =>\n uploadReleaseFile({\n org,\n project,\n release,\n authToken,\n sentryUrl: url,\n filename: file.name,\n fileContent: file.content,\n sentryHub: ctx.hub,\n customHeaders: options.customHeaders,\n })\n )\n ).then(() => {\n ctx.logger.info(\"Successfully uploaded sourcemaps.\");\n span?.finish();\n return \"done\";\n });\n}\n\nexport async function finalizeRelease(\n release: string,\n options: Options,\n ctx: BuildContext\n): Promise<string> {\n const span = addSpanToTransaction(ctx, \"function.plugin.finalize_release\");\n\n if (options.finalize) {\n const { authToken, org, url, project } = options;\n if (!authToken || !org || !url || !project) {\n ctx.logger.warn(\"Missing required option. Will not clean existing artifacts.\");\n return Promise.resolve(\"nothing to do here\");\n }\n\n await updateRelease({\n authToken,\n org,\n release,\n sentryUrl: url,\n project,\n sentryHub: ctx.hub,\n customHeaders: options.customHeaders,\n });\n\n ctx.logger.info(\"Successfully finalized release.\");\n }\n\n span?.finish();\n return Promise.resolve(\"nothing to do here\");\n}\n\nexport async function cleanArtifacts(\n release: string,\n options: Options,\n ctx: BuildContext\n): Promise<string> {\n const span = addSpanToTransaction(ctx, \"function.plugin.clean_artifacts\");\n\n if (options.cleanArtifacts) {\n // TODO: pull these checks out of here and simplify them\n if (options.authToken === undefined) {\n ctx.logger.warn('Missing \"authToken\" option. Will not clean existing artifacts.');\n return Promise.resolve(\"nothing to do here\");\n } else if (options.org === undefined) {\n ctx.logger.warn('Missing \"org\" option. Will not clean existing artifacts.');\n return Promise.resolve(\"nothing to do here\");\n } else if (options.url === undefined) {\n ctx.logger.warn('Missing \"url\" option. Will not clean existing artifacts.');\n return Promise.resolve(\"nothing to do here\");\n } else if (options.project === undefined) {\n ctx.logger.warn('Missing \"project\" option. Will not clean existing artifacts.');\n return Promise.resolve(\"nothing to do here\");\n }\n\n await deleteAllReleaseArtifacts({\n authToken: options.authToken,\n org: options.org,\n release,\n sentryUrl: options.url,\n project: options.project,\n sentryHub: ctx.hub,\n customHeaders: options.customHeaders,\n });\n\n ctx.logger.info(\"Successfully cleaned previous artifacts.\");\n }\n\n span?.finish();\n return Promise.resolve(\"nothing to do here\");\n}\n\n// TODO: Stuff we worry about later:\n\nexport async function setCommits(\n /* version: string, */\n ctx: BuildContext\n): Promise<string> {\n const span = addSpanToTransaction(ctx, \"function.plugin.set_commits\");\n\n span?.finish();\n return Promise.resolve(\"Noop\");\n}\n\nexport async function addDeploy(\n /* version: string, */\n ctx: BuildContext\n): Promise<string> {\n const span = addSpanToTransaction(ctx, \"function.plugin.add_deploy\");\n\n span?.finish();\n return Promise.resolve(\"Noop\");\n}\n","import { SeverityLevel, Hub } from \"@sentry/node\";\n\ninterface LoggerOptions {\n silent?: boolean;\n hub: Hub;\n prefix: string;\n}\n\nexport function createLogger(options: LoggerOptions) {\n function addBreadcrumb(level: SeverityLevel, message: string) {\n options.hub.addBreadcrumb({\n category: \"logger\",\n level,\n message,\n });\n }\n\n return {\n info(message: string) {\n if (!options?.silent) {\n // eslint-disable-next-line no-console\n console.log(`${options.prefix} ${message}`);\n }\n\n addBreadcrumb(\"info\", message);\n },\n warn(message: string) {\n if (!options?.silent) {\n // eslint-disable-next-line no-console\n console.log(`${options.prefix} Warning! ${message}`);\n }\n\n addBreadcrumb(\"warning\", message);\n },\n error(message: string) {\n if (!options?.silent) {\n // eslint-disable-next-line no-console\n console.log(`${options.prefix} Error: ${message}`);\n }\n\n addBreadcrumb(\"error\", message);\n },\n };\n}\n","import { createUnplugin } from \"unplugin\";\nimport MagicString from \"magic-string\";\nimport { getReleaseName } from \"./getReleaseName\";\nimport { Options, BuildContext } from \"./types\";\nimport {\n createNewRelease,\n cleanArtifacts,\n addDeploy,\n finalizeRelease,\n setCommits,\n uploadSourceMaps,\n} from \"./sentry/releasePipeline\";\nimport \"@sentry/tracing\";\nimport { addSpanToTransaction, captureMinimalError, makeSentryClient } from \"./sentry/telemetry\";\nimport { Span, Transaction } from \"@sentry/types\";\nimport { createLogger } from \"./sentry/logger\";\n\nconst defaultOptions: Omit<Options, \"include\"> = {\n //TODO: add default options here as we port over options from the webpack plugin\n // validate: false\n debug: false,\n cleanArtifacts: false,\n finalize: true,\n url: \"https://sentry.io\",\n ext: [\"js\", \"map\", \"jsbundle\", \"bundle\"],\n telemetry: true,\n};\n\n// We prefix the polyfill id with \\0 to tell other plugins not to try to load or transform it.\n// This hack is taken straight from https://rollupjs.org/guide/en/#resolveid.\n// This probably doesn't work for all bundlers but for rollup it does.\nconst RELEASE_INJECTOR_ID = \"\\0sentry-release-injector\";\n\n/**\n * The sentry-unplugin concerns itself with two things:\n * - Release injection\n * - Sourcemaps upload\n *\n * Release injection:\n *\n * Per default the sentry-unpugin will inject a global `SENTRY_RELEASE` variable into the entrypoint of all bundles. On\n * a technical level this is done by appending an import (`import \"sentry-release-injector;\"`) to all entrypoint files\n * of the user code (see `transformInclude` and `transform` hooks). This import is then resolved by the sentry-unplugin\n * to a virtual module that sets the global variable (see `resolveId` and `load` hooks).\n *\n * The resulting output approximately looks like this:\n *\n * ```text\n * entrypoint1.js (user file)\n * ┌───────────────────┐ ┌─────────────────────────────────────────────────┐\n * │ │ │ import { myFunction } from \"./my-library.js\"; │\n * │ sentry-unplugin │ │ │\n * │ │ │ const myResult = myFunction(); │\n * └---------│---------┘ │ export { myResult }; │\n * │ │ │\n * │ injects │ // injected by sentry-unplugin │\n * ├───────────────────► import \"sentry-release-injector\"; ─────────────────────┐\n * │ └─────────────────────────────────────────────────┘ │\n * │ │\n * │ │\n * │ entrypoint2.js (user file) │\n * │ ┌─────────────────────────────────────────────────┐ │\n * │ │ export function myFunction() { │ │\n * │ │ return \"Hello world!\"; │ │\n * │ │ } │ │\n * │ │ │ │\n * │ injects │ // injected by sentry-unplugin │ │\n * └───────────────────► import \"sentry-release-injector\"; ─────────────────────┤\n * └─────────────────────────────────────────────────┘ │\n * │\n * │\n * sentry-release-injector │\n * ┌──────────────────────────────────┐ │\n * │ │ is resolved │\n * │ global.SENTRY_RELEASE = { ... } │ by unplugin │\n * │ // + a little more logic │<─────────────────────┘\n * │ │ (only once)\n * └──────────────────────────────────┘\n * ```\n *\n * Source maps upload:\n *\n * The sentry-unplugin will also take care of uploading source maps to Sentry. This is all done in the `buildEnd` hook.\n * TODO: elaborate a bit on how sourcemaps upload works\n */\nconst unplugin = createUnplugin<Options>((originalOptions, unpluginMetaContext) => {\n const options = { ...defaultOptions, ...originalOptions };\n\n //TODO: We can get rid of this variable once we have internal plugin options\n const telemetryEnabled = options.telemetry === true;\n\n const { hub: sentryHub } = makeSentryClient(\n \"https://4c2bae7d9fbc413e8f7385f55c515d51@o1.ingest.sentry.io/6690737\",\n telemetryEnabled,\n options.org\n );\n\n const logger = createLogger({\n hub: sentryHub,\n prefix: `[sentry-${unpluginMetaContext.framework}-plugin]`,\n silent: options.silent,\n });\n\n if (telemetryEnabled) {\n logger.info(\"Sending error and performance telemetry data to Sentry.\");\n logger.info(\"To disable telemetry, set `options.telemetry` to `false`.\");\n }\n\n sentryHub.setTags({\n organization: options.org,\n project: options.project,\n bundler: unpluginMetaContext.framework,\n });\n\n sentryHub.setUser({ id: options.org });\n\n // This is `nonEntrypointSet` instead of `entrypointSet` because this set is filled in the `resolveId` hook and there\n // we don't have guaranteed access to *absolute* paths of files if they're entrypoints. For non-entrypoints we're\n // guaranteed to have absolute paths - we're then using the paths in later hooks to make decisions about whether a\n // file is an entrypoint or a non-entrypoint.\n const nonEntrypointSet = new Set<string>();\n\n let transaction: Transaction | undefined;\n let releaseInjectionSpan: Span | undefined;\n\n return {\n name: \"sentry-plugin\",\n enforce: \"pre\", // needed for Vite to call resolveId hook\n\n /**\n * Responsible for starting the plugin execution transaction and the release injection span\n */\n buildStart() {\n transaction = sentryHub.startTransaction({\n op: \"function.plugin\",\n name: \"Sentry Bundler Plugin execution\",\n });\n releaseInjectionSpan = addSpanToTransaction(\n { hub: sentryHub, parentSpan: transaction, logger },\n \"function.plugin.inject_release\",\n \"Release injection\"\n );\n },\n\n /**\n * Responsible for returning the \"sentry-release-injector\" ID when we encounter it. We return the ID so load is\n * called and we can \"virtually\" load the module. See `load` hook for more info on why it's virtual.\n *\n * We also record the id (i.e. absolute path) of any non-entrypoint.\n *\n * @param id For imports: The absolute path of the module to be imported. For entrypoints: The path the user defined as entrypoint - may also be relative.\n * @param importer For imports: The absolute path of the module that imported this module. For entrypoints: `undefined`.\n * @param options Additional information to use for making a resolving decision.\n * @returns `\"sentry-release-injector\"` when the imported file is called `\"sentry-release-injector\"`. Otherwise returns `undefined`.\n */\n resolveId(id, importer, { isEntry }) {\n sentryHub.addBreadcrumb({\n category: \"resolveId\",\n message: `isEntry: ${String(isEntry)}`,\n level: \"info\",\n });\n\n if (!isEntry) {\n nonEntrypointSet.add(id);\n }\n\n if (id === RELEASE_INJECTOR_ID) {\n return RELEASE_INJECTOR_ID;\n } else {\n return undefined;\n }\n },\n\n loadInclude(id) {\n logger.info(`Called \"loadInclude\": ${JSON.stringify({ id })}`);\n\n return id === RELEASE_INJECTOR_ID;\n },\n\n /**\n * Responsible for \"virtually\" loading the \"sentry-release-injector\" module. \"Virtual\" means that the module is not\n * read from somewhere on disk but rather just returned via a string.\n *\n * @param id Always the absolute (fully resolved) path to the module.\n * @returns The global injector code when we load the \"sentry-release-injector\" module. Otherwise returns `undefined`.\n */\n load(id) {\n sentryHub.addBreadcrumb({\n category: \"load\",\n level: \"info\",\n });\n\n if (id === RELEASE_INJECTOR_ID) {\n return generateGlobalInjectorCode({ release: getReleaseName(options.release) });\n } else {\n return undefined;\n }\n },\n\n /**\n * This hook determines whether we want to transform a module. In the unplugin we want to transform every entrypoint\n * unless configured otherwise with the `entries` option.\n *\n * @param id Always the absolute (fully resolved) path to the module.\n * @returns `true` or `false` depending on whether we want to transform the module. For the sentry-unplugin we only\n * want to transform the release injector file.\n */\n transformInclude(id) {\n sentryHub.addBreadcrumb({\n category: \"transformInclude\",\n level: \"info\",\n });\n\n if (options.entries) {\n // If there's an `entries` option transform (ie. inject the release varible) when the file path matches the option.\n if (typeof options.entries === \"function\") {\n return options.entries(id);\n }\n\n const arrayifiedEntriesOption = Array.isArray(options.entries)\n ? options.entries\n : [options.entries];\n\n return arrayifiedEntriesOption.some((entry) => {\n if (entry instanceof RegExp) {\n return entry.test(id);\n } else {\n return id === entry;\n }\n });\n }\n\n // We want to transform (release injection) every module except for \"sentry-release-injector\".\n return id !== RELEASE_INJECTOR_ID && !nonEntrypointSet.has(id);\n },\n\n /**\n * This hook is responsible for injecting the \"sentry release injector\" imoprt statement into each entrypoint unless\n * configured otherwise with the `entries` option (logic for that is in the `transformInclude` hook).\n *\n * @param code Code of the file to transform.\n * @param id Always the absolute (fully resolved) path to the module.\n * @returns transformed code + source map\n */\n transform(code) {\n sentryHub.addBreadcrumb({\n category: \"transform\",\n level: \"info\",\n });\n\n // The MagicString library allows us to generate sourcemaps for the changes we make to the user code.\n const ms: MagicString = new MagicString(code); // Very stupid author's note: For some absurd reason, when we add a JSDoc to this hook, the TS language server starts complaining about `ms` and adding a type annotation helped so that's why it's here. (┛ಠ_ಠ)┛彡┻━┻\n\n // appending instead of prepending has less probability of mucking with user'sadly\n // source maps and import statements get to the top anyways\n ms.append(`import \"${RELEASE_INJECTOR_ID}\";`);\n\n if (unpluginMetaContext.framework === \"esbuild\") {\n // esbuild + unplugin is buggy at the moment when we return an object with a `map` (sourcemap) property.\n // Currently just returning a string here seems to work and even correctly sourcemaps the code we generate.\n // However, other bundlers need the `map` property\n return ms.toString();\n } else {\n return {\n code: ms.toString(),\n map: ms.generateMap(),\n };\n }\n },\n\n /**\n * Responsible for executing the sentry release creation pipeline (i.e. creating a release on\n * Sentry.io, uploading sourcemaps, associating commits and deploys and finalizing the release)\n */\n buildEnd() {\n releaseInjectionSpan?.finish();\n const releasePipelineSpan =\n transaction &&\n addSpanToTransaction(\n { hub: sentryHub, parentSpan: transaction, logger },\n \"function.plugin.release\",\n \"Release pipeline\"\n );\n\n const release = getReleaseName(options.release);\n\n sentryHub.addBreadcrumb({\n category: \"buildEnd:start\",\n level: \"info\",\n });\n\n //TODO:\n // 1. validate options to see if we get a valid include property, release name, etc.\n // 2. normalize the include property: Users can pass string | string [] | IncludeEntry[].\n // That's good for them but a hassle for us. Let's try to normalize this into one data type\n // (I vote IncludeEntry[]) and continue with that down the line\n\n const ctx: BuildContext = { hub: sentryHub, parentSpan: releasePipelineSpan, logger };\n\n createNewRelease(release, options, ctx)\n .then(() => cleanArtifacts(release, options, ctx))\n .then(() => uploadSourceMaps(release, options, ctx))\n .then(() => setCommits(ctx)) // this is a noop for now\n .then(() => finalizeRelease(release, options, ctx))\n .then(() => addDeploy(ctx)) // this is a noop for now\n .then(() => {\n transaction?.setStatus(\"ok\");\n })\n .catch((e: Error) => {\n captureMinimalError(e, sentryHub);\n transaction?.setStatus(\"cancelled\");\n\n logger.error(e.message);\n\n if (options.errorHandler) {\n options.errorHandler(e);\n } else {\n throw e;\n }\n })\n .finally(() => {\n sentryHub.addBreadcrumb({\n category: \"buildEnd:finish\",\n level: \"info\",\n });\n releasePipelineSpan?.finish();\n transaction?.finish();\n });\n },\n };\n});\n\n/**\n * Generates code for the \"sentry-release-injector\" which is responsible for setting the global `SENTRY_RELEASE`\n * variable.\n */\nfunction generateGlobalInjectorCode({ release }: { release: string }) {\n // The code below is mostly ternary operators because it saves bundle size.\n // The checks are to support as many environments as possible. (Node.js, Browser, webworkers, etc.)\n return `\n var _global =\n typeof window !== 'undefined' ?\n window :\n typeof global !== 'undefined' ?\n global :\n typeof self !== 'undefined' ?\n self :\n {};\n\n _global.SENTRY_RELEASE={id:\"${release}\"};`;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const sentryVitePlugin: (options: Options) => any = unplugin.vite;\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const sentryRollupPlugin: (options: Options) => any = unplugin.rollup;\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const sentryWebpackPlugin: (options: Options) => any = unplugin.webpack;\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const sentryEsbuildPlugin: (options: Options) => any = unplugin.esbuild;\n\nexport type { Options } from \"./types\";\n"],"names":["getGitBranchHead","child_process","execSync","toString","trim","e","undefined","getReleaseName","releaseName","process","env","ENV_VARS","releaseFromEnvironmentVar","find","key","Object","keys","includes","gitBranchHead","Error","makeSentryClient","dsn","telemetryEnabled","org","client","NodeClient","enabled","tracesSampleRate","sampleRate","release","integrations","Integrations","Http","tracing","tracePropagationTargets","stackParser","defaultStackParser","transport","makeNodeTransport","debug","hub","Hub","configureScope","scope","setTag","makeMain","addSpanToTransaction","ctx","op","description","parentSpan","actualSpan","getScope","getTransaction","span","startChild","setSpan","captureMinimalError","error","isAxiosError","AxiosError","sentryError","name","status","message","stack","captureException","API_PATH","USER_AGENT","sentryApiAxiosInstance","authToken","customHeaders","axios","create","headers","Authorization","createRelease","project","sentryUrl","sentryHub","requestUrl","releasePayload","version","projects","dateStarted","Date","dateReleased","post","deleteAllReleaseArtifacts","updateRelease","toISOString","put","uploadReleaseFile","filename","fileContent","form","FormData","append","Buffer","from","getFiles","path","allowedExtensions","includedFiles","getAllIncludedFileNames","map","content","fs","readFileSync","encoding","replace","RegExp","dirPath","accFiles","files","readdirSync","file","join","forEach","statSync","isDirectory","concat","some","endsWith","push","createNewRelease","options","logger","warn","Promise","resolve","url","info","finish","uploadSourceMaps","include","ext","fileExtensions","length","all","then","finalizeRelease","finalize","cleanArtifacts","setCommits","addDeploy","createLogger","addBreadcrumb","level","category","silent","console","log","prefix","defaultOptions","telemetry","RELEASE_INJECTOR_ID","unplugin","createUnplugin","originalOptions","unpluginMetaContext","framework","setTags","organization","bundler","setUser","id","nonEntrypointSet","Set","transaction","releaseInjectionSpan","enforce","buildStart","startTransaction","resolveId","importer","isEntry","String","add","loadInclude","JSON","stringify","load","generateGlobalInjectorCode","transformInclude","entries","arrayifiedEntriesOption","Array","isArray","entry","test","has","transform","code","ms","MagicString","generateMap","buildEnd","releasePipelineSpan","setStatus","errorHandler","sentryVitePlugin","vite","sentryRollupPlugin","rollup","sentryWebpackPlugin","webpack","sentryEsbuildPlugin","esbuild"],"mappings":"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"}