trigger.dev 3.0.0-beta.51 → 3.0.0-beta.53
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/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../node_modules/.pnpm/xdg-app-paths@8.3.0/node_modules/src/lib/XDGAppPaths.ts","../../../node_modules/.pnpm/xdg-portable@10.6.0/node_modules/src/lib/XDG.ts","../../../node_modules/.pnpm/os-paths@7.4.0/node_modules/src/lib/OSPaths.ts","../../../node_modules/.pnpm/os-paths@7.4.0/node_modules/src/platform-adapters/node.ts","../../../node_modules/.pnpm/os-paths@7.4.0/node_modules/src/mod.cjs.ts","../../../node_modules/.pnpm/xdg-portable@10.6.0/node_modules/src/platform-adapters/node.ts","../../../node_modules/.pnpm/xdg-portable@10.6.0/node_modules/src/mod.cjs.ts","../../../node_modules/.pnpm/xdg-app-paths@8.3.0/node_modules/src/platform-adapters/node.ts","../../../node_modules/.pnpm/xdg-app-paths@8.3.0/node_modules/src/mod.cjs.ts","../../../node_modules/.pnpm/retry@0.13.1/node_modules/retry/lib/retry_operation.js","../../../node_modules/.pnpm/retry@0.13.1/node_modules/retry/lib/retry.js","../../../node_modules/.pnpm/retry@0.13.1/node_modules/retry/index.js","../src/cli/index.ts","../src/commands/deploy.ts","../package.json","../src/apiClient.ts","../src/cli/common.ts","../src/telemetry/tracing.ts","../src/utilities/logger.ts","../src/utilities/getEnvironmentVariableFactory.ts","../src/utilities/cliOutput.ts","../src/utilities/configFiles.ts","../../../node_modules/.pnpm/xdg-app-paths@8.3.0/node_modules/xdg-app-paths/dist/cjs/esm-wrapper/mod.esm.js","../src/consts.ts","../src/utilities/fileSystem.ts","../src/utilities/taskFiles.ts","../src/utilities/initialBanner.ts","../src/utilities/getVersion.ts","../src/utilities/windows.ts","../src/utilities/installPackages.ts","../src/commands/login.ts","../../../node_modules/.pnpm/open@10.0.3/node_modules/open/index.js","../../../node_modules/.pnpm/is-wsl@3.1.0/node_modules/is-wsl/index.js","../../../node_modules/.pnpm/is-inside-container@1.0.0/node_modules/is-inside-container/index.js","../../../node_modules/.pnpm/is-docker@3.0.0/node_modules/is-docker/index.js","../../../node_modules/.pnpm/define-lazy-prop@3.0.0/node_modules/define-lazy-prop/index.js","../../../node_modules/.pnpm/default-browser@5.2.1/node_modules/default-browser/index.js","../../../node_modules/.pnpm/default-browser-id@5.0.0/node_modules/default-browser-id/index.js","../../../node_modules/.pnpm/run-applescript@7.0.0/node_modules/run-applescript/index.js","../../../node_modules/.pnpm/bundle-name@4.1.0/node_modules/bundle-name/index.js","../../../node_modules/.pnpm/default-browser@5.2.1/node_modules/default-browser/windows.js","../../../node_modules/.pnpm/p-retry@6.1.0/node_modules/p-retry/index.js","../../../node_modules/.pnpm/is-network-error@1.0.0/node_modules/is-network-error/index.js","../src/commands/whoami.ts","../src/utilities/session.ts","../src/utilities/build.ts","../src/utilities/deployErrors.ts","../src/utilities/links.ts","../src/utilities/javascriptProject.ts","../src/utilities/getUserPackageManager.ts","../src/utilities/assertExhaustive.ts","../src/utilities/resolveInternalFilePath.ts","../src/utilities/safeJsonParse.ts","../src/commands/update.ts","../src/utilities/resolveEnvVars.ts","../src/commands/dev.tsx","../src/workers/common/errors.ts","../src/workers/dev/backgroundWorker.ts","../src/utilities/runtimeCheck.ts","../src/commands/init.ts","../src/utilities/createFileFromTemplate.ts","../src/commands/logout.ts","../src/commands/list-profiles.ts","../src/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,"function RetryOperation(timeouts, options) {\n // Compatibility for the old (timeouts, retryForever) signature\n if (typeof options === 'boolean') {\n options = { forever: options };\n }\n\n this._originalTimeouts = JSON.parse(JSON.stringify(timeouts));\n this._timeouts = timeouts;\n this._options = options || {};\n this._maxRetryTime = options && options.maxRetryTime || Infinity;\n this._fn = null;\n this._errors = [];\n this._attempts = 1;\n this._operationTimeout = null;\n this._operationTimeoutCb = null;\n this._timeout = null;\n this._operationStart = null;\n this._timer = null;\n\n if (this._options.forever) {\n this._cachedTimeouts = this._timeouts.slice(0);\n }\n}\nmodule.exports = RetryOperation;\n\nRetryOperation.prototype.reset = function() {\n this._attempts = 1;\n this._timeouts = this._originalTimeouts.slice(0);\n}\n\nRetryOperation.prototype.stop = function() {\n if (this._timeout) {\n clearTimeout(this._timeout);\n }\n if (this._timer) {\n clearTimeout(this._timer);\n }\n\n this._timeouts = [];\n this._cachedTimeouts = null;\n};\n\nRetryOperation.prototype.retry = function(err) {\n if (this._timeout) {\n clearTimeout(this._timeout);\n }\n\n if (!err) {\n return false;\n }\n var currentTime = new Date().getTime();\n if (err && currentTime - this._operationStart >= this._maxRetryTime) {\n this._errors.push(err);\n this._errors.unshift(new Error('RetryOperation timeout occurred'));\n return false;\n }\n\n this._errors.push(err);\n\n var timeout = this._timeouts.shift();\n if (timeout === undefined) {\n if (this._cachedTimeouts) {\n // retry forever, only keep last error\n this._errors.splice(0, this._errors.length - 1);\n timeout = this._cachedTimeouts.slice(-1);\n } else {\n return false;\n }\n }\n\n var self = this;\n this._timer = setTimeout(function() {\n self._attempts++;\n\n if (self._operationTimeoutCb) {\n self._timeout = setTimeout(function() {\n self._operationTimeoutCb(self._attempts);\n }, self._operationTimeout);\n\n if (self._options.unref) {\n self._timeout.unref();\n }\n }\n\n self._fn(self._attempts);\n }, timeout);\n\n if (this._options.unref) {\n this._timer.unref();\n }\n\n return true;\n};\n\nRetryOperation.prototype.attempt = function(fn, timeoutOps) {\n this._fn = fn;\n\n if (timeoutOps) {\n if (timeoutOps.timeout) {\n this._operationTimeout = timeoutOps.timeout;\n }\n if (timeoutOps.cb) {\n this._operationTimeoutCb = timeoutOps.cb;\n }\n }\n\n var self = this;\n if (this._operationTimeoutCb) {\n this._timeout = setTimeout(function() {\n self._operationTimeoutCb();\n }, self._operationTimeout);\n }\n\n this._operationStart = new Date().getTime();\n\n this._fn(this._attempts);\n};\n\nRetryOperation.prototype.try = function(fn) {\n console.log('Using RetryOperation.try() is deprecated');\n this.attempt(fn);\n};\n\nRetryOperation.prototype.start = function(fn) {\n console.log('Using RetryOperation.start() is deprecated');\n this.attempt(fn);\n};\n\nRetryOperation.prototype.start = RetryOperation.prototype.try;\n\nRetryOperation.prototype.errors = function() {\n return this._errors;\n};\n\nRetryOperation.prototype.attempts = function() {\n return this._attempts;\n};\n\nRetryOperation.prototype.mainError = function() {\n if (this._errors.length === 0) {\n return null;\n }\n\n var counts = {};\n var mainError = null;\n var mainErrorCount = 0;\n\n for (var i = 0; i < this._errors.length; i++) {\n var error = this._errors[i];\n var message = error.message;\n var count = (counts[message] || 0) + 1;\n\n counts[message] = count;\n\n if (count >= mainErrorCount) {\n mainError = error;\n mainErrorCount = count;\n }\n }\n\n return mainError;\n};\n","var RetryOperation = require('./retry_operation');\n\nexports.operation = function(options) {\n var timeouts = exports.timeouts(options);\n return new RetryOperation(timeouts, {\n forever: options && (options.forever || options.retries === Infinity),\n unref: options && options.unref,\n maxRetryTime: options && options.maxRetryTime\n });\n};\n\nexports.timeouts = function(options) {\n if (options instanceof Array) {\n return [].concat(options);\n }\n\n var opts = {\n retries: 10,\n factor: 2,\n minTimeout: 1 * 1000,\n maxTimeout: Infinity,\n randomize: false\n };\n for (var key in options) {\n opts[key] = options[key];\n }\n\n if (opts.minTimeout > opts.maxTimeout) {\n throw new Error('minTimeout is greater than maxTimeout');\n }\n\n var timeouts = [];\n for (var i = 0; i < opts.retries; i++) {\n timeouts.push(this.createTimeout(i, opts));\n }\n\n if (options && options.forever && !timeouts.length) {\n timeouts.push(this.createTimeout(i, opts));\n }\n\n // sort the array numerically ascending\n timeouts.sort(function(a,b) {\n return a - b;\n });\n\n return timeouts;\n};\n\nexports.createTimeout = function(attempt, opts) {\n var random = (opts.randomize)\n ? (Math.random() + 1)\n : 1;\n\n var timeout = Math.round(random * Math.max(opts.minTimeout, 1) * Math.pow(opts.factor, attempt));\n timeout = Math.min(timeout, opts.maxTimeout);\n\n return timeout;\n};\n\nexports.wrap = function(obj, options, methods) {\n if (options instanceof Array) {\n methods = options;\n options = null;\n }\n\n if (!methods) {\n methods = [];\n for (var key in obj) {\n if (typeof obj[key] === 'function') {\n methods.push(key);\n }\n }\n }\n\n for (var i = 0; i < methods.length; i++) {\n var method = methods[i];\n var original = obj[method];\n\n obj[method] = function retryWrapper(original) {\n var op = exports.operation(options);\n var args = Array.prototype.slice.call(arguments, 1);\n var callback = args.pop();\n\n args.push(function(err) {\n if (op.retry(err)) {\n return;\n }\n if (err) {\n arguments[0] = op.mainError();\n }\n callback.apply(this, arguments);\n });\n\n op.attempt(function() {\n original.apply(obj, args);\n });\n }.bind(obj, original);\n obj[method].options = options;\n }\n};\n","module.exports = require('./lib/retry');","import { Command } from \"commander\";\nimport { configureDeployCommand } from \"../commands/deploy.js\";\nimport { configureDevCommand } from \"../commands/dev.js\";\nimport { configureInitCommand } from \"../commands/init.js\";\nimport { configureLoginCommand } from \"../commands/login.js\";\nimport { configureLogoutCommand } from \"../commands/logout.js\";\nimport { configureWhoamiCommand } from \"../commands/whoami.js\";\nimport { COMMAND_NAME } from \"../consts.js\";\nimport { getVersion } from \"../utilities/getVersion.js\";\nimport { configureListProfilesCommand } from \"../commands/list-profiles.js\";\nimport { configureUpdateCommand } from \"../commands/update.js\";\n\nexport const program = new Command();\n\nprogram\n .name(COMMAND_NAME)\n .description(\"Create, run locally and deploy Trigger.dev background tasks.\")\n .version(getVersion(), \"-v, --version\", \"Display the version number\");\n\nconfigureLoginCommand(program);\nconfigureInitCommand(program);\nconfigureDevCommand(program);\nconfigureDeployCommand(program);\nconfigureWhoamiCommand(program);\nconfigureLogoutCommand(program);\nconfigureListProfilesCommand(program);\nconfigureUpdateCommand(program);\n","import { intro, log, outro } from \"@clack/prompts\";\nimport { depot } from \"@depot/cli\";\nimport { context, trace } from \"@opentelemetry/api\";\nimport {\n ResolvedConfig,\n TaskMetadataFailedToParseData,\n detectDependencyVersion,\n flattenAttributes,\n} from \"@trigger.dev/core/v3\";\nimport { recordSpanException } from \"@trigger.dev/core/v3/workers\";\nimport { Command, Option as CommandOption } from \"commander\";\nimport { Metafile, build } from \"esbuild\";\nimport { execa } from \"execa\";\nimport { createHash } from \"node:crypto\";\nimport { readFileSync } from \"node:fs\";\nimport { copyFile, mkdir, readFile, writeFile } from \"node:fs/promises\";\nimport { dirname, join, posix, relative, resolve } from \"node:path\";\nimport { setTimeout } from \"node:timers/promises\";\nimport invariant from \"tiny-invariant\";\nimport { z } from \"zod\";\nimport * as packageJson from \"../../package.json\";\nimport { CliApiClient } from \"../apiClient\";\nimport {\n CommonCommandOptions,\n SkipCommandError,\n SkipLoggingError,\n commonOptions,\n handleTelemetry,\n tracer,\n wrapCommandAction,\n} from \"../cli/common.js\";\nimport { ReadConfigResult, readConfig } from \"../utilities/configFiles.js\";\nimport { createTempDir, writeJSONFile } from \"../utilities/fileSystem\";\nimport { printStandloneInitialBanner } from \"../utilities/initialBanner.js\";\nimport {\n detectPackageNameFromImportPath,\n parsePackageName,\n stripWorkspaceFromVersion,\n} from \"../utilities/installPackages\";\nimport { logger } from \"../utilities/logger.js\";\nimport { createTaskFileImports, gatherTaskFiles } from \"../utilities/taskFiles\";\nimport { login } from \"./login\";\n\nimport { esbuildDecorators } from \"@anatine/esbuild-decorators\";\nimport { Glob, GlobOptions } from \"glob\";\nimport type { SetOptional } from \"type-fest\";\nimport {\n bundleDependenciesPlugin,\n mockServerOnlyPlugin,\n workerSetupImportConfigPlugin,\n} from \"../utilities/build\";\nimport { chalkError, chalkPurple, chalkWarning, cliLink } from \"../utilities/cliOutput\";\nimport {\n logESMRequireError,\n logTaskMetadataParseError,\n parseBuildErrorStack,\n parseNpmInstallError,\n} from \"../utilities/deployErrors\";\nimport { JavascriptProject } from \"../utilities/javascriptProject\";\nimport { docs, getInTouch } from \"../utilities/links\";\nimport { cliRootPath } from \"../utilities/resolveInternalFilePath\";\nimport { safeJsonParse } from \"../utilities/safeJsonParse\";\nimport { escapeImportPath, spinner } from \"../utilities/windows\";\nimport { updateTriggerPackages } from \"./update\";\nimport { callResolveEnvVars } from \"../utilities/resolveEnvVars\";\n\nconst DeployCommandOptions = CommonCommandOptions.extend({\n skipTypecheck: z.boolean().default(false),\n skipDeploy: z.boolean().default(false),\n env: z.enum([\"prod\", \"staging\"]),\n loadImage: z.boolean().default(false),\n buildPlatform: z.enum([\"linux/amd64\", \"linux/arm64\"]).default(\"linux/amd64\"),\n selfHosted: z.boolean().default(false),\n registry: z.string().optional(),\n push: z.boolean().default(false),\n config: z.string().optional(),\n projectRef: z.string().optional(),\n outputMetafile: z.string().optional(),\n apiUrl: z.string().optional(),\n saveLogs: z.boolean().default(false),\n skipUpdateCheck: z.boolean().default(false),\n noCache: z.boolean().default(false),\n});\n\ntype DeployCommandOptions = z.infer<typeof DeployCommandOptions>;\n\nexport function configureDeployCommand(program: Command) {\n return commonOptions(\n program\n .command(\"deploy\")\n .description(\"Deploy your Trigger.dev v3 project to the cloud.\")\n .argument(\"[path]\", \"The path to the project\", \".\")\n .option(\n \"-e, --env <env>\",\n \"Deploy to a specific environment (currently only prod and staging are supported)\",\n \"prod\"\n )\n .option(\"--skip-typecheck\", \"Whether to skip the pre-build typecheck\")\n .option(\"--skip-update-check\", \"Skip checking for @trigger.dev package updates\")\n .option(\"-c, --config <config file>\", \"The name of the config file, found at [path]\")\n .option(\n \"-p, --project-ref <project ref>\",\n \"The project ref. Required if there is no config file. This will override the project specified in the config file.\"\n )\n )\n .addOption(\n new CommandOption(\n \"--self-hosted\",\n \"Build and load the image using your local Docker. Use the --registry option to specify the registry to push the image to when using --self-hosted, or just use --push to push to the default registry.\"\n ).hideHelp()\n )\n .addOption(\n new CommandOption(\n \"--no-cache\",\n \"Do not use the cache when building the image. This will slow down the build process but can be useful if you are experiencing issues with the cache.\"\n ).hideHelp()\n )\n .addOption(\n new CommandOption(\n \"--push\",\n \"When using the --self-hosted flag, push the image to the default registry. (defaults to false when not using --registry)\"\n ).hideHelp()\n )\n .addOption(\n new CommandOption(\n \"--registry <registry>\",\n \"The registry to push the image to when using --self-hosted\"\n ).hideHelp()\n )\n .addOption(\n new CommandOption(\n \"--tag <tag>\",\n \"(Coming soon) Specify the tag to use when pushing the image to the registry\"\n ).hideHelp()\n )\n .addOption(\n new CommandOption(\n \"--ignore-env-var-check\",\n \"(deprecated) Detected missing environment variables won't block deployment\"\n ).hideHelp()\n )\n .addOption(new CommandOption(\"-D, --skip-deploy\", \"Skip deploying the image\").hideHelp())\n .addOption(\n new CommandOption(\"--load-image\", \"Load the built image into your local docker\").hideHelp()\n )\n .addOption(\n new CommandOption(\n \"--build-platform <platform>\",\n \"The platform to build the deployment image for\"\n )\n .default(\"linux/amd64\")\n .hideHelp()\n )\n .addOption(\n new CommandOption(\n \"--output-metafile <path>\",\n \"If provided, will save the esbuild metafile for the build to the specified path\"\n ).hideHelp()\n )\n .addOption(\n new CommandOption(\n \"--save-logs\",\n \"If provided, will save logs even for successful builds\"\n ).hideHelp()\n )\n .action(async (path, options) => {\n await handleTelemetry(async () => {\n await printStandloneInitialBanner(true);\n await deployCommand(path, options);\n });\n });\n}\n\nexport async function deployCommand(dir: string, options: unknown) {\n return await wrapCommandAction(\"deployCommand\", DeployCommandOptions, options, async (opts) => {\n return await _deployCommand(dir, opts);\n });\n}\n\nasync function _deployCommand(dir: string, options: DeployCommandOptions) {\n const span = trace.getSpan(context.active());\n\n intro(\"Deploying project\");\n\n if (!options.skipUpdateCheck) {\n await updateTriggerPackages(dir, { ...options }, true, true);\n }\n\n const authorization = await login({\n embedded: true,\n defaultApiUrl: options.apiUrl,\n profile: options.profile,\n });\n\n if (!authorization.ok) {\n if (authorization.error === \"fetch failed\") {\n throw new Error(\n `Failed to connect to ${authorization.auth?.apiUrl}. Are you sure it's the correct URL?`\n );\n } else {\n throw new Error(\n `You must login first. Use the \\`login\\` CLI command.\\n\\n${authorization.error}`\n );\n }\n }\n\n span?.setAttributes({\n \"cli.userId\": authorization.userId,\n \"cli.email\": authorization.email,\n \"cli.config.apiUrl\": authorization.auth.apiUrl,\n });\n\n const resolvedConfig = await readConfig(dir, {\n configFile: options.config,\n projectRef: options.projectRef,\n });\n\n if (resolvedConfig.status === \"error\") {\n logger.error(\"Failed to read config:\", resolvedConfig.error);\n span && recordSpanException(span, resolvedConfig.error);\n\n throw new SkipLoggingError(\"Failed to read config\");\n }\n\n logger.debug(\"Resolved config\", { resolvedConfig });\n\n span?.setAttributes({\n \"resolvedConfig.status\": resolvedConfig.status,\n \"resolvedConfig.path\": resolvedConfig.status === \"file\" ? resolvedConfig.path : undefined,\n \"resolvedConfig.config.project\": resolvedConfig.config.project,\n \"resolvedConfig.config.projectDir\": resolvedConfig.config.projectDir,\n \"resolvedConfig.config.triggerUrl\": resolvedConfig.config.triggerUrl,\n \"resolvedConfig.config.triggerDirectories\": resolvedConfig.config.triggerDirectories,\n ...flattenAttributes(resolvedConfig.config.retries, \"resolvedConfig.config.retries\"),\n });\n\n const apiClient = new CliApiClient(authorization.auth.apiUrl, authorization.auth.accessToken);\n\n const deploymentEnv = await apiClient.getProjectEnv({\n projectRef: resolvedConfig.config.project,\n env: options.env,\n });\n\n if (!deploymentEnv.success) {\n throw new Error(deploymentEnv.error);\n }\n\n const environmentClient = new CliApiClient(authorization.auth.apiUrl, deploymentEnv.data.apiKey);\n\n log.step(\n `Preparing to deploy \"${deploymentEnv.data.name}\" (${resolvedConfig.config.project}) to ${options.env}`\n );\n\n // Step 1: Build the project into a temporary directory\n const compilation = await compileProject(\n resolvedConfig.config,\n options,\n resolvedConfig.status === \"file\" ? resolvedConfig.path : undefined\n );\n\n logger.debug(\"Compilation result\", { compilation });\n\n // Optional Step 1.1: resolve environment variables\n await resolveEnvironmentVariables(resolvedConfig, environmentClient, options);\n\n // Step 2: Initialize a deployment on the server (response will have everything we need to build an image)\n const deploymentResponse = await environmentClient.initializeDeployment({\n contentHash: compilation.contentHash,\n userId: authorization.userId,\n });\n\n if (!deploymentResponse.success) {\n throw new Error(`Failed to start deployment: ${deploymentResponse.error}`);\n }\n\n // If the deployment doesn't have any externalBuildData, then we can't use the remote image builder\n // TODO: handle this and allow the user to the build and push the image themselves\n if (!deploymentResponse.data.externalBuildData && !options.selfHosted) {\n throw new Error(\n `Failed to start deployment, as your instance of trigger.dev does not support hosting. To deploy this project, you must use the --self-hosted flag to build and push the image yourself.`\n );\n }\n\n const version = deploymentResponse.data.version;\n\n const deploymentSpinner = spinner();\n\n deploymentSpinner.start(`Deploying version ${version}`);\n const selfHostedRegistryHost = deploymentResponse.data.registryHost ?? options.registry;\n const registryHost = selfHostedRegistryHost ?? \"registry.trigger.dev\";\n\n const buildImage = async () => {\n if (options.selfHosted) {\n return buildAndPushSelfHostedImage({\n registryHost: selfHostedRegistryHost,\n imageTag: deploymentResponse.data.imageTag,\n cwd: compilation.path,\n projectId: resolvedConfig.config.project,\n deploymentId: deploymentResponse.data.id,\n deploymentVersion: version,\n contentHash: deploymentResponse.data.contentHash,\n projectRef: resolvedConfig.config.project,\n buildPlatform: options.buildPlatform,\n pushImage: options.push,\n selfHostedRegistry: !!options.registry,\n noCache: options.noCache,\n extraCACerts: resolvedConfig.config.extraCACerts,\n });\n }\n\n if (!deploymentResponse.data.externalBuildData) {\n throw new Error(\n \"Failed to initialize deployment. The deployment does not have any external build data. To deploy this project, you must use the --self-hosted flag to build and push the image yourself.\"\n );\n }\n\n return buildAndPushImage(\n {\n registryHost,\n auth: authorization.auth.accessToken,\n imageTag: deploymentResponse.data.imageTag,\n buildId: deploymentResponse.data.externalBuildData.buildId,\n buildToken: deploymentResponse.data.externalBuildData.buildToken,\n buildProjectId: deploymentResponse.data.externalBuildData.projectId,\n cwd: compilation.path,\n projectId: resolvedConfig.config.project,\n deploymentId: deploymentResponse.data.id,\n deploymentVersion: deploymentResponse.data.version,\n contentHash: deploymentResponse.data.contentHash,\n projectRef: resolvedConfig.config.project,\n loadImage: options.loadImage,\n buildPlatform: options.buildPlatform,\n noCache: options.noCache,\n extraCACerts: resolvedConfig.config.extraCACerts,\n },\n deploymentSpinner\n );\n };\n\n const image = await buildImage();\n\n const warnings = checkLogsForWarnings(image.logs);\n\n if (!warnings.ok) {\n await failDeploy(\n deploymentResponse.data.shortCode,\n warnings.summary,\n image.logs,\n deploymentSpinner,\n warnings.warnings,\n warnings.errors\n );\n\n throw new SkipLoggingError(`Failed to build project image: ${warnings.summary}`);\n }\n\n if (!image.ok) {\n await failDeploy(\n deploymentResponse.data.shortCode,\n image.error,\n image.logs,\n deploymentSpinner,\n warnings.warnings\n );\n\n throw new SkipLoggingError(`Failed to build project image: ${image.error}`);\n }\n\n const preExitTasks = async () => {\n printWarnings(warnings.warnings);\n\n if (options.saveLogs) {\n const logPath = await saveLogs(deploymentResponse.data.shortCode, image.logs);\n log.info(`Build logs have been saved to ${logPath}`);\n }\n };\n\n const imageReference = options.selfHosted\n ? `${selfHostedRegistryHost ? `${selfHostedRegistryHost}/` : \"\"}${image.image}${\n image.digest ? `@${image.digest}` : \"\"\n }`\n : `${registryHost}/${image.image}${image.digest ? `@${image.digest}` : \"\"}`;\n\n span?.setAttributes({\n \"image.reference\": imageReference,\n });\n\n if (options.skipDeploy) {\n deploymentSpinner.stop(\n `Project image built: ${imageReference}. Skipping deployment as requested`\n );\n\n await preExitTasks();\n\n throw new SkipCommandError(\"Skipping deployment as requested\");\n }\n\n deploymentSpinner.message(\n `${deploymentResponse.data.version} image built, detecting deployed tasks`\n );\n\n logger.debug(`Start indexing image ${imageReference}`);\n\n const startIndexingResponse = await environmentClient.startDeploymentIndexing(\n deploymentResponse.data.id,\n {\n imageReference,\n selfHosted: options.selfHosted,\n }\n );\n\n if (!startIndexingResponse.success) {\n deploymentSpinner.stop(`Failed to start indexing: ${startIndexingResponse.error}`);\n\n await preExitTasks();\n\n throw new SkipLoggingError(`Failed to start indexing: ${startIndexingResponse.error}`);\n }\n\n const finishedDeployment = await waitForDeploymentToFinish(\n deploymentResponse.data.id,\n environmentClient\n );\n\n if (!finishedDeployment) {\n deploymentSpinner.stop(`Deployment failed to complete`);\n\n await preExitTasks();\n\n throw new SkipLoggingError(\"Deployment failed to complete: unknown issue\");\n }\n\n if (typeof finishedDeployment === \"string\") {\n deploymentSpinner.stop(`Deployment failed to complete: ${finishedDeployment}`);\n\n await preExitTasks();\n\n throw new SkipLoggingError(`Deployment failed to complete: ${finishedDeployment}`);\n }\n\n const deploymentLink = cliLink(\n \"View deployment\",\n `${authorization.dashboardUrl}/projects/v3/${resolvedConfig.config.project}/deployments/${finishedDeployment.shortCode}`\n );\n\n const testLink = cliLink(\n \"Test tasks\",\n `${authorization.dashboardUrl}/projects/v3/${resolvedConfig.config.project}/test?environment=${\n options.env === \"prod\" ? \"prod\" : \"stg\"\n }`\n );\n\n switch (finishedDeployment.status) {\n case \"DEPLOYED\": {\n if (warnings.warnings.length > 0) {\n deploymentSpinner.stop(\"Deployment completed with warnings\");\n } else {\n deploymentSpinner.stop(\"Deployment completed\");\n }\n\n await preExitTasks();\n\n const taskCount = finishedDeployment.worker?.tasks.length ?? 0;\n\n if (taskCount === 0) {\n outro(\n `Version ${version} deployed with no detected tasks. Please make sure you are exporting tasks in your project. ${deploymentLink}`\n );\n } else {\n outro(\n `Version ${version} deployed with ${taskCount} detected task${\n taskCount === 1 ? \"\" : \"s\"\n } | ${deploymentLink} | ${testLink}`\n );\n }\n\n break;\n }\n case \"FAILED\": {\n if (finishedDeployment.errorData) {\n if (finishedDeployment.errorData.name === \"TaskMetadataParseError\") {\n const errorJson = safeJsonParse(finishedDeployment.errorData.stack);\n\n if (errorJson) {\n const parsedError = TaskMetadataFailedToParseData.safeParse(errorJson);\n\n if (parsedError.success) {\n deploymentSpinner.stop(`Deployment encountered an error. ${deploymentLink}`);\n\n logTaskMetadataParseError(parsedError.data.zodIssues, parsedError.data.tasks);\n\n await preExitTasks();\n\n throw new SkipLoggingError(\n `Deployment encountered an error: ${finishedDeployment.errorData.name}`\n );\n }\n }\n }\n\n const parsedError = finishedDeployment.errorData.stack\n ? parseBuildErrorStack(finishedDeployment.errorData) ??\n finishedDeployment.errorData.message\n : finishedDeployment.errorData.message;\n\n if (typeof parsedError === \"string\") {\n deploymentSpinner.stop(`Deployment encountered an error. ${deploymentLink}`);\n\n logger.log(`${chalkError(\"X Error:\")} ${parsedError}`);\n } else {\n deploymentSpinner.stop(`Deployment encountered an error. ${deploymentLink}`);\n\n logESMRequireError(parsedError, resolvedConfig);\n }\n\n await preExitTasks();\n\n if (finishedDeployment.errorData.stderr) {\n log.error(`Error logs:\\n${finishedDeployment.errorData.stderr}`);\n }\n\n throw new SkipLoggingError(\n `Deployment encountered an error: ${finishedDeployment.errorData.name}`\n );\n } else {\n deploymentSpinner.stop(\n `Deployment failed with an unknown error. Please contact eric@trigger.dev for help. ${deploymentLink}`\n );\n\n await preExitTasks();\n\n throw new SkipLoggingError(\"Deployment failed with an unknown error\");\n }\n }\n case \"CANCELED\": {\n deploymentSpinner.stop(`Deployment was canceled. ${deploymentLink}`);\n\n await preExitTasks();\n\n throw new SkipLoggingError(\"Deployment was canceled\");\n }\n case \"TIMED_OUT\": {\n deploymentSpinner.stop(`Deployment timed out. ${deploymentLink}`);\n\n await preExitTasks();\n\n throw new SkipLoggingError(\"Deployment timed out\");\n }\n }\n}\n\nfunction printErrors(errors?: string[]) {\n for (const error of errors ?? []) {\n log.error(`${chalkError(\"Error:\")} ${error}`);\n }\n}\n\nfunction printWarnings(warnings?: string[]) {\n for (const warning of warnings ?? []) {\n log.warn(`${chalkWarning(\"Warning:\")} ${warning}`);\n }\n}\n\ntype WarningsCheckReturn =\n | {\n ok: true;\n warnings: string[];\n }\n | {\n ok: false;\n summary: string;\n errors: string[];\n warnings: string[];\n };\n\ntype LogParserOptions = Array<{\n regex: RegExp;\n message: string;\n shouldFail?: boolean;\n}>;\n\n// Try to extract useful warnings from logs. Sometimes we may even want to fail the build. This won't work if the step is cached.\nfunction checkLogsForWarnings(logs: string): WarningsCheckReturn {\n const warnings: LogParserOptions = [\n {\n regex: /prisma:warn We could not find your Prisma schema/,\n message: `Prisma generate failed to find the default schema. Did you include it in config.additionalFiles? ${cliLink(\n \"Config docs\",\n docs.config.prisma\n )}\\nCustom schema paths require a postinstall script like this: \\`prisma generate --schema=./custom/path/to/schema.prisma\\``,\n shouldFail: true,\n },\n ];\n\n const errorMessages: string[] = [];\n const warningMessages: string[] = [];\n\n let shouldFail = false;\n\n for (const warning of warnings) {\n const matches = logs.match(warning.regex);\n\n if (!matches) {\n continue;\n }\n\n const message = getMessageFromTemplate(warning.message, matches.groups);\n\n if (warning.shouldFail) {\n shouldFail = true;\n errorMessages.push(message);\n } else {\n warningMessages.push(message);\n }\n }\n\n if (shouldFail) {\n return {\n ok: false,\n summary: \"Build succeeded with critical warnings. Will not proceed\",\n warnings: warningMessages,\n errors: errorMessages,\n };\n }\n\n return {\n ok: true,\n warnings: warningMessages,\n };\n}\n\n// Try to extract useful error messages from the logs\nfunction checkLogsForErrors(logs: string) {\n const errors: LogParserOptions = [\n {\n regex: /Error: Provided --schema at (?<schema>.*) doesn't exist/,\n message: `Prisma generate failed to find the specified schema at \"$schema\".\\nDid you include it in config.additionalFiles? ${cliLink(\n \"Config docs\",\n docs.config.prisma\n )}`,\n },\n {\n regex: /@prisma\\/client did not initialize yet/,\n message: `Prisma client not initialized yet.\\nDid you forget to add the postinstall script? ${cliLink(\n \"Config docs\",\n docs.config.prisma\n )}`,\n },\n {\n regex: /sh: 1: (?<packageOrBinary>.*): not found/,\n message: `$packageOrBinary not found\\n\\nIf it's a package: Include it in ${cliLink(\n \"config.additionalPackages\",\n docs.config.prisma\n )}\\nIf it's a binary: Please ${cliLink(\n \"get in touch\",\n getInTouch\n )} and we'll see what we can do!`,\n },\n ];\n\n for (const error of errors) {\n const matches = logs.match(error.regex);\n\n if (!matches) {\n continue;\n }\n\n const message = getMessageFromTemplate(error.message, matches.groups);\n\n log.error(`${chalkError(\"Error:\")} ${message}`);\n break;\n }\n}\n\nfunction getMessageFromTemplate(template: string, replacer: RegExpMatchArray[\"groups\"]) {\n let message = template;\n\n if (replacer) {\n for (const [key, value] of Object.entries(replacer)) {\n message = message.replaceAll(`$${key}`, value);\n }\n }\n\n return message;\n}\n\nasync function saveLogs(shortCode: string, logs: string) {\n const logPath = join(await createTempDir(), `build-${shortCode}.log`);\n await writeFile(logPath, logs);\n return logPath;\n}\n\nasync function failDeploy(\n shortCode: string,\n errorSummary: string,\n logs: string,\n deploymentSpinner: ReturnType<typeof spinner>,\n warnings?: string[],\n errors?: string[]\n) {\n deploymentSpinner.stop(`Failed to deploy project`);\n\n // If there are logs, let's write it out to a temporary file and include the path in the error message\n if (logs.trim() !== \"\") {\n const logPath = await saveLogs(shortCode, logs);\n\n printWarnings(warnings);\n printErrors(errors);\n\n checkLogsForErrors(logs);\n\n outro(`${chalkError(\"Error:\")} ${errorSummary}. Full build logs have been saved to ${logPath}`);\n } else {\n outro(`${chalkError(\"Error:\")} ${errorSummary}.`);\n }\n\n // TODO: Let platform know so it can fail the deploy with an appropriate error\n}\n\n// Poll every 1 second for the deployment to finish\nasync function waitForDeploymentToFinish(\n deploymentId: string,\n client: CliApiClient,\n timeoutInSeconds: number = 180\n) {\n return tracer.startActiveSpan(\"waitForDeploymentToFinish\", async (span) => {\n try {\n const start = Date.now();\n let attempts = 0;\n\n while (true) {\n if (Date.now() - start > timeoutInSeconds * 1000) {\n span.recordException(new Error(\"Deployment timed out\"));\n span.end();\n return;\n }\n\n const deployment = await client.getDeployment(deploymentId);\n\n attempts++;\n\n if (!deployment.success) {\n throw new Error(deployment.error);\n }\n\n logger.debug(`Deployment status: ${deployment.data.status}`);\n\n if (\n deployment.data.status === \"DEPLOYED\" ||\n deployment.data.status === \"FAILED\" ||\n deployment.data.status === \"CANCELED\" ||\n deployment.data.status === \"TIMED_OUT\"\n ) {\n span.setAttributes({\n \"deployment.status\": deployment.data.status,\n \"deployment.attempts\": attempts,\n });\n\n span.end();\n\n return deployment.data;\n }\n\n await setTimeout(1000);\n }\n } catch (error) {\n recordSpanException(span, error);\n span.end();\n\n return error instanceof Error ? error.message : JSON.stringify(error);\n }\n });\n}\n\ntype BuildAndPushImageOptions = {\n registryHost: string;\n auth: string;\n imageTag: string;\n buildId: string;\n buildToken: string;\n buildProjectId: string;\n cwd: string;\n projectId: string;\n deploymentId: string;\n deploymentVersion: string;\n contentHash: string;\n projectRef: string;\n loadImage: boolean;\n buildPlatform: string;\n noCache: boolean;\n extraCACerts?: string;\n};\n\ntype BuildAndPushImageResults =\n | {\n ok: true;\n image: string;\n logs: string;\n digest?: string;\n }\n | {\n ok: false;\n error: string;\n logs: string;\n };\n\nasync function buildAndPushImage(\n options: BuildAndPushImageOptions,\n updater: ReturnType<typeof spinner>\n): Promise<BuildAndPushImageResults> {\n return tracer.startActiveSpan(\"buildAndPushImage\", async (span) => {\n span.setAttributes({\n \"options.registryHost\": options.registryHost,\n \"options.imageTag\": options.imageTag,\n \"options.buildPlatform\": options.buildPlatform,\n \"options.projectId\": options.projectId,\n \"options.deploymentId\": options.deploymentId,\n \"options.deploymentVersion\": options.deploymentVersion,\n \"options.contentHash\": options.contentHash,\n \"options.projectRef\": options.projectRef,\n \"options.loadImage\": options.loadImage,\n });\n\n // Step 3: Ensure we are \"logged in\" to our registry by writing to $HOME/.docker/config.json\n // TODO: make sure this works on windows\n const dockerConfigDir = await ensureLoggedIntoDockerRegistry(options.registryHost, {\n username: \"trigger\",\n password: options.auth,\n });\n\n const args = [\n \"build\",\n \"-f\",\n \"Containerfile\",\n options.noCache ? \"--no-cache\" : undefined,\n \"--platform\",\n options.buildPlatform,\n \"--provenance\",\n \"false\",\n \"--build-arg\",\n `TRIGGER_PROJECT_ID=${options.projectId}`,\n \"--build-arg\",\n `TRIGGER_DEPLOYMENT_ID=${options.deploymentId}`,\n \"--build-arg\",\n `TRIGGER_DEPLOYMENT_VERSION=${options.deploymentVersion}`,\n \"--build-arg\",\n `TRIGGER_CONTENT_HASH=${options.contentHash}`,\n \"--build-arg\",\n `TRIGGER_PROJECT_REF=${options.projectRef}`,\n ...(options.extraCACerts\n ? [\"--build-arg\", `NODE_EXTRA_CA_CERTS=${options.extraCACerts}`]\n : []),\n \"-t\",\n `${options.registryHost}/${options.imageTag}`,\n \".\",\n \"--push\",\n options.loadImage ? \"--load\" : undefined,\n ].filter(Boolean) as string[];\n\n logger.debug(`depot ${args.join(\" \")}`);\n\n span.setAttribute(\"depot.command\", `depot ${args.join(\" \")}`);\n\n // Step 4: Build and push the image\n const childProcess = depot(args, {\n cwd: options.cwd,\n env: {\n DEPOT_BUILD_ID: options.buildId,\n DEPOT_TOKEN: options.buildToken,\n DEPOT_PROJECT_ID: options.buildProjectId,\n DEPOT_NO_SUMMARY_LINK: \"1\",\n DEPOT_NO_UPDATE_NOTIFIER: \"1\",\n DOCKER_CONFIG: dockerConfigDir,\n },\n });\n\n const errors: string[] = [];\n\n try {\n const processCode = await new Promise<number | null>((res, rej) => {\n // For some reason everything is output on stderr, not stdout\n childProcess.stderr?.on(\"data\", (data: Buffer) => {\n const text = data.toString();\n\n // Emitted data chunks can contain multiple lines. Remove empty lines.\n const lines = text.split(\"\\n\").filter(Boolean);\n\n errors.push(...lines);\n logger.debug(text);\n });\n\n childProcess.on(\"error\", (e) => rej(e));\n childProcess.on(\"close\", (code) => res(code));\n });\n\n const logs = extractLogs(errors);\n\n if (processCode !== 0) {\n return {\n ok: false as const,\n error: `Error building image`,\n logs,\n };\n }\n\n const digest = extractImageDigest(errors);\n\n span.setAttributes({\n \"image.digest\": digest,\n });\n\n span.end();\n\n return {\n ok: true as const,\n image: options.imageTag,\n logs,\n digest,\n };\n } catch (e) {\n recordSpanException(span, e);\n span.end();\n\n return {\n ok: false as const,\n error: e instanceof Error ? e.message : JSON.stringify(e),\n logs: extractLogs(errors),\n };\n }\n });\n}\n\ntype BuildAndPushSelfHostedImageOptions = SetOptional<\n Omit<\n BuildAndPushImageOptions,\n \"buildId\" | \"buildToken\" | \"buildProjectId\" | \"auth\" | \"loadImage\"\n >,\n \"registryHost\"\n> & {\n pushImage: boolean;\n selfHostedRegistry: boolean;\n};\n\nasync function buildAndPushSelfHostedImage(\n options: BuildAndPushSelfHostedImageOptions\n): Promise<BuildAndPushImageResults> {\n return await tracer.startActiveSpan(\"buildAndPushSelfHostedImage\", async (span) => {\n span.setAttributes({\n \"options.imageTag\": options.imageTag,\n \"options.buildPlatform\": options.buildPlatform,\n \"options.projectId\": options.projectId,\n \"options.deploymentId\": options.deploymentId,\n \"options.deploymentVersion\": options.deploymentVersion,\n \"options.contentHash\": options.contentHash,\n \"options.projectRef\": options.projectRef,\n });\n\n const imageRef = `${options.registryHost ? `${options.registryHost}/` : \"\"}${options.imageTag}`;\n\n const buildArgs = [\n \"build\",\n \"-f\",\n \"Containerfile\",\n options.noCache ? \"--no-cache\" : undefined,\n \"--platform\",\n options.buildPlatform,\n \"--build-arg\",\n `TRIGGER_PROJECT_ID=${options.projectId}`,\n \"--build-arg\",\n `TRIGGER_DEPLOYMENT_ID=${options.deploymentId}`,\n \"--build-arg\",\n `TRIGGER_DEPLOYMENT_VERSION=${options.deploymentVersion}`,\n \"--build-arg\",\n `TRIGGER_CONTENT_HASH=${options.contentHash}`,\n \"--build-arg\",\n `TRIGGER_PROJECT_REF=${options.projectRef}`,\n ...(options.extraCACerts\n ? [\"--build-arg\", `NODE_EXTRA_CA_CERTS=${options.extraCACerts}`]\n : []),\n \"-t\",\n imageRef,\n \".\", // The build context\n ].filter(Boolean) as string[];\n\n logger.debug(`docker ${buildArgs.join(\" \")}`, {\n cwd: options.cwd,\n });\n\n span.setAttribute(\"docker.command.build\", `docker ${buildArgs.join(\" \")}`);\n\n // Build the image\n const buildProcess = execa(\"docker\", buildArgs, {\n cwd: options.cwd,\n });\n\n const errors: string[] = [];\n let digest: string | undefined;\n\n try {\n const processCode = await new Promise<number | null>((res, rej) => {\n // For some reason everything is output on stderr, not stdout\n buildProcess.stderr?.on(\"data\", (data: Buffer) => {\n const text = data.toString();\n\n errors.push(text);\n logger.debug(text);\n });\n\n buildProcess.on(\"error\", (e) => rej(e));\n buildProcess.on(\"close\", (code) => res(code));\n });\n\n if (processCode !== 0) {\n return {\n ok: false as const,\n error: \"Error building image\",\n logs: extractLogs(errors),\n };\n }\n\n digest = extractImageDigest(errors);\n\n span.setAttributes({\n \"image.digest\": digest,\n });\n } catch (e) {\n recordSpanException(span, e);\n\n span.end();\n\n return {\n ok: false as const,\n error: e instanceof Error ? e.message : JSON.stringify(e),\n logs: extractLogs(errors),\n };\n }\n\n const pushArgs = [\"push\", imageRef].filter(Boolean) as string[];\n\n logger.debug(`docker ${pushArgs.join(\" \")}`);\n\n span.setAttribute(\"docker.command.push\", `docker ${pushArgs.join(\" \")}`);\n\n if (options.selfHostedRegistry || options.pushImage) {\n // Push the image\n const pushProcess = execa(\"docker\", pushArgs, {\n cwd: options.cwd,\n });\n\n try {\n const processCode = await new Promise<number | null>((res, rej) => {\n pushProcess.stdout?.on(\"data\", (data: Buffer) => {\n const text = data.toString();\n\n logger.debug(text);\n });\n\n pushProcess.stderr?.on(\"data\", (data: Buffer) => {\n const text = data.toString();\n\n logger.debug(text);\n });\n\n pushProcess.on(\"error\", (e) => rej(e));\n pushProcess.on(\"close\", (code) => res(code));\n });\n\n if (processCode !== 0) {\n return {\n ok: false as const,\n error: \"Error pushing image\",\n logs: extractLogs(errors),\n };\n }\n\n span.end();\n } catch (e) {\n recordSpanException(span, e);\n\n span.end();\n\n return {\n ok: false as const,\n error: e instanceof Error ? e.message : JSON.stringify(e),\n logs: extractLogs(errors),\n };\n }\n }\n\n span.end();\n\n return {\n ok: true as const,\n image: options.imageTag,\n digest,\n logs: extractLogs(errors),\n };\n });\n}\n\nfunction extractImageDigest(outputs: string[]) {\n const imageDigestRegex = /pushing manifest for .+(?<digest>sha256:[a-f0-9]{64})/;\n\n for (const line of outputs) {\n const imageDigestMatch = line.match(imageDigestRegex);\n\n const digest = imageDigestMatch?.groups?.digest;\n\n if (digest) {\n return digest;\n }\n }\n}\n\nfunction extractLogs(outputs: string[]) {\n // Remove empty lines\n const cleanedOutputs = outputs.map((line) => line.trim()).filter((line) => line !== \"\");\n\n return cleanedOutputs.map((line) => line.trim()).join(\"\\n\");\n}\n\nasync function compileProject(\n config: ResolvedConfig,\n options: DeployCommandOptions,\n configPath?: string\n) {\n return await tracer.startActiveSpan(\"compileProject\", async (span) => {\n try {\n if (!options.skipTypecheck) {\n const typecheck = await typecheckProject(config);\n\n if (!typecheck) {\n throw new Error(\"Typecheck failed, aborting deployment\");\n }\n }\n\n const compileSpinner = spinner();\n compileSpinner.start(`Building project in ${config.projectDir}`);\n\n const taskFiles = await gatherTaskFiles(config);\n const workerFacade = readFileSync(\n join(cliRootPath(), \"workers\", \"prod\", \"worker-facade.js\"),\n \"utf-8\"\n );\n\n const workerSetupPath = join(cliRootPath(), \"workers\", \"prod\", \"worker-setup.js\");\n\n let workerContents = workerFacade\n .replace(\"__TASKS__\", createTaskFileImports(taskFiles))\n .replace(\n \"__WORKER_SETUP__\",\n `import { tracingSDK, otelTracer, otelLogger } from \"${escapeImportPath(\n workerSetupPath\n )}\";`\n );\n\n if (configPath) {\n logger.debug(\"Importing project config from\", { configPath });\n\n workerContents = workerContents.replace(\n \"__IMPORTED_PROJECT_CONFIG__\",\n `import * as importedConfigExports from \"${escapeImportPath(\n configPath\n )}\"; const importedConfig = importedConfigExports.config; const handleError = importedConfigExports.handleError;`\n );\n } else {\n workerContents = workerContents.replace(\n \"__IMPORTED_PROJECT_CONFIG__\",\n `const importedConfig = undefined; const handleError = undefined;`\n );\n }\n\n const result = await build({\n stdin: {\n contents: workerContents,\n resolveDir: process.cwd(),\n sourcefile: \"__entryPoint.ts\",\n },\n bundle: true,\n metafile: true,\n write: false,\n minify: false,\n sourcemap: \"external\", // does not set the //# sourceMappingURL= comment in the file, we handle it ourselves\n logLevel: \"error\",\n platform: \"node\",\n format: \"cjs\", // This is needed to support opentelemetry instrumentation that uses module patching\n target: [\"node18\", \"es2020\"],\n outdir: \"out\",\n banner: {\n js: `process.on(\"uncaughtException\", function(error, origin) { if (error instanceof Error) { process.send && process.send({ type: \"EVENT\", message: { type: \"UNCAUGHT_EXCEPTION\", payload: { error: { name: error.name, message: error.message, stack: error.stack }, origin }, version: \"v1\" } }); } else { process.send && process.send({ type: \"EVENT\", message: { type: \"UNCAUGHT_EXCEPTION\", payload: { error: { name: \"Error\", message: typeof error === \"string\" ? error : JSON.stringify(error) }, origin }, version: \"v1\" } }); } });`,\n },\n define: {\n TRIGGER_API_URL: `\"${config.triggerUrl}\"`,\n __PROJECT_CONFIG__: JSON.stringify(config),\n },\n plugins: [\n mockServerOnlyPlugin(),\n bundleDependenciesPlugin(\n \"workerFacade\",\n {},\n config.dependenciesToBundle,\n config.tsconfigPath\n ),\n workerSetupImportConfigPlugin(configPath),\n esbuildDecorators({\n tsconfig: config.tsconfigPath,\n tsx: true,\n force: false,\n }),\n ],\n });\n\n if (result.errors.length > 0) {\n compileSpinner.stop(\"Build failed, aborting deployment\");\n\n span.setAttributes({\n \"build.workerErrors\": result.errors.map(\n (error) => `Error: ${error.text} at ${error.location?.file}`\n ),\n });\n\n throw new Error(\"Build failed, aborting deployment\");\n }\n\n if (options.outputMetafile) {\n await writeJSONFile(join(options.outputMetafile, \"worker.json\"), result.metafile);\n }\n\n const entryPointContents = readFileSync(\n join(cliRootPath(), \"workers\", \"prod\", \"entry-point.js\"),\n \"utf-8\"\n );\n\n const entryPointResult = await build({\n stdin: {\n contents: entryPointContents,\n resolveDir: process.cwd(),\n sourcefile: \"index.ts\",\n },\n bundle: true,\n metafile: true,\n write: false,\n minify: false,\n sourcemap: false,\n logLevel: \"error\",\n platform: \"node\",\n packages: \"external\",\n format: \"cjs\", // This is needed to support opentelemetry instrumentation that uses module patching\n target: [\"node18\", \"es2020\"],\n outdir: \"out\",\n define: {\n __PROJECT_CONFIG__: JSON.stringify(config),\n },\n plugins: [\n bundleDependenciesPlugin(\n \"entryPoint.ts\",\n {},\n config.dependenciesToBundle,\n config.tsconfigPath\n ),\n ],\n });\n\n if (entryPointResult.errors.length > 0) {\n compileSpinner.stop(\"Build failed, aborting deployment\");\n\n span.setAttributes({\n \"build.entryPointErrors\": entryPointResult.errors.map(\n (error) => `Error: ${error.text} at ${error.location?.file}`\n ),\n });\n\n throw new Error(\"Build failed, aborting deployment\");\n }\n\n if (options.outputMetafile) {\n await writeJSONFile(\n join(options.outputMetafile, \"entry-point.json\"),\n entryPointResult.metafile\n );\n }\n\n // Create a tmp directory to store the build\n const tempDir = await createTempDir();\n\n logger.debug(`Writing compiled files to ${tempDir}`);\n\n // Get the metaOutput for the result build\n const metaOutput = result.metafile!.outputs[posix.join(\"out\", \"stdin.js\")];\n\n invariant(metaOutput, \"Meta output for the result build is missing\");\n\n // Get the metaOutput for the entryPoint build\n const entryPointMetaOutput =\n entryPointResult.metafile!.outputs[posix.join(\"out\", \"stdin.js\")];\n\n invariant(entryPointMetaOutput, \"Meta output for the entryPoint build is missing\");\n\n // Get the outputFile and the sourceMapFile for the result build\n const workerOutputFile = result.outputFiles.find(\n (file) => file.path === join(config.projectDir, \"out\", \"stdin.js\")\n );\n\n invariant(workerOutputFile, \"Output file for the result build is missing\");\n\n const workerSourcemapFile = result.outputFiles.find(\n (file) => file.path === join(config.projectDir, \"out\", \"stdin.js.map\")\n );\n\n invariant(workerSourcemapFile, \"Sourcemap file for the result build is missing\");\n\n // Get the outputFile for the entryPoint build\n\n const entryPointOutputFile = entryPointResult.outputFiles.find(\n (file) => file.path === join(config.projectDir, \"out\", \"stdin.js\")\n );\n\n invariant(entryPointOutputFile, \"Output file for the entryPoint build is missing\");\n\n // Save the result outputFile to /tmp/dir/worker.js (and make sure to map the sourceMap to the correct location in the file)\n await writeFile(\n join(tempDir, \"worker.js\"),\n `${workerOutputFile.text}\\n//# sourceMappingURL=worker.js.map`\n );\n // Save the sourceMapFile to /tmp/dir/worker.js.map\n await writeFile(join(tempDir, \"worker.js.map\"), workerSourcemapFile.text);\n // Save the entryPoint outputFile to /tmp/dir/index.js\n await writeFile(join(tempDir, \"index.js\"), entryPointOutputFile.text);\n\n logger.debug(\"Getting the imports for the worker and entryPoint builds\", {\n workerImports: metaOutput.imports,\n entryPointImports: entryPointMetaOutput.imports,\n });\n\n // Get all the required dependencies from the metaOutputs and save them to /tmp/dir/package.json\n const allImports = [...metaOutput.imports, ...entryPointMetaOutput.imports];\n\n const javascriptProject = new JavascriptProject(config.projectDir);\n\n const dependencies = await resolveRequiredDependencies(allImports, config, javascriptProject);\n\n logger.debug(\"gatherRequiredDependencies()\", { dependencies });\n\n const packageJsonContents = {\n ...javascriptProject.allowedPackageJson,\n dependencies,\n scripts: {\n ...javascriptProject.scripts,\n ...(typeof config.postInstall === \"string\" ? { postinstall: config.postInstall } : {}),\n },\n };\n\n span.setAttributes({\n ...flattenAttributes(packageJsonContents, \"packageJson.contents\"),\n });\n\n await writeJSONFile(join(tempDir, \"package.json\"), packageJsonContents);\n\n const copyResult = await copyAdditionalFiles(config, tempDir);\n\n if (!copyResult.ok) {\n compileSpinner.stop(\"Project built with warnings\");\n\n log.warn(\n `No additionalFiles matches for:\\n\\n${copyResult.noMatches\n .map((glob) => `- \"${glob}\"`)\n .join(\"\\n\")}\\n\\nIf this is unexpected you should check your ${cliLink(\n \"glob patterns\",\n \"https://github.com/isaacs/node-glob?tab=readme-ov-file#glob-primer\"\n )} are valid.`\n );\n } else {\n compileSpinner.stop(\"Project built successfully\");\n }\n\n const resolvingDependenciesResult = await resolveDependencies(\n tempDir,\n packageJsonContents,\n config\n );\n\n if (!resolvingDependenciesResult) {\n throw new SkipLoggingError(\"Failed to resolve dependencies\");\n }\n\n // Write the Containerfile to /tmp/dir/Containerfile\n const containerFilePath = join(cliRootPath(), \"Containerfile.prod\");\n\n let containerFileContents = readFileSync(containerFilePath, \"utf-8\");\n\n await writeFile(join(tempDir, \"Containerfile\"), containerFileContents);\n\n const contentHasher = createHash(\"sha256\");\n contentHasher.update(Buffer.from(entryPointOutputFile.text));\n contentHasher.update(Buffer.from(workerOutputFile.text));\n contentHasher.update(Buffer.from(JSON.stringify(dependencies)));\n\n const contentHash = contentHasher.digest(\"hex\");\n\n span.setAttributes({\n contentHash: contentHash,\n });\n\n span.end();\n\n return { path: tempDir, contentHash };\n } catch (e) {\n recordSpanException(span, e);\n\n span.end();\n\n throw e;\n }\n });\n}\n\nasync function resolveEnvironmentVariables(\n config: ReadConfigResult,\n apiClient: CliApiClient,\n options: DeployCommandOptions\n) {\n if (config.status !== \"file\") {\n return;\n }\n\n if (!config.module || typeof config.module.resolveEnvVars !== \"function\") {\n return;\n }\n\n const projectConfig = config.config;\n\n return await tracer.startActiveSpan(\"resolveEnvironmentVariables\", async (span) => {\n const $spinner = spinner();\n $spinner.start(\"Resolving environment variables\");\n\n try {\n let processEnv: Record<string, string | undefined> = {\n ...process.env,\n };\n\n // Step 1: Get existing env vars from the apiClient\n const environmentVariables = await apiClient.getEnvironmentVariables(projectConfig.project);\n\n if (environmentVariables.success) {\n processEnv = {\n ...processEnv,\n ...environmentVariables.data.variables,\n };\n }\n\n logger.debug(\"Existing environment variables\", {\n keys: Object.keys(processEnv),\n });\n\n // Step 2: Call the resolveEnvVars function with the existing env vars (and process.env)\n const resolvedEnvVars = await callResolveEnvVars(\n config.module,\n processEnv,\n options.env,\n projectConfig.project\n );\n\n // Step 3: Upload the new env vars via the apiClient\n if (resolvedEnvVars) {\n const total = Object.keys(resolvedEnvVars.variables).length;\n\n logger.debug(\"Resolved env vars\", {\n keys: Object.keys(resolvedEnvVars.variables),\n });\n\n if (total > 0) {\n $spinner.message(\n `Syncing ${total} environment variable${total > 1 ? \"s\" : \"\"} with the server`\n );\n\n const uploadResult = await apiClient.importEnvVars(projectConfig.project, options.env, {\n variables: resolvedEnvVars.variables,\n override:\n typeof resolvedEnvVars.override === \"boolean\" ? resolvedEnvVars.override : true,\n });\n\n if (uploadResult.success) {\n $spinner.stop(`${total} environment variable${total > 1 ? \"s\" : \"\"} synced`);\n return;\n } else {\n $spinner.stop(\"Failed to sync environment variables\");\n\n throw new Error(uploadResult.error);\n }\n } else {\n $spinner.stop(\"No environment variables to sync\");\n return;\n }\n } else {\n $spinner.stop(\"No environment variables to sync\");\n }\n\n $spinner.stop(\"Environment variables resolved\");\n } catch (e) {\n $spinner.stop(\"Failed to resolve environment variables\");\n\n recordSpanException(span, e);\n\n throw e;\n } finally {\n span.end();\n }\n });\n}\n\n// Let's first create a digest from the package.json, and then use that digest to lookup a cached package-lock.json\n// in the `.trigger/cache` directory. If the package-lock.json is found, we'll write it to the project directory\n// If the package-lock.json is not found, we will run `npm install --package-lock-only` and then write the package-lock.json\n// to the project directory, and finally we'll write the digest to the `.trigger/cache` directory with the contents of the package-lock.json\nexport async function resolveDependencies(\n projectDir: string,\n packageJsonContents: any,\n config: ResolvedConfig\n) {\n return await tracer.startActiveSpan(\"resolveDependencies\", async (span) => {\n const resolvingDepsSpinner = spinner();\n resolvingDepsSpinner.start(\"Resolving dependencies\");\n\n const hasher = createHash(\"sha256\");\n hasher.update(JSON.stringify(packageJsonContents));\n const digest = hasher.digest(\"hex\").slice(0, 16);\n\n const cacheDir = join(config.projectDir, \".trigger\", \"cache\");\n const cachePath = join(cacheDir, `${digest}.json`);\n\n span.setAttributes({\n \"packageJson.digest\": digest,\n \"cache.path\": cachePath,\n ...flattenAttributes(packageJsonContents, \"packageJson.contents\"),\n });\n\n try {\n const cachedPackageLock = await readFile(cachePath, \"utf-8\");\n\n logger.debug(`Using cached package-lock.json for ${digest}`);\n\n await writeFile(join(projectDir, \"package-lock.json\"), cachedPackageLock);\n\n span.setAttributes({\n \"cache.hit\": true,\n });\n\n span.end();\n\n resolvingDepsSpinner.stop(\"Dependencies resolved\");\n\n return true;\n } catch (e) {\n // If the file doesn't exist, we'll continue to the next step\n if (e instanceof Error && \"code\" in e && e.code !== \"ENOENT\") {\n span.recordException(e as Error);\n span.end();\n\n resolvingDepsSpinner.stop(`Failed to resolve dependencies: ${e.message}`);\n\n return false;\n }\n\n span.setAttributes({\n \"cache.hit\": false,\n });\n\n logger.debug(`No cached package-lock.json found for ${digest}`);\n\n try {\n if (logger.loggerLevel === \"debug\") {\n const childProcess = await execa(\"npm\", [\"config\", \"list\"], {\n cwd: projectDir,\n stdio: \"inherit\",\n });\n\n logger.debug(\"npm config list\");\n console.log(childProcess.stdout);\n }\n\n await execa(\n \"npm\",\n [\n \"install\",\n \"--package-lock-only\",\n \"--ignore-scripts\",\n \"--no-audit\",\n \"--legacy-peer-deps=false\",\n \"--strict-peer-deps=false\",\n ],\n {\n cwd: projectDir,\n stdio: logger.loggerLevel === \"debug\" ? \"inherit\" : \"pipe\",\n }\n );\n\n const packageLockContents = await readFile(join(projectDir, \"package-lock.json\"), \"utf-8\");\n\n logger.debug(`Writing package-lock.json to cache for ${digest}`);\n\n // Make sure the cache directory exists\n await mkdir(cacheDir, { recursive: true });\n\n // Save the package-lock.json to the cache\n await writeFile(cachePath, packageLockContents);\n\n // Write the package-lock.json to the project directory\n await writeFile(join(projectDir, \"package-lock.json\"), packageLockContents);\n\n span.end();\n\n resolvingDepsSpinner.stop(\"Dependencies resolved\");\n\n return true;\n } catch (installError) {\n recordSpanException(span, installError);\n span.end();\n\n const parsedError = parseNpmInstallError(installError);\n\n if (typeof parsedError === \"string\") {\n resolvingDepsSpinner.stop(`Failed to resolve dependencies: ${parsedError}`);\n } else {\n switch (parsedError.type) {\n case \"package-not-found-error\": {\n resolvingDepsSpinner.stop(`Failed to resolve dependencies`);\n\n logger.log(\n `\\n${chalkError(\"X Error:\")} The package ${chalkPurple(\n parsedError.packageName\n )} could not be found in the npm registry.`\n );\n\n break;\n }\n case \"no-matching-version-error\": {\n resolvingDepsSpinner.stop(`Failed to resolve dependencies`);\n\n logger.log(\n `\\n${chalkError(\"X Error:\")} The package ${chalkPurple(\n parsedError.packageName\n )} could not resolve because the version doesn't exist`\n );\n\n break;\n }\n }\n }\n\n return false;\n }\n }\n });\n}\n\nexport async function typecheckProject(config: ResolvedConfig) {\n return await tracer.startActiveSpan(\"typecheckProject\", async (span) => {\n try {\n const typecheckSpinner = spinner();\n typecheckSpinner.start(\"Typechecking project\");\n\n const tscTypecheck = execa(\"npm\", [\"exec\", \"tsc\", \"--\", \"--noEmit\"], {\n cwd: config.projectDir,\n });\n\n const stdouts: string[] = [];\n const stderrs: string[] = [];\n\n tscTypecheck.stdout?.on(\"data\", (chunk) => stdouts.push(chunk.toString()));\n tscTypecheck.stderr?.on(\"data\", (chunk) => stderrs.push(chunk.toString()));\n\n try {\n await new Promise((resolve, reject) => {\n tscTypecheck.addListener(\"exit\", (code) => (code === 0 ? resolve(code) : reject(code)));\n });\n } catch (error) {\n typecheckSpinner.stop(\n `Typechecking failed, check the logs below to view the issues. To skip typechecking, pass the --skip-typecheck flag`\n );\n\n logger.log(\"\");\n\n for (const stdout of stdouts) {\n logger.log(stdout);\n }\n\n span.recordException(new Error(stdouts.join(\"\\n\")));\n span.end();\n\n return false;\n }\n\n typecheckSpinner.stop(`Typechecking passed with 0 errors`);\n\n span.end();\n return true;\n } catch (e) {\n recordSpanException(span, e);\n\n span.end();\n\n return false;\n }\n });\n}\n\n// Returns the dependencies that are required by the output that are found in output and the CLI package dependencies\n// Returns the dependency names and the version to use (taken from the CLI deps package.json)\nexport async function resolveRequiredDependencies(\n imports: Metafile[\"outputs\"][string][\"imports\"],\n config: ResolvedConfig,\n project: JavascriptProject\n) {\n return await tracer.startActiveSpan(\"resolveRequiredDependencies\", async (span) => {\n const resolvablePackageNames = new Set<string>();\n\n for (const file of imports) {\n if ((file.kind !== \"require-call\" && file.kind !== \"dynamic-import\") || !file.external) {\n continue;\n }\n\n const packageName = detectPackageNameFromImportPath(file.path);\n\n if (!packageName) {\n continue;\n }\n\n resolvablePackageNames.add(packageName);\n }\n\n span.setAttribute(\"resolvablePackageNames\", Array.from(resolvablePackageNames));\n\n const resolvedPackageVersions = await project.resolveAll(Array.from(resolvablePackageNames));\n const missingPackages = Array.from(resolvablePackageNames).filter(\n (packageName) => !resolvedPackageVersions[packageName]\n );\n\n span.setAttributes({\n ...flattenAttributes(resolvedPackageVersions, \"resolvedPackageVersions\"),\n });\n span.setAttribute(\"missingPackages\", missingPackages);\n\n const dependencies: Record<string, string> = {};\n\n for (const missingPackage of missingPackages) {\n const internalDependencyVersion =\n (packageJson.dependencies as Record<string, string>)[missingPackage] ??\n detectDependencyVersion(missingPackage);\n\n if (internalDependencyVersion) {\n dependencies[missingPackage] = stripWorkspaceFromVersion(internalDependencyVersion);\n }\n }\n\n for (const [packageName, version] of Object.entries(resolvedPackageVersions)) {\n dependencies[packageName] = version;\n }\n\n if (config.additionalPackages) {\n span.setAttribute(\"additionalPackages\", config.additionalPackages);\n\n for (const packageName of config.additionalPackages) {\n if (dependencies[packageName]) {\n continue;\n }\n\n const packageParts = parsePackageName(packageName);\n\n if (packageParts.version) {\n dependencies[packageParts.name] = packageParts.version;\n continue;\n } else {\n const externalDependencyVersion = await project.resolve(packageParts.name, {\n allowDev: true,\n });\n\n if (externalDependencyVersion) {\n dependencies[packageParts.name] = externalDependencyVersion;\n continue;\n } else {\n logger.log(\n `${chalkWarning(\"X Warning:\")} Could not find version for package ${chalkPurple(\n packageName\n )}, add a version specifier to the package name (e.g. ${\n packageParts.name\n }@latest) or add it to your project's package.json`\n );\n }\n }\n }\n }\n\n if (!dependencies[\"@trigger.dev/sdk\"]) {\n logger.debug(\"Adding missing @trigger.dev/sdk dependency\", {\n version: packageJson.version,\n });\n\n span.setAttribute(\"addingMissingSDK\", packageJson.version);\n\n dependencies[\"@trigger.dev/sdk\"] = packageJson.version;\n }\n\n if (!dependencies[\"@trigger.dev/core\"]) {\n logger.debug(\"Adding missing @trigger.dev/core dependency\", {\n version: packageJson.version,\n });\n\n span.setAttribute(\"addingMissingCore\", packageJson.version);\n\n dependencies[\"@trigger.dev/core\"] = packageJson.version;\n }\n\n // Make sure we sort the dependencies by key to ensure consistent hashing\n const result = Object.fromEntries(\n Object.entries(dependencies).sort(([a], [b]) => a.localeCompare(b))\n );\n\n span.setAttributes({\n ...flattenAttributes(result, \"dependencies\"),\n });\n\n span.end();\n\n return result;\n });\n}\n\ntype AdditionalFilesReturn =\n | {\n ok: true;\n }\n | {\n ok: false;\n noMatches: string[];\n };\n\nexport async function copyAdditionalFiles(\n config: ResolvedConfig,\n tempDir: string\n): Promise<AdditionalFilesReturn> {\n const additionalFiles = config.additionalFiles ?? [];\n const noMatches: string[] = [];\n\n if (additionalFiles.length === 0) {\n return { ok: true };\n }\n\n return await tracer.startActiveSpan(\n \"copyAdditionalFiles\",\n {\n attributes: {\n \"config.additionalFiles\": additionalFiles,\n },\n },\n async (span) => {\n try {\n logger.debug(`Copying files to ${tempDir}`, {\n additionalFiles,\n });\n\n const globOptions = {\n withFileTypes: true,\n ignore: [\"node_modules\"],\n cwd: config.projectDir,\n nodir: true,\n } satisfies GlobOptions;\n\n const globs: Array<GlobOptions> = [];\n let i = 0;\n\n for (const additionalFile of additionalFiles) {\n let glob: GlobOptions | Glob<typeof globOptions>;\n\n if (i === 0) {\n glob = new Glob(additionalFile, globOptions);\n } else {\n const previousGlob = globs[i - 1];\n if (!previousGlob) {\n logger.error(\"No previous glob, this shouldn't happen\", { i, additionalFiles });\n continue;\n }\n\n // Use the previous glob's options and cache\n glob = new Glob(additionalFile, previousGlob);\n }\n\n if (!(Symbol.asyncIterator in glob)) {\n logger.error(\"Glob should be an async iterator\", { glob });\n throw new Error(\"Unrecoverable error while copying additional files\");\n }\n\n let matches = 0;\n for await (const file of glob) {\n matches++;\n\n // Any additional files that aren't a child of projectDir will be moved inside tempDir, so they can be part of the build context\n // The file \"../foo/bar\" will be written to \"tempDir/foo/bar\"\n // The file \"../../bar/baz\" will be written to \"tempDir/bar/baz\"\n const pathInsideTempDir = relative(config.projectDir, file.fullpath())\n .split(posix.sep)\n .filter((p) => p !== \"..\")\n .join(posix.sep);\n\n const relativeDestinationPath = join(tempDir, pathInsideTempDir);\n\n logger.debug(`Copying file ${file.fullpath()} to ${relativeDestinationPath}`);\n\n await mkdir(dirname(relativeDestinationPath), { recursive: true });\n await copyFile(file.fullpath(), relativeDestinationPath);\n }\n\n if (matches === 0) {\n noMatches.push(additionalFile);\n }\n\n globs[i] = glob;\n i++;\n }\n\n span.end();\n\n if (noMatches.length > 0) {\n return {\n ok: false,\n noMatches,\n } as const;\n }\n\n return {\n ok: true,\n } as const;\n } catch (error) {\n recordSpanException(span, error);\n\n span.end();\n\n throw error;\n }\n }\n );\n}\n\nasync function ensureLoggedIntoDockerRegistry(\n registryHost: string,\n auth: { username: string; password: string }\n) {\n const tmpDir = await createTempDir();\n // Read the current docker config\n const dockerConfigPath = join(tmpDir, \"config.json\");\n\n await writeJSONFile(dockerConfigPath, {\n auths: {\n [registryHost]: {\n auth: Buffer.from(`${auth.username}:${auth.password}`).toString(\"base64\"),\n },\n },\n });\n\n logger.debug(`Writing docker config to ${dockerConfigPath}`);\n\n return tmpDir;\n}\n","{\n \"name\": \"trigger.dev\",\n \"version\": \"3.0.0-beta.51\",\n \"description\": \"A Command-Line Interface for Trigger.dev (v3) projects\",\n \"main\": \"./dist/index.js\",\n \"types\": \"./dist/index.d.ts\",\n \"license\": \"MIT\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/triggerdotdev/trigger.dev.git\",\n \"directory\": \"packages/cli-v3\"\n },\n \"publishConfig\": {\n \"access\": \"public\"\n },\n \"keywords\": [\n \"typescript\",\n \"trigger.dev\",\n \"workflows\",\n \"orchestration\",\n \"events\",\n \"webhooks\",\n \"integrations\",\n \"apis\",\n \"jobs\",\n \"background jobs\",\n \"nextjs\"\n ],\n \"files\": [\n \"dist\"\n ],\n \"type\": \"module\",\n \"exports\": \"./dist/index.js\",\n \"bin\": {\n \"triggerdev\": \"./dist/index.js\"\n },\n \"devDependencies\": {\n \"@trigger.dev/core-apps\": \"workspace:*\",\n \"@trigger.dev/tsconfig\": \"workspace:*\",\n \"@types/gradient-string\": \"^1.1.2\",\n \"@types/mock-fs\": \"^4.13.1\",\n \"@types/node\": \"18\",\n \"@types/object-hash\": \"^3.0.6\",\n \"@types/react\": \"^18.2.48\",\n \"@types/semver\": \"^7.3.13\",\n \"@types/ws\": \"^8.5.3\",\n \"cpy-cli\": \"^5.0.0\",\n \"nodemon\": \"^3.0.1\",\n \"npm-run-all\": \"^4.1.5\",\n \"open\": \"^10.0.3\",\n \"p-retry\": \"^6.1.0\",\n \"rimraf\": \"^5.0.7\",\n \"tsup\": \"^8.0.1\",\n \"type-fest\": \"^3.6.0\",\n \"typescript\": \"^5.3.3\",\n \"vitest\": \"^1.6.0\",\n \"xdg-app-paths\": \"^8.3.0\"\n },\n \"scripts\": {\n \"typecheck\": \"tsc -p tsconfig.check.json\",\n \"build\": \"npm run clean && run-p build:**\",\n \"build:main\": \"tsup\",\n \"build:workers\": \"tsup --config tsup.workers.config.ts\",\n \"build:prod-containerfile\": \"cpy --flat src/Containerfile.prod dist/\",\n \"dev\": \"npm run clean && run-p dev:**\",\n \"dev:main\": \"tsup --watch\",\n \"dev:workers\": \"tsup --config tsup.workers.config.ts --watch\",\n \"dev:test\": \"nodemon -w src/Containerfile.prod -x npm run build:prod-containerfile\",\n \"clean\": \"rimraf dist\",\n \"start\": \"node dist/index.js\",\n \"test\": \"vitest\",\n \"test:e2e\": \"vitest --run -c e2e/vite.config.js\"\n },\n \"dependencies\": {\n \"@anatine/esbuild-decorators\": \"^0.2.19\",\n \"@clack/prompts\": \"^0.7.0\",\n \"@depot/cli\": \"0.0.1-cli.2.71.0\",\n \"@opentelemetry/api\": \"^1.8.0\",\n \"@opentelemetry/api-logs\": \"^0.49.1\",\n \"@opentelemetry/exporter-logs-otlp-http\": \"^0.49.1\",\n \"@opentelemetry/exporter-trace-otlp-http\": \"^0.49.1\",\n \"@opentelemetry/instrumentation\": \"^0.49.1\",\n \"@opentelemetry/instrumentation-fetch\": \"^0.49.1\",\n \"@opentelemetry/resources\": \"^1.22.0\",\n \"@opentelemetry/sdk-logs\": \"^0.49.1\",\n \"@opentelemetry/sdk-node\": \"^0.49.1\",\n \"@opentelemetry/sdk-trace-base\": \"^1.22.0\",\n \"@opentelemetry/sdk-trace-node\": \"^1.22.0\",\n \"@opentelemetry/semantic-conventions\": \"^1.22.0\",\n \"@trigger.dev/core\": \"workspace:3.0.0-beta.51\",\n \"@types/degit\": \"^2.8.3\",\n \"chalk\": \"^5.2.0\",\n \"chokidar\": \"^3.5.3\",\n \"cli-table3\": \"^0.6.3\",\n \"commander\": \"^9.4.1\",\n \"degit\": \"^2.8.4\",\n \"dotenv\": \"^16.4.4\",\n \"esbuild\": \"^0.19.11\",\n \"evt\": \"^2.4.13\",\n \"execa\": \"^9.1.0\",\n \"find-up\": \"^7.0.0\",\n \"glob\": \"^10.3.10\",\n \"gradient-string\": \"^2.0.2\",\n \"import-meta-resolve\": \"^4.0.0\",\n \"ink\": \"^4.4.1\",\n \"jsonc-parser\": \"3.2.1\",\n \"liquidjs\": \"^10.9.2\",\n \"mock-fs\": \"^5.2.0\",\n \"nanoid\": \"^4.0.2\",\n \"node-fetch\": \"^3.3.0\",\n \"object-hash\": \"^3.0.0\",\n \"p-debounce\": \"^4.0.0\",\n \"p-throttle\": \"^6.1.0\",\n \"partysocket\": \"^0.0.17\",\n \"proxy-agent\": \"^6.3.0\",\n \"react\": \"^18.2.0\",\n \"react-error-boundary\": \"^4.0.12\",\n \"semver\": \"^7.5.0\",\n \"simple-git\": \"^3.19.0\",\n \"source-map-support\": \"^0.5.21\",\n \"terminal-link\": \"^3.0.0\",\n \"tiny-invariant\": \"^1.2.0\",\n \"tsconfig-paths\": \"^4.2.0\",\n \"typescript\": \"^5.4.0\",\n \"update-check\": \"^1.5.4\",\n \"url\": \"^0.11.1\",\n \"ws\": \"^8.12.0\",\n \"zod\": \"3.22.3\",\n \"zod-validation-error\": \"^1.5.0\"\n },\n \"engines\": {\n \"node\": \">=18.0.0\"\n }\n}","import { z } from \"zod\";\nimport {\n CreateAuthorizationCodeResponseSchema,\n GetPersonalAccessTokenResponseSchema,\n WhoAmIResponseSchema,\n CreateBackgroundWorkerRequestBody,\n CreateBackgroundWorkerResponse,\n StartDeploymentIndexingResponseBody,\n GetProjectEnvResponse,\n GetEnvironmentVariablesResponseBody,\n InitializeDeploymentResponseBody,\n InitializeDeploymentRequestBody,\n StartDeploymentIndexingRequestBody,\n GetDeploymentResponseBody,\n GetProjectsResponseBody,\n GetProjectResponseBody,\n ImportEnvironmentVariablesRequestBody,\n EnvironmentVariableResponseBody,\n TaskRunExecution,\n} from \"@trigger.dev/core/v3\";\nimport { zodfetch, ApiError } from \"@trigger.dev/core/v3/zodfetch\";\n\nexport class CliApiClient {\n private readonly apiURL: string;\n\n constructor(\n apiURL: string,\n private readonly accessToken?: string\n ) {\n this.apiURL = apiURL.replace(/\\/$/, \"\");\n }\n\n async createAuthorizationCode() {\n return wrapZodFetch(\n CreateAuthorizationCodeResponseSchema,\n `${this.apiURL}/api/v1/authorization-code`,\n {\n method: \"POST\",\n }\n );\n }\n\n async getPersonalAccessToken(authorizationCode: string) {\n return wrapZodFetch(GetPersonalAccessTokenResponseSchema, `${this.apiURL}/api/v1/token`, {\n method: \"POST\",\n body: JSON.stringify({\n authorizationCode,\n }),\n });\n }\n\n async whoAmI() {\n if (!this.accessToken) {\n throw new Error(\"whoAmI: No access token\");\n }\n\n return wrapZodFetch(WhoAmIResponseSchema, `${this.apiURL}/api/v2/whoami`, {\n headers: {\n Authorization: `Bearer ${this.accessToken}`,\n \"Content-Type\": \"application/json\",\n },\n });\n }\n\n async getProject(projectRef: string) {\n if (!this.accessToken) {\n throw new Error(\"getProject: No access token\");\n }\n\n return wrapZodFetch(GetProjectResponseBody, `${this.apiURL}/api/v1/projects/${projectRef}`, {\n headers: {\n Authorization: `Bearer ${this.accessToken}`,\n \"Content-Type\": \"application/json\",\n },\n });\n }\n\n async getProjects() {\n if (!this.accessToken) {\n throw new Error(\"getProjects: No access token\");\n }\n\n return wrapZodFetch(GetProjectsResponseBody, `${this.apiURL}/api/v1/projects`, {\n headers: {\n Authorization: `Bearer ${this.accessToken}`,\n \"Content-Type\": \"application/json\",\n },\n });\n }\n\n async createBackgroundWorker(projectRef: string, body: CreateBackgroundWorkerRequestBody) {\n if (!this.accessToken) {\n throw new Error(\"createBackgroundWorker: No access token\");\n }\n\n return wrapZodFetch(\n CreateBackgroundWorkerResponse,\n `${this.apiURL}/api/v1/projects/${projectRef}/background-workers`,\n {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${this.accessToken}`,\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(body),\n }\n );\n }\n\n async createTaskRunAttempt(runFriendlyId: string) {\n if (!this.accessToken) {\n throw new Error(\"creatTaskRunAttempt: No access token\");\n }\n\n return wrapZodFetch(TaskRunExecution, `${this.apiURL}/api/v1/runs/${runFriendlyId}/attempts`, {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${this.accessToken}`,\n \"Content-Type\": \"application/json\",\n },\n });\n }\n\n async getProjectEnv({\n projectRef,\n env,\n }: {\n projectRef: string;\n env: \"dev\" | \"prod\" | \"staging\";\n }) {\n if (!this.accessToken) {\n throw new Error(\"getProjectDevEnv: No access token\");\n }\n\n return wrapZodFetch(\n GetProjectEnvResponse,\n `${this.apiURL}/api/v1/projects/${projectRef}/${env}`,\n {\n headers: {\n Authorization: `Bearer ${this.accessToken}`,\n \"Content-Type\": \"application/json\",\n },\n }\n );\n }\n\n async getEnvironmentVariables(projectRef: string) {\n if (!this.accessToken) {\n throw new Error(\"getEnvironmentVariables: No access token\");\n }\n\n return wrapZodFetch(\n GetEnvironmentVariablesResponseBody,\n `${this.apiURL}/api/v1/projects/${projectRef}/envvars`,\n {\n headers: {\n Authorization: `Bearer ${this.accessToken}`,\n \"Content-Type\": \"application/json\",\n },\n }\n );\n }\n\n async importEnvVars(\n projectRef: string,\n slug: \"dev\" | \"prod\" | \"staging\",\n params: ImportEnvironmentVariablesRequestBody\n ) {\n if (!this.accessToken) {\n throw new Error(\"importEnvVars: No access token\");\n }\n\n return wrapZodFetch(\n EnvironmentVariableResponseBody,\n `${this.apiURL}/api/v1/projects/${projectRef}/envvars/${slug}/import`,\n {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${this.accessToken}`,\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(params),\n }\n );\n }\n\n async initializeDeployment(body: InitializeDeploymentRequestBody) {\n if (!this.accessToken) {\n throw new Error(\"initializeDeployment: No access token\");\n }\n\n return wrapZodFetch(InitializeDeploymentResponseBody, `${this.apiURL}/api/v1/deployments`, {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${this.accessToken}`,\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(body),\n });\n }\n\n async startDeploymentIndexing(deploymentId: string, body: StartDeploymentIndexingRequestBody) {\n if (!this.accessToken) {\n throw new Error(\"startDeploymentIndexing: No access token\");\n }\n\n return wrapZodFetch(\n StartDeploymentIndexingResponseBody,\n `${this.apiURL}/api/v1/deployments/${deploymentId}/start-indexing`,\n {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${this.accessToken}`,\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(body),\n }\n );\n }\n\n async getDeployment(deploymentId: string) {\n if (!this.accessToken) {\n throw new Error(\"getDeployment: No access token\");\n }\n\n return wrapZodFetch(\n GetDeploymentResponseBody,\n `${this.apiURL}/api/v1/deployments/${deploymentId}`,\n {\n headers: {\n Authorization: `Bearer ${this.accessToken}`,\n Accept: \"application/json\",\n },\n }\n );\n }\n}\n\ntype ApiResult<TSuccessResult> =\n | { success: true; data: TSuccessResult }\n | {\n success: false;\n error: string;\n };\n\nasync function wrapZodFetch<T extends z.ZodTypeAny>(\n schema: T,\n url: string,\n requestInit?: RequestInit\n): Promise<ApiResult<z.infer<T>>> {\n try {\n const response = await zodfetch(schema, url, requestInit, {\n retry: {\n minTimeoutInMs: 500,\n maxTimeoutInMs: 5000,\n maxAttempts: 3,\n factor: 2,\n randomize: false,\n },\n });\n\n return {\n success: true,\n data: response,\n };\n } catch (error) {\n if (error instanceof ApiError) {\n return {\n success: false,\n error: error.message,\n };\n } else if (error instanceof Error) {\n return {\n success: false,\n error: error.message,\n };\n } else {\n return {\n success: false,\n error: String(error),\n };\n }\n }\n}\n","import { flattenAttributes } from \"@trigger.dev/core/v3\";\nimport { recordSpanException } from \"@trigger.dev/core/v3/workers\";\nimport { Command } from \"commander\";\nimport { z } from \"zod\";\nimport { getTracer, provider } from \"../telemetry/tracing\";\nimport { fromZodError } from \"zod-validation-error\";\nimport { logger } from \"../utilities/logger\";\nimport { outro } from \"@clack/prompts\";\nimport { chalkError } from \"../utilities/cliOutput\";\n\nexport const CommonCommandOptions = z.object({\n apiUrl: z.string().optional(),\n logLevel: z.enum([\"debug\", \"info\", \"log\", \"warn\", \"error\", \"none\"]).default(\"log\"),\n skipTelemetry: z.boolean().default(false),\n profile: z.string().default(\"default\"),\n});\n\nexport type CommonCommandOptions = z.infer<typeof CommonCommandOptions>;\n\nexport function commonOptions(command: Command) {\n return command\n .option(\"--profile <profile>\", \"The login profile to use\", \"default\")\n .option(\"-a, --api-url <value>\", \"Override the API URL\", \"https://api.trigger.dev\")\n .option(\n \"-l, --log-level <level>\",\n \"The CLI log level to use (debug, info, log, warn, error, none). This does not effect the log level of your trigger.dev tasks.\",\n \"log\"\n )\n .option(\"--skip-telemetry\", \"Opt-out of sending telemetry\");\n}\n\nexport class SkipLoggingError extends Error {}\nexport class SkipCommandError extends Error {}\nexport class OutroCommandError extends SkipCommandError {}\n\nexport async function handleTelemetry(action: () => Promise<void>) {\n try {\n await action();\n\n await provider?.forceFlush();\n } catch (e) {\n await provider?.forceFlush();\n\n process.exitCode = 1;\n }\n}\n\nexport const tracer = getTracer();\n\nexport async function wrapCommandAction<T extends z.AnyZodObject, TResult>(\n name: string,\n schema: T,\n options: unknown,\n action: (opts: z.output<T>) => Promise<TResult>\n): Promise<TResult> {\n return await tracer.startActiveSpan(name, async (span) => {\n try {\n const parsedOptions = schema.safeParse(options);\n\n if (!parsedOptions.success) {\n throw new Error(fromZodError(parsedOptions.error).toString());\n }\n\n span.setAttributes({\n ...flattenAttributes(parsedOptions.data, \"cli.options\"),\n });\n\n logger.loggerLevel = parsedOptions.data.logLevel;\n\n logger.debug(`Running \"${name}\" with the following options`, {\n options: options,\n spanContext: span?.spanContext(),\n });\n\n const result = await action(parsedOptions.data);\n\n span.end();\n\n return result;\n } catch (e) {\n if (e instanceof SkipLoggingError) {\n recordSpanException(span, e);\n } else if (e instanceof OutroCommandError) {\n outro(\"Operation cancelled\");\n } else if (e instanceof SkipCommandError) {\n // do nothing\n } else {\n recordSpanException(span, e);\n\n logger.log(`${chalkError(\"X Error:\")} ${e instanceof Error ? e.message : String(e)}`);\n }\n\n span.end();\n\n throw e;\n }\n });\n}\n","import { OTLPTraceExporter } from \"@opentelemetry/exporter-trace-otlp-http\";\nimport { registerInstrumentations } from \"@opentelemetry/instrumentation\";\nimport { Resource, detectResourcesSync, processDetectorSync } from \"@opentelemetry/resources\";\nimport { NodeTracerProvider, SimpleSpanProcessor } from \"@opentelemetry/sdk-trace-node\";\nimport { FetchInstrumentation } from \"@opentelemetry/instrumentation-fetch\";\nimport { DiagConsoleLogger, DiagLogLevel, diag, trace } from \"@opentelemetry/api\";\nimport * as packageJson from \"../../package.json\";\nimport {\n SEMRESATTRS_SERVICE_NAME,\n SEMRESATTRS_SERVICE_VERSION,\n} from \"@opentelemetry/semantic-conventions\";\nimport { logger } from \"../utilities/logger\";\n\nfunction initializeTracing(): NodeTracerProvider | undefined {\n if (\n process.argv.includes(\"--skip-telemetry\") ||\n process.env.TRIGGER_DEV_SKIP_TELEMETRY || // only for backwards compat\n process.env.TRIGGER_TELEMETRY_DISABLED\n ) {\n logger.debug(\"📉 Telemetry disabled\");\n return;\n }\n\n if (process.env.OTEL_INTERNAL_DIAG_DEBUG) {\n diag.setLogger(new DiagConsoleLogger(), DiagLogLevel.DEBUG);\n }\n\n const resource = detectResourcesSync({\n detectors: [processDetectorSync],\n }).merge(\n new Resource({\n [SEMRESATTRS_SERVICE_NAME]: \"trigger.dev cli v3\",\n [SEMRESATTRS_SERVICE_VERSION]: packageJson.version,\n })\n );\n\n const traceProvider = new NodeTracerProvider({\n forceFlushTimeoutMillis: 30_000,\n resource,\n spanLimits: {\n attributeCountLimit: 1000,\n attributeValueLengthLimit: 2048,\n eventCountLimit: 100,\n attributePerEventCountLimit: 100,\n linkCountLimit: 10,\n attributePerLinkCountLimit: 100,\n },\n });\n\n const spanExporter = new OTLPTraceExporter({\n url: \"https://otel.baselime.io/v1\",\n timeoutMillis: 5000,\n headers: {\n \"x-api-key\": \"b6e0fbbaf8dc2524773d2152ae2e9eb5c7fbaa52\",\n },\n });\n\n const spanProcessor = new SimpleSpanProcessor(spanExporter);\n\n traceProvider.addSpanProcessor(spanProcessor);\n traceProvider.register();\n\n registerInstrumentations({\n instrumentations: [new FetchInstrumentation()],\n });\n\n return traceProvider;\n}\n\nexport const provider = initializeTracing();\n\nexport function getTracer() {\n return trace.getTracer(\"trigger.dev cli v3\", packageJson.version);\n}\n","// This is a copy of the logger utility from the wrangler repo: https://github.com/cloudflare/workers-sdk/blob/main/packages/wrangler/src/logger.ts\n\nimport { format } from \"node:util\";\nimport chalk from \"chalk\";\nimport CLITable from \"cli-table3\";\nimport { formatMessagesSync } from \"esbuild\";\nimport type { Message } from \"esbuild\";\nimport { getEnvironmentVariableFactory } from \"./getEnvironmentVariableFactory.js\";\nexport const LOGGER_LEVELS = {\n none: -1,\n error: 0,\n warn: 1,\n info: 2,\n log: 3,\n debug: 4,\n} as const;\n\nexport type LoggerLevel = keyof typeof LOGGER_LEVELS;\n\n/** A map from LOGGER_LEVEL to the error `kind` needed by `formatMessagesSync()`. */\nconst LOGGER_LEVEL_FORMAT_TYPE_MAP = {\n error: \"error\",\n warn: \"warning\",\n info: undefined,\n log: undefined,\n debug: undefined,\n} as const;\n\nconst getLogLevelFromEnv = getEnvironmentVariableFactory({\n variableName: \"TRIGGER_LOG_LEVEL\",\n});\n\nfunction getLoggerLevel(): LoggerLevel {\n const fromEnv = getLogLevelFromEnv()?.toLowerCase();\n if (fromEnv !== undefined) {\n if (fromEnv in LOGGER_LEVELS) return fromEnv as LoggerLevel;\n const expected = Object.keys(LOGGER_LEVELS)\n .map((level) => `\"${level}\"`)\n .join(\" | \");\n console.warn(\n `Unrecognised WRANGLER_LOG value ${JSON.stringify(\n fromEnv\n )}, expected ${expected}, defaulting to \"log\"...`\n );\n }\n return \"log\";\n}\n\nexport type TableRow<Keys extends string> = Record<Keys, string>;\n\nexport class Logger {\n constructor() {}\n\n loggerLevel = getLoggerLevel();\n columns = process.stdout.columns;\n\n debug = (...args: unknown[]) => this.doLog(\"debug\", args);\n ignore = (...args: unknown[]) => {};\n debugWithSanitization = (label: string, ...args: unknown[]) => {\n this.doLog(\"debug\", [label, ...args]);\n };\n info = (...args: unknown[]) => this.doLog(\"info\", args);\n log = (...args: unknown[]) => this.doLog(\"log\", args);\n warn = (...args: unknown[]) => this.doLog(\"warn\", args);\n error = (...args: unknown[]) => this.doLog(\"error\", args);\n table<Keys extends string>(data: TableRow<Keys>[], level?: Exclude<LoggerLevel, \"none\">) {\n const keys: Keys[] = data.length === 0 ? [] : (Object.keys(data[0]!) as Keys[]);\n const t = new CLITable({\n head: keys,\n style: {\n head: chalk.level ? [\"blue\"] : [],\n border: chalk.level ? [\"gray\"] : [],\n },\n });\n t.push(...data.map((row) => keys.map((k) => row[k])));\n return this.doLog(level ?? \"log\", [t.toString()]);\n }\n\n private doLog(messageLevel: Exclude<LoggerLevel, \"none\">, args: unknown[]) {\n const message = this.formatMessage(messageLevel, format(...args));\n\n // only send logs to the terminal if their level is at least the configured log-level\n if (LOGGER_LEVELS[this.loggerLevel] >= LOGGER_LEVELS[messageLevel]) {\n console[messageLevel](message);\n }\n }\n\n private formatMessage(level: Exclude<LoggerLevel, \"none\">, message: string): string {\n const kind = LOGGER_LEVEL_FORMAT_TYPE_MAP[level];\n if (kind) {\n // Format the message using the esbuild formatter.\n // The first line of the message is the main `text`,\n // subsequent lines are put into the `notes`.\n const [firstLine, ...otherLines] = message.split(\"\\n\");\n const notes = otherLines.length > 0 ? otherLines.map((text) => ({ text })) : undefined;\n return formatMessagesSync([{ text: firstLine, notes }], {\n color: true,\n kind,\n terminalWidth: this.columns,\n })[0]!;\n } else {\n return message;\n }\n }\n}\n\n/**\n * A drop-in replacement for `console` for outputting logging messages.\n *\n * Errors and Warnings will get additional formatting to highlight them to the user.\n * You can also set a `logger.loggerLevel` value to one of \"debug\", \"log\", \"warn\" or \"error\",\n * to filter out logging messages.\n */\nexport const logger = new Logger();\n\nexport function logBuildWarnings(warnings: Message[]) {\n const logs = formatMessagesSync(warnings, { kind: \"warning\", color: true });\n for (const log of logs) console.warn(log);\n}\n\n/**\n * Logs all errors/warnings associated with an esbuild BuildFailure in the same\n * style esbuild would.\n */\nexport function logBuildFailure(errors: Message[], warnings: Message[]) {\n const logs = formatMessagesSync(errors, { kind: \"error\", color: true });\n for (const log of logs) console.error(log);\n logBuildWarnings(warnings);\n}\n","import { logger } from \"./logger.js\";\n\ntype VariableNames = \"TRIGGER_API_URL\" | \"TRIGGER_SECRET_KEY\" | \"TRIGGER_LOG_LEVEL\";\n\ntype DeprecatedNames = \"\";\n\n/**\n * Create a function used to access an environment variable.\n *\n * This is not memoized to allow us to change the value at runtime, such as in testing.\n * A warning is shown if the client is using a deprecated version - but only once.\n */\nexport function getEnvironmentVariableFactory({\n variableName,\n deprecatedName,\n}: {\n variableName: VariableNames;\n deprecatedName?: DeprecatedNames;\n}): () => string | undefined;\n\n/**\n * Create a function used to access an environment variable, with a default value.\n *\n * This is not memoized to allow us to change the value at runtime, such as in testing.\n * A warning is shown if the client is using a deprecated version - but only once.\n */\nexport function getEnvironmentVariableFactory({\n variableName,\n deprecatedName,\n defaultValue,\n}: {\n variableName: VariableNames;\n deprecatedName?: DeprecatedNames;\n defaultValue: () => string;\n}): () => string;\n\n/**\n * Create a function used to access an environment variable.\n *\n * This is not memoized to allow us to change the value at runtime, such as in testing.\n * A warning is shown if the client is using a deprecated version - but only once.\n */\nexport function getEnvironmentVariableFactory({\n variableName,\n deprecatedName,\n defaultValue,\n}: {\n variableName: VariableNames;\n deprecatedName?: DeprecatedNames;\n defaultValue?: () => string;\n}): () => string | undefined {\n let hasWarned = false;\n return () => {\n if (process.env[variableName]) {\n return process.env[variableName];\n } else if (deprecatedName && process.env[deprecatedName]) {\n if (!hasWarned) {\n // Only show the warning once.\n hasWarned = true;\n logger.warn(\n `Using \"${deprecatedName}\" environment variable. This is deprecated. Please use \"${variableName}\", instead.`\n );\n }\n return process.env[deprecatedName];\n } else {\n return defaultValue?.();\n }\n };\n}\n","import { log } from \"@clack/prompts\";\nimport chalk from \"chalk\";\nimport terminalLink, { Options as TerminalLinkOptions } from \"terminal-link\";\n\nexport const green = \"#4FFF54\";\nexport const purple = \"#735BF3\";\n\nexport function chalkGreen(text: string) {\n return chalk.hex(green)(text);\n}\n\nexport function chalkPurple(text: string) {\n return chalk.hex(purple)(text);\n}\n\nexport function chalkGrey(text: string) {\n return chalk.hex(\"#878C99\")(text);\n}\n\nexport function chalkError(text: string) {\n return chalk.hex(\"#E11D48\")(text);\n}\n\nexport function chalkWarning(text: string) {\n return chalk.yellow(text);\n}\n\nexport function chalkSuccess(text: string) {\n return chalk.hex(\"#28BF5C\")(text);\n}\n\nexport function chalkLink(text: string) {\n return chalk.underline.hex(\"#D7D9DD\")(text);\n}\n\nexport function chalkWorker(text: string) {\n return chalk.hex(\"#FFFF89\")(text);\n}\n\nexport function chalkTask(text: string) {\n return chalk.hex(\"#60A5FA\")(text);\n}\n\nexport function chalkRun(text: string) {\n return chalk.hex(\"#A78BFA\")(text);\n}\n\nexport function logo() {\n return `${chalk.hex(green).bold(\"Trigger\")}${chalk.hex(purple).bold(\".dev\")}`;\n}\n\n// Mar 27 09:17:25.653\nexport function prettyPrintDate(date: Date = new Date()) {\n let formattedDate = new Intl.DateTimeFormat(\"en-US\", {\n month: \"short\",\n day: \"2-digit\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n second: \"2-digit\",\n hour12: false,\n }).format(date);\n\n // Append milliseconds\n formattedDate += \".\" + (\"00\" + date.getMilliseconds()).slice(-3);\n\n return formattedDate;\n}\n\nexport function prettyError(header: string, body?: string, footer?: string) {\n const prefix = \"Error: \";\n const indent = Array(prefix.length).fill(\" \").join(\"\");\n const spacing = \"\\n\\n\";\n\n const prettyPrefix = chalkError(prefix);\n\n const withIndents = (text?: string) =>\n text\n ?.split(\"\\n\")\n .map((line) => `${indent}${line}`)\n .join(\"\\n\");\n\n const prettyBody = withIndents(body);\n const prettyFooter = withIndents(footer);\n\n log.error(\n `${prettyPrefix}${header}${prettyBody ? `${spacing}${prettyBody}` : \"\"}${\n prettyFooter ? `${spacing}${prettyFooter}` : \"\"\n }`\n );\n}\n\nexport function prettyWarning(header: string, body?: string, footer?: string) {\n const prefix = \"Warning: \";\n const indent = Array(prefix.length).fill(\" \").join(\"\");\n const spacing = \"\\n\\n\";\n\n const prettyPrefix = chalkWarning(prefix);\n\n const withIndents = (text?: string) =>\n text\n ?.split(\"\\n\")\n .map((line) => `${indent}${line}`)\n .join(\"\\n\");\n\n const prettyBody = withIndents(body);\n const prettyFooter = withIndents(footer);\n\n log.warn(\n `${prettyPrefix}${header}${prettyBody ? `${spacing}${prettyBody}` : \"\"}${\n prettyFooter ? `${spacing}${prettyFooter}` : \"\"\n }`\n );\n}\n\nexport function cliLink(text: string, url: string, options?: TerminalLinkOptions) {\n return terminalLink(text, url, {\n fallback: (text, url) => `${text} ${url}`,\n ...options,\n });\n}\n","import { Config, ResolvedConfig } from \"@trigger.dev/core/v3\";\nimport { findUp } from \"find-up\";\nimport { mkdirSync, writeFileSync } from \"node:fs\";\nimport path, { join } from \"node:path\";\nimport { pathToFileURL } from \"node:url\";\nimport xdgAppPaths from \"xdg-app-paths\";\nimport { z } from \"zod\";\nimport { CLOUD_API_URL, CONFIG_FILES } from \"../consts.js\";\nimport { createTempDir, readJSONFileSync } from \"./fileSystem.js\";\nimport { logger } from \"./logger.js\";\nimport { findTriggerDirectories, resolveTriggerDirectories } from \"./taskFiles.js\";\nimport { build } from \"esbuild\";\nimport { esbuildDecorators } from \"@anatine/esbuild-decorators\";\n\nfunction getGlobalConfigFolderPath() {\n const configDir = xdgAppPaths(\"trigger\").config();\n\n return configDir;\n}\n\n//auth config file\nexport const UserAuthConfigSchema = z.object({\n accessToken: z.string().optional(),\n apiUrl: z.string().optional(),\n});\n\nexport type UserAuthConfig = z.infer<typeof UserAuthConfigSchema>;\n\nconst UserAuthConfigFileSchema = z.record(UserAuthConfigSchema);\n\ntype UserAuthConfigFile = z.infer<typeof UserAuthConfigFileSchema>;\n\nfunction getAuthConfigFilePath() {\n return path.join(getGlobalConfigFolderPath(), \"default.json\");\n}\n\nexport function writeAuthConfigProfile(config: UserAuthConfig, profile: string = \"default\") {\n const existingConfig = readAuthConfigFile() || {};\n\n existingConfig[profile] = config;\n\n writeAuthConfigFile(existingConfig);\n}\n\nexport function readAuthConfigProfile(profile: string = \"default\"): UserAuthConfig | undefined {\n try {\n const authConfigFilePath = getAuthConfigFilePath();\n\n logger.debug(`Reading auth config file`, { authConfigFilePath });\n\n const json = readJSONFileSync(authConfigFilePath);\n const parsed = UserAuthConfigFileSchema.parse(json);\n return parsed[profile];\n } catch (error) {\n logger.debug(`Error reading auth config file: ${error}`);\n return undefined;\n }\n}\n\nexport function deleteAuthConfigProfile(profile: string = \"default\") {\n const existingConfig = readAuthConfigFile() || {};\n\n delete existingConfig[profile];\n\n writeAuthConfigFile(existingConfig);\n}\n\nexport function readAuthConfigFile(): UserAuthConfigFile | undefined {\n try {\n const authConfigFilePath = getAuthConfigFilePath();\n\n logger.debug(`Reading auth config file`, { authConfigFilePath });\n\n const json = readJSONFileSync(authConfigFilePath);\n const parsed = UserAuthConfigFileSchema.parse(json);\n return parsed;\n } catch (error) {\n logger.debug(`Error reading auth config file: ${error}`);\n return undefined;\n }\n}\n\nexport function writeAuthConfigFile(config: UserAuthConfigFile) {\n const authConfigFilePath = getAuthConfigFilePath();\n mkdirSync(path.dirname(authConfigFilePath), {\n recursive: true,\n });\n writeFileSync(path.join(authConfigFilePath), JSON.stringify(config), {\n encoding: \"utf-8\",\n });\n}\n\nasync function getConfigPath(dir: string, fileName?: string): Promise<string | undefined> {\n logger.debug(\"Searching for the config file\", {\n dir,\n fileName,\n configFiles: CONFIG_FILES,\n });\n\n return await findUp(fileName ? [fileName] : CONFIG_FILES, { cwd: dir });\n}\n\nasync function findFilePath(dir: string, fileName: string): Promise<string | undefined> {\n const result = await findUp([fileName], { cwd: dir });\n\n logger.debug(\"Searched for the file\", {\n dir,\n fileName,\n result,\n });\n\n return result;\n}\n\nexport type ReadConfigOptions = {\n projectRef?: string;\n configFile?: string;\n cwd?: string;\n};\n\nexport type ReadConfigFileResult = {\n status: \"file\";\n config: ResolvedConfig;\n path: string;\n module?: any;\n};\n\nexport type ReadConfigResult =\n | ReadConfigFileResult\n | {\n status: \"in-memory\";\n config: ResolvedConfig;\n }\n | {\n status: \"error\";\n error: unknown;\n };\n\nexport async function readConfig(\n dir: string,\n options?: ReadConfigOptions\n): Promise<ReadConfigResult> {\n const absoluteDir = path.resolve(options?.cwd || process.cwd(), dir);\n\n const configPath = await getConfigPath(dir, options?.configFile);\n\n if (!configPath) {\n if (options?.projectRef) {\n const rawConfig = await normalizeConfig({ project: options.projectRef });\n const config = Config.parse(rawConfig);\n\n return {\n status: \"in-memory\",\n config: await resolveConfig(absoluteDir, config),\n };\n } else {\n throw new Error(`Config file not found in ${absoluteDir} or any parent directory.`);\n }\n }\n\n const tempDir = await createTempDir();\n\n const builtConfigFilePath = join(tempDir, \"config.js\");\n const builtConfigFileHref = pathToFileURL(builtConfigFilePath).href;\n\n logger.debug(\"Building config file\", {\n configPath,\n builtConfigFileHref,\n builtConfigFilePath,\n });\n\n // We need to build the path to the config file, and then import it?\n await build({\n entryPoints: [configPath],\n bundle: true,\n metafile: true,\n minify: false,\n write: true,\n format: \"cjs\",\n platform: \"node\",\n target: [\"es2020\", \"node18\"],\n outfile: builtConfigFilePath,\n logLevel: \"silent\",\n plugins: [\n esbuildDecorators({\n cwd: absoluteDir,\n tsx: false,\n force: false,\n }),\n {\n name: \"native-node-modules\",\n setup(build) {\n const opts = build.initialOptions;\n opts.loader = opts.loader || {};\n opts.loader[\".node\"] = \"copy\";\n },\n },\n ],\n });\n\n try {\n // import the config file\n const userConfigModule = await import(builtConfigFileHref);\n\n // The --project-ref CLI arg will always override the project specified in the config file\n const rawConfig = await normalizeConfig(\n userConfigModule?.config,\n options?.projectRef ? { project: options?.projectRef } : undefined\n );\n\n const config = Config.parse(rawConfig);\n\n return {\n status: \"file\",\n config: await resolveConfig(absoluteDir, config),\n path: configPath,\n module: userConfigModule,\n };\n } catch (error) {\n return {\n status: \"error\",\n error,\n };\n }\n}\n\nexport async function resolveConfig(path: string, config: Config): Promise<ResolvedConfig> {\n if (!config.triggerDirectories) {\n config.triggerDirectories = await findTriggerDirectories(path);\n // TODO trigger-dir-missing: throw error if no trigger directory is found\n }\n\n config.triggerDirectories = resolveTriggerDirectories(path, config.triggerDirectories);\n // TODO trigger-dir-not-found: throw error if trigger directories do not exist\n\n logger.debug(\"Resolved trigger directories\", { triggerDirectories: config.triggerDirectories });\n\n if (!config.triggerUrl) {\n config.triggerUrl = CLOUD_API_URL;\n }\n\n if (!config.projectDir) {\n config.projectDir = path;\n }\n\n if (!config.tsconfigPath) {\n config.tsconfigPath = await findFilePath(path, \"tsconfig.json\");\n }\n\n if (!config.additionalFiles) {\n config.additionalFiles = [];\n }\n\n if (config.extraCACerts) {\n config.additionalFiles.push(config.extraCACerts);\n config.extraCACerts = config.extraCACerts.replace(/^(\\.[.]?\\/)+/, \"\");\n }\n\n return config as ResolvedConfig;\n}\n\nexport async function normalizeConfig(config: any, overrides?: Record<string, any>): Promise<any> {\n let normalized = config;\n\n if (typeof config === \"function\") {\n normalized = await config();\n }\n\n normalized = { ...normalized, ...overrides };\n\n return normalized;\n}\n","// deno-fmt-ignore-file ## prefer customized `prettier` formatting\n\nimport _ from '../mod.cjs.js';\nexport * from '../mod.cjs.js';\nexport default _;\n","import path from \"path\";\nimport { fileURLToPath } from \"url\";\n\n// With the move to TSUP as a build tool, this keeps path routes in other files (installers, loaders, etc) in check more easily.\n// Path is in relation to a single index.js file inside ./dist\nconst __filename = fileURLToPath(import.meta.url);\nconst distPath = path.dirname(__filename);\n\nexport const PKG_ROOT = path.join(distPath, \"../\");\nexport const COMMAND_NAME = \"trigger.dev\";\nexport const CLOUD_WEB_URL = \"https://cloud.trigger.dev\";\nexport const CLOUD_API_URL = \"https://api.trigger.dev\";\nexport const CONFIG_FILES = [\"trigger.config.ts\", \"trigger.config.js\", \"trigger.config.mjs\"];\n","import fsSync from \"fs\";\nimport fsModule, { writeFile } from \"fs/promises\";\nimport fs from \"node:fs\";\nimport { tmpdir } from \"node:os\";\nimport pathModule from \"node:path\";\n\n// Creates a file at the given path, if the directory doesn't exist it will be created\nexport async function createFile(path: string, contents: string): Promise<string> {\n await fsModule.mkdir(pathModule.dirname(path), { recursive: true });\n await fsModule.writeFile(path, contents);\n\n return path;\n}\n\nexport function isDirectory(configPath: string) {\n try {\n return fs.statSync(configPath).isDirectory();\n } catch (error) {\n // ignore error\n return false;\n }\n}\n\nexport async function pathExists(path: string): Promise<boolean> {\n return fsSync.existsSync(path);\n}\n\nexport async function someFileExists(directory: string, filenames: string[]): Promise<boolean> {\n for (let index = 0; index < filenames.length; index++) {\n const filename = filenames[index];\n if (!filename) continue;\n\n const path = pathModule.join(directory, filename);\n if (await pathExists(path)) {\n return true;\n }\n }\n\n return false;\n}\n\nexport async function removeFile(path: string) {\n await fsModule.unlink(path);\n}\n\nexport async function readFile(path: string) {\n return await fsModule.readFile(path, \"utf8\");\n}\n\nexport async function readJSONFile(path: string) {\n const fileContents = await fsModule.readFile(path, \"utf8\");\n\n return JSON.parse(fileContents);\n}\n\nexport async function safeFeadJSONFile(path: string) {\n try {\n const fileExists = await pathExists(path);\n\n if (!fileExists) return;\n\n const fileContents = await readFile(path);\n\n return JSON.parse(fileContents);\n } catch {\n return;\n }\n}\n\nexport async function writeJSONFile(path: string, json: any, pretty = false) {\n await writeFile(path, JSON.stringify(json, undefined, pretty ? 2 : undefined), \"utf8\");\n}\n\nexport function readJSONFileSync(path: string) {\n const fileContents = fsSync.readFileSync(path, \"utf8\");\n\n return JSON.parse(fileContents);\n}\n\nexport function safeDeleteFileSync(path: string) {\n try {\n fs.unlinkSync(path);\n } catch (error) {\n // ignore error\n }\n}\n\n// Create a temporary directory within the OS's temp directory\nexport async function createTempDir(): Promise<string> {\n // Generate a unique temp directory path\n const tempDirPath: string = pathModule.join(tmpdir(), \"trigger-\");\n\n // Create the temp directory synchronously and return the path\n const directory = await fsModule.mkdtemp(tempDirPath);\n\n return directory;\n}\n","import { ResolvedConfig } from \"@trigger.dev/core/v3\";\nimport fs from \"node:fs\";\nimport { join, relative, resolve } from \"node:path\";\nimport { TaskFile } from \"../types\";\n\nexport function createTaskFileImports(taskFiles: TaskFile[]) {\n return taskFiles\n .map(\n (taskFile) =>\n `import * as ${taskFile.importName} from \"./${taskFile.importPath}\"; TaskFileImports[\"${\n taskFile.importName\n }\"] = ${taskFile.importName}; TaskFiles[\"${taskFile.importName}\"] = ${JSON.stringify(\n taskFile\n )};`\n )\n .join(\"\\n\");\n}\n\n// Find all the top-level .js or .ts files in the trigger directories\nexport async function gatherTaskFiles(config: ResolvedConfig): Promise<Array<TaskFile>> {\n const taskFiles: Array<TaskFile> = [];\n\n for (const triggerDir of config.triggerDirectories) {\n const files = await gatherTaskFilesFromDir(triggerDir, triggerDir, config);\n taskFiles.push(...files);\n }\n\n return taskFiles;\n}\n\nasync function gatherTaskFilesFromDir(\n dirPath: string,\n triggerDir: string,\n config: ResolvedConfig\n): Promise<TaskFile[]> {\n const taskFiles: TaskFile[] = [];\n\n const files = await fs.promises.readdir(dirPath, { withFileTypes: true });\n for (const file of files) {\n if (!file.isFile()) {\n // Recurse into subdirectories\n const fullPath = join(dirPath, file.name);\n taskFiles.push(...(await gatherTaskFilesFromDir(fullPath, triggerDir, config)));\n } else {\n if (\n !file.name.endsWith(\".js\") &&\n !file.name.endsWith(\".ts\") &&\n !file.name.endsWith(\".jsx\") &&\n !file.name.endsWith(\".tsx\")\n ) {\n continue;\n }\n\n const fullPath = join(dirPath, file.name);\n const filePath = relative(config.projectDir, fullPath);\n\n //remove the file extension and replace any invalid characters with underscores\n const importName = filePath.replace(/\\..+$/, \"\").replace(/[^a-zA-Z0-9_$]/g, \"_\");\n\n //change backslashes to forward slashes\n const importPath = filePath.replace(/\\\\/g, \"/\");\n\n taskFiles.push({ triggerDir, importPath, importName, filePath });\n }\n }\n\n return taskFiles;\n}\n\nexport function resolveTriggerDirectories(projectDir: string, dirs: string[]): string[] {\n return dirs.map((dir) => resolve(projectDir, dir));\n}\n\nconst IGNORED_DIRS = [\"node_modules\", \".git\", \"dist\", \"build\"];\n\nexport async function findTriggerDirectories(dirPath: string): Promise<string[]> {\n return getTriggerDirectories(dirPath);\n}\n\nasync function getTriggerDirectories(dirPath: string): Promise<string[]> {\n const entries = await fs.promises.readdir(dirPath, { withFileTypes: true });\n const triggerDirectories: string[] = [];\n\n for (const entry of entries) {\n if (!entry.isDirectory() || IGNORED_DIRS.includes(entry.name) || entry.name.startsWith(\".\"))\n continue;\n\n const fullPath = join(dirPath, entry.name);\n\n // Ignore the directory if it's <any>/app/api/trigger\n if (fullPath.endsWith(\"app/api/trigger\")) {\n continue;\n }\n\n if (entry.name === \"trigger\") {\n triggerDirectories.push(fullPath);\n }\n\n triggerDirectories.push(...(await getTriggerDirectories(fullPath)));\n }\n\n return triggerDirectories;\n}\n","import chalk from \"chalk\";\nimport type { Result } from \"update-check\";\nimport checkForUpdate from \"update-check\";\nimport pkg from \"../../package.json\";\nimport { chalkGrey, chalkRun, chalkTask, chalkWorker, green, logo } from \"./cliOutput.js\";\nimport { getVersion } from \"./getVersion.js\";\nimport { logger } from \"./logger.js\";\nimport { spinner } from \"./windows\";\n\nexport async function printInitialBanner(performUpdateCheck = true) {\n const cliVersion = getVersion();\n const text = `\\n${logo()} ${chalkGrey(`(${cliVersion})`)}\\n`;\n\n logger.info(text);\n\n let maybeNewVersion: string | undefined;\n if (performUpdateCheck) {\n const loadingSpinner = spinner();\n loadingSpinner.start(\"Checking for updates\");\n maybeNewVersion = await updateCheck();\n\n // Log a slightly more noticeable message if this is a major bump\n if (maybeNewVersion !== undefined) {\n loadingSpinner.stop(`Update available ${chalk.green(maybeNewVersion)}`);\n const currentMajor = parseInt(cliVersion.split(\".\")[0]!);\n const newMajor = parseInt(maybeNewVersion.split(\".\")[0]!);\n if (newMajor > currentMajor) {\n logger.warn(\n `Please update to the latest version of \\`trigger.dev\\` to prevent critical errors.\nRun \\`npm install --save-dev trigger.dev@${newMajor}\\` to update to the latest version.\nAfter installation, run Trigger.dev with \\`npx trigger.dev\\`.`\n );\n }\n } else {\n loadingSpinner.stop(\"On latest version\");\n }\n }\n}\n\nexport async function printStandloneInitialBanner(performUpdateCheck = true) {\n const cliVersion = getVersion();\n\n if (performUpdateCheck) {\n const maybeNewVersion = await updateCheck();\n\n // Log a slightly more noticeable message if this is a major bump\n if (maybeNewVersion !== undefined) {\n logger.log(`\\n${logo()} ${chalkGrey(`(${cliVersion} -> ${chalk.green(maybeNewVersion)})`)}`);\n } else {\n logger.log(`\\n${logo()} ${chalkGrey(`(${cliVersion})`)}`);\n }\n } else {\n logger.log(`\\n${logo()} ${chalkGrey(`(${cliVersion})`)}`);\n }\n\n logger.log(`${chalkGrey(\"-\".repeat(54))}`);\n}\n\nexport function printDevBanner(printTopBorder = true) {\n if (printTopBorder) {\n logger.log(chalkGrey(\"-\".repeat(54)));\n }\n\n logger.log(\n `${chalkGrey(\"Key:\")} ${chalkWorker(\"Version\")} ${chalkGrey(\"|\")} ${chalkTask(\n \"Task\"\n )} ${chalkGrey(\"|\")} ${chalkRun(\"Run\")}`\n );\n logger.log(chalkGrey(\"-\".repeat(54)));\n}\n\nasync function doUpdateCheck(): Promise<string | undefined> {\n let update: Result | null = null;\n try {\n // default cache for update check is 1 day\n update = await checkForUpdate(pkg, {\n distTag: pkg.version.startsWith(\"3.0.0-beta\") ? \"beta\" : \"latest\",\n });\n } catch (err) {\n // ignore error\n }\n return update?.latest;\n}\n\n//only do this once while the cli is running\nlet updateCheckPromise: Promise<string | undefined>;\nexport function updateCheck(): Promise<string | undefined> {\n return (updateCheckPromise ??= doUpdateCheck());\n}\n","import { type PackageJson } from \"type-fest\";\nimport path from \"path\";\nimport { PKG_ROOT } from \"../consts.js\";\nimport { readJSONFileSync } from \"./fileSystem.js\";\n\nexport function getVersion() {\n const packageJsonPath = path.join(PKG_ROOT, \"package.json\");\n\n const packageJsonContent = readJSONFileSync(packageJsonPath) as PackageJson;\n\n return packageJsonContent.version ?? \"1.0.0\";\n}\n","import { log, spinner as clackSpinner } from \"@clack/prompts\";\n\nexport const isWindows = process.platform === \"win32\";\n\nexport function escapeImportPath(path: string) {\n return isWindows ? path.replaceAll(\"\\\\\", \"\\\\\\\\\") : path;\n}\n\nconst ballmerSpinner = () => ({\n start: (msg?: string): void => {\n log.step(msg ?? \"\");\n },\n stop: (msg?: string, code?: number): void => {\n log.message(msg ?? \"\");\n },\n message: (msg?: string): void => {\n log.message(msg ?? \"\");\n },\n});\n\n// This will become unecessary with the next clack release, the bug was fixed here:\n// https://github.com/natemoo-re/clack/pull/182\nexport const spinner = () => (isWindows ? ballmerSpinner() : clackSpinner());\n","import { execa } from \"execa\";\nimport { join } from \"node:path\";\nimport { readJSONFile, writeJSONFile } from \"./fileSystem\";\nimport { logger } from \"./logger\";\n\nexport type InstallPackagesOptions = { cwd?: string };\n\nexport async function installPackages(\n packages: Record<string, string>,\n options?: InstallPackagesOptions\n) {\n const cwd = options?.cwd ?? process.cwd();\n\n logger.debug(\"Installing packages\", { packages });\n\n await setPackageJsonDeps(join(cwd, \"package.json\"), packages);\n\n await execa(\n \"npm\",\n [\"install\", \"--install-strategy\", \"nested\", \"--ignore-scripts\", \"--no-audit\", \"--no-fund\"],\n {\n cwd,\n stderr: \"pipe\",\n }\n );\n}\n\n// Expects path to be in the format:\n// - source-map-support/register.js\n// - @opentelemetry/api\n// - zod\n//\n// With the result being:\n// - source-map-support\n// - @opentelemetry/api\n// - zod\nexport function detectPackageNameFromImportPath(path: string): string {\n if (path.startsWith(\"@\")) {\n return path.split(\"/\").slice(0, 2).join(\"/\");\n } else {\n return path.split(\"/\")[0] as string;\n }\n}\n\n/**\n * Removes the workspace prefix from a version string.\n * @param version - The version string to strip the workspace prefix from.\n * @returns The version string without the workspace prefix.\n * @example\n * stripWorkspaceFromVersion(\"workspace:1.0.0\") // \"1.0.0\"\n * stripWorkspaceFromVersion(\"1.0.0\") // \"1.0.0\"\n */\nexport function stripWorkspaceFromVersion(version: string) {\n return version.replace(/^workspace:/, \"\");\n}\n\nexport function parsePackageName(packageSpecifier: string): { name: string; version?: string } {\n let name: string | undefined;\n let version: string | undefined;\n\n // Check if the package is scoped\n if (packageSpecifier.startsWith(\"@\")) {\n const atIndex = packageSpecifier.indexOf(\"@\", 1);\n // If a version is included\n if (atIndex !== -1) {\n name = packageSpecifier.slice(0, atIndex);\n version = packageSpecifier.slice(atIndex + 1);\n } else {\n name = packageSpecifier;\n }\n } else {\n const [packageName, packageVersion] = packageSpecifier.split(\"@\");\n\n if (typeof packageName === \"string\") {\n name = packageName;\n }\n\n version = packageVersion;\n }\n\n if (!name) {\n return { name: packageSpecifier };\n }\n\n return { name, version };\n}\n\nasync function setPackageJsonDeps(path: string, deps: Record<string, string>) {\n try {\n const existingPackageJson = await readJSONFile(path);\n\n const newPackageJson = {\n ...existingPackageJson,\n dependencies: {\n ...deps,\n },\n };\n\n await writeJSONFile(path, newPackageJson);\n } catch (error) {\n const defaultPackageJson = {\n name: \"temp\",\n version: \"1.0.0\",\n description: \"\",\n dependencies: deps,\n };\n\n await writeJSONFile(path, defaultPackageJson);\n }\n}\n","import { intro, log, outro, select } from \"@clack/prompts\";\nimport { recordSpanException } from \"@trigger.dev/core/v3/workers\";\nimport { Command } from \"commander\";\nimport open from \"open\";\nimport pRetry, { AbortError } from \"p-retry\";\nimport { z } from \"zod\";\nimport { CliApiClient } from \"../apiClient.js\";\nimport {\n CommonCommandOptions,\n SkipLoggingError,\n commonOptions,\n handleTelemetry,\n tracer,\n wrapCommandAction,\n} from \"../cli/common.js\";\nimport { chalkLink, prettyError } from \"../utilities/cliOutput.js\";\nimport { readAuthConfigProfile, writeAuthConfigProfile } from \"../utilities/configFiles.js\";\nimport { getVersion } from \"../utilities/getVersion.js\";\nimport { printInitialBanner } from \"../utilities/initialBanner.js\";\nimport { LoginResult } from \"../utilities/session.js\";\nimport { whoAmI } from \"./whoami.js\";\nimport { logger } from \"../utilities/logger.js\";\nimport { spinner } from \"../utilities/windows.js\";\n\nexport const LoginCommandOptions = CommonCommandOptions.extend({\n apiUrl: z.string(),\n});\n\nexport type LoginCommandOptions = z.infer<typeof LoginCommandOptions>;\n\nexport function configureLoginCommand(program: Command) {\n return commonOptions(\n program\n .command(\"login\")\n .description(\"Login with Trigger.dev so you can perform authenticated actions\")\n )\n .version(getVersion(), \"-v, --version\", \"Display the version number\")\n .action(async (options) => {\n await handleTelemetry(async () => {\n await printInitialBanner(false);\n await loginCommand(options);\n });\n });\n}\n\nexport async function loginCommand(options: unknown) {\n return await wrapCommandAction(\"loginCommand\", LoginCommandOptions, options, async (opts) => {\n return await _loginCommand(opts);\n });\n}\n\nasync function _loginCommand(options: LoginCommandOptions) {\n return login({ defaultApiUrl: options.apiUrl, embedded: false, profile: options.profile });\n}\n\nexport type LoginOptions = {\n defaultApiUrl?: string;\n embedded?: boolean;\n profile?: string;\n};\n\nexport async function login(options?: LoginOptions): Promise<LoginResult> {\n return await tracer.startActiveSpan(\"login\", async (span) => {\n try {\n const opts = { defaultApiUrl: \"https://api.trigger.dev\", embedded: false, ...options };\n\n span.setAttributes({\n \"cli.config.apiUrl\": opts.defaultApiUrl,\n \"cli.options.profile\": opts.profile,\n });\n\n if (!opts.embedded) {\n intro(\"Logging in to Trigger.dev\");\n }\n\n const accessTokenFromEnv = process.env.TRIGGER_ACCESS_TOKEN;\n\n if (accessTokenFromEnv) {\n const auth = {\n accessToken: accessTokenFromEnv,\n apiUrl: process.env.TRIGGER_API_URL ?? opts.defaultApiUrl ?? \"https://api.trigger.dev\",\n };\n const apiClient = new CliApiClient(auth.apiUrl, auth.accessToken);\n const userData = await apiClient.whoAmI();\n\n if (!userData.success) {\n throw new Error(userData.error);\n }\n\n return {\n ok: true as const,\n profile: options?.profile ?? \"default\",\n userId: userData.data.userId,\n email: userData.data.email,\n dashboardUrl: userData.data.dashboardUrl,\n auth: {\n accessToken: auth.accessToken,\n apiUrl: auth.apiUrl,\n },\n };\n }\n\n const authConfig = readAuthConfigProfile(options?.profile);\n\n if (authConfig && authConfig.accessToken) {\n const whoAmIResult = await whoAmI(\n {\n profile: options?.profile ?? \"default\",\n skipTelemetry: !span.isRecording(),\n logLevel: logger.loggerLevel,\n },\n true\n );\n\n if (!whoAmIResult.success) {\n prettyError(\"Unable to validate existing personal access token\", whoAmIResult.error);\n\n if (!opts.embedded) {\n outro(\n `Login failed using stored token. To fix, first logout using \\`trigger.dev logout${\n options?.profile ? ` --profile ${options.profile}` : \"\"\n }\\` and then try again.`\n );\n\n throw new SkipLoggingError(whoAmIResult.error);\n } else {\n throw new Error(whoAmIResult.error);\n }\n } else {\n if (!opts.embedded) {\n const continueOption = await select({\n message: \"You are already logged in.\",\n options: [\n {\n value: false,\n label: \"Exit\",\n },\n {\n value: true,\n label: \"Login with a different account\",\n },\n ],\n initialValue: false,\n });\n\n if (continueOption !== true) {\n outro(\"Already logged in\");\n\n span.setAttributes({\n \"cli.userId\": whoAmIResult.data.userId,\n \"cli.email\": whoAmIResult.data.email,\n \"cli.config.apiUrl\": authConfig.apiUrl ?? opts.defaultApiUrl,\n });\n\n span.end();\n\n return {\n ok: true as const,\n profile: options?.profile ?? \"default\",\n userId: whoAmIResult.data.userId,\n email: whoAmIResult.data.email,\n dashboardUrl: whoAmIResult.data.dashboardUrl,\n auth: {\n accessToken: authConfig.accessToken,\n apiUrl: authConfig.apiUrl ?? opts.defaultApiUrl,\n },\n };\n }\n } else {\n span.setAttributes({\n \"cli.userId\": whoAmIResult.data.userId,\n \"cli.email\": whoAmIResult.data.email,\n \"cli.config.apiUrl\": authConfig.apiUrl ?? opts.defaultApiUrl,\n });\n\n span.end();\n\n return {\n ok: true as const,\n profile: options?.profile ?? \"default\",\n userId: whoAmIResult.data.userId,\n email: whoAmIResult.data.email,\n dashboardUrl: whoAmIResult.data.dashboardUrl,\n auth: {\n accessToken: authConfig.accessToken,\n apiUrl: authConfig.apiUrl ?? opts.defaultApiUrl,\n },\n };\n }\n }\n }\n\n if (opts.embedded) {\n log.step(\"You must login to continue.\");\n }\n\n const apiClient = new CliApiClient(authConfig?.apiUrl ?? opts.defaultApiUrl);\n\n //generate authorization code\n const authorizationCodeResult = await createAuthorizationCode(apiClient);\n\n //Link the user to the authorization code\n log.step(\n `Please visit the following URL to login:\\n${chalkLink(authorizationCodeResult.url)}`\n );\n\n try {\n //this can throw an error on Ubuntu\n await open(authorizationCodeResult.url);\n } catch (e) {}\n\n //poll for personal access token (we need to poll for it)\n const getPersonalAccessTokenSpinner = spinner();\n getPersonalAccessTokenSpinner.start(\"Waiting for you to login\");\n try {\n const indexResult = await pRetry(\n () => getPersonalAccessToken(apiClient, authorizationCodeResult.authorizationCode),\n {\n //this means we're polling, same distance between each attempt\n factor: 1,\n retries: 60,\n minTimeout: 1000,\n }\n );\n\n getPersonalAccessTokenSpinner.stop(`Logged in with token ${indexResult.obfuscatedToken}`);\n\n writeAuthConfigProfile(\n { accessToken: indexResult.token, apiUrl: opts.defaultApiUrl },\n options?.profile\n );\n\n const whoAmIResult = await whoAmI(\n {\n profile: options?.profile ?? \"default\",\n skipTelemetry: !span.isRecording(),\n logLevel: logger.loggerLevel,\n },\n opts.embedded\n );\n\n if (!whoAmIResult.success) {\n throw new Error(whoAmIResult.error);\n }\n\n if (opts.embedded) {\n log.step(\"Logged in successfully\");\n } else {\n outro(\"Logged in successfully\");\n }\n\n span.end();\n\n return {\n ok: true as const,\n profile: options?.profile ?? \"default\",\n userId: whoAmIResult.data.userId,\n email: whoAmIResult.data.email,\n dashboardUrl: whoAmIResult.data.dashboardUrl,\n auth: {\n accessToken: indexResult.token,\n apiUrl: authConfig?.apiUrl ?? opts.defaultApiUrl,\n },\n };\n } catch (e) {\n getPersonalAccessTokenSpinner.stop(`Failed to get access token`);\n\n if (e instanceof AbortError) {\n log.error(e.message);\n }\n\n recordSpanException(span, e);\n span.end();\n\n return {\n ok: false as const,\n error: e instanceof Error ? e.message : String(e),\n };\n }\n } catch (e) {\n recordSpanException(span, e);\n span.end();\n\n if (options?.embedded) {\n return {\n ok: false as const,\n error: e instanceof Error ? e.message : String(e),\n };\n }\n\n throw e;\n }\n });\n}\n\nasync function getPersonalAccessToken(apiClient: CliApiClient, authorizationCode: string) {\n return await tracer.startActiveSpan(\"getPersonalAccessToken\", async (span) => {\n try {\n const token = await apiClient.getPersonalAccessToken(authorizationCode);\n\n if (!token.success) {\n throw new AbortError(token.error);\n }\n\n if (!token.data.token) {\n throw new Error(\"No token found yet\");\n }\n\n span.end();\n\n return {\n token: token.data.token.token,\n obfuscatedToken: token.data.token.obfuscatedToken,\n };\n } catch (e) {\n if (e instanceof AbortError) {\n recordSpanException(span, e);\n }\n\n span.end();\n\n throw e;\n }\n });\n}\n\nasync function createAuthorizationCode(apiClient: CliApiClient) {\n return await tracer.startActiveSpan(\"createAuthorizationCode\", async (span) => {\n try {\n //generate authorization code\n const createAuthCodeSpinner = spinner();\n createAuthCodeSpinner.start(\"Creating authorization code\");\n const authorizationCodeResult = await apiClient.createAuthorizationCode();\n\n if (!authorizationCodeResult.success) {\n createAuthCodeSpinner.stop(\n `Failed to create authorization code\\n${authorizationCodeResult.error}`\n );\n\n throw new SkipLoggingError(\n `Failed to create authorization code\\n${authorizationCodeResult.error}`\n );\n }\n\n createAuthCodeSpinner.stop(\"Created authorization code\");\n\n span.end();\n\n return authorizationCodeResult.data;\n } catch (e) {\n recordSpanException(span, e);\n\n span.end();\n\n throw e;\n }\n });\n}\n","import process from 'node:process';\nimport {Buffer} from 'node:buffer';\nimport path from 'node:path';\nimport {fileURLToPath} from 'node:url';\nimport childProcess from 'node:child_process';\nimport fs, {constants as fsConstants} from 'node:fs/promises';\nimport isWsl from 'is-wsl';\nimport defineLazyProperty from 'define-lazy-prop';\nimport defaultBrowser from 'default-browser';\nimport isInsideContainer from 'is-inside-container';\n\n// Path to included `xdg-open`.\nconst __dirname = path.dirname(fileURLToPath(import.meta.url));\nconst localXdgOpenPath = path.join(__dirname, 'xdg-open');\n\nconst {platform, arch} = process;\n\n/**\nGet the mount point for fixed drives in WSL.\n\n@inner\n@returns {string} The mount point.\n*/\nconst getWslDrivesMountPoint = (() => {\n\t// Default value for \"root\" param\n\t// according to https://docs.microsoft.com/en-us/windows/wsl/wsl-config\n\tconst defaultMountPoint = '/mnt/';\n\n\tlet mountPoint;\n\n\treturn async function () {\n\t\tif (mountPoint) {\n\t\t\t// Return memoized mount point value\n\t\t\treturn mountPoint;\n\t\t}\n\n\t\tconst configFilePath = '/etc/wsl.conf';\n\n\t\tlet isConfigFileExists = false;\n\t\ttry {\n\t\t\tawait fs.access(configFilePath, fsConstants.F_OK);\n\t\t\tisConfigFileExists = true;\n\t\t} catch {}\n\n\t\tif (!isConfigFileExists) {\n\t\t\treturn defaultMountPoint;\n\t\t}\n\n\t\tconst configContent = await fs.readFile(configFilePath, {encoding: 'utf8'});\n\t\tconst configMountPoint = /(?<!#.*)root\\s*=\\s*(?<mountPoint>.*)/g.exec(configContent);\n\n\t\tif (!configMountPoint) {\n\t\t\treturn defaultMountPoint;\n\t\t}\n\n\t\tmountPoint = configMountPoint.groups.mountPoint.trim();\n\t\tmountPoint = mountPoint.endsWith('/') ? mountPoint : `${mountPoint}/`;\n\n\t\treturn mountPoint;\n\t};\n})();\n\nconst pTryEach = async (array, mapper) => {\n\tlet latestError;\n\n\tfor (const item of array) {\n\t\ttry {\n\t\t\treturn await mapper(item); // eslint-disable-line no-await-in-loop\n\t\t} catch (error) {\n\t\t\tlatestError = error;\n\t\t}\n\t}\n\n\tthrow latestError;\n};\n\nconst baseOpen = async options => {\n\toptions = {\n\t\twait: false,\n\t\tbackground: false,\n\t\tnewInstance: false,\n\t\tallowNonzeroExitCode: false,\n\t\t...options,\n\t};\n\n\tif (Array.isArray(options.app)) {\n\t\treturn pTryEach(options.app, singleApp => baseOpen({\n\t\t\t...options,\n\t\t\tapp: singleApp,\n\t\t}));\n\t}\n\n\tlet {name: app, arguments: appArguments = []} = options.app ?? {};\n\tappArguments = [...appArguments];\n\n\tif (Array.isArray(app)) {\n\t\treturn pTryEach(app, appName => baseOpen({\n\t\t\t...options,\n\t\t\tapp: {\n\t\t\t\tname: appName,\n\t\t\t\targuments: appArguments,\n\t\t\t},\n\t\t}));\n\t}\n\n\tif (app === 'browser' || app === 'browserPrivate') {\n\t\t// IDs from default-browser for macOS and windows are the same\n\t\tconst ids = {\n\t\t\t'com.google.chrome': 'chrome',\n\t\t\t'google-chrome.desktop': 'chrome',\n\t\t\t'org.mozilla.firefox': 'firefox',\n\t\t\t'firefox.desktop': 'firefox',\n\t\t\t'com.microsoft.msedge': 'edge',\n\t\t\t'com.microsoft.edge': 'edge',\n\t\t\t'microsoft-edge.desktop': 'edge',\n\t\t};\n\n\t\t// Incognito flags for each browser in `apps`.\n\t\tconst flags = {\n\t\t\tchrome: '--incognito',\n\t\t\tfirefox: '--private-window',\n\t\t\tedge: '--inPrivate',\n\t\t};\n\n\t\tconst browser = await defaultBrowser();\n\t\tif (browser.id in ids) {\n\t\t\tconst browserName = ids[browser.id];\n\n\t\t\tif (app === 'browserPrivate') {\n\t\t\t\tappArguments.push(flags[browserName]);\n\t\t\t}\n\n\t\t\treturn baseOpen({\n\t\t\t\t...options,\n\t\t\t\tapp: {\n\t\t\t\t\tname: apps[browserName],\n\t\t\t\t\targuments: appArguments,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tthrow new Error(`${browser.name} is not supported as a default browser`);\n\t}\n\n\tlet command;\n\tconst cliArguments = [];\n\tconst childProcessOptions = {};\n\n\tif (platform === 'darwin') {\n\t\tcommand = 'open';\n\n\t\tif (options.wait) {\n\t\t\tcliArguments.push('--wait-apps');\n\t\t}\n\n\t\tif (options.background) {\n\t\t\tcliArguments.push('--background');\n\t\t}\n\n\t\tif (options.newInstance) {\n\t\t\tcliArguments.push('--new');\n\t\t}\n\n\t\tif (app) {\n\t\t\tcliArguments.push('-a', app);\n\t\t}\n\t} else if (platform === 'win32' || (isWsl && !isInsideContainer() && !app)) {\n\t\tconst mountPoint = await getWslDrivesMountPoint();\n\n\t\tcommand = isWsl\n\t\t\t? `${mountPoint}c/Windows/System32/WindowsPowerShell/v1.0/powershell.exe`\n\t\t\t: `${process.env.SYSTEMROOT || process.env.windir || 'C:\\\\Windows'}\\\\System32\\\\WindowsPowerShell\\\\v1.0\\\\powershell`;\n\n\t\tcliArguments.push(\n\t\t\t'-NoProfile',\n\t\t\t'-NonInteractive',\n\t\t\t'-ExecutionPolicy',\n\t\t\t'Bypass',\n\t\t\t'-EncodedCommand',\n\t\t);\n\n\t\tif (!isWsl) {\n\t\t\tchildProcessOptions.windowsVerbatimArguments = true;\n\t\t}\n\n\t\tconst encodedArguments = ['Start'];\n\n\t\tif (options.wait) {\n\t\t\tencodedArguments.push('-Wait');\n\t\t}\n\n\t\tif (app) {\n\t\t\t// Double quote with double quotes to ensure the inner quotes are passed through.\n\t\t\t// Inner quotes are delimited for PowerShell interpretation with backticks.\n\t\t\tencodedArguments.push(`\"\\`\"${app}\\`\"\"`);\n\t\t\tif (options.target) {\n\t\t\t\tappArguments.push(options.target);\n\t\t\t}\n\t\t} else if (options.target) {\n\t\t\tencodedArguments.push(`\"${options.target}\"`);\n\t\t}\n\n\t\tif (appArguments.length > 0) {\n\t\t\tappArguments = appArguments.map(argument => `\"\\`\"${argument}\\`\"\"`);\n\t\t\tencodedArguments.push('-ArgumentList', appArguments.join(','));\n\t\t}\n\n\t\t// Using Base64-encoded command, accepted by PowerShell, to allow special characters.\n\t\toptions.target = Buffer.from(encodedArguments.join(' '), 'utf16le').toString('base64');\n\t} else {\n\t\tif (app) {\n\t\t\tcommand = app;\n\t\t} else {\n\t\t\t// When bundled by Webpack, there's no actual package file path and no local `xdg-open`.\n\t\t\tconst isBundled = !__dirname || __dirname === '/';\n\n\t\t\t// Check if local `xdg-open` exists and is executable.\n\t\t\tlet exeLocalXdgOpen = false;\n\t\t\ttry {\n\t\t\t\tawait fs.access(localXdgOpenPath, fsConstants.X_OK);\n\t\t\t\texeLocalXdgOpen = true;\n\t\t\t} catch {}\n\n\t\t\tconst useSystemXdgOpen = process.versions.electron\n\t\t\t\t?? (platform === 'android' || isBundled || !exeLocalXdgOpen);\n\t\t\tcommand = useSystemXdgOpen ? 'xdg-open' : localXdgOpenPath;\n\t\t}\n\n\t\tif (appArguments.length > 0) {\n\t\t\tcliArguments.push(...appArguments);\n\t\t}\n\n\t\tif (!options.wait) {\n\t\t\t// `xdg-open` will block the process unless stdio is ignored\n\t\t\t// and it's detached from the parent even if it's unref'd.\n\t\t\tchildProcessOptions.stdio = 'ignore';\n\t\t\tchildProcessOptions.detached = true;\n\t\t}\n\t}\n\n\tif (platform === 'darwin' && appArguments.length > 0) {\n\t\tcliArguments.push('--args', ...appArguments);\n\t}\n\n\t// This has to come after `--args`.\n\tif (options.target) {\n\t\tcliArguments.push(options.target);\n\t}\n\n\tconst subprocess = childProcess.spawn(command, cliArguments, childProcessOptions);\n\n\tif (options.wait) {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tsubprocess.once('error', reject);\n\n\t\t\tsubprocess.once('close', exitCode => {\n\t\t\t\tif (!options.allowNonzeroExitCode && exitCode > 0) {\n\t\t\t\t\treject(new Error(`Exited with code ${exitCode}`));\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tresolve(subprocess);\n\t\t\t});\n\t\t});\n\t}\n\n\tsubprocess.unref();\n\n\treturn subprocess;\n};\n\nconst open = (target, options) => {\n\tif (typeof target !== 'string') {\n\t\tthrow new TypeError('Expected a `target`');\n\t}\n\n\treturn baseOpen({\n\t\t...options,\n\t\ttarget,\n\t});\n};\n\nexport const openApp = (name, options) => {\n\tif (typeof name !== 'string') {\n\t\tthrow new TypeError('Expected a `name`');\n\t}\n\n\tconst {arguments: appArguments = []} = options ?? {};\n\tif (appArguments !== undefined && appArguments !== null && !Array.isArray(appArguments)) {\n\t\tthrow new TypeError('Expected `appArguments` as Array type');\n\t}\n\n\treturn baseOpen({\n\t\t...options,\n\t\tapp: {\n\t\t\tname,\n\t\t\targuments: appArguments,\n\t\t},\n\t});\n};\n\nfunction detectArchBinary(binary) {\n\tif (typeof binary === 'string' || Array.isArray(binary)) {\n\t\treturn binary;\n\t}\n\n\tconst {[arch]: archBinary} = binary;\n\n\tif (!archBinary) {\n\t\tthrow new Error(`${arch} is not supported`);\n\t}\n\n\treturn archBinary;\n}\n\nfunction detectPlatformBinary({[platform]: platformBinary}, {wsl}) {\n\tif (wsl && isWsl) {\n\t\treturn detectArchBinary(wsl);\n\t}\n\n\tif (!platformBinary) {\n\t\tthrow new Error(`${platform} is not supported`);\n\t}\n\n\treturn detectArchBinary(platformBinary);\n}\n\nexport const apps = {};\n\ndefineLazyProperty(apps, 'chrome', () => detectPlatformBinary({\n\tdarwin: 'google chrome',\n\twin32: 'chrome',\n\tlinux: ['google-chrome', 'google-chrome-stable', 'chromium'],\n}, {\n\twsl: {\n\t\tia32: '/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe',\n\t\tx64: ['/mnt/c/Program Files/Google/Chrome/Application/chrome.exe', '/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe'],\n\t},\n}));\n\ndefineLazyProperty(apps, 'firefox', () => detectPlatformBinary({\n\tdarwin: 'firefox',\n\twin32: 'C:\\\\Program Files\\\\Mozilla Firefox\\\\firefox.exe',\n\tlinux: 'firefox',\n}, {\n\twsl: '/mnt/c/Program Files/Mozilla Firefox/firefox.exe',\n}));\n\ndefineLazyProperty(apps, 'edge', () => detectPlatformBinary({\n\tdarwin: 'microsoft edge',\n\twin32: 'msedge',\n\tlinux: ['microsoft-edge', 'microsoft-edge-dev'],\n}, {\n\twsl: '/mnt/c/Program Files (x86)/Microsoft/Edge/Application/msedge.exe',\n}));\n\ndefineLazyProperty(apps, 'browser', () => 'browser');\n\ndefineLazyProperty(apps, 'browserPrivate', () => 'browserPrivate');\n\nexport default open;\n","import process from 'node:process';\nimport os from 'node:os';\nimport fs from 'node:fs';\nimport isInsideContainer from 'is-inside-container';\n\nconst isWsl = () => {\n\tif (process.platform !== 'linux') {\n\t\treturn false;\n\t}\n\n\tif (os.release().toLowerCase().includes('microsoft')) {\n\t\tif (isInsideContainer()) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t}\n\n\ttry {\n\t\treturn fs.readFileSync('/proc/version', 'utf8').toLowerCase().includes('microsoft')\n\t\t\t? !isInsideContainer() : false;\n\t} catch {\n\t\treturn false;\n\t}\n};\n\nexport default process.env.__IS_WSL_TEST__ ? isWsl : isWsl();\n","import fs from 'node:fs';\nimport isDocker from 'is-docker';\n\nlet cachedResult;\n\n// Podman detection\nconst hasContainerEnv = () => {\n\ttry {\n\t\tfs.statSync('/run/.containerenv');\n\t\treturn true;\n\t} catch {\n\t\treturn false;\n\t}\n};\n\nexport default function isInsideContainer() {\n\t// TODO: Use `??=` when targeting Node.js 16.\n\tif (cachedResult === undefined) {\n\t\tcachedResult = hasContainerEnv() || isDocker();\n\t}\n\n\treturn cachedResult;\n}\n","import fs from 'node:fs';\n\nlet isDockerCached;\n\nfunction hasDockerEnv() {\n\ttry {\n\t\tfs.statSync('/.dockerenv');\n\t\treturn true;\n\t} catch {\n\t\treturn false;\n\t}\n}\n\nfunction hasDockerCGroup() {\n\ttry {\n\t\treturn fs.readFileSync('/proc/self/cgroup', 'utf8').includes('docker');\n\t} catch {\n\t\treturn false;\n\t}\n}\n\nexport default function isDocker() {\n\t// TODO: Use `??=` when targeting Node.js 16.\n\tif (isDockerCached === undefined) {\n\t\tisDockerCached = hasDockerEnv() || hasDockerCGroup();\n\t}\n\n\treturn isDockerCached;\n}\n","export default function defineLazyProperty(object, propertyName, valueGetter) {\n\tconst define = value => Object.defineProperty(object, propertyName, {value, enumerable: true, writable: true});\n\n\tObject.defineProperty(object, propertyName, {\n\t\tconfigurable: true,\n\t\tenumerable: true,\n\t\tget() {\n\t\t\tconst result = valueGetter();\n\t\t\tdefine(result);\n\t\t\treturn result;\n\t\t},\n\t\tset(value) {\n\t\t\tdefine(value);\n\t\t}\n\t});\n\n\treturn object;\n}\n","import {promisify} from 'node:util';\nimport process from 'node:process';\nimport {execFile} from 'node:child_process';\nimport defaultBrowserId from 'default-browser-id';\nimport bundleName from 'bundle-name';\nimport windows from './windows.js';\n\nconst execFileAsync = promisify(execFile);\n\n// Inlined: https://github.com/sindresorhus/titleize/blob/main/index.js\nconst titleize = string => string.toLowerCase().replaceAll(/(?:^|\\s|-)\\S/g, x => x.toUpperCase());\n\nexport default async function defaultBrowser() {\n\tif (process.platform === 'darwin') {\n\t\tconst id = await defaultBrowserId();\n\t\tconst name = await bundleName(id);\n\t\treturn {name, id};\n\t}\n\n\tif (process.platform === 'linux') {\n\t\tconst {stdout} = await execFileAsync('xdg-mime', ['query', 'default', 'x-scheme-handler/http']);\n\t\tconst id = stdout.trim();\n\t\tconst name = titleize(id.replace(/.desktop$/, '').replace('-', ' '));\n\t\treturn {name, id};\n\t}\n\n\tif (process.platform === 'win32') {\n\t\treturn windows();\n\t}\n\n\tthrow new Error('Only macOS, Linux, and Windows are supported');\n}\n","import {promisify} from 'node:util';\nimport process from 'node:process';\nimport {execFile} from 'node:child_process';\n\nconst execFileAsync = promisify(execFile);\n\nexport default async function defaultBrowserId() {\n\tif (process.platform !== 'darwin') {\n\t\tthrow new Error('macOS only');\n\t}\n\n\tconst {stdout} = await execFileAsync('defaults', ['read', 'com.apple.LaunchServices/com.apple.launchservices.secure', 'LSHandlers']);\n\n\t// `(?!-)` is to prevent matching `LSHandlerRoleAll = \"-\";`.\n\tconst match = /LSHandlerRoleAll = \"(?!-)(?<id>[^\"]+?)\";\\s+?LSHandlerURLScheme = (?:http|https);/.exec(stdout);\n\n\treturn match?.groups.id ?? 'com.apple.Safari';\n}\n","import process from 'node:process';\nimport {promisify} from 'node:util';\nimport {execFile, execFileSync} from 'node:child_process';\n\nconst execFileAsync = promisify(execFile);\n\nexport async function runAppleScript(script, {humanReadableOutput = true} = {}) {\n\tif (process.platform !== 'darwin') {\n\t\tthrow new Error('macOS only');\n\t}\n\n\tconst outputArguments = humanReadableOutput ? [] : ['-ss'];\n\n\tconst {stdout} = await execFileAsync('osascript', ['-e', script, outputArguments]);\n\treturn stdout.trim();\n}\n\nexport function runAppleScriptSync(script, {humanReadableOutput = true} = {}) {\n\tif (process.platform !== 'darwin') {\n\t\tthrow new Error('macOS only');\n\t}\n\n\tconst outputArguments = humanReadableOutput ? [] : ['-ss'];\n\n\tconst stdout = execFileSync('osascript', ['-e', script, ...outputArguments], {\n\t\tencoding: 'utf8',\n\t\tstdio: ['ignore', 'pipe', 'ignore'],\n\t\ttimeout: 500,\n\t});\n\n\treturn stdout.trim();\n}\n","import {runAppleScript} from 'run-applescript';\n\nexport default async function bundleName(bundleId) {\n\treturn runAppleScript(`tell application \"Finder\" to set app_path to application file id \"${bundleId}\" as string\\ntell application \"System Events\" to get value of property list item \"CFBundleName\" of property list file (app_path & \":Contents:Info.plist\")`);\n}\n","import {promisify} from 'node:util';\nimport {execFile} from 'node:child_process';\n\nconst execFileAsync = promisify(execFile);\n\n// Windows doesn't have browser IDs in the same way macOS/Linux does so we give fake\n// ones that look real and match the macOS/Linux versions for cross-platform apps.\nconst windowsBrowserProgIds = {\n\tAppXq0fevzme2pys62n3e0fbqa7peapykr8v: {name: 'Edge', id: 'com.microsoft.edge.old'},\n\tMSEdgeDHTML: {name: 'Edge', id: 'com.microsoft.edge'}, // On macOS, it's \"com.microsoft.edgemac\"\n\tMSEdgeHTM: {name: 'Edge', id: 'com.microsoft.edge'}, // Newer Edge/Win10 releases\n\t'IE.HTTP': {name: 'Internet Explorer', id: 'com.microsoft.ie'},\n\tFirefoxURL: {name: 'Firefox', id: 'org.mozilla.firefox'},\n\tChromeHTML: {name: 'Chrome', id: 'com.google.chrome'},\n\tBraveHTML: {name: 'Brave', id: 'com.brave.Browser'},\n\tBraveBHTML: {name: 'Brave Beta', id: 'com.brave.Browser.beta'},\n\tBraveSSHTM: {name: 'Brave Nightly', id: 'com.brave.Browser.nightly'},\n};\n\nexport class UnknownBrowserError extends Error {}\n\nexport default async function defaultBrowser(_execFileAsync = execFileAsync) {\n\tconst {stdout} = await _execFileAsync('reg', [\n\t\t'QUERY',\n\t\t' HKEY_CURRENT_USER\\\\Software\\\\Microsoft\\\\Windows\\\\Shell\\\\Associations\\\\UrlAssociations\\\\http\\\\UserChoice',\n\t\t'/v',\n\t\t'ProgId',\n\t]);\n\n\tconst match = /ProgId\\s*REG_SZ\\s*(?<id>\\S+)/.exec(stdout);\n\tif (!match) {\n\t\tthrow new UnknownBrowserError(`Cannot find Windows browser in stdout: ${JSON.stringify(stdout)}`);\n\t}\n\n\tconst {id} = match.groups;\n\n\tconst browser = windowsBrowserProgIds[id];\n\tif (!browser) {\n\t\tthrow new UnknownBrowserError(`Unknown browser ID: ${id}`);\n\t}\n\n\treturn browser;\n}\n","import retry from 'retry';\nimport isNetworkError from 'is-network-error';\n\nexport class AbortError extends Error {\n\tconstructor(message) {\n\t\tsuper();\n\n\t\tif (message instanceof Error) {\n\t\t\tthis.originalError = message;\n\t\t\t({message} = message);\n\t\t} else {\n\t\t\tthis.originalError = new Error(message);\n\t\t\tthis.originalError.stack = this.stack;\n\t\t}\n\n\t\tthis.name = 'AbortError';\n\t\tthis.message = message;\n\t}\n}\n\nconst decorateErrorWithCounts = (error, attemptNumber, options) => {\n\t// Minus 1 from attemptNumber because the first attempt does not count as a retry\n\tconst retriesLeft = options.retries - (attemptNumber - 1);\n\n\terror.attemptNumber = attemptNumber;\n\terror.retriesLeft = retriesLeft;\n\treturn error;\n};\n\nexport default async function pRetry(input, options) {\n\treturn new Promise((resolve, reject) => {\n\t\toptions = {\n\t\t\tonFailedAttempt() {},\n\t\t\tretries: 10,\n\t\t\t...options,\n\t\t};\n\n\t\tconst operation = retry.operation(options);\n\n\t\tconst abortHandler = () => {\n\t\t\toperation.stop();\n\t\t\treject(options.signal?.reason);\n\t\t};\n\n\t\tif (options.signal && !options.signal.aborted) {\n\t\t\toptions.signal.addEventListener('abort', abortHandler, {once: true});\n\t\t}\n\n\t\tconst cleanUp = () => {\n\t\t\toptions.signal?.removeEventListener('abort', abortHandler);\n\t\t\toperation.stop();\n\t\t};\n\n\t\toperation.attempt(async attemptNumber => {\n\t\t\ttry {\n\t\t\t\tconst result = await input(attemptNumber);\n\t\t\t\tcleanUp();\n\t\t\t\tresolve(result);\n\t\t\t} catch (error) {\n\t\t\t\ttry {\n\t\t\t\t\tif (!(error instanceof Error)) {\n\t\t\t\t\t\tthrow new TypeError(`Non-error was thrown: \"${error}\". You should only throw errors.`);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (error instanceof AbortError) {\n\t\t\t\t\t\tthrow error.originalError;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (error instanceof TypeError && !isNetworkError(error)) {\n\t\t\t\t\t\tthrow error;\n\t\t\t\t\t}\n\n\t\t\t\t\tawait options.onFailedAttempt(decorateErrorWithCounts(error, attemptNumber, options));\n\n\t\t\t\t\tif (!operation.retry(error)) {\n\t\t\t\t\t\tthrow operation.mainError();\n\t\t\t\t\t}\n\t\t\t\t} catch (finalError) {\n\t\t\t\t\tdecorateErrorWithCounts(finalError, attemptNumber, options);\n\t\t\t\t\tcleanUp();\n\t\t\t\t\treject(finalError);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n}\n","const objectToString = Object.prototype.toString;\n\nconst isError = value => objectToString.call(value) === '[object Error]';\n\nconst errorMessages = new Set([\n\t'Failed to fetch', // Chrome\n\t'NetworkError when attempting to fetch resource.', // Firefox\n\t'The Internet connection appears to be offline.', // Safari 16\n\t'Load failed', // Safari 17+\n\t'Network request failed', // `cross-fetch`\n\t'fetch failed', // Undici (Node.js)\n]);\n\nexport default function isNetworkError(error) {\n\tconst isValid = error\n\t\t&& isError(error)\n\t\t&& error.name === 'TypeError'\n\t\t&& typeof error.message === 'string';\n\n\tif (!isValid) {\n\t\treturn false;\n\t}\n\n\t// We do an extra check for Safari 17+ as it has a very generic error message.\n\t// Network errors in Safari have no stack.\n\tif (error.message === 'Load failed') {\n\t\treturn error.stack === undefined;\n\t}\n\n\treturn errorMessages.has(error.message);\n}\n","import { intro, note, outro } from \"@clack/prompts\";\nimport { chalkLink } from \"../utilities/cliOutput.js\";\nimport { logger } from \"../utilities/logger.js\";\nimport { isLoggedIn } from \"../utilities/session.js\";\nimport { Command } from \"commander\";\nimport { printInitialBanner } from \"../utilities/initialBanner.js\";\nimport {\n CommonCommandOptions,\n commonOptions,\n handleTelemetry,\n wrapCommandAction,\n} from \"../cli/common.js\";\nimport { z } from \"zod\";\nimport { CliApiClient } from \"../apiClient.js\";\nimport { spinner } from \"../utilities/windows.js\";\n\ntype WhoAmIResult =\n | {\n success: true;\n data: {\n userId: string;\n email: string;\n dashboardUrl: string;\n };\n }\n | {\n success: false;\n error: string;\n };\n\nconst WhoamiCommandOptions = CommonCommandOptions;\n\ntype WhoamiCommandOptions = z.infer<typeof WhoamiCommandOptions>;\n\nexport function configureWhoamiCommand(program: Command) {\n return commonOptions(\n program.command(\"whoami\").description(\"display the current logged in user and project details\")\n ).action(async (options) => {\n await handleTelemetry(async () => {\n await printInitialBanner(false);\n await whoAmICommand(options);\n });\n });\n}\n\nexport async function whoAmICommand(options: unknown) {\n return await wrapCommandAction(\"whoamiCommand\", WhoamiCommandOptions, options, async (opts) => {\n return await whoAmI(opts);\n });\n}\n\nexport async function whoAmI(\n options?: WhoamiCommandOptions,\n embedded: boolean = false\n): Promise<WhoAmIResult> {\n if (!embedded) {\n intro(`Displaying your account details [${options?.profile ?? \"default\"}]`);\n }\n\n const loadingSpinner = spinner();\n loadingSpinner.start(\"Checking your account details\");\n\n const authentication = await isLoggedIn(options?.profile);\n\n if (!authentication.ok) {\n if (authentication.error === \"fetch failed\") {\n loadingSpinner.stop(\"Fetch failed. Platform down?\");\n } else {\n if (embedded) {\n loadingSpinner.stop(\n `Failed to check account details. You may want to run \\`trigger.dev logout --profile ${\n options?.profile ?? \"default\"\n }\\` and try again.`\n );\n } else {\n loadingSpinner.stop(\n `You must login first. Use \\`trigger.dev login --profile ${\n options?.profile ?? \"default\"\n }\\` to login.`\n );\n outro(`Whoami failed: ${authentication.error}`);\n }\n }\n\n return {\n success: false,\n error: authentication.error,\n };\n }\n\n const apiClient = new CliApiClient(authentication.auth.apiUrl, authentication.auth.accessToken);\n const userData = await apiClient.whoAmI();\n\n if (!userData.success) {\n loadingSpinner.stop(\"Error getting your account details\");\n logger.error(userData.error);\n return {\n success: false,\n error: userData.error,\n };\n }\n\n if (!embedded) {\n loadingSpinner.stop(\"Retrieved your account details\");\n note(\n `User ID: ${userData.data.userId}\nEmail: ${userData.data.email}\nURL: ${chalkLink(authentication.auth.apiUrl)}\n`,\n `Account details [${authentication.profile}]`\n );\n } else {\n loadingSpinner.stop(`Retrieved your account details for ${userData.data.email}`);\n }\n\n return userData;\n}\n","import { recordSpanException } from \"@trigger.dev/core/v3/workers\";\nimport { CliApiClient } from \"../apiClient.js\";\nimport { readAuthConfigProfile } from \"./configFiles.js\";\nimport { getTracer } from \"../telemetry/tracing.js\";\n\nconst tracer = getTracer();\n\nexport type LoginResult =\n | {\n ok: true;\n profile: string;\n userId: string;\n email: string;\n dashboardUrl: string;\n auth: {\n apiUrl: string;\n accessToken: string;\n };\n }\n | {\n ok: false;\n error: string;\n auth?: {\n apiUrl: string;\n accessToken: string;\n };\n };\n\nexport async function isLoggedIn(profile: string = \"default\"): Promise<LoginResult> {\n return await tracer.startActiveSpan(\"isLoggedIn\", async (span) => {\n try {\n const config = readAuthConfigProfile(profile);\n\n if (!config?.accessToken || !config?.apiUrl) {\n span.recordException(new Error(\"You must login first\"));\n span.end();\n return { ok: false as const, error: \"You must login first\" };\n }\n\n const apiClient = new CliApiClient(config.apiUrl, config.accessToken);\n const userData = await apiClient.whoAmI();\n\n if (!userData.success) {\n recordSpanException(span, userData.error);\n span.end();\n\n return {\n ok: false as const,\n error: userData.error,\n auth: {\n apiUrl: config.apiUrl,\n accessToken: config.accessToken,\n },\n };\n }\n\n span.setAttributes({\n \"login.userId\": userData.data.userId,\n \"login.email\": userData.data.email,\n \"login.dashboardUrl\": userData.data.dashboardUrl,\n \"login.profile\": profile,\n });\n\n span.end();\n\n return {\n ok: true as const,\n profile,\n userId: userData.data.userId,\n email: userData.data.email,\n dashboardUrl: userData.data.dashboardUrl,\n auth: {\n apiUrl: config.apiUrl,\n accessToken: config.accessToken,\n },\n };\n } catch (e) {\n recordSpanException(span, e);\n span.end();\n\n return {\n ok: false as const,\n error: e instanceof Error ? e.message : \"Unknown error\",\n };\n }\n });\n}\n","import type * as esbuild from \"esbuild\";\nimport type { Plugin } from \"esbuild\";\nimport { readFileSync } from \"node:fs\";\nimport { extname, isAbsolute } from \"node:path\";\nimport tsConfigPaths from \"tsconfig-paths\";\nimport { logger } from \"./logger\";\nimport { escapeImportPath } from \"./windows\";\nimport { DependencyMeta } from \"./javascriptProject\";\n\nexport function mockServerOnlyPlugin(): Plugin {\n return {\n name: \"trigger-mock-server-only\",\n setup(build) {\n build.onResolve({ filter: /server-only/ }, (args) => {\n if (args.path !== \"server-only\") {\n return undefined;\n }\n\n logger.debug(`[trigger-mock-server-only] Bundling ${args.path}`, {\n ...args,\n });\n\n return {\n path: args.path,\n external: false,\n namespace: \"server-only-mock\",\n };\n });\n\n build.onLoad({ filter: /server-only/, namespace: \"server-only-mock\" }, (args) => {\n return {\n contents: `export default true;`,\n loader: \"js\",\n };\n });\n },\n };\n}\n\nexport function bundleTriggerDevCore(buildIdentifier: string, tsconfigPath?: string): Plugin {\n return {\n name: \"trigger-bundle-core\",\n setup(build) {\n build.onResolve({ filter: /.*/ }, (args) => {\n if (!args.path.startsWith(\"@trigger.dev/core/v3\")) {\n return undefined;\n }\n\n const triggerSdkPath = require.resolve(\"@trigger.dev/sdk/v3\", { paths: [process.cwd()] });\n\n logger.debug(`[${buildIdentifier}][trigger-bundle-core] Resolved @trigger.dev/sdk/v3`, {\n ...args,\n triggerSdkPath,\n });\n\n const resolvedPath = require.resolve(args.path, {\n paths: [triggerSdkPath],\n });\n\n logger.debug(`[${buildIdentifier}][trigger-bundle-core] Externalizing ${args.path}`, {\n ...args,\n triggerSdkPath,\n resolvedPath,\n });\n\n return {\n path: resolvedPath,\n external: false,\n };\n });\n },\n };\n}\n\nexport function workerSetupImportConfigPlugin(configPath?: string): Plugin {\n return {\n name: \"trigger-worker-setup\",\n setup(build) {\n if (!configPath) {\n return;\n }\n\n build.onLoad({ filter: /worker-setup\\.js$/ }, async (args) => {\n let workerSetupContents = readFileSync(args.path, \"utf-8\");\n\n workerSetupContents = workerSetupContents.replace(\n \"__SETUP_IMPORTED_PROJECT_CONFIG__\",\n `import * as setupImportedConfigExports from \"${escapeImportPath(\n configPath\n )}\"; const setupImportedConfig = setupImportedConfigExports.config;`\n );\n\n logger.debug(\"Loading worker setup\", {\n args,\n workerSetupContents,\n configPath,\n });\n\n return {\n contents: workerSetupContents,\n loader: \"js\",\n };\n });\n },\n };\n}\n\nexport function bundleDependenciesPlugin(\n buildIdentifier: string,\n dependencies: Record<string, DependencyMeta>,\n dependenciesToBundle?: Array<string | RegExp>,\n tsconfigPath?: string\n): Plugin {\n const matchPath = tsconfigPath ? createMatchPath(tsconfigPath) : undefined;\n\n function resolvePath(id: string) {\n if (!matchPath) {\n return id;\n }\n return matchPath(id, undefined, undefined, [\".ts\", \".tsx\", \".js\", \".jsx\"]) || id;\n }\n\n return {\n name: \"trigger-bundle-dependencies\",\n setup(build) {\n build.onResolve({ filter: /.*/ }, (args) => {\n const resolvedPath = resolvePath(args.path);\n\n if (!isBareModuleId(resolvedPath)) {\n return undefined; // let esbuild handle it\n }\n\n // Skip assets that are treated as files (.css, .svg, .png, etc.).\n // Otherwise, esbuild would emit code that would attempt to require()\n // or import these files --- which aren't JavaScript!\n let loader;\n try {\n loader = getLoaderForFile(args.path);\n } catch (e) {\n if (!(e instanceof Error && e.message.startsWith(\"Cannot get loader for file\"))) {\n throw e;\n }\n }\n if (loader === \"file\") {\n return undefined;\n }\n\n for (let pattern of dependenciesToBundle ?? []) {\n if (typeof pattern === \"string\" ? args.path === pattern : pattern.test(args.path)) {\n return undefined; // let esbuild bundle it\n }\n }\n\n if (dependencies[args.path] && !dependencies[args.path]!.external) {\n return undefined; // let esbuild bundle it\n }\n\n logger.debug(`[${buildIdentifier}] Externalizing ${args.path}`, {\n ...args,\n });\n\n // Everything else should be external\n return {\n path: args.path,\n external: true,\n };\n });\n },\n };\n}\n\nfunction isBareModuleId(id: string): boolean {\n return !id.startsWith(\"node:\") && !id.startsWith(\".\") && !isAbsolute(id);\n}\n\nexport function createMatchPath(tsconfigPath: string | undefined) {\n // There is no tsconfig to match paths against.\n if (!tsconfigPath) {\n return undefined;\n }\n\n // When passing a absolute path, loadConfig assumes that the path contains\n // a tsconfig file.\n // Ref.: https://github.com/dividab/tsconfig-paths/blob/v4.0.0/src/__tests__/config-loader.test.ts#L74\n let configLoaderResult = tsConfigPaths.loadConfig(tsconfigPath);\n\n if (configLoaderResult.resultType === \"failed\") {\n if (configLoaderResult.message === \"Missing baseUrl in compilerOptions\") {\n throw new Error(\n `🚨 Oops! No baseUrl found, please set compilerOptions.baseUrl in your tsconfig or jsconfig`\n );\n }\n return undefined;\n }\n\n return tsConfigPaths.createMatchPath(\n configLoaderResult.absoluteBaseUrl,\n configLoaderResult.paths,\n configLoaderResult.mainFields,\n configLoaderResult.addMatchAll\n );\n}\n\nconst loaders: { [ext: string]: esbuild.Loader } = {\n \".aac\": \"file\",\n \".avif\": \"file\",\n \".css\": \"file\",\n \".csv\": \"file\",\n \".eot\": \"file\",\n \".fbx\": \"file\",\n \".flac\": \"file\",\n \".gif\": \"file\",\n \".glb\": \"file\",\n \".gltf\": \"file\",\n \".gql\": \"text\",\n \".graphql\": \"text\",\n \".hdr\": \"file\",\n \".ico\": \"file\",\n \".jpeg\": \"file\",\n \".jpg\": \"file\",\n \".js\": \"jsx\",\n \".jsx\": \"jsx\",\n \".json\": \"json\",\n // We preprocess md and mdx files using @mdx-js/mdx and send through\n // the JSX for esbuild to handle\n \".md\": \"jsx\",\n \".mdx\": \"jsx\",\n \".mov\": \"file\",\n \".mp3\": \"file\",\n \".mp4\": \"file\",\n \".node\": \"copy\",\n \".ogg\": \"file\",\n \".otf\": \"file\",\n \".png\": \"file\",\n \".psd\": \"file\",\n \".sql\": \"text\",\n \".svg\": \"file\",\n \".ts\": \"ts\",\n \".tsx\": \"tsx\",\n \".ttf\": \"file\",\n \".wasm\": \"file\",\n \".wav\": \"file\",\n \".webm\": \"file\",\n \".webmanifest\": \"file\",\n \".webp\": \"file\",\n \".woff\": \"file\",\n \".woff2\": \"file\",\n \".zip\": \"file\",\n};\n\nexport function getLoaderForFile(file: string): esbuild.Loader {\n const ext = extname(file);\n const loader = loaders[ext];\n\n if (loader) return loader;\n\n throw new Error(`Cannot get loader for file ${file}`);\n}\n","import chalk from \"chalk\";\nimport { relative } from \"node:path\";\nimport { chalkError, chalkPurple, chalkGrey, chalkGreen, chalkWarning, cliLink } from \"./cliOutput\";\nimport { logger } from \"./logger\";\nimport { ReadConfigResult } from \"./configFiles\";\nimport { z } from \"zod\";\nimport { groupTaskMetadataIssuesByTask } from \"@trigger.dev/core/v3\";\nimport { docs } from \"./links\";\n\nexport type ESMRequireError = {\n type: \"esm-require-error\";\n moduleName: string;\n};\n\nexport type BuildError = ESMRequireError | string;\n\nfunction errorIsErrorLike(error: unknown): error is Error {\n return (\n error instanceof Error || (typeof error === \"object\" && error !== null && \"message\" in error)\n );\n}\n\nexport function parseBuildErrorStack(error: unknown): BuildError | undefined {\n if (typeof error === \"string\") {\n return error;\n }\n\n if (errorIsErrorLike(error)) {\n if (typeof error.stack === \"string\") {\n if (error.stack.includes(\"ERR_REQUIRE_ESM\")) {\n const moduleName = getPackageNameFromEsmRequireError(error.stack);\n\n if (moduleName) {\n return {\n type: \"esm-require-error\",\n moduleName,\n };\n }\n }\n } else {\n return error.message;\n }\n }\n}\n\nfunction getPackageNameFromEsmRequireError(stack: string): string | undefined {\n const pathRegex = /require\\(\\) of ES Module (.*) from/;\n const pathMatch = pathRegex.exec(stack);\n\n if (!pathMatch) {\n return;\n }\n\n const filePath = pathMatch[1];\n\n if (!filePath) {\n return;\n }\n\n const lastPart = filePath.split(\"node_modules/\").pop();\n\n if (!lastPart) {\n return;\n }\n\n // regular expression to match the package name\n const moduleRegex = /(@[^\\/]+\\/[^\\/]+|[^\\/]+)/;\n\n const match = moduleRegex.exec(lastPart);\n\n if (!match) {\n return;\n }\n\n return match[1];\n}\n\nexport function logESMRequireError(parsedError: ESMRequireError, resolvedConfig: ReadConfigResult) {\n logger.log(\n `\\n${chalkError(\"X Error:\")} The ${chalkPurple(\n parsedError.moduleName\n )} module is being required even though it's ESM only, and builds only support CommonJS. There are two ${chalk.underline(\n \"possible\"\n )} ways to fix this:`\n );\n logger.log(\n `\\n${chalkGrey(\"○\")} Dynamically import the module in your code: ${chalkGrey(\n `const myModule = await import(\"${parsedError.moduleName}\");`\n )}`\n );\n\n if (resolvedConfig.status === \"file\") {\n const relativePath = relative(resolvedConfig.config.projectDir, resolvedConfig.path).replace(\n /\\\\/g,\n \"/\"\n );\n\n logger.log(\n `${chalkGrey(\"○\")} ${chalk.underline(\"Or\")} add ${chalkPurple(\n parsedError.moduleName\n )} to the ${chalkGreen(\"dependenciesToBundle\")} array in your config file ${chalkGrey(\n `(${relativePath})`\n )}. This will bundle the module with your code.\\n`\n );\n } else {\n logger.log(\n `${chalkGrey(\"○\")} ${chalk.underline(\"Or\")} add ${chalkPurple(\n parsedError.moduleName\n )} to the ${chalkGreen(\"dependenciesToBundle\")} array in your config file ${chalkGrey(\n \"(you'll need to create one)\"\n )}. This will bundle the module with your code.\\n`\n );\n }\n\n logger.log(\n `${chalkGrey(\"○\")} For more info see the ${cliLink(\"relevant docs\", docs.config.esm)}.\\n`\n );\n}\n\nexport type PackageNotFoundError = {\n type: \"package-not-found-error\";\n packageName: string;\n};\n\nexport type NoMatchingVersionError = {\n type: \"no-matching-version-error\";\n packageName: string;\n};\n\nexport type NpmInstallError = PackageNotFoundError | NoMatchingVersionError | string;\n\nexport function parseNpmInstallError(error: unknown): NpmInstallError {\n if (typeof error === \"string\") {\n return error;\n }\n\n if (error instanceof Error) {\n if (typeof error.stack === \"string\") {\n const isPackageNotFoundError =\n error.stack.includes(\"ERR! 404 Not Found\") &&\n error.stack.includes(\"is not in this registry\");\n let packageName = null;\n\n if (isPackageNotFoundError) {\n // Regular expression to match the package name\n const packageNameRegex = /'([^']+)' is not in this registry/;\n const match = packageNameRegex.exec(error.stack);\n if (match) {\n packageName = match[1] as string; // Capture the package name\n }\n }\n\n if (packageName) {\n return {\n type: \"package-not-found-error\",\n packageName,\n };\n }\n\n const noMatchingVersionRegex = /No matching version found for ([^\\s]+)\\s/;\n const noMatchingVersionMatch = noMatchingVersionRegex.exec(error.stack);\n if (noMatchingVersionMatch) {\n return {\n type: \"no-matching-version-error\",\n packageName: (noMatchingVersionMatch[1] as string).replace(/.$/, \"\"),\n };\n }\n\n return error.message;\n } else {\n return error.message;\n }\n }\n\n return \"Unknown error\";\n}\n\nexport function logTaskMetadataParseError(zodIssues: z.ZodIssue[], tasks: any) {\n logger.log(\n `\\n${chalkError(\"X Error:\")} Failed to start. The following ${\n zodIssues.length === 1 ? \"task issue was\" : \"task issues were\"\n } found:`\n );\n\n const groupedIssues = groupTaskMetadataIssuesByTask(tasks, zodIssues);\n\n for (const key in groupedIssues) {\n const taskWithIssues = groupedIssues[key];\n\n if (!taskWithIssues) {\n continue;\n }\n\n logger.log(\n `\\n ${chalkWarning(\"❯\")} ${taskWithIssues.exportName} ${chalkGrey(\"in\")} ${\n taskWithIssues.filePath\n }`\n );\n\n for (const issue of taskWithIssues.issues) {\n if (issue.path) {\n logger.log(` ${chalkError(\"x\")} ${issue.path} ${chalkGrey(issue.message)}`);\n } else {\n logger.log(` ${chalkError(\"x\")} ${chalkGrey(issue.message)}`);\n }\n }\n }\n}\n","export const docs = {\n config: {\n home: \"https://trigger.dev/docs/v3/trigger-config\",\n esm: \"https://trigger.dev/docs/v3/trigger-config#esm-only-packages\",\n prisma: \"https://trigger.dev/docs/v3/trigger-config#prisma-and-other-generators\",\n additionalPackages: \"https://trigger.dev/docs/v3/trigger-config#prisma-and-other-generators\",\n },\n};\n\nexport const getInTouch = \"https://trigger.dev/contact\";\n","import { $, ExecaError } from \"execa\";\nimport { join } from \"node:path\";\nimport { readJSONFileSync } from \"./fileSystem\";\nimport { logger } from \"./logger\";\nimport { PackageManager, getUserPackageManager } from \"./getUserPackageManager\";\nimport { PackageJson } from \"type-fest\";\nimport { assertExhaustive } from \"./assertExhaustive\";\nimport { builtinModules } from \"node:module\";\nimport { tracer } from \"../cli/common\";\nimport { recordSpanException } from \"@trigger.dev/core/v3/otel\";\nimport { flattenAttributes } from \"@trigger.dev/core/v3\";\n\nexport type ResolveOptions = { allowDev: boolean };\nexport type DependencyMeta = { version: string; external: boolean };\n\nexport class JavascriptProject {\n private _packageJson?: PackageJson;\n private _packageManager?: PackageManager;\n\n constructor(private projectPath: string) {}\n\n private get packageJson() {\n if (!this._packageJson) {\n this._packageJson = readJSONFileSync(join(this.projectPath, \"package.json\")) as PackageJson;\n }\n\n return this._packageJson;\n }\n\n public get allowedPackageJson(): Record<string, unknown> {\n const disallowedKeys = [\n \"scripts\",\n \"devDependencies\",\n \"dependencies\",\n \"peerDependencies\",\n \"author\",\n \"contributors\",\n \"funding\",\n \"bugs\",\n \"files\",\n \"keywords\",\n \"main\",\n \"module\",\n \"type\",\n \"bin\",\n \"browser\",\n \"man\",\n \"directories\",\n \"repository\",\n \"peerDependenciesMeta\",\n \"optionalDependencies\",\n \"engines\",\n \"os\",\n \"cpu\",\n \"private\",\n \"publishConfig\",\n \"workspaces\",\n ];\n\n return Object.keys(this.packageJson).reduce(\n (acc, key) => {\n if (!disallowedKeys.includes(key)) {\n acc[key] = this.packageJson[key];\n }\n\n return acc;\n },\n {} as Record<string, unknown>\n );\n }\n\n public get scripts(): Record<string, string> {\n return this.#filterScripts();\n }\n\n #filterScripts(): Record<string, string> {\n if (!this.packageJson.scripts || typeof this.packageJson.scripts !== \"object\") {\n return {};\n }\n\n return this.packageJson.scripts as Record<string, string>;\n }\n\n async install(): Promise<void> {\n const command = await this.#getCommand();\n\n try {\n await command.installDependencies({\n cwd: this.projectPath,\n });\n } catch (error) {\n logger.debug(`Failed to install dependencies using ${command.name}`, {\n error,\n });\n }\n }\n\n async extractDirectDependenciesMeta(): Promise<Record<string, DependencyMeta>> {\n return tracer.startActiveSpan(\n \"JavascriptProject.extractDirectDependenciesMeta\",\n async (span) => {\n const command = await this.#getCommand();\n\n span.setAttributes({\n packageManager: command.name,\n });\n\n try {\n span.end();\n return await command.extractDirectDependenciesMeta({\n cwd: this.projectPath,\n });\n } catch (error) {\n recordSpanException(span, error);\n span.end();\n\n logger.debug(`Failed to resolve internal dependencies using ${command.name}`, {\n error,\n });\n\n throw error;\n }\n }\n );\n }\n\n async resolveAll(packageNames: string[]): Promise<Record<string, string>> {\n return tracer.startActiveSpan(\"JavascriptProject.resolveAll\", async (span) => {\n const externalPackages = packageNames.filter((packageName) => !isBuiltInModule(packageName));\n\n const command = await this.#getCommand();\n\n span.setAttributes({\n externalPackages,\n packageManager: command.name,\n });\n\n try {\n const versions = await command.resolveDependencyVersions(externalPackages, {\n cwd: this.projectPath,\n });\n\n if (versions) {\n logger.debug(`Resolved [${externalPackages.join(\", \")}] version using ${command.name}`, {\n versions,\n });\n\n span.setAttributes({\n ...flattenAttributes(versions, \"versions\"),\n });\n }\n\n // Merge the resolved versions with the package.json dependencies\n const missingPackages = externalPackages.filter((packageName) => !versions[packageName]);\n const missingPackageVersions: Record<string, string> = {};\n\n for (const packageName of missingPackages) {\n const packageJsonVersion = this.packageJson.dependencies?.[packageName];\n\n if (typeof packageJsonVersion === \"string\") {\n logger.debug(`Resolved ${packageName} version using package.json`, {\n packageJsonVersion,\n });\n\n missingPackageVersions[packageName] = packageJsonVersion;\n }\n }\n\n span.setAttributes({\n ...flattenAttributes(missingPackageVersions, \"missingPackageVersions\"),\n missingPackages,\n });\n\n span.end();\n\n return { ...versions, ...missingPackageVersions };\n } catch (error) {\n recordSpanException(span, error);\n span.end();\n\n logger.debug(`Failed to resolve dependency versions using ${command.name}`, {\n packageNames,\n error,\n });\n\n return {};\n }\n });\n }\n\n async resolve(packageName: string, options?: ResolveOptions): Promise<string | undefined> {\n if (isBuiltInModule(packageName)) {\n return undefined;\n }\n\n const opts = { allowDev: false, ...options };\n\n const command = await this.#getCommand();\n\n try {\n const version = await command.resolveDependencyVersion(packageName, {\n cwd: this.projectPath,\n });\n\n if (version) {\n logger.debug(`Resolved ${packageName} version using ${command.name}`, { version });\n\n return version;\n }\n\n const packageJsonVersion = this.packageJson.dependencies?.[packageName];\n\n if (typeof packageJsonVersion === \"string\") {\n logger.debug(`Resolved ${packageName} version using package.json`, { packageJsonVersion });\n\n return packageJsonVersion;\n }\n\n if (opts.allowDev) {\n const devPackageJsonVersion = this.packageJson.devDependencies?.[packageName];\n\n if (typeof devPackageJsonVersion === \"string\") {\n logger.debug(`Resolved ${packageName} version using devDependencies`, {\n devPackageJsonVersion,\n });\n\n return devPackageJsonVersion;\n }\n }\n } catch (error) {\n logger.debug(`Failed to resolve dependency version using ${command.name}`, {\n packageName,\n error,\n });\n }\n }\n\n async #getCommand(): Promise<PackageManagerCommands> {\n const packageManager = await this.getPackageManager();\n\n switch (packageManager) {\n case \"npm\":\n return new NPMCommands();\n case \"pnpm\":\n return new PNPMCommands();\n case \"yarn\":\n return new YarnCommands();\n default:\n assertExhaustive(packageManager);\n }\n }\n\n async getPackageManager(): Promise<PackageManager> {\n if (!this._packageManager) {\n this._packageManager = await getUserPackageManager(this.projectPath);\n }\n\n return this._packageManager;\n }\n}\n\ntype PnpmList = {\n name: string;\n path: string;\n version: string;\n private: boolean;\n dependencies?: Record<\n string,\n {\n from: string;\n version: string;\n resolved: string;\n path: string;\n }\n >;\n}[];\n\ntype PackageManagerOptions = {\n cwd?: string;\n};\n\ninterface PackageManagerCommands {\n name: string;\n\n installDependencies(options: PackageManagerOptions): Promise<void>;\n\n extractDirectDependenciesMeta(\n options: PackageManagerOptions\n ): Promise<Record<string, DependencyMeta>>;\n\n resolveDependencyVersion(\n packageName: string,\n options: PackageManagerOptions\n ): Promise<string | undefined>;\n\n resolveDependencyVersions(\n packageNames: string[],\n options: PackageManagerOptions\n ): Promise<Record<string, string>>;\n}\n\nclass PNPMCommands implements PackageManagerCommands {\n get name() {\n return \"pnpm\";\n }\n\n private get cmd() {\n return process.platform === \"win32\" ? \"pnpm.cmd\" : \"pnpm\";\n }\n\n async installDependencies(options: PackageManagerOptions) {\n const { stdout, stderr } = await $({ cwd: options.cwd })`${this.cmd} install`;\n\n logger.debug(`Installing dependencies using ${this.name}`, { stdout, stderr });\n }\n\n async resolveDependencyVersion(packageName: string, options: PackageManagerOptions) {\n const { stdout } = await $({ cwd: options.cwd })`${this.cmd} list ${packageName} -r --json`;\n const result = JSON.parse(stdout) as PnpmList;\n\n logger.debug(`Resolving ${packageName} version using ${this.name}`);\n\n // Return the first dependency version that matches the package name\n for (const dep of result) {\n const dependency = dep.dependencies?.[packageName];\n\n if (dependency) {\n return dependency.version;\n }\n }\n }\n\n async resolveDependencyVersions(\n packageNames: string[],\n options: PackageManagerOptions\n ): Promise<Record<string, string>> {\n const result = await this.#listDependencies(packageNames, options);\n\n logger.debug(`Resolving ${packageNames.join(\" \")} version using ${this.name}`);\n\n const results: Record<string, string> = {};\n\n // Return the first dependency version that matches the package name\n for (const dep of result) {\n for (const packageName of packageNames) {\n const dependency = dep.dependencies?.[packageName];\n\n if (dependency) {\n results[packageName] = dependency.version;\n }\n }\n }\n\n return results;\n }\n\n async extractDirectDependenciesMeta(options: PackageManagerOptions) {\n const result = await this.#listDirectDependencies(options);\n\n logger.debug(`Extracting direct dependencies metadata using ${this.name}`);\n\n const results: Record<string, DependencyMeta> = {};\n\n for (const projectPkg of result) {\n results[projectPkg.name] = { version: projectPkg.version, external: false };\n\n if (projectPkg.dependencies) {\n for (const [name, dep] of Object.entries(projectPkg.dependencies)) {\n const { version } = dep;\n\n results[name] = {\n version,\n external: !version.startsWith(\"link:\"),\n };\n }\n }\n }\n\n return results;\n }\n\n async #listDirectDependencies(options: PackageManagerOptions) {\n const childProcess = await $({\n cwd: options.cwd,\n reject: false,\n })`${this.cmd} list --recursive --json`;\n\n if (childProcess.failed) {\n logger.debug(\"Failed to list dependencies, using stdout anyway...\", {\n error: childProcess,\n });\n }\n\n return JSON.parse(childProcess.stdout) as PnpmList;\n }\n\n async #listDependencies(packageNames: string[], options: PackageManagerOptions) {\n const childProcess = await $({\n cwd: options.cwd,\n reject: false,\n })`${this.cmd} list ${packageNames} -r --json`;\n\n if (childProcess.failed) {\n logger.debug(\"Failed to list dependencies, using stdout anyway...\", {\n error: childProcess,\n });\n }\n\n return JSON.parse(childProcess.stdout) as PnpmList;\n }\n}\n\ntype NpmDependency = {\n version: string;\n resolved: string;\n overridden: boolean;\n required?: { version: string };\n dependencies?: Record<string, NpmDependency>;\n};\n\ntype NpmListOutput = {\n dependencies: Record<string, NpmDependency>;\n};\n\nclass NPMCommands implements PackageManagerCommands {\n get name() {\n return \"npm\";\n }\n\n private get cmd() {\n return process.platform === \"win32\" ? \"npm.cmd\" : \"npm\";\n }\n\n async installDependencies(options: PackageManagerOptions) {\n const { stdout, stderr } = await $({ cwd: options.cwd })`${this.cmd} install`;\n\n logger.debug(`Installing dependencies using ${this.name}`, { stdout, stderr });\n }\n\n async resolveDependencyVersion(packageName: string, options: PackageManagerOptions) {\n const { stdout } = await $({ cwd: options.cwd })`${this.cmd} list ${packageName} --json`;\n const output = JSON.parse(stdout) as NpmListOutput;\n\n logger.debug(`Resolving ${packageName} version using ${this.name}`, { output });\n\n return this.#recursivelySearchDependencies(output.dependencies, packageName);\n }\n\n async resolveDependencyVersions(\n packageNames: string[],\n options: PackageManagerOptions\n ): Promise<Record<string, string>> {\n const output = await this.#listDependencies(packageNames, options);\n\n logger.debug(`Resolving ${packageNames.join(\" \")} version using ${this.name}`, { output });\n\n const results: Record<string, string> = {};\n\n for (const packageName of packageNames) {\n const version = this.#recursivelySearchDependencies(output.dependencies, packageName);\n\n if (version) {\n results[packageName] = version;\n }\n }\n\n return results;\n }\n\n async extractDirectDependenciesMeta(\n options: PackageManagerOptions\n ): Promise<Record<string, DependencyMeta>> {\n const result = await this.#listDirectDependencies(options);\n\n logger.debug(`Extracting direct dependencies metadata using ${this.name}`);\n\n return result.dependencies ? this.#flattenDependenciesMeta(result.dependencies) : {};\n }\n\n async #listDirectDependencies(options: PackageManagerOptions) {\n const childProcess = await $({\n cwd: options.cwd,\n reject: false,\n })`${this.cmd} list --json`;\n\n if (childProcess.failed) {\n logger.debug(\"Failed to list dependencies, using stdout anyway...\", {\n error: childProcess,\n });\n }\n\n return JSON.parse(childProcess.stdout) as NpmListOutput;\n }\n\n async #listDependencies(packageNames: string[], options: PackageManagerOptions) {\n const childProcess = await $({\n cwd: options.cwd,\n reject: false,\n })`${this.cmd} list ${packageNames} --json`;\n\n if (childProcess.failed) {\n logger.debug(\"Failed to list dependencies, using stdout anyway...\", {\n error: childProcess,\n });\n }\n\n return JSON.parse(childProcess.stdout) as NpmListOutput;\n }\n\n #recursivelySearchDependencies(\n dependencies: Record<string, NpmDependency>,\n packageName: string\n ): string | undefined {\n for (const [name, dependency] of Object.entries(dependencies)) {\n if (name === packageName) {\n return dependency.version;\n }\n\n if (dependency.dependencies) {\n const result = this.#recursivelySearchDependencies(dependency.dependencies, packageName);\n\n if (result) {\n return result;\n }\n }\n }\n }\n\n #flattenDependenciesMeta(\n dependencies: Record<string, NpmDependency>\n ): Record<string, DependencyMeta> {\n let results: Record<string, DependencyMeta> = {};\n\n for (const [name, dep] of Object.entries(dependencies)) {\n const { version, resolved, dependencies: children } = dep;\n results[name] = { version, external: !!resolved && !resolved.startsWith(\"file:\") };\n\n if (children) {\n results = { ...results, ...this.#flattenDependenciesMeta(children) };\n }\n }\n\n return results;\n }\n}\n\nclass YarnCommands implements PackageManagerCommands {\n get name() {\n return \"yarn\";\n }\n\n private get cmd() {\n return process.platform === \"win32\" ? \"yarn.cmd\" : \"yarn\";\n }\n\n async installDependencies(options: PackageManagerOptions) {\n const { stdout, stderr } = await $({ cwd: options.cwd })`${this.cmd} install`;\n\n logger.debug(`Installing dependencies using ${this.name}`, { stdout, stderr });\n }\n\n async resolveDependencyVersion(packageName: string, options: PackageManagerOptions) {\n const { stdout } = await $({ cwd: options.cwd })`${this.cmd} info ${packageName} --json`;\n\n const lines = stdout.split(\"\\n\");\n\n logger.debug(`Resolving ${packageName} version using ${this.name}`);\n\n for (const line of lines) {\n const json = JSON.parse(line);\n\n if (json.value === packageName) {\n return json.children.Version;\n }\n }\n }\n\n async resolveDependencyVersions(\n packageNames: string[],\n options: PackageManagerOptions\n ): Promise<Record<string, string>> {\n const stdout = await this.#listDependencies(packageNames, options);\n\n const lines = stdout.split(\"\\n\");\n\n logger.debug(`Resolving ${packageNames.join(\" \")} version using ${this.name}`);\n\n const results: Record<string, string> = {};\n\n for (const line of lines) {\n const json = JSON.parse(line);\n\n const packageName = this.#parseYarnValueIntoPackageName(json.value);\n\n if (packageNames.includes(packageName)) {\n results[packageName] = json.children.Version;\n }\n }\n\n return results;\n }\n\n async extractDirectDependenciesMeta(options: PackageManagerOptions) {\n const result = await this.#listDirectDependencies(options);\n\n const rawPackagesData = result.split(\"\\n\");\n logger.debug(`Extracting direct dependencies metadata using ${this.name}`);\n\n const results: Record<string, DependencyMeta> = {};\n\n for (const rawPackageData of rawPackagesData) {\n const packageData = JSON.parse(rawPackageData);\n\n const [name, dependencyMeta] = this.#parseYarnValueIntoDependencyMeta(packageData.value);\n results[name] = dependencyMeta;\n }\n\n return results;\n }\n\n async #listDirectDependencies(options: PackageManagerOptions) {\n const childProcess = await $({\n cwd: options.cwd,\n reject: false,\n })`${this.cmd} info --all --json`;\n\n if (childProcess.failed) {\n logger.debug(\"Failed to list dependencies, using stdout anyway...\", {\n error: childProcess,\n });\n }\n\n return childProcess.stdout;\n }\n\n async #listDependencies(packageNames: string[], options: PackageManagerOptions) {\n const childProcess = await $({\n cwd: options.cwd,\n reject: false,\n })`${this.cmd} info ${packageNames} --json`;\n\n if (childProcess.failed) {\n logger.debug(\"Failed to list dependencies, using stdout anyway...\", {\n error: childProcess,\n });\n }\n\n return childProcess.stdout;\n }\n\n // The \"value\" when doing yarn info is formatted like this:\n // \"package-name@npm:version\" or \"package-name@workspace:version\"\n // This function will parse the value into just the package name.\n // This correctly handles scoped packages as well e.g. @scope/package-name@npm:version\n #parseYarnValueIntoPackageName(value: string): string {\n const parts = value.split(\"@\");\n\n // If the value does not contain an \"@\" symbol, then it's just the package name\n if (parts.length === 3) {\n return parts[1] as string;\n }\n\n // If the value contains an \"@\" symbol, then the package name is the first part\n return parts[0] as string;\n }\n\n #parseYarnValueIntoDependencyMeta(value: string): [string, DependencyMeta] {\n const parts = value.split(\"@\");\n let name: string, protocol: string, version: string;\n\n if (parts.length === 3) {\n // e.g. @<scope>/<package>@<protocol>:<version> -> [\"\", \"<scope>/<package>\"\", \"<protocol>:<version>\"\"]\n name = `@${parts[1]}`;\n [protocol = \"\", version = \"\"] = parts[2]!.split(\":\");\n } else if (parts.length === 2) {\n // e.g. <package>@<protocol>:<version> -> [\"<package>\"\", \"<protocol>:<version>\"\"]\n name = parts[0]!.toString();\n [protocol = \"\", version = \"\"] = parts[1]!.split(\":\");\n } else {\n throw new Error(\"Failed parsing ${value} into dependency meta\");\n }\n\n return [\n name,\n {\n version,\n external: protocol !== \"workspace\" && protocol !== \"file\",\n },\n ];\n }\n}\n\nfunction isBuiltInModule(module: string): boolean {\n // if the module has node: prefix, it's a built-in module\n if (module.startsWith(\"node:\")) {\n return true;\n }\n\n return builtinModules.includes(module);\n}\n","import { findUp } from \"find-up\";\nimport { basename } from \"path\";\nimport { logger } from \"./logger\";\n\nexport type PackageManager = \"npm\" | \"pnpm\" | \"yarn\";\nexport const LOCKFILES = {\n npm: \"package-lock.json\",\n npmShrinkwrap: \"npm-shrinkwrap.json\",\n pnpm: \"pnpm-lock.yaml\",\n yarn: \"yarn.lock\",\n bun: \"bun.lockb\",\n};\n\nexport async function getUserPackageManager(path: string): Promise<PackageManager> {\n const packageManager = await detectPackageManager(path);\n logger.debug(\"Detected package manager\", { packageManager });\n return packageManager;\n}\n\nasync function detectPackageManager(path: string): Promise<PackageManager> {\n try {\n return await detectPackageManagerFromArtifacts(path);\n } catch (error) {\n return detectPackageManagerFromCurrentCommand();\n }\n}\n\nfunction detectPackageManagerFromCurrentCommand(): PackageManager {\n // This environment variable is set by npm and yarn but pnpm seems less consistent\n const userAgent = process.env.npm_config_user_agent;\n\n if (userAgent) {\n if (userAgent.startsWith(\"yarn\")) {\n return \"yarn\";\n } else if (userAgent.startsWith(\"pnpm\")) {\n return \"pnpm\";\n } else {\n return \"npm\";\n }\n } else {\n // If no user agent is set, assume npm\n return \"npm\";\n }\n}\n\nexport async function detectPackageManagerFromArtifacts(path: string): Promise<PackageManager> {\n const foundPath = await findUp(Object.values(LOCKFILES), { cwd: path });\n\n if (!foundPath) {\n throw new Error(\"Could not detect package manager from artifacts\");\n }\n\n logger.debug(\"Found path from package manager artifacts\", { foundPath });\n\n switch (basename(foundPath)) {\n case LOCKFILES.yarn:\n logger.debug(\"Found yarn artifact\", { foundPath });\n return \"yarn\";\n case LOCKFILES.pnpm:\n logger.debug(\"Found pnpm artifact\", { foundPath });\n return \"pnpm\";\n case LOCKFILES.npm:\n case LOCKFILES.npmShrinkwrap:\n logger.debug(\"Found npm artifact\", { foundPath });\n return \"npm\";\n case LOCKFILES.bun:\n logger.debug(\"Found bun artifact\", { foundPath });\n return \"npm\";\n default:\n throw new Error(`Unhandled package manager detection path: ${foundPath}`);\n }\n}\n","export function assertExhaustive(x: never): never {\n throw new Error(\"Unexpected object: \" + x);\n}\n","import path from \"path\";\nimport { fileURLToPath } from \"url\";\n\nexport function cliRootPath() {\n const __filename = fileURLToPath(import.meta.url);\n const __dirname = path.dirname(__filename);\n return __dirname;\n}\n","export function safeJsonParse(json?: string): unknown {\n if (!json) {\n return undefined;\n }\n\n try {\n return JSON.parse(json);\n } catch {\n return undefined;\n }\n}\n","import { confirm, intro, isCancel, log, outro } from \"@clack/prompts\";\nimport { z } from \"zod\";\nimport { readJSONFile, removeFile, writeJSONFile } from \"../utilities/fileSystem.js\";\nimport { spinner } from \"../utilities/windows.js\";\nimport { CommonCommandOptions, OutroCommandError, wrapCommandAction } from \"../cli/common.js\";\nimport { Command } from \"commander\";\nimport { logger } from \"../utilities/logger.js\";\nimport { PackageJson } from \"type-fest\";\nimport { printStandloneInitialBanner, updateCheck } from \"../utilities/initialBanner.js\";\nimport { join, resolve } from \"path\";\nimport { JavascriptProject } from \"../utilities/javascriptProject.js\";\nimport { PackageManager } from \"../utilities/getUserPackageManager.js\";\nimport { getVersion } from \"../utilities/getVersion.js\";\nimport { chalkError, prettyError, prettyWarning } from \"../utilities/cliOutput.js\";\n\nexport const UpdateCommandOptions = CommonCommandOptions.pick({\n logLevel: true,\n skipTelemetry: true,\n});\n\nexport type UpdateCommandOptions = z.infer<typeof UpdateCommandOptions>;\n\nexport function configureUpdateCommand(program: Command) {\n return program\n .command(\"update\")\n .description(\"Updates all @trigger.dev/* packages to match the CLI version\")\n .argument(\"[path]\", \"The path to the directory that contains the package.json file\", \".\")\n .option(\n \"-l, --log-level <level>\",\n \"The CLI log level to use (debug, info, log, warn, error, none). This does not effect the log level of your trigger.dev tasks.\",\n \"log\"\n )\n .option(\"--skip-telemetry\", \"Opt-out of sending telemetry\")\n .action(async (path, options) => {\n wrapCommandAction(\"dev\", UpdateCommandOptions, options, async (opts) => {\n await printStandloneInitialBanner(true);\n await updateCommand(path, opts);\n });\n });\n}\n\nconst triggerPackageFilter = /^@trigger\\.dev/;\n\nexport async function updateCommand(dir: string, options: UpdateCommandOptions) {\n await updateTriggerPackages(dir, options);\n}\n\nexport async function updateTriggerPackages(\n dir: string,\n options: UpdateCommandOptions,\n embedded?: boolean,\n requireUpdate?: boolean\n): Promise<boolean> {\n let hasOutput = false;\n\n if (!embedded) {\n intro(\"Updating packages\");\n }\n\n const projectPath = resolve(process.cwd(), dir);\n\n const { packageJson, readonlyPackageJson, packageJsonPath } = await getPackageJson(projectPath);\n\n if (!packageJson) {\n log.error(\"Failed to load package.json. Try to re-run with `-l debug` to see what's going on.\");\n return false;\n }\n\n const cliVersion = getVersion();\n const newCliVersion = await updateCheck();\n\n if (newCliVersion) {\n prettyWarning(\n \"You're not running the latest CLI version, please consider updating ASAP\",\n `Current: ${cliVersion}\\nLatest: ${newCliVersion}`,\n \"Run latest: npx trigger.dev@beta\"\n );\n\n hasOutput = true;\n }\n\n const triggerDependencies = getTriggerDependencies(packageJson);\n\n function getVersionMismatches(\n deps: Dependency[],\n targetVersion: string\n ): {\n mismatches: Dependency[];\n isDowngrade: boolean;\n } {\n const mismatches: Dependency[] = [];\n\n for (const dep of deps) {\n if (dep.version === targetVersion) {\n continue;\n }\n\n mismatches.push(dep);\n }\n\n const extractRelease = (version: string) => {\n const release = Number(version.split(\"3.0.0-beta.\")[1]);\n return release || undefined;\n };\n\n let isDowngrade = false;\n const targetRelease = extractRelease(targetVersion);\n\n if (targetRelease) {\n isDowngrade = mismatches.some((dep) => {\n const depRelease = extractRelease(dep.version);\n\n if (!depRelease) {\n return false;\n }\n\n return depRelease > targetRelease;\n });\n }\n\n return {\n mismatches,\n isDowngrade,\n };\n }\n\n const { mismatches, isDowngrade } = getVersionMismatches(triggerDependencies, cliVersion);\n\n if (mismatches.length === 0) {\n if (!embedded) {\n outro(`Nothing to do${newCliVersion ? \" ..but you should really update your CLI!\" : \"\"}`);\n return hasOutput;\n }\n return hasOutput;\n }\n\n if (isDowngrade) {\n prettyError(\"Some of the installed @trigger.dev packages are newer than your CLI version\");\n } else {\n prettyWarning(\n \"Mismatch between your CLI version and installed packages\",\n \"We recommend pinned versions for guaranteed compatibility\"\n );\n }\n\n if (!process.stdout.isTTY) {\n // Running in CI with version mismatch detected\n outro(\"Deploy failed\");\n\n console.log(\n `ERROR: Version mismatch detected while running in CI. This won't end well. Aborting.\n \n Please run the dev command locally and check that your CLI version matches the one printed below. Additionally, all \\`@trigger.dev/*\\` packages also need to match this version.\n \n If your local CLI version doesn't match the one below, you may want to pin the CLI version in this CI step. To do that, just replace \\`trigger.dev@beta\\` with \\`trigger.dev@<FULL_VERSION>\\`, for example: \\`npx trigger.dev@3.0.0-beta.17 deploy\\`\n \n CLI version: ${cliVersion}\n \n Current package versions that don't match the CLI:\n ${mismatches.map((dep) => `- ${dep.name}@${dep.version}`).join(\"\\n\")}\\n`\n );\n process.exit(1);\n }\n\n // WARNING: We can only start accepting user input once we know this is a TTY, otherwise, the process will exit with an error in CI\n\n if (isDowngrade) {\n printUpdateTable(\"Versions\", mismatches, cliVersion, \"installed\", \"CLI\");\n\n outro(\"CLI update required!\");\n\n logger.log(\n `${chalkError(\n \"X Error:\"\n )} Please update your CLI. Alternatively, use \\`--skip-update-check\\` at your own risk.\\n`\n );\n process.exit(1);\n }\n\n log.message(\"\"); // spacing\n\n // Always require user confirmation\n const userWantsToUpdate = await updateConfirmation(mismatches, cliVersion);\n\n if (isCancel(userWantsToUpdate)) {\n throw new OutroCommandError();\n }\n\n if (!userWantsToUpdate) {\n if (requireUpdate) {\n outro(\"You shall not pass!\");\n\n logger.log(\n `${chalkError(\n \"X Error:\"\n )} Update required: Version mismatches are a common source of bugs and errors. Please update or use \\`--skip-update-check\\` at your own risk.\\n`\n );\n process.exit(1);\n }\n\n if (!embedded) {\n outro(\"You've been warned!\");\n }\n\n return hasOutput;\n }\n\n const installSpinner = spinner();\n installSpinner.start(\"Writing new package.json file\");\n\n // Backup package.json\n const packageJsonBackupPath = `${packageJsonPath}.bak`;\n await writeJSONFile(packageJsonBackupPath, readonlyPackageJson, true);\n\n const exitHandler = async (sig: any) => {\n log.warn(\n `You may have to manually roll back any package.json changes. Backup written to ${packageJsonBackupPath}`\n );\n };\n\n // Add exit handler to warn about manual rollback of package.json\n // Automatically rolling back can end up overwriting with an empty file instead\n process.prependOnceListener(\"exit\", exitHandler);\n\n // Update package.json\n mutatePackageJsonWithUpdatedPackages(packageJson, mismatches, cliVersion);\n await writeJSONFile(packageJsonPath, packageJson, true);\n\n async function revertPackageJsonChanges() {\n await writeJSONFile(packageJsonPath, readonlyPackageJson, true);\n await removeFile(packageJsonBackupPath);\n }\n\n installSpinner.message(\"Installing new package versions\");\n\n const jsProject = new JavascriptProject(projectPath);\n\n let packageManager: PackageManager | undefined;\n\n try {\n packageManager = await jsProject.getPackageManager();\n\n installSpinner.message(`Installing new package versions with ${packageManager}`);\n\n await jsProject.install();\n } catch (error) {\n installSpinner.stop(\n `Failed to install new package versions${packageManager ? ` with ${packageManager}` : \"\"}`\n );\n\n // Remove exit handler in case of failure\n process.removeListener(\"exit\", exitHandler);\n\n await revertPackageJsonChanges();\n throw error;\n }\n\n installSpinner.stop(\"Installed new package versions\");\n\n // Remove exit handler once packages have been updated, also delete backup file\n process.removeListener(\"exit\", exitHandler);\n await removeFile(packageJsonBackupPath);\n\n if (!embedded) {\n outro(\n `Packages updated${newCliVersion ? \" ..but you should really update your CLI too!\" : \"\"}`\n );\n }\n\n return hasOutput;\n}\n\ntype Dependency = {\n type: \"dependencies\" | \"devDependencies\";\n name: string;\n version: string;\n};\n\nfunction getTriggerDependencies(packageJson: PackageJson): Dependency[] {\n const deps: Dependency[] = [];\n\n for (const type of [\"dependencies\", \"devDependencies\"] as const) {\n for (const [name, version] of Object.entries(packageJson[type] ?? {})) {\n if (!version) {\n continue;\n }\n\n if (version.startsWith(\"workspace\")) {\n continue;\n }\n\n if (!triggerPackageFilter.test(name)) {\n continue;\n }\n\n const ignoredPackages = [\"@trigger.dev/companyicons\"];\n\n if (ignoredPackages.includes(name)) {\n continue;\n }\n\n deps.push({ type, name, version });\n }\n }\n\n return deps;\n}\n\nfunction mutatePackageJsonWithUpdatedPackages(\n packageJson: PackageJson,\n depsToUpdate: Dependency[],\n targetVersion: string\n) {\n for (const { type, name, version } of depsToUpdate) {\n if (!packageJson[type]) {\n throw new Error(\n `No ${type} entry found in package.json. Please try to upgrade manually instead.`\n );\n }\n\n packageJson[type]![name] = targetVersion;\n }\n}\n\nfunction printUpdateTable(\n heading: string,\n depsToUpdate: Dependency[],\n targetVersion: string,\n oldColumn = \"old\",\n newColumn = \"new\"\n): void {\n log.message(heading);\n\n const tableData = depsToUpdate.map((dep) => ({\n package: dep.name,\n [oldColumn]: dep.version,\n [newColumn]: targetVersion,\n }));\n\n logger.table(tableData);\n}\n\nasync function updateConfirmation(depsToUpdate: Dependency[], targetVersion: string) {\n printUpdateTable(\"Suggested updates\", depsToUpdate, targetVersion);\n\n let confirmMessage = \"Would you like to apply those updates?\";\n\n return await confirm({\n message: confirmMessage,\n });\n}\n\nexport async function getPackageJson(absoluteProjectPath: string) {\n const packageJsonPath = join(absoluteProjectPath, \"package.json\");\n\n const readonlyPackageJson = Object.freeze((await readJSONFile(packageJsonPath)) as PackageJson);\n\n const packageJson = structuredClone(readonlyPackageJson);\n\n return { packageJson, readonlyPackageJson, packageJsonPath };\n}\n","import { logger } from \"./logger\";\n\nexport async function callResolveEnvVars(\n configModule: any,\n env: Record<string, string | undefined>,\n environment: string,\n projectRef: string\n): Promise<{ variables: Record<string, string>; override: boolean } | undefined> {\n if (\n configModule &&\n configModule.resolveEnvVars &&\n typeof configModule.resolveEnvVars === \"function\"\n ) {\n let resolvedEnvVars: Record<string, string> = {};\n\n try {\n let result = await configModule.resolveEnvVars({\n projectRef,\n environment,\n env,\n });\n\n if (!result) {\n return;\n }\n\n result = await result;\n\n if (typeof result === \"object\" && result !== null && \"variables\" in result) {\n const variables = result.variables;\n\n if (Array.isArray(variables)) {\n for (const item of variables) {\n if (\n typeof item === \"object\" &&\n item !== null &&\n \"name\" in item &&\n \"value\" in item &&\n typeof item.name === \"string\" &&\n typeof item.value === \"string\"\n ) {\n resolvedEnvVars[item.name] = item.value;\n }\n }\n } else if (typeof variables === \"object\") {\n for (const [key, value] of Object.entries(variables)) {\n if (typeof key === \"string\" && typeof value === \"string\") {\n resolvedEnvVars[key] = value;\n }\n }\n }\n }\n\n return {\n variables: resolvedEnvVars,\n override: result.override,\n };\n } catch (error) {\n logger.error(error);\n }\n }\n}\n","import {\n CreateBackgroundWorkerRequestBody,\n ResolvedConfig,\n TaskResource,\n clientWebsocketMessages,\n detectDependencyVersion,\n serverWebsocketMessages,\n} from \"@trigger.dev/core/v3\";\nimport { ZodMessageHandler, ZodMessageSender } from \"@trigger.dev/core/v3/zodMessageHandler\";\nimport { watch } from \"chokidar\";\nimport { Command } from \"commander\";\nimport { BuildContext, Metafile, context } from \"esbuild\";\nimport { render, useInput } from \"ink\";\nimport { createHash } from \"node:crypto\";\nimport fs, { readFileSync } from \"node:fs\";\nimport { ClientRequestArgs } from \"node:http\";\nimport { basename, dirname, join, normalize } from \"node:path\";\nimport pDebounce from \"p-debounce\";\nimport { WebSocket } from \"partysocket\";\nimport React, { Suspense, useEffect } from \"react\";\nimport { ClientOptions, WebSocket as wsWebSocket } from \"ws\";\nimport { z } from \"zod\";\nimport * as packageJson from \"../../package.json\";\nimport { CliApiClient } from \"../apiClient\";\nimport { CommonCommandOptions, commonOptions, wrapCommandAction } from \"../cli/common.js\";\nimport {\n bundleDependenciesPlugin,\n bundleTriggerDevCore,\n mockServerOnlyPlugin,\n workerSetupImportConfigPlugin,\n} from \"../utilities/build\";\nimport {\n chalkError,\n chalkGrey,\n chalkLink,\n chalkPurple,\n chalkTask,\n chalkWorker,\n cliLink,\n} from \"../utilities/cliOutput\";\nimport { readConfig } from \"../utilities/configFiles\";\nimport { readJSONFile } from \"../utilities/fileSystem\";\nimport { printDevBanner, printStandloneInitialBanner } from \"../utilities/initialBanner.js\";\nimport {\n detectPackageNameFromImportPath,\n parsePackageName,\n stripWorkspaceFromVersion,\n} from \"../utilities/installPackages\";\nimport { logger } from \"../utilities/logger.js\";\nimport { isLoggedIn } from \"../utilities/session.js\";\nimport { createTaskFileImports, gatherTaskFiles } from \"../utilities/taskFiles\";\nimport { TaskMetadataParseError, UncaughtExceptionError } from \"../workers/common/errors\";\nimport { BackgroundWorker, BackgroundWorkerCoordinator } from \"../workers/dev/backgroundWorker.js\";\nimport { runtimeCheck } from \"../utilities/runtimeCheck\";\nimport {\n logESMRequireError,\n logTaskMetadataParseError,\n parseBuildErrorStack,\n parseNpmInstallError,\n} from \"../utilities/deployErrors\";\nimport { findUp, pathExists } from \"find-up\";\nimport { cliRootPath } from \"../utilities/resolveInternalFilePath\";\nimport { escapeImportPath } from \"../utilities/windows\";\nimport { updateTriggerPackages } from \"./update\";\nimport { esbuildDecorators } from \"@anatine/esbuild-decorators\";\nimport { callResolveEnvVars } from \"../utilities/resolveEnvVars\";\n\nlet apiClient: CliApiClient | undefined;\n\nconst DevCommandOptions = CommonCommandOptions.extend({\n debugger: z.boolean().default(false),\n debugOtel: z.boolean().default(false),\n config: z.string().optional(),\n projectRef: z.string().optional(),\n skipUpdateCheck: z.boolean().default(false),\n});\n\ntype DevCommandOptions = z.infer<typeof DevCommandOptions>;\n\nexport function configureDevCommand(program: Command) {\n return commonOptions(\n program\n .command(\"dev\")\n .description(\"Run your Trigger.dev tasks locally\")\n .argument(\"[path]\", \"The path to the project\", \".\")\n .option(\"-c, --config <config file>\", \"The name of the config file, found at [path].\")\n .option(\n \"-p, --project-ref <project ref>\",\n \"The project ref. Required if there is no config file.\"\n )\n .option(\"--debugger\", \"Enable the debugger\")\n .option(\"--debug-otel\", \"Enable OpenTelemetry debugging\")\n .option(\"--skip-update-check\", \"Skip checking for @trigger.dev package updates\")\n ).action(async (path, options) => {\n wrapCommandAction(\"dev\", DevCommandOptions, options, async (opts) => {\n await devCommand(path, opts);\n });\n });\n}\n\nconst MINIMUM_NODE_MAJOR = 18;\nconst MINIMUM_NODE_MINOR = 16;\n\nexport async function devCommand(dir: string, options: DevCommandOptions) {\n try {\n runtimeCheck(MINIMUM_NODE_MAJOR, MINIMUM_NODE_MINOR);\n } catch (e) {\n logger.log(`${chalkError(\"X Error:\")} ${e}`);\n process.exitCode = 1;\n return;\n }\n\n const authorization = await isLoggedIn(options.profile);\n\n if (!authorization.ok) {\n if (authorization.error === \"fetch failed\") {\n logger.log(\n `${chalkError(\n \"X Error:\"\n )} Connecting to the server failed. Please check your internet connection or contact eric@trigger.dev for help.`\n );\n } else {\n logger.log(\n `${chalkError(\"X Error:\")} You must login first. Use the \\`login\\` CLI command.\\n\\n${\n authorization.error\n }`\n );\n }\n process.exitCode = 1;\n return;\n }\n\n const devInstance = await startDev(dir, options, authorization.auth, authorization.dashboardUrl);\n const { waitUntilExit } = devInstance.devReactElement;\n await waitUntilExit();\n}\n\nasync function startDev(\n dir: string,\n options: DevCommandOptions,\n authorization: { apiUrl: string; accessToken: string },\n dashboardUrl: string\n) {\n let rerender: (node: React.ReactNode) => void | undefined;\n\n try {\n if (options.logLevel) {\n logger.loggerLevel = options.logLevel;\n }\n\n await printStandloneInitialBanner(true);\n\n let displayedUpdateMessage = false;\n\n if (!options.skipUpdateCheck) {\n displayedUpdateMessage = await updateTriggerPackages(dir, { ...options }, true, true);\n }\n\n printDevBanner(displayedUpdateMessage);\n\n logger.debug(\"Starting dev session\", { dir, options, authorization });\n\n let config = await readConfig(dir, {\n projectRef: options.projectRef,\n configFile: options.config,\n });\n\n logger.debug(\"Initial config\", { config });\n\n if (config.status === \"error\") {\n logger.error(\"Failed to read config\", config.error);\n process.exit(1);\n }\n\n async function getDevReactElement(\n configParam: ResolvedConfig,\n authorization: { apiUrl: string; accessToken: string },\n configPath?: string,\n configModule?: any\n ) {\n const accessToken = authorization.accessToken;\n const apiUrl = authorization.apiUrl;\n\n apiClient = new CliApiClient(apiUrl, accessToken);\n\n const devEnv = await apiClient.getProjectEnv({\n projectRef: configParam.project,\n env: \"dev\",\n });\n\n if (!devEnv.success) {\n if (devEnv.error === \"Project not found\") {\n logger.error(\n `Project not found: ${configParam.project}. Ensure you are using the correct project ref and CLI profile (use --profile). Currently using the \"${options.profile}\" profile, which points to ${authorization.apiUrl}`\n );\n } else {\n logger.error(\n `Failed to initialize dev environment: ${devEnv.error}. Using project ref ${configParam.project}`\n );\n }\n\n process.exit(1);\n }\n\n const environmentClient = new CliApiClient(apiUrl, devEnv.data.apiKey);\n\n return (\n <DevUI\n dashboardUrl={dashboardUrl}\n config={configParam}\n apiUrl={apiUrl}\n apiKey={devEnv.data.apiKey}\n environmentClient={environmentClient}\n projectName={devEnv.data.name}\n debuggerOn={options.debugger}\n debugOtel={options.debugOtel}\n configPath={configPath}\n configModule={configModule}\n />\n );\n }\n\n const devReactElement = render(\n await getDevReactElement(\n config.config,\n authorization,\n config.status === \"file\" ? config.path : undefined,\n config.status === \"file\" ? config.module : undefined\n )\n );\n\n rerender = devReactElement.rerender;\n\n return {\n devReactElement,\n stop: async () => {\n devReactElement.unmount();\n },\n };\n } catch (e) {\n throw e;\n }\n}\n\ntype DevProps = {\n config: ResolvedConfig;\n dashboardUrl: string;\n apiUrl: string;\n apiKey: string;\n environmentClient: CliApiClient;\n projectName: string;\n debuggerOn: boolean;\n debugOtel: boolean;\n configPath?: string;\n configModule?: any;\n};\n\nfunction useDev({\n config,\n dashboardUrl,\n apiUrl,\n apiKey,\n environmentClient,\n projectName,\n debuggerOn,\n debugOtel,\n configPath,\n configModule,\n}: DevProps) {\n useEffect(() => {\n const websocketUrl = new URL(apiUrl);\n websocketUrl.protocol = websocketUrl.protocol.replace(\"http\", \"ws\");\n websocketUrl.pathname = `/ws`;\n\n const websocket = new WebSocket(websocketUrl.href, [], {\n WebSocket: WebsocketFactory(apiKey),\n connectionTimeout: 10000,\n maxRetries: 10,\n minReconnectionDelay: 1000,\n maxReconnectionDelay: 30000,\n reconnectionDelayGrowFactor: 1.4, // This leads to the following retry times: 1, 1.4, 1.96, 2.74, 3.84, 5.38, 7.53, 10.54, 14.76, 20.66\n maxEnqueuedMessages: 250,\n });\n\n const sender = new ZodMessageSender({\n schema: clientWebsocketMessages,\n sender: async (message) => {\n websocket.send(JSON.stringify(message));\n },\n });\n\n const backgroundWorkerCoordinator = new BackgroundWorkerCoordinator(\n `${dashboardUrl}/projects/v3/${config.project}`\n );\n\n websocket.addEventListener(\"open\", async (event) => {\n logger.debug(\"WebSocket opened\", { event });\n });\n\n websocket.addEventListener(\"close\", (event) => {\n logger.debug(\"WebSocket closed\", { event });\n });\n\n websocket.addEventListener(\"error\", (event) => {\n logger.log(`${chalkError(\"WebSocketError:\")} ${event.error.message}`);\n logger.debug(\"WebSocket error\", { event, rawError: event.error });\n });\n\n // This is the deprecated task heart beat that uses the friendly attempt ID\n // It will only be used if the worker does not support lazy attempts\n backgroundWorkerCoordinator.onWorkerTaskHeartbeat.attach(\n async ({ worker, backgroundWorkerId, id }) => {\n await sender.send(\"BACKGROUND_WORKER_MESSAGE\", {\n backgroundWorkerId,\n data: {\n type: \"TASK_HEARTBEAT\",\n id,\n },\n });\n }\n );\n\n // \"Task Run Heartbeat\" id is the actual run ID that corresponds to the MarQS message ID\n backgroundWorkerCoordinator.onWorkerTaskRunHeartbeat.attach(\n async ({ worker, backgroundWorkerId, id }) => {\n await sender.send(\"BACKGROUND_WORKER_MESSAGE\", {\n backgroundWorkerId,\n data: {\n type: \"TASK_RUN_HEARTBEAT\",\n id,\n },\n });\n }\n );\n\n backgroundWorkerCoordinator.onTaskCompleted.attach(\n async ({ backgroundWorkerId, completion, execution }) => {\n await sender.send(\"BACKGROUND_WORKER_MESSAGE\", {\n backgroundWorkerId,\n data: {\n type: \"TASK_RUN_COMPLETED\",\n completion,\n execution,\n },\n });\n }\n );\n\n backgroundWorkerCoordinator.onTaskFailedToRun.attach(\n async ({ backgroundWorkerId, completion }) => {\n await sender.send(\"BACKGROUND_WORKER_MESSAGE\", {\n backgroundWorkerId,\n data: {\n type: \"TASK_RUN_FAILED_TO_RUN\",\n completion,\n },\n });\n }\n );\n\n backgroundWorkerCoordinator.onWorkerRegistered.attach(async ({ id, worker, record }) => {\n await sender.send(\"READY_FOR_TASKS\", {\n backgroundWorkerId: id,\n });\n });\n\n backgroundWorkerCoordinator.onWorkerDeprecated.attach(async ({ id, worker }) => {\n await sender.send(\"BACKGROUND_WORKER_DEPRECATED\", {\n backgroundWorkerId: id,\n });\n });\n\n websocket.addEventListener(\"message\", async (event) => {\n try {\n const data = JSON.parse(\n typeof event.data === \"string\" ? event.data : new TextDecoder(\"utf-8\").decode(event.data)\n );\n\n const messageHandler = new ZodMessageHandler({\n schema: serverWebsocketMessages,\n messages: {\n SERVER_READY: async (payload) => {\n for (const worker of backgroundWorkerCoordinator.currentWorkers) {\n await sender.send(\"READY_FOR_TASKS\", {\n backgroundWorkerId: worker.id,\n inProgressRuns: worker.worker.inProgressRuns,\n });\n }\n },\n BACKGROUND_WORKER_MESSAGE: async (payload) => {\n await backgroundWorkerCoordinator.handleMessage(\n payload.backgroundWorkerId,\n payload.data\n );\n },\n },\n });\n\n await messageHandler.handleMessage(data);\n } catch (error) {\n if (error instanceof Error) {\n logger.error(\"Error while handling websocket message\", { error: error.message });\n } else {\n logger.error(\n \"Unkown error while handling websocket message, use `-l debug` for additional output\"\n );\n logger.debug(\"Error while handling websocket message\", { error });\n }\n }\n });\n\n let ctx: BuildContext | undefined;\n\n let firstBuild = true;\n\n async function runBuild() {\n if (ctx) {\n // This will stop the watching\n await ctx.dispose();\n }\n\n let latestWorkerContentHash: string | undefined;\n\n const taskFiles = await gatherTaskFiles(config);\n\n const workerFacadePath = join(cliRootPath(), \"workers\", \"dev\", \"worker-facade.js\");\n const workerFacade = readFileSync(workerFacadePath, \"utf-8\");\n\n const workerSetupPath = join(cliRootPath(), \"workers\", \"dev\", \"worker-setup.js\");\n\n let entryPointContents = workerFacade\n .replace(\"__TASKS__\", createTaskFileImports(taskFiles))\n .replace(\n \"__WORKER_SETUP__\",\n `import { tracingSDK, otelTracer, otelLogger, sender } from \"${escapeImportPath(\n workerSetupPath\n )}\";`\n );\n\n if (configPath) {\n configPath = normalize(configPath);\n logger.debug(\"Importing project config from\", { configPath });\n\n entryPointContents = entryPointContents.replace(\n \"__IMPORTED_PROJECT_CONFIG__\",\n `import * as importedConfigExports from \"${escapeImportPath(\n configPath\n )}\"; const importedConfig = importedConfigExports.config; const handleError = importedConfigExports.handleError;`\n );\n } else {\n entryPointContents = entryPointContents.replace(\n \"__IMPORTED_PROJECT_CONFIG__\",\n `const importedConfig = undefined; const handleError = undefined;`\n );\n }\n\n logger.log(chalkGrey(\"○ Building background worker…\"));\n\n ctx = await context({\n stdin: {\n contents: entryPointContents,\n resolveDir: process.cwd(),\n sourcefile: \"__entryPoint.ts\",\n },\n banner: {\n js: `process.on(\"uncaughtException\", function(error, origin) { if (error instanceof Error) { process.send && process.send({ type: \"UNCAUGHT_EXCEPTION\", payload: { error: { name: error.name, message: error.message, stack: error.stack }, origin }, version: \"v1\" }); } else { process.send && process.send({ type: \"UNCAUGHT_EXCEPTION\", payload: { error: { name: \"Error\", message: typeof error === \"string\" ? error : JSON.stringify(error) }, origin }, version: \"v1\" }); } });`,\n },\n bundle: true,\n metafile: true,\n write: false,\n minify: false,\n sourcemap: \"external\", // does not set the //# sourceMappingURL= comment in the file, we handle it ourselves\n logLevel: \"error\",\n platform: \"node\",\n format: \"cjs\", // This is needed to support opentelemetry instrumentation that uses module patching\n target: [\"node18\", \"es2020\"],\n outdir: \"out\",\n define: {\n TRIGGER_API_URL: `\"${config.triggerUrl}\"`,\n __PROJECT_CONFIG__: JSON.stringify(config),\n },\n plugins: [\n mockServerOnlyPlugin(),\n bundleTriggerDevCore(\"workerFacade\", config.tsconfigPath),\n bundleDependenciesPlugin(\n \"workerFacade\",\n {},\n (config.dependenciesToBundle ?? []).concat([/^@trigger.dev/]),\n config.tsconfigPath\n ),\n workerSetupImportConfigPlugin(configPath),\n esbuildDecorators({\n tsconfig: config.tsconfigPath,\n tsx: true,\n force: false,\n }),\n {\n name: \"trigger.dev v3\",\n setup(build) {\n build.onEnd(async (result) => {\n if (result.errors.length > 0) return;\n if (!result || !result.outputFiles) {\n logger.error(\"Build failed: no result\");\n return;\n }\n\n if (!firstBuild) {\n logger.log(chalkGrey(\"○ Building background worker…\"));\n }\n\n const metaOutputKey = join(\"out\", `stdin.js`).replace(/\\\\/g, \"/\");\n\n const metaOutput = result.metafile!.outputs[metaOutputKey];\n\n if (!metaOutput) {\n throw new Error(`Could not find metafile`);\n }\n\n const outputFileKey = join(config.projectDir, metaOutputKey);\n const outputFile = result.outputFiles.find((file) => file.path === outputFileKey);\n\n if (!outputFile) {\n throw new Error(\n `Could not find output file for entry point ${metaOutput.entryPoint}`\n );\n }\n\n const sourceMapFileKey = join(config.projectDir, `${metaOutputKey}.map`);\n const sourceMapFile = result.outputFiles.find(\n (file) => file.path === sourceMapFileKey\n );\n\n const md5Hasher = createHash(\"md5\");\n md5Hasher.update(Buffer.from(outputFile.contents.buffer));\n\n const contentHash = md5Hasher.digest(\"hex\");\n\n if (latestWorkerContentHash === contentHash) {\n logger.log(chalkGrey(\"○ No changes detected, skipping build…\"));\n\n return;\n }\n\n // Create a file at join(dir, \".trigger\", path) with the fileContents\n const fullPath = join(config.projectDir, \".trigger\", `${contentHash}.js`);\n const sourceMapPath = `${fullPath}.map`;\n\n const outputFileWithSourceMap = `${\n outputFile.text\n }\\n//# sourceMappingURL=${basename(sourceMapPath)}`;\n\n await fs.promises.mkdir(dirname(fullPath), { recursive: true });\n await fs.promises.writeFile(fullPath, outputFileWithSourceMap);\n\n logger.debug(`Wrote background worker to ${fullPath}`);\n\n const dependencies = await gatherRequiredDependencies(metaOutput, config);\n\n if (sourceMapFile) {\n const sourceMapPath = `${fullPath}.map`;\n await fs.promises.writeFile(sourceMapPath, sourceMapFile.text);\n }\n\n const environmentVariablesResponse =\n await environmentClient.getEnvironmentVariables(config.project);\n\n const processEnv = await gatherProcessEnv();\n\n const backgroundWorker = new BackgroundWorker(\n fullPath,\n {\n projectConfig: config,\n dependencies,\n env: {\n ...processEnv,\n TRIGGER_API_URL: apiUrl,\n TRIGGER_SECRET_KEY: apiKey,\n ...(environmentVariablesResponse.success\n ? environmentVariablesResponse.data.variables\n : {}),\n },\n debuggerOn,\n debugOtel,\n resolveEnvVariables: createResolveEnvironmentVariablesFunction(configModule),\n },\n environmentClient\n );\n\n try {\n await backgroundWorker.initialize();\n\n latestWorkerContentHash = contentHash;\n\n let packageVersion: string | undefined;\n\n const taskResources: Array<TaskResource> = [];\n\n if (!backgroundWorker.tasks || backgroundWorker.tasks.length === 0) {\n logger.log(\n `${chalkError(\n \"X Error:\"\n )} Worker failed to build: no tasks found. Searched in ${config.triggerDirectories.join(\n \", \"\n )}`\n );\n return;\n }\n\n for (const task of backgroundWorker.tasks) {\n taskResources.push(task);\n\n packageVersion = task.packageVersion;\n }\n\n if (!packageVersion) {\n throw new Error(`Background Worker started without package version`);\n }\n\n // Check for any duplicate task ids\n const taskIds = taskResources.map((task) => task.id);\n const duplicateTaskIds = taskIds.filter(\n (id, index) => taskIds.indexOf(id) !== index\n );\n\n if (duplicateTaskIds.length > 0) {\n logger.error(\n createDuplicateTaskIdOutputErrorMessage(duplicateTaskIds, taskResources)\n );\n return;\n }\n\n logger.debug(\"Creating background worker with tasks\", {\n tasks: taskResources,\n });\n\n const backgroundWorkerBody: CreateBackgroundWorkerRequestBody = {\n localOnly: true,\n metadata: {\n packageVersion,\n cliPackageVersion: packageJson.version,\n tasks: taskResources,\n contentHash: contentHash,\n },\n supportsLazyAttempts: true,\n };\n\n const backgroundWorkerRecord = await environmentClient.createBackgroundWorker(\n config.project,\n backgroundWorkerBody\n );\n\n if (!backgroundWorkerRecord.success) {\n throw new Error(backgroundWorkerRecord.error);\n }\n\n backgroundWorker.metadata = backgroundWorkerRecord.data;\n backgroundWorker;\n\n const testUrl = `${dashboardUrl}/projects/v3/${config.project}/test?environment=dev`;\n const runsUrl = `${dashboardUrl}/projects/v3/${config.project}/runs?envSlug=dev`;\n\n const pipe = chalkGrey(\"|\");\n const bullet = chalkGrey(\"○\");\n const arrow = chalkGrey(\"->\");\n\n const testLink = chalkLink(cliLink(\"Test tasks\", testUrl));\n const runsLink = chalkLink(cliLink(\"View runs\", runsUrl));\n\n const workerStarted = chalkGrey(\"Background worker started\");\n const workerVersion = chalkWorker(backgroundWorkerRecord.data.version);\n\n logger.log(\n `${bullet} ${workerStarted} ${arrow} ${workerVersion} ${pipe} ${testLink} ${pipe} ${runsLink}`\n );\n\n firstBuild = false;\n\n await backgroundWorkerCoordinator.registerWorker(\n backgroundWorkerRecord.data,\n backgroundWorker\n );\n } catch (e) {\n logger.debug(\"Error starting background worker\", {\n error: e,\n });\n\n if (e instanceof TaskMetadataParseError) {\n logTaskMetadataParseError(e.zodIssues, e.tasks);\n return;\n } else if (e instanceof UncaughtExceptionError) {\n const parsedBuildError = parseBuildErrorStack(e.originalError);\n\n if (parsedBuildError && typeof parsedBuildError !== \"string\") {\n logESMRequireError(\n parsedBuildError,\n configPath\n ? { status: \"file\", path: configPath, config }\n : { status: \"in-memory\", config }\n );\n return;\n } else {\n }\n\n if (e.originalError.message || e.originalError.stack) {\n logger.log(\n `${chalkError(\"X Error:\")} Worker failed to start`,\n e.originalError.stack ?? e.originalError.message\n );\n }\n\n return;\n }\n\n const parsedError = parseNpmInstallError(e);\n\n if (typeof parsedError === \"string\") {\n logger.log(`\\n${chalkError(\"X Error:\")} ${parsedError}`);\n } else {\n switch (parsedError.type) {\n case \"package-not-found-error\": {\n logger.log(\n `\\n${chalkError(\"X Error:\")} The package ${chalkPurple(\n parsedError.packageName\n )} could not be found in the npm registry.`\n );\n\n break;\n }\n case \"no-matching-version-error\": {\n logger.log(\n `\\n${chalkError(\"X Error:\")} The package ${chalkPurple(\n parsedError.packageName\n )} could not resolve because the version doesn't exist`\n );\n\n break;\n }\n }\n }\n\n const stderr = backgroundWorker.stderr\n .map((line) => line.trim())\n .filter((line) => line.length > 0)\n .join(\"\\n\");\n\n if (stderr) {\n logger.log(`\\n${chalkError(\"X Error logs:\")}\\n${stderr}`);\n }\n }\n });\n },\n },\n ],\n });\n\n await ctx.watch();\n }\n\n const throttledRebuild = pDebounce(runBuild, 250, { before: true });\n\n const taskFileWatcher = watch(\n config.triggerDirectories.map((triggerDir) => `${triggerDir}/**/*.ts`),\n {\n ignoreInitial: true,\n }\n );\n\n taskFileWatcher.on(\"add\", async (path) => {\n throttledRebuild().catch((error) => {\n logger.error(error);\n });\n });\n\n taskFileWatcher.on(\"unlink\", async (path) => {\n throttledRebuild().catch((error) => {\n logger.error(error);\n });\n });\n\n throttledRebuild().catch((error) => {\n logger.error(error);\n });\n\n return () => {\n const cleanup = async () => {\n logger.debug(`Shutting down dev session for ${config.project}`);\n\n const start = Date.now();\n\n await taskFileWatcher.close();\n\n websocket?.close();\n backgroundWorkerCoordinator.close();\n ctx?.dispose().catch((error) => {\n console.error(error);\n });\n\n logger.debug(`Shutdown completed in ${Date.now() - start}ms`);\n };\n\n cleanup();\n };\n }, [config, apiUrl, apiKey, environmentClient]);\n}\n\nfunction DevUI(props: DevProps) {\n return (\n <Suspense>\n <DevUIImp {...props} />\n </Suspense>\n );\n}\n\nfunction DevUIImp(props: DevProps) {\n const dev = useDev(props);\n\n return (\n <>\n <HotKeys />\n </>\n );\n}\n\nfunction useHotkeys() {\n useInput(async (input, key) => {});\n}\n\nfunction HotKeys() {\n useHotkeys();\n\n return <></>;\n}\n\nfunction WebsocketFactory(apiKey: string) {\n return class extends wsWebSocket {\n constructor(address: string | URL, options?: ClientOptions | ClientRequestArgs) {\n super(address, { ...(options ?? {}), headers: { Authorization: `Bearer ${apiKey}` } });\n }\n };\n}\n\n// Returns the dependencies that are required by the output that are found in output and the CLI package dependencies\n// Returns the dependency names and the version to use (taken from the CLI deps package.json)\nasync function gatherRequiredDependencies(\n outputMeta: Metafile[\"outputs\"][string],\n config: ResolvedConfig\n) {\n const dependencies: Record<string, string> = {};\n\n logger.debug(\"Gathering required dependencies from imports\", {\n imports: outputMeta.imports,\n });\n\n for (const file of outputMeta.imports) {\n if ((file.kind !== \"require-call\" && file.kind !== \"dynamic-import\") || !file.external) {\n continue;\n }\n\n const packageName = detectPackageNameFromImportPath(file.path);\n\n if (dependencies[packageName]) {\n continue;\n }\n\n const internalDependencyVersion =\n (packageJson.dependencies as Record<string, string>)[packageName] ??\n detectDependencyVersion(packageName);\n\n if (internalDependencyVersion) {\n dependencies[packageName] = stripWorkspaceFromVersion(internalDependencyVersion);\n }\n }\n\n if (config.additionalPackages) {\n const projectPackageJson = await readJSONFile(join(config.projectDir, \"package.json\"));\n\n for (const packageName of config.additionalPackages) {\n if (dependencies[packageName]) {\n continue;\n }\n\n const packageParts = parsePackageName(packageName);\n\n if (packageParts.version) {\n dependencies[packageParts.name] = packageParts.version;\n continue;\n } else {\n const externalDependencyVersion = {\n ...projectPackageJson?.devDependencies,\n ...projectPackageJson?.dependencies,\n }[packageName];\n\n if (externalDependencyVersion) {\n dependencies[packageParts.name] = externalDependencyVersion;\n continue;\n } else {\n logger.warn(\n `Could not find version for package ${packageName}, add a version specifier to the package name (e.g. ${packageParts.name}@latest) or add it to your project's package.json`\n );\n }\n }\n }\n }\n\n return dependencies;\n}\n\nfunction createDuplicateTaskIdOutputErrorMessage(\n duplicateTaskIds: Array<string>,\n taskResources: Array<TaskResource>\n) {\n const duplicateTable = duplicateTaskIds\n .map((id) => {\n const tasks = taskResources.filter((task) => task.id === id);\n\n return `\\n\\n${chalkTask(id)} was found in:${tasks\n .map((task) => `\\n${task.filePath} -> ${task.exportName}`)\n .join(\"\")}`;\n })\n .join(\"\");\n\n return `Duplicate ${chalkTask(\"task id\")} detected:${duplicateTable}`;\n}\n\nasync function gatherProcessEnv() {\n const env = {\n ...process.env,\n NODE_ENV: process.env.NODE_ENV ?? \"development\",\n NODE_PATH: await amendNodePathWithPnpmNodeModules(process.env.NODE_PATH),\n };\n\n // Filter out undefined values\n return Object.fromEntries(Object.entries(env).filter(([key, value]) => value !== undefined));\n}\n\nasync function amendNodePathWithPnpmNodeModules(nodePath?: string): Promise<string | undefined> {\n const pnpmModulesPath = await findPnpmNodeModulesPath();\n\n if (!pnpmModulesPath) {\n return nodePath;\n }\n\n if (nodePath) {\n if (nodePath.includes(pnpmModulesPath)) {\n return nodePath;\n }\n\n return `${nodePath}:${pnpmModulesPath}`;\n }\n\n return pnpmModulesPath;\n}\n\nasync function findPnpmNodeModulesPath(): Promise<string | undefined> {\n return await findUp(\n async (directory) => {\n const pnpmModules = join(directory, \"node_modules\", \".pnpm\", \"node_modules\");\n\n const hasPnpmNodeModules = await pathExists(pnpmModules);\n\n if (hasPnpmNodeModules) {\n return pnpmModules;\n }\n },\n { type: \"directory\" }\n );\n}\n\nlet hasResolvedEnvVars = false;\nlet resolvedEnvVars: Record<string, string> = {};\n\nfunction createResolveEnvironmentVariablesFunction(configModule?: any) {\n return async (\n env: Record<string, string>,\n worker: BackgroundWorker\n ): Promise<Record<string, string> | undefined> => {\n if (hasResolvedEnvVars) {\n return resolvedEnvVars;\n }\n\n const $resolvedEnvVars = await callResolveEnvVars(\n configModule,\n env,\n \"dev\",\n worker.params.projectConfig.project\n );\n\n if ($resolvedEnvVars) {\n resolvedEnvVars = $resolvedEnvVars.variables;\n hasResolvedEnvVars = true;\n }\n\n return resolvedEnvVars;\n };\n}\n","import { z } from \"zod\";\n\nexport class UncaughtExceptionError extends Error {\n constructor(\n public readonly originalError: { name: string; message: string; stack?: string },\n public readonly origin: \"uncaughtException\" | \"unhandledRejection\"\n ) {\n super(`Uncaught exception: ${originalError.message}`);\n\n this.name = \"UncaughtExceptionError\";\n }\n}\n\nexport class TaskMetadataParseError extends Error {\n constructor(\n public readonly zodIssues: z.ZodIssue[],\n public readonly tasks: any\n ) {\n super(`Failed to parse task metadata`);\n\n this.name = \"TaskMetadataParseError\";\n }\n}\n\nexport class UnexpectedExitError extends Error {\n constructor(\n public code: number,\n public signal: NodeJS.Signals | null,\n public stderr: string | undefined\n ) {\n super(`Unexpected exit with code ${code}`);\n\n this.name = \"UnexpectedExitError\";\n }\n}\n\nexport class CleanupProcessError extends Error {\n constructor() {\n super(\"Cancelled\");\n\n this.name = \"CleanupProcessError\";\n }\n}\n\nexport class CancelledProcessError extends Error {\n constructor() {\n super(\"Cancelled\");\n\n this.name = \"CancelledProcessError\";\n }\n}\n\nexport class SigKillTimeoutProcessError extends Error {\n constructor() {\n super(\"Process kill timeout\");\n\n this.name = \"SigKillTimeoutProcessError\";\n }\n}\n\nexport class GracefulExitTimeoutError extends Error {\n constructor() {\n super(\"Graceful exit timeout\");\n\n this.name = \"GracefulExitTimeoutError\";\n }\n}\n\nexport function getFriendlyErrorMessage(\n code: number,\n signal: NodeJS.Signals | null,\n stderr: string | undefined,\n dockerMode = true\n) {\n const message = (text: string) => {\n if (signal) {\n return `[${signal}] ${text}`;\n } else {\n return text;\n }\n };\n\n if (code === 137) {\n if (dockerMode) {\n return message(\n \"Process ran out of memory! Try choosing a machine preset with more memory for this task.\"\n );\n } else {\n // Note: containerState reason and message should be checked to clarify the error\n return message(\n \"Process most likely ran out of memory, but we can't be certain. Try choosing a machine preset with more memory for this task.\"\n );\n }\n }\n\n if (stderr?.includes(\"OOMErrorHandler\")) {\n return message(\n \"Process ran out of memory! Try choosing a machine preset with more memory for this task.\"\n );\n }\n\n return message(`Process exited with code ${code}.`);\n}\n","import {\n BackgroundWorkerProperties,\n BackgroundWorkerServerMessages,\n CreateBackgroundWorkerResponse,\n ResolvedConfig,\n SemanticInternalAttributes,\n TaskMetadataWithFilePath,\n TaskRunBuiltInError,\n TaskRunError,\n TaskRunErrorCodes,\n TaskRunExecution,\n TaskRunExecutionLazyAttemptPayload,\n TaskRunExecutionPayload,\n TaskRunExecutionResult,\n TaskRunFailedExecutionResult,\n childToWorkerMessages,\n correctErrorStackTrace,\n formatDurationMilliseconds,\n workerToChildMessages,\n} from \"@trigger.dev/core/v3\";\nimport { ZodMessageHandler, ZodMessageSender } from \"@trigger.dev/core/v3/zodMessageHandler\";\nimport dotenv from \"dotenv\";\nimport { Evt } from \"evt\";\nimport { ChildProcess, fork } from \"node:child_process\";\nimport { dirname, resolve } from \"node:path\";\nimport {\n chalkError,\n chalkGrey,\n chalkLink,\n chalkRun,\n chalkSuccess,\n chalkTask,\n chalkWarning,\n chalkWorker,\n cliLink,\n prettyPrintDate,\n} from \"../../utilities/cliOutput.js\";\nimport { safeDeleteFileSync } from \"../../utilities/fileSystem.js\";\nimport { installPackages } from \"../../utilities/installPackages.js\";\nimport { logger } from \"../../utilities/logger.js\";\nimport {\n CancelledProcessError,\n CleanupProcessError,\n SigKillTimeoutProcessError,\n TaskMetadataParseError,\n UncaughtExceptionError,\n UnexpectedExitError,\n getFriendlyErrorMessage,\n} from \"../common/errors.js\";\nimport { CliApiClient } from \"../../apiClient.js\";\n\nexport type CurrentWorkers = BackgroundWorkerCoordinator[\"currentWorkers\"];\nexport class BackgroundWorkerCoordinator {\n public onTaskCompleted: Evt<{\n backgroundWorkerId: string;\n completion: TaskRunExecutionResult;\n worker: BackgroundWorker;\n execution: TaskRunExecution;\n }> = new Evt();\n public onTaskFailedToRun: Evt<{\n backgroundWorkerId: string;\n worker: BackgroundWorker;\n completion: TaskRunFailedExecutionResult;\n }> = new Evt();\n public onWorkerRegistered: Evt<{\n worker: BackgroundWorker;\n id: string;\n record: CreateBackgroundWorkerResponse;\n }> = new Evt();\n\n /**\n * @deprecated use onWorkerTaskRunHeartbeat instead\n */\n public onWorkerTaskHeartbeat: Evt<{\n id: string;\n backgroundWorkerId: string;\n worker: BackgroundWorker;\n }> = new Evt();\n public onWorkerTaskRunHeartbeat: Evt<{\n id: string;\n backgroundWorkerId: string;\n worker: BackgroundWorker;\n }> = new Evt();\n public onWorkerDeprecated: Evt<{ worker: BackgroundWorker; id: string }> = new Evt();\n private _backgroundWorkers: Map<string, BackgroundWorker> = new Map();\n private _records: Map<string, CreateBackgroundWorkerResponse> = new Map();\n private _deprecatedWorkers: Set<string> = new Set();\n\n constructor(private baseURL: string) {\n this.onTaskCompleted.attach(async ({ completion }) => {\n if (!completion.ok && typeof completion.retry !== \"undefined\") {\n return;\n }\n\n await this.#notifyWorkersOfTaskCompletion(completion);\n });\n\n this.onTaskFailedToRun.attach(async ({ completion }) => {\n await this.#notifyWorkersOfTaskCompletion(completion);\n });\n }\n\n async #notifyWorkersOfTaskCompletion(completion: TaskRunExecutionResult) {\n for (const worker of this._backgroundWorkers.values()) {\n await worker.taskRunCompletedNotification(completion);\n }\n }\n\n get currentWorkers() {\n return Array.from(this._backgroundWorkers.entries()).map(([id, worker]) => ({\n id,\n worker,\n record: this._records.get(id)!,\n isDeprecated: this._deprecatedWorkers.has(id),\n }));\n }\n\n async registerWorker(record: CreateBackgroundWorkerResponse, worker: BackgroundWorker) {\n for (const [workerId, existingWorker] of this._backgroundWorkers.entries()) {\n if (workerId === record.id) {\n continue;\n }\n\n this._deprecatedWorkers.add(workerId);\n this.onWorkerDeprecated.post({ worker: existingWorker, id: workerId });\n }\n\n this._backgroundWorkers.set(record.id, worker);\n this._records.set(record.id, record);\n this.onWorkerRegistered.post({ worker, id: record.id, record });\n\n worker.onTaskHeartbeat.attach((id) => {\n this.onWorkerTaskHeartbeat.post({ id, backgroundWorkerId: record.id, worker });\n });\n\n worker.onTaskRunHeartbeat.attach((id) => {\n this.onWorkerTaskRunHeartbeat.post({ id, backgroundWorkerId: record.id, worker });\n });\n }\n\n close() {\n for (const worker of this._backgroundWorkers.values()) {\n worker.close();\n }\n\n this._backgroundWorkers.clear();\n this._records.clear();\n }\n\n async handleMessage(id: string, message: BackgroundWorkerServerMessages) {\n logger.debug(`Received message from worker ${id}`, JSON.stringify({ workerMessage: message }));\n\n switch (message.type) {\n case \"EXECUTE_RUNS\": {\n await Promise.all(message.payloads.map((payload) => this.#executeTaskRun(id, payload)));\n break;\n }\n case \"CANCEL_ATTEMPT\": {\n // Need to cancel the attempt somehow here\n const worker = this._backgroundWorkers.get(id);\n\n if (!worker) {\n logger.error(`Could not find worker ${id}`);\n return;\n }\n\n await worker.cancelRun(message.taskRunId);\n break;\n }\n case \"EXECUTE_RUN_LAZY_ATTEMPT\": {\n await this.#executeTaskRunLazyAttempt(id, message.payload);\n }\n }\n }\n\n async #executeTaskRunLazyAttempt(id: string, payload: TaskRunExecutionLazyAttemptPayload) {\n const worker = this._backgroundWorkers.get(id);\n\n if (!worker) {\n logger.error(`Could not find worker ${id}`);\n return;\n }\n\n const record = this._records.get(id);\n\n if (!record) {\n logger.error(`Could not find worker record ${id}`);\n return;\n }\n\n try {\n const { completion, execution } = await worker.executeTaskRunLazyAttempt(\n payload,\n this.baseURL\n );\n\n this.onTaskCompleted.post({\n completion,\n execution,\n worker,\n backgroundWorkerId: id,\n });\n } catch (error) {\n this.onTaskFailedToRun.post({\n backgroundWorkerId: id,\n worker,\n completion: {\n ok: false,\n id: payload.runId,\n retry: undefined,\n error:\n error instanceof Error\n ? {\n type: \"BUILT_IN_ERROR\",\n name: error.name,\n message: error.message,\n stackTrace: error.stack ?? \"\",\n }\n : {\n type: \"BUILT_IN_ERROR\",\n name: \"UnknownError\",\n message: String(error),\n stackTrace: \"\",\n },\n },\n });\n }\n }\n\n async #executeTaskRun(id: string, payload: TaskRunExecutionPayload) {\n const worker = this._backgroundWorkers.get(id);\n\n if (!worker) {\n logger.error(`Could not find worker ${id}`);\n return;\n }\n\n const record = this._records.get(id);\n\n if (!record) {\n logger.error(`Could not find worker record ${id}`);\n return;\n }\n\n const completion = await worker.executeTaskRun(payload, this.baseURL);\n\n this.onTaskCompleted.post({\n completion,\n execution: payload.execution,\n worker,\n backgroundWorkerId: id,\n });\n }\n}\n\nexport type BackgroundWorkerParams = {\n env: Record<string, string>;\n dependencies?: Record<string, string>;\n projectConfig: ResolvedConfig;\n debuggerOn: boolean;\n debugOtel?: boolean;\n resolveEnvVariables?: (\n env: Record<string, string>,\n worker: BackgroundWorker\n ) => Promise<Record<string, string> | undefined>;\n};\n\nexport class BackgroundWorker {\n private _initialized: boolean = false;\n private _handler = new ZodMessageHandler({\n schema: childToWorkerMessages,\n });\n\n /**\n * @deprecated use onTaskRunHeartbeat instead\n */\n public onTaskHeartbeat: Evt<string> = new Evt();\n public onTaskRunHeartbeat: Evt<string> = new Evt();\n private _onClose: Evt<void> = new Evt();\n\n public tasks: Array<TaskMetadataWithFilePath> = [];\n public metadata: BackgroundWorkerProperties | undefined;\n public stderr: Array<string> = [];\n\n _taskRunProcesses: Map<string, TaskRunProcess> = new Map();\n private _taskRunProcessesBeingKilled: Set<number> = new Set();\n\n private _closed: boolean = false;\n\n private _fullEnv: Record<string, string> = {};\n\n constructor(\n public path: string,\n public params: BackgroundWorkerParams,\n private apiClient: CliApiClient\n ) {}\n\n close() {\n if (this._closed) {\n return;\n }\n\n this._closed = true;\n\n this.onTaskHeartbeat.detach();\n this.onTaskRunHeartbeat.detach();\n\n // We need to close all the task run processes\n for (const taskRunProcess of this._taskRunProcesses.values()) {\n taskRunProcess.cleanup(true);\n }\n\n // Delete worker files\n this._onClose.post();\n\n safeDeleteFileSync(this.path);\n safeDeleteFileSync(`${this.path}.map`);\n }\n\n get inProgressRuns(): Array<string> {\n return Array.from(this._taskRunProcesses.keys());\n }\n\n async initialize() {\n if (this._initialized) {\n throw new Error(\"Worker already initialized\");\n }\n\n // Install the dependencies in dirname(this.path) using npm and child_process\n if (this.params.dependencies) {\n await installPackages(this.params.dependencies, { cwd: dirname(this.path) });\n }\n\n let resolved = false;\n\n const cwd = dirname(this.path);\n\n this._fullEnv = {\n ...this.params.env,\n ...this.#readEnvVars(),\n ...(this.params.debugOtel ? { OTEL_LOG_LEVEL: \"debug\" } : {}),\n };\n\n let resolvedEnvVars: Record<string, string> = {};\n\n if (this.params.resolveEnvVariables) {\n const resolvedEnv = await this.params.resolveEnvVariables(this._fullEnv, this);\n\n if (resolvedEnv) {\n resolvedEnvVars = resolvedEnv;\n }\n }\n\n this._fullEnv = {\n ...this._fullEnv,\n ...resolvedEnvVars,\n };\n\n logger.debug(\"Initializing worker\", { path: this.path, cwd, fullEnv: this._fullEnv });\n\n this.tasks = await new Promise<Array<TaskMetadataWithFilePath>>((resolve, reject) => {\n const child = fork(this.path, {\n stdio: [/*stdin*/ \"ignore\", /*stdout*/ \"pipe\", /*stderr*/ \"pipe\", \"ipc\"],\n cwd,\n env: this._fullEnv,\n });\n\n // Set a timeout to kill the child process if it doesn't respond\n const timeout = setTimeout(() => {\n if (resolved) {\n return;\n }\n\n resolved = true;\n child.kill();\n reject(new Error(\"Worker timed out\"));\n }, 20_000);\n\n child.on(\"message\", async (msg: any) => {\n const message = this._handler.parseMessage(msg);\n\n if (!message.success) {\n clearTimeout(timeout);\n resolved = true;\n reject(new Error(`Failed to parse message: ${message.error}`));\n child.kill();\n return;\n }\n\n if (message.data.type === \"TASKS_READY\" && !resolved) {\n clearTimeout(timeout);\n resolved = true;\n resolve(message.data.payload.tasks);\n child.kill();\n } else if (message.data.type === \"UNCAUGHT_EXCEPTION\") {\n clearTimeout(timeout);\n resolved = true;\n reject(\n new UncaughtExceptionError(message.data.payload.error, message.data.payload.origin)\n );\n child.kill();\n } else if (message.data.type === \"TASKS_FAILED_TO_PARSE\") {\n clearTimeout(timeout);\n resolved = true;\n reject(\n new TaskMetadataParseError(message.data.payload.zodIssues, message.data.payload.tasks)\n );\n child.kill();\n }\n });\n\n child.on(\"exit\", (code) => {\n if (!resolved) {\n clearTimeout(timeout);\n resolved = true;\n reject(new Error(`Worker exited with code ${code}`));\n }\n });\n\n child.stdout?.on(\"data\", (data) => {\n logger.log(data.toString());\n });\n\n child.stderr?.on(\"data\", (data) => {\n this.stderr.push(data.toString());\n });\n });\n\n this._initialized = true;\n }\n\n // We need to notify all the task run processes that a task run has completed,\n // in case they are waiting for it through triggerAndWait\n async taskRunCompletedNotification(completion: TaskRunExecutionResult) {\n for (const taskRunProcess of this._taskRunProcesses.values()) {\n taskRunProcess.taskRunCompletedNotification(completion);\n }\n }\n\n #prefixedMessage(payload: TaskRunExecutionPayload, message: string = \"\") {\n return `[${payload.execution.run.id}.${payload.execution.attempt.number}] ${message}`;\n }\n\n async #getFreshTaskRunProcess(\n payload: TaskRunExecutionPayload,\n messageId?: string\n ): Promise<TaskRunProcess> {\n logger.debug(this.#prefixedMessage(payload, \"getFreshTaskRunProcess()\"));\n\n if (!this.metadata) {\n throw new Error(\"Worker not registered\");\n }\n\n this._closed = false;\n\n logger.debug(this.#prefixedMessage(payload, \"killing current task run process before attempt\"));\n\n await this.#killCurrentTaskRunProcessBeforeAttempt(payload.execution.run.id);\n\n logger.debug(this.#prefixedMessage(payload, \"creating new task run process\"));\n\n const taskRunProcess = new TaskRunProcess(\n payload.execution.run.id,\n payload.execution.run.isTest,\n this.path,\n {\n ...this._fullEnv,\n ...(payload.environment ?? {}),\n ...this.#readEnvVars(),\n },\n this.metadata,\n this.params,\n messageId\n );\n\n taskRunProcess.onExit.attach(({ pid }) => {\n logger.debug(this.#prefixedMessage(payload, \"onExit()\"), { pid });\n\n const taskRunProcess = this._taskRunProcesses.get(payload.execution.run.id);\n\n // Only delete the task run process if the pid matches\n if (taskRunProcess?.pid === pid) {\n this._taskRunProcesses.delete(payload.execution.run.id);\n }\n\n if (pid) {\n this._taskRunProcessesBeingKilled.delete(pid);\n }\n });\n\n taskRunProcess.onIsBeingKilled.attach((pid) => {\n if (pid) {\n this._taskRunProcessesBeingKilled.add(pid);\n }\n });\n\n taskRunProcess.onTaskHeartbeat.attach((id) => {\n this.onTaskHeartbeat.post(id);\n });\n\n taskRunProcess.onTaskRunHeartbeat.attach((id) => {\n this.onTaskRunHeartbeat.post(id);\n });\n\n await taskRunProcess.initialize();\n\n this._taskRunProcesses.set(payload.execution.run.id, taskRunProcess);\n\n return taskRunProcess;\n }\n\n async #killCurrentTaskRunProcessBeforeAttempt(runId: string) {\n const taskRunProcess = this._taskRunProcesses.get(runId);\n\n if (!taskRunProcess) {\n logger.debug(`[${runId}] no current task process to kill`);\n return;\n }\n\n logger.debug(`[${runId}] killing current task process`, {\n pid: taskRunProcess.pid,\n });\n\n if (taskRunProcess.isBeingKilled) {\n if (this._taskRunProcessesBeingKilled.size > 1) {\n await this.#tryGracefulExit(taskRunProcess);\n } else {\n // If there's only one or none being killed, don't do anything so we can create a fresh one in parallel\n }\n } else {\n // It's not being killed, so kill it\n if (this._taskRunProcessesBeingKilled.size > 0) {\n await this.#tryGracefulExit(taskRunProcess);\n } else {\n // There's none being killed yet, so we can kill it without waiting. We still set a timeout to kill it forcefully just in case it sticks around.\n taskRunProcess.kill(\"SIGTERM\", 5_000).catch(() => {});\n }\n }\n }\n\n async #tryGracefulExit(\n taskRunProcess: TaskRunProcess,\n kill = false,\n initialSignal: number | NodeJS.Signals = \"SIGTERM\"\n ) {\n try {\n const initialExit = taskRunProcess.onExit.waitFor(5_000);\n\n if (kill) {\n taskRunProcess.kill(initialSignal);\n }\n\n await initialExit;\n } catch (error) {\n logger.error(\"TaskRunProcess graceful kill timeout exceeded\", error);\n\n this.#tryForcefulExit(taskRunProcess);\n }\n }\n\n async #tryForcefulExit(taskRunProcess: TaskRunProcess) {\n try {\n const forcedKill = taskRunProcess.onExit.waitFor(5_000);\n taskRunProcess.kill(\"SIGKILL\");\n await forcedKill;\n } catch (error) {\n logger.error(\"TaskRunProcess forced kill timeout exceeded\", error);\n throw new SigKillTimeoutProcessError();\n }\n }\n\n async cancelRun(taskRunId: string) {\n const taskRunProcess = this._taskRunProcesses.get(taskRunId);\n\n if (!taskRunProcess) {\n return;\n }\n\n await taskRunProcess.cancel();\n }\n\n async executeTaskRunLazyAttempt(payload: TaskRunExecutionLazyAttemptPayload, baseURL: string) {\n const attemptResponse = await this.apiClient.createTaskRunAttempt(payload.runId);\n\n if (!attemptResponse.success) {\n throw new Error(`Failed to create task run attempt: ${attemptResponse.error}`);\n }\n\n const execution = attemptResponse.data;\n\n const completion = await this.executeTaskRun(\n { execution, traceContext: payload.traceContext, environment: payload.environment },\n baseURL,\n payload.messageId\n );\n\n return { execution, completion };\n }\n\n // We need to fork the process before we can execute any tasks\n async executeTaskRun(\n payload: TaskRunExecutionPayload,\n baseURL: string,\n messageId?: string\n ): Promise<TaskRunExecutionResult> {\n if (this._closed) {\n throw new Error(\"Worker is closed\");\n }\n\n if (!this.metadata) {\n throw new Error(\"Worker not registered\");\n }\n\n const { execution } = payload;\n // ○ Mar 27 09:17:25.653 -> View logs | 20240326.20 | create-avatar | run_slufhjdfiv8ejnrkw9dsj.1\n\n const logsUrl = `${baseURL}/runs/${execution.run.id}`;\n\n const pipe = chalkGrey(\"|\");\n const bullet = chalkGrey(\"○\");\n const link = chalkLink(cliLink(\"View logs\", logsUrl));\n let timestampPrefix = chalkGrey(prettyPrintDate(payload.execution.attempt.startedAt));\n const workerPrefix = chalkWorker(this.metadata.version);\n const taskPrefix = chalkTask(execution.task.id);\n const runId = chalkRun(`${execution.run.id}.${execution.attempt.number}`);\n\n logger.log(\n `${bullet} ${timestampPrefix} ${chalkGrey(\n \"->\"\n )} ${link} ${pipe} ${workerPrefix} ${pipe} ${taskPrefix} ${pipe} ${runId}`\n );\n\n const now = performance.now();\n\n const completion = await this.#doExecuteTaskRun(payload, messageId);\n\n const elapsed = performance.now() - now;\n\n const retryingText = chalkGrey(\n !completion.ok && completion.skippedRetrying\n ? \" (retrying skipped)\"\n : !completion.ok && completion.retry !== undefined\n ? ` (retrying in ${completion.retry.delay}ms)`\n : \"\"\n );\n\n const resultText = !completion.ok\n ? completion.error.type === \"INTERNAL_ERROR\" &&\n (completion.error.code === TaskRunErrorCodes.TASK_EXECUTION_ABORTED ||\n completion.error.code === TaskRunErrorCodes.TASK_RUN_CANCELLED)\n ? chalkWarning(\"Cancelled\")\n : `${chalkError(\"Error\")}${retryingText}`\n : chalkSuccess(\"Success\");\n\n const errorText = !completion.ok\n ? formatErrorLog(completion.error)\n : \"retry\" in completion\n ? `retry in ${completion.retry}ms`\n : \"\";\n\n const elapsedText = chalkGrey(`(${formatDurationMilliseconds(elapsed, { style: \"short\" })})`);\n\n timestampPrefix = chalkGrey(prettyPrintDate());\n\n logger.log(\n `${bullet} ${timestampPrefix} ${chalkGrey(\n \"->\"\n )} ${link} ${pipe} ${workerPrefix} ${pipe} ${taskPrefix} ${pipe} ${runId} ${pipe} ${resultText} ${elapsedText}${errorText}`\n );\n\n return completion;\n }\n\n async #doExecuteTaskRun(\n payload: TaskRunExecutionPayload,\n messageId?: string\n ): Promise<TaskRunExecutionResult> {\n try {\n const taskRunProcess = await this.#getFreshTaskRunProcess(payload, messageId);\n\n logger.debug(this.#prefixedMessage(payload, \"executing task run\"), {\n pid: taskRunProcess.pid,\n });\n\n const result = await taskRunProcess.executeTaskRun(payload);\n\n // Always kill the worker\n await taskRunProcess.cleanup(true);\n\n if (result.ok) {\n return result;\n }\n\n const error = result.error;\n\n if (error.type === \"BUILT_IN_ERROR\") {\n const mappedError = await this.#correctError(error, payload.execution);\n\n return {\n ...result,\n error: mappedError,\n };\n }\n\n return result;\n } catch (e) {\n if (e instanceof CancelledProcessError) {\n return {\n id: payload.execution.attempt.id,\n ok: false,\n retry: undefined,\n error: {\n type: \"INTERNAL_ERROR\",\n code: TaskRunErrorCodes.TASK_RUN_CANCELLED,\n },\n };\n }\n\n if (e instanceof CleanupProcessError) {\n return {\n id: payload.execution.attempt.id,\n ok: false,\n retry: undefined,\n error: {\n type: \"INTERNAL_ERROR\",\n code: TaskRunErrorCodes.TASK_EXECUTION_ABORTED,\n },\n };\n }\n\n if (e instanceof UnexpectedExitError) {\n return {\n id: payload.execution.attempt.id,\n ok: false,\n retry: undefined,\n error: {\n type: \"INTERNAL_ERROR\",\n code: TaskRunErrorCodes.TASK_PROCESS_EXITED_WITH_NON_ZERO_CODE,\n message: getFriendlyErrorMessage(e.code, e.signal, e.stderr),\n stackTrace: e.stderr,\n },\n };\n }\n\n return {\n id: payload.execution.attempt.id,\n ok: false,\n retry: undefined,\n error: {\n type: \"INTERNAL_ERROR\",\n code: TaskRunErrorCodes.TASK_EXECUTION_FAILED,\n },\n };\n }\n }\n\n #readEnvVars() {\n const result: { [key: string]: string } = {};\n\n dotenv.config({\n processEnv: result,\n path: [\".env\", \".env.local\", \".env.development.local\"].map((p) => resolve(process.cwd(), p)),\n });\n\n process.env.TRIGGER_API_URL && (result.TRIGGER_API_URL = process.env.TRIGGER_API_URL);\n\n // remove TRIGGER_API_URL and TRIGGER_SECRET_KEY, since those should be coming from the worker\n delete result.TRIGGER_API_URL;\n delete result.TRIGGER_SECRET_KEY;\n\n return result;\n }\n\n async #correctError(\n error: TaskRunBuiltInError,\n execution: TaskRunExecution\n ): Promise<TaskRunBuiltInError> {\n return {\n ...error,\n stackTrace: correctErrorStackTrace(error.stackTrace, this.params.projectConfig.projectDir),\n };\n }\n}\n\nclass TaskRunProcess {\n private _handler = new ZodMessageHandler({\n schema: childToWorkerMessages,\n });\n private _sender: ZodMessageSender<typeof workerToChildMessages>;\n private _child: ChildProcess | undefined;\n private _childPid?: number;\n private _attemptPromises: Map<\n string,\n { resolver: (value: TaskRunExecutionResult) => void; rejecter: (err?: any) => void }\n > = new Map();\n private _attemptStatuses: Map<string, \"PENDING\" | \"REJECTED\" | \"RESOLVED\"> = new Map();\n private _currentExecution: TaskRunExecution | undefined;\n private _isBeingKilled: boolean = false;\n private _isBeingCancelled: boolean = false;\n private _stderr: Array<string> = [];\n /**\n * @deprecated use onTaskRunHeartbeat instead\n */\n public onTaskHeartbeat: Evt<string> = new Evt();\n public onTaskRunHeartbeat: Evt<string> = new Evt();\n public onExit: Evt<{ code: number | null; signal: NodeJS.Signals | null; pid?: number }> =\n new Evt();\n public onIsBeingKilled: Evt<number | undefined> = new Evt();\n\n constructor(\n private runId: string,\n private isTest: boolean,\n private path: string,\n private env: NodeJS.ProcessEnv,\n private metadata: BackgroundWorkerProperties,\n private worker: BackgroundWorkerParams,\n private messageId?: string\n ) {\n this._sender = new ZodMessageSender({\n schema: workerToChildMessages,\n sender: async (message) => {\n if (this._child?.connected && !this._isBeingKilled && !this._child.killed) {\n this._child.send(message);\n }\n },\n });\n }\n\n async cancel() {\n this._isBeingCancelled = true;\n\n await this.cleanup(true);\n }\n\n async initialize() {\n const fullEnv = {\n ...(this.isTest ? { TRIGGER_LOG_LEVEL: \"debug\" } : {}),\n ...this.env,\n OTEL_RESOURCE_ATTRIBUTES: JSON.stringify({\n [SemanticInternalAttributes.PROJECT_DIR]: this.worker.projectConfig.projectDir,\n }),\n OTEL_EXPORTER_OTLP_COMPRESSION: \"none\",\n ...(this.worker.debugOtel ? { OTEL_LOG_LEVEL: \"debug\" } : {}),\n };\n\n const cwd = dirname(this.path);\n\n logger.debug(`[${this.runId}] initializing task run process`, {\n env: fullEnv,\n path: this.path,\n cwd,\n });\n\n this._child = fork(this.path, {\n stdio: [/*stdin*/ \"ignore\", /*stdout*/ \"pipe\", /*stderr*/ \"pipe\", \"ipc\"],\n cwd,\n env: fullEnv,\n execArgv: this.worker.debuggerOn\n ? [\"--inspect-brk\", \"--trace-uncaught\", \"--no-warnings=ExperimentalWarning\"]\n : [\"--trace-uncaught\", \"--no-warnings=ExperimentalWarning\"],\n });\n this._childPid = this._child?.pid;\n\n this._child.on(\"message\", this.#handleMessage.bind(this));\n this._child.on(\"exit\", this.#handleExit.bind(this));\n this._child.stdout?.on(\"data\", this.#handleLog.bind(this));\n this._child.stderr?.on(\"data\", this.#handleStdErr.bind(this));\n }\n\n async cleanup(kill: boolean = false) {\n if (kill && this._isBeingKilled) {\n return;\n }\n\n if (kill) {\n this._isBeingKilled = true;\n this.onIsBeingKilled.post(this._child?.pid);\n }\n\n logger.debug(`[${this.runId}] cleaning up task run process`, { kill, pid: this.pid });\n\n await this._sender.send(\"CLEANUP\", {\n flush: true,\n kill,\n });\n\n // FIXME: Something broke READY_TO_DISPOSE. We never receive it, so we always have to kill the process after the timeout below.\n\n if (!kill) {\n return;\n }\n\n // Set a timeout to kill the child process if it hasn't been killed within 5 seconds\n setTimeout(() => {\n if (this._child && !this._child.killed) {\n logger.debug(`[${this.runId}] killing task run process after timeout`, { pid: this.pid });\n\n this._child.kill();\n }\n }, 5000);\n }\n\n async executeTaskRun(payload: TaskRunExecutionPayload): Promise<TaskRunExecutionResult> {\n let resolver: (value: TaskRunExecutionResult) => void;\n let rejecter: (err?: any) => void;\n\n const promise = new Promise<TaskRunExecutionResult>((resolve, reject) => {\n resolver = resolve;\n rejecter = reject;\n });\n\n this._attemptStatuses.set(payload.execution.attempt.id, \"PENDING\");\n\n // @ts-expect-error - We know that the resolver and rejecter are defined\n this._attemptPromises.set(payload.execution.attempt.id, { resolver, rejecter });\n\n const { execution, traceContext } = payload;\n\n this._currentExecution = execution;\n\n await this._sender.send(\"EXECUTE_TASK_RUN\", {\n execution,\n traceContext,\n metadata: this.metadata,\n });\n\n const result = await promise;\n\n this._currentExecution = undefined;\n\n return result;\n }\n\n taskRunCompletedNotification(completion: TaskRunExecutionResult) {\n if (!completion.ok && typeof completion.retry !== \"undefined\") {\n return;\n }\n\n if (completion.id === this.runId) {\n // We don't need to notify the task run process if it's the same as the one we're running\n return;\n }\n\n logger.debug(`[${this.runId}] task run completed notification`, {\n completion,\n });\n\n this._sender.send(\"TASK_RUN_COMPLETED_NOTIFICATION\", {\n version: \"v2\",\n completion,\n });\n }\n\n async #handleMessage(msg: any) {\n const message = this._handler.parseMessage(msg);\n\n if (!message.success) {\n logger.error(`Dropping message: ${message.error}`, { message });\n return;\n }\n\n switch (message.data.type) {\n case \"TASK_RUN_COMPLETED\": {\n const { result, execution } = message.data.payload;\n\n logger.debug(`[${this.runId}] task run completed`, {\n result,\n });\n\n const promiseStatus = this._attemptStatuses.get(execution.attempt.id);\n\n if (promiseStatus !== \"PENDING\") {\n return;\n }\n\n this._attemptStatuses.set(execution.attempt.id, \"RESOLVED\");\n\n const attemptPromise = this._attemptPromises.get(execution.attempt.id);\n\n if (!attemptPromise) {\n return;\n }\n\n const { resolver } = attemptPromise;\n\n resolver(result);\n\n break;\n }\n case \"READY_TO_DISPOSE\": {\n logger.debug(`[${this.runId}] task run process is ready to dispose`);\n\n this.#kill();\n\n break;\n }\n case \"TASK_HEARTBEAT\": {\n if (this.messageId) {\n this.onTaskRunHeartbeat.post(this.messageId);\n } else {\n this.onTaskHeartbeat.post(message.data.payload.id);\n }\n\n break;\n }\n case \"TASKS_READY\": {\n break;\n }\n }\n }\n\n async #handleExit(code: number | null, signal: NodeJS.Signals | null) {\n logger.debug(`[${this.runId}] handle task run process exit`, { code, signal, pid: this.pid });\n\n // Go through all the attempts currently pending and reject them\n for (const [id, status] of this._attemptStatuses.entries()) {\n if (status === \"PENDING\") {\n this._attemptStatuses.set(id, \"REJECTED\");\n\n const attemptPromise = this._attemptPromises.get(id);\n\n if (!attemptPromise) {\n continue;\n }\n\n const { rejecter } = attemptPromise;\n\n if (this._isBeingCancelled) {\n rejecter(new CancelledProcessError());\n } else if (this._isBeingKilled) {\n rejecter(new CleanupProcessError());\n } else {\n rejecter(\n new UnexpectedExitError(\n code ?? -1,\n signal,\n this._stderr.length ? this._stderr.join(\"\\n\") : undefined\n )\n );\n }\n }\n }\n\n this.onExit.post({ code, signal, pid: this.pid });\n }\n\n #handleLog(data: Buffer) {\n if (!this._currentExecution) {\n logger.log(`${chalkGrey(\"○\")} ${chalkGrey(prettyPrintDate(new Date()))} ${data.toString()}`);\n\n return;\n }\n\n const runId = chalkRun(\n `${this._currentExecution.run.id}.${this._currentExecution.attempt.number}`\n );\n\n logger.log(\n `${chalkGrey(\"○\")} ${chalkGrey(prettyPrintDate(new Date()))} ${runId} ${data.toString()}`\n );\n }\n\n #handleStdErr(data: Buffer) {\n if (this._isBeingKilled) {\n return;\n }\n\n if (!this._currentExecution) {\n logger.log(`${chalkError(\"○\")} ${chalkGrey(prettyPrintDate(new Date()))} ${data.toString()}`);\n\n return;\n }\n\n const runId = chalkRun(\n `${this._currentExecution.run.id}.${this._currentExecution.attempt.number}`\n );\n\n const errorLine = data.toString();\n\n logger.log(\n `${chalkError(\"○\")} ${chalkGrey(prettyPrintDate(new Date()))} ${runId} ${errorLine}`\n );\n\n if (this._stderr.length > 100) {\n this._stderr.shift();\n }\n this._stderr.push(errorLine);\n }\n\n #kill() {\n logger.debug(`[${this.runId}] #kill()`, { pid: this.pid });\n\n if (this._child && !this._child.killed) {\n this._child?.kill();\n }\n }\n\n async kill(signal?: number | NodeJS.Signals, timeoutInMs?: number) {\n logger.debug(`[${this.runId}] killing task run process`, {\n signal,\n timeoutInMs,\n pid: this.pid,\n });\n\n this._isBeingKilled = true;\n\n const killTimeout = this.onExit.waitFor(timeoutInMs);\n\n this.onIsBeingKilled.post(this._child?.pid);\n this._child?.kill(signal);\n\n if (timeoutInMs) {\n await killTimeout;\n }\n }\n\n get isBeingKilled() {\n return this._isBeingKilled || this._child?.killed;\n }\n\n get pid() {\n return this._childPid;\n }\n}\n\nfunction formatErrorLog(error: TaskRunError) {\n switch (error.type) {\n case \"INTERNAL_ERROR\": {\n return \"\";\n }\n case \"STRING_ERROR\": {\n return `\\n\\n${chalkError(\"X Error:\")} ${error.raw}\\n`;\n }\n case \"CUSTOM_ERROR\": {\n return `\\n\\n${chalkError(\"X Error:\")} ${error.raw}\\n`;\n }\n case \"BUILT_IN_ERROR\": {\n return `\\n\\n${error.stackTrace.replace(/^Error: /, chalkError(\"X Error: \"))}\\n`;\n }\n }\n}\n","import { logger } from \"./logger\";\n\n/**\n * This function is used by the dev CLI to make sure that the runtime is compatible\n */\nexport function runtimeCheck(minimumMajor: number, minimumMinor: number) {\n // Check if the runtime is Node.js\n if (typeof process === \"undefined\") {\n throw \"The dev CLI can only be run in a Node.js compatible environment\";\n }\n\n // Check if the runtime version is compatible\n const [major = 0, minor = 0] = process.versions.node.split(\".\").map(Number);\n\n const isBun = typeof process.versions.bun === \"string\";\n\n if (major < minimumMajor || (major === minimumMajor && minor < minimumMinor)) {\n if (isBun) {\n throw `The dev CLI requires at least Node.js ${minimumMajor}.${minimumMinor}. You are running Bun ${process.versions.bun}, which is compatible with Node.js ${process.versions.node}`;\n } else {\n throw `The dev CLI requires at least Node.js ${minimumMajor}.${minimumMinor}. You are running Node.js ${process.versions.node}`;\n }\n }\n\n logger.debug(\n `Node.js version: ${process.versions.node}${isBun ? ` (Bun ${process.versions.bun})` : \"\"}`\n );\n}\n","import { intro, isCancel, log, outro, select, text } from \"@clack/prompts\";\nimport { context, trace } from \"@opentelemetry/api\";\nimport { GetProjectResponseBody, flattenAttributes } from \"@trigger.dev/core/v3\";\nimport { recordSpanException } from \"@trigger.dev/core/v3/workers\";\nimport chalk from \"chalk\";\nimport { Command } from \"commander\";\nimport { ExecaError, Options as ExecaOptions, ResultPromise as ExecaResult, execa } from \"execa\";\nimport { applyEdits, modify, findNodeAtLocation, parseTree, getNodeValue } from \"jsonc-parser\";\nimport { writeFile } from \"node:fs/promises\";\nimport { join, relative, resolve } from \"node:path\";\nimport { z } from \"zod\";\nimport { CliApiClient } from \"../apiClient\";\nimport {\n CommonCommandOptions,\n OutroCommandError,\n SkipCommandError,\n SkipLoggingError,\n commonOptions,\n handleTelemetry,\n tracer,\n wrapCommandAction,\n} from \"../cli/common.js\";\nimport { readConfig } from \"../utilities/configFiles.js\";\nimport { createFileFromTemplate } from \"../utilities/createFileFromTemplate\";\nimport { createFile, pathExists, readFile } from \"../utilities/fileSystem\";\nimport { PackageManager, getUserPackageManager } from \"../utilities/getUserPackageManager\";\nimport { printStandloneInitialBanner } from \"../utilities/initialBanner.js\";\nimport { logger } from \"../utilities/logger\";\nimport { cliRootPath } from \"../utilities/resolveInternalFilePath\";\nimport { login } from \"./login\";\nimport { spinner } from \"../utilities/windows\";\nimport { CLOUD_API_URL } from \"../consts\";\nimport * as packageJson from \"../../package.json\";\nimport { cliLink, prettyError } from \"../utilities/cliOutput\";\n\nconst InitCommandOptions = CommonCommandOptions.extend({\n projectRef: z.string().optional(),\n overrideConfig: z.boolean().default(false),\n tag: z.string().default(\"beta\"),\n skipPackageInstall: z.boolean().default(false),\n pkgArgs: z.string().optional(),\n});\n\ntype InitCommandOptions = z.infer<typeof InitCommandOptions>;\n\nexport function configureInitCommand(program: Command) {\n return commonOptions(\n program\n .command(\"init\")\n .description(\"Initialize your existing project for development with Trigger.dev\")\n .argument(\"[path]\", \"The path to the project\", \".\")\n .option(\n \"-p, --project-ref <project ref>\",\n \"The project ref to use when initializing the project\"\n )\n .option(\n \"-t, --tag <package tag>\",\n \"The version of the @trigger.dev/sdk package to install\",\n packageJson.version\n )\n .option(\"--skip-package-install\", \"Skip installing the @trigger.dev/sdk package\")\n .option(\"--override-config\", \"Override the existing config file if it exists\")\n .option(\n \"--pkg-args <args>\",\n \"Additional arguments to pass to the package manager, accepts CSV for multiple args\"\n )\n ).action(async (path, options) => {\n await handleTelemetry(async () => {\n await printStandloneInitialBanner(true);\n await initCommand(path, options);\n });\n });\n}\n\nexport async function initCommand(dir: string, options: unknown) {\n return await wrapCommandAction(\"initCommand\", InitCommandOptions, options, async (opts) => {\n return await _initCommand(dir, opts);\n });\n}\n\nasync function _initCommand(dir: string, options: InitCommandOptions) {\n const span = trace.getSpan(context.active());\n\n intro(\"Initializing project\");\n\n // Detect tsconfig.json and exit if not found\n await detectTsConfig(dir, options);\n\n const authorization = await login({\n embedded: true,\n defaultApiUrl: options.apiUrl,\n profile: options.profile,\n });\n\n if (!authorization.ok) {\n if (authorization.error === \"fetch failed\") {\n throw new Error(\n `Failed to connect to ${authorization.auth?.apiUrl}. Are you sure it's the correct URL?`\n );\n } else {\n throw new Error(\"You must login first. Use `trigger.dev login` to login.\");\n }\n }\n\n span?.setAttributes({\n \"cli.userId\": authorization.userId,\n \"cli.email\": authorization.email,\n \"cli.config.apiUrl\": authorization.auth.apiUrl,\n \"cli.config.profile\": authorization.profile,\n });\n\n if (!options.overrideConfig) {\n try {\n // check to see if there is an existing trigger.dev config file in the project directory\n const result = await readConfig(dir);\n\n outro(\n result.status === \"file\"\n ? `Project already initialized: Found config file at ${result.path}. Pass --override-config to override`\n : \"Project already initialized\"\n );\n\n return;\n } catch (e) {\n // continue\n }\n }\n\n const apiClient = new CliApiClient(authorization.auth.apiUrl, authorization.auth.accessToken);\n\n const selectedProject = await selectProject(\n apiClient,\n authorization.dashboardUrl,\n options.projectRef\n );\n\n span?.setAttributes({\n ...flattenAttributes(selectedProject, \"cli.project\"),\n });\n\n logger.debug(\"Selected project\", selectedProject);\n\n log.step(`Configuring project \"${selectedProject.name}\" (${selectedProject.externalRef})`);\n\n // Install @trigger.dev/sdk package\n if (!options.skipPackageInstall) {\n await installPackages(dir, options);\n } else {\n log.info(\"Skipping package installation\");\n }\n\n // Create the trigger dir\n const triggerDir = await createTriggerDir(dir, options);\n\n // Create the config file\n await writeConfigFile(dir, selectedProject, options, triggerDir);\n\n // Add trigger.config.ts to tsconfig.json\n await addConfigFileToTsConfig(dir, options);\n\n // Ignore .trigger dir\n await gitIgnoreDotTriggerDir(dir, options);\n\n const projectDashboard = cliLink(\n \"project dashboard\",\n `${authorization.dashboardUrl}/projects/v3/${selectedProject.externalRef}`\n );\n\n log.success(\"Successfully initialized project for Trigger.dev v3 🫡\");\n log.info(\"Next steps:\");\n log.info(\n ` 1. To start developing, run ${chalk.green(\n `npx trigger.dev@${options.tag} dev${\n options.apiUrl === CLOUD_API_URL ? \"\" : ` -a ${options.apiUrl}`\n }`\n )} in your project directory`\n );\n log.info(` 2. Visit your ${projectDashboard} to view your newly created tasks.`);\n log.info(\n ` 3. Head over to our ${cliLink(\"v3 docs\", \"https://trigger.dev/docs/v3\")} to learn more.`\n );\n log.info(\n ` 4. Need help? Join our ${cliLink(\n \"Discord community\",\n \"https://trigger.dev/discord\"\n )} or email us at ${chalk.cyan(\"help@trigger.dev\")}`\n );\n\n outro(`Project initialized successfully. Happy coding!`);\n}\n\nasync function createTriggerDir(dir: string, options: InitCommandOptions) {\n return await tracer.startActiveSpan(\"createTriggerDir\", async (span) => {\n try {\n const defaultValue = join(dir, \"src\", \"trigger\");\n\n const location = await text({\n message: \"Where would you like to create the Trigger.dev directory?\",\n defaultValue: defaultValue,\n placeholder: defaultValue,\n });\n\n if (isCancel(location)) {\n throw new OutroCommandError();\n }\n\n const triggerDir = resolve(process.cwd(), location);\n\n logger.debug({ triggerDir });\n\n span.setAttributes({\n \"cli.triggerDir\": triggerDir,\n });\n\n if (await pathExists(triggerDir)) {\n throw new Error(`Directory already exists at ${triggerDir}`);\n }\n\n const exampleSelection = await select({\n message: `Choose an example to create in the ${location} directory`,\n options: [\n { value: \"simple\", label: \"Simple (Hello World)\" },\n {\n value: \"none\",\n label: \"None\",\n hint: \"skip creating an example\",\n },\n ],\n });\n\n if (isCancel(exampleSelection)) {\n throw new OutroCommandError();\n }\n\n const example = exampleSelection as string;\n\n span.setAttributes({\n \"cli.example\": example,\n });\n\n if (example === \"none\") {\n // Create a .gitkeep file in the trigger dir\n await createFile(join(triggerDir, \".gitkeep\"), \"\");\n\n log.step(`Created directory at ${location}`);\n\n span.end();\n return { location, isCustomValue: location !== defaultValue };\n }\n\n const templatePath = join(cliRootPath(), \"templates\", \"examples\", `${example}.ts.template`);\n const outputPath = join(triggerDir, \"example.ts\");\n\n await createFileFromTemplate({\n templatePath,\n outputPath,\n replacements: {},\n });\n\n const relativeOutputPath = relative(process.cwd(), outputPath);\n\n log.step(`Created example file at ${relativeOutputPath}`);\n\n span.end();\n\n return { location, isCustomValue: location !== defaultValue };\n } catch (e) {\n if (!(e instanceof SkipCommandError)) {\n recordSpanException(span, e);\n }\n\n span.end();\n\n throw e;\n }\n });\n}\n\nasync function gitIgnoreDotTriggerDir(dir: string, options: InitCommandOptions) {\n return await tracer.startActiveSpan(\"gitIgnoreDotTriggerDir\", async (span) => {\n try {\n const projectDir = resolve(process.cwd(), dir);\n const gitIgnorePath = join(projectDir, \".gitignore\");\n\n span.setAttributes({\n \"cli.projectDir\": projectDir,\n \"cli.gitIgnorePath\": gitIgnorePath,\n });\n\n if (!(await pathExists(gitIgnorePath))) {\n // Create .gitignore file\n await createFile(gitIgnorePath, \".trigger\");\n\n log.step(`Added .trigger to .gitignore`);\n\n span.end();\n\n return;\n }\n\n // Check if .gitignore already contains .trigger\n const gitIgnoreContent = await readFile(gitIgnorePath);\n\n if (gitIgnoreContent.includes(\".trigger\")) {\n span.end();\n\n return;\n }\n\n const newGitIgnoreContent = `${gitIgnoreContent}\\n.trigger`;\n\n await writeFile(gitIgnorePath, newGitIgnoreContent, \"utf-8\");\n\n log.step(`Added .trigger to .gitignore`);\n\n span.end();\n } catch (e) {\n if (!(e instanceof SkipCommandError)) {\n recordSpanException(span, e);\n }\n\n span.end();\n\n throw e;\n }\n });\n}\n\nasync function detectTsConfig(dir: string, options: InitCommandOptions) {\n return await tracer.startActiveSpan(\"detectTsConfig\", async (span) => {\n try {\n const projectDir = resolve(process.cwd(), dir);\n const tsconfigPath = join(projectDir, \"tsconfig.json\");\n\n span.setAttributes({\n \"cli.projectDir\": projectDir,\n \"cli.tsconfigPath\": tsconfigPath,\n });\n\n const tsconfigExists = await pathExists(tsconfigPath);\n\n if (!tsconfigExists) {\n prettyError(\n \"No tsconfig.json found\",\n `The init command needs to be run in a TypeScript project. You can create one like this:`,\n `npm install typescript --save-dev\\nnpx tsc --init\\n`\n );\n\n throw new Error(\"TypeScript required\");\n }\n\n logger.debug(\"tsconfig.json exists\", { tsconfigPath });\n\n span.end();\n } catch (e) {\n if (!(e instanceof SkipCommandError)) {\n recordSpanException(span, e);\n }\n\n span.end();\n\n throw e;\n }\n });\n}\n\nasync function addConfigFileToTsConfig(dir: string, options: InitCommandOptions) {\n return await tracer.startActiveSpan(\"addConfigFileToTsConfig\", async (span) => {\n try {\n const projectDir = resolve(process.cwd(), dir);\n const tsconfigPath = join(projectDir, \"tsconfig.json\");\n\n span.setAttributes({\n \"cli.projectDir\": projectDir,\n \"cli.tsconfigPath\": tsconfigPath,\n });\n\n const tsconfigContent = await readFile(tsconfigPath);\n const tsconfigContentTree = parseTree(tsconfigContent, undefined);\n if (!tsconfigContentTree) {\n span.end();\n\n return;\n }\n\n const tsconfigIncludeOption = findNodeAtLocation(tsconfigContentTree, [\"include\"]);\n if (!tsconfigIncludeOption) {\n span.end();\n\n return;\n }\n\n const tsConfigFileName = \"trigger.config.ts\";\n const tsconfigIncludeOptionValue: string[] = getNodeValue(tsconfigIncludeOption);\n if (tsconfigIncludeOptionValue.includes(tsConfigFileName)) {\n span.end();\n\n return;\n }\n\n const edits = modify(tsconfigContent, [\"include\", -1], tsConfigFileName, {\n isArrayInsertion: true,\n formattingOptions: {\n tabSize: 2,\n insertSpaces: true,\n eol: \"\\n\",\n },\n });\n\n logger.debug(\"tsconfig.json edits\", { edits });\n\n const newTsconfigContent = applyEdits(tsconfigContent, edits);\n\n logger.debug(\"new tsconfig.json content\", { newTsconfigContent });\n\n await writeFile(tsconfigPath, newTsconfigContent, \"utf-8\");\n\n log.step(`Added trigger.config.ts to tsconfig.json`);\n\n span.end();\n } catch (e) {\n if (!(e instanceof SkipCommandError)) {\n recordSpanException(span, e);\n }\n\n span.end();\n\n throw e;\n }\n });\n}\n\nasync function installPackages(dir: string, options: InitCommandOptions) {\n return await tracer.startActiveSpan(\"installPackages\", async (span) => {\n const installSpinner = spinner();\n\n let pkgManager: PackageManager | undefined;\n\n try {\n const projectDir = resolve(process.cwd(), dir);\n\n pkgManager = await getUserPackageManager(projectDir);\n\n span.setAttributes({\n \"cli.projectDir\": projectDir,\n \"cli.packageManager\": pkgManager,\n \"cli.tag\": options.tag,\n });\n\n const userArgs = options.pkgArgs?.split(\",\") ?? [];\n const execaOptions = { cwd: projectDir } satisfies ExecaOptions;\n\n let installProcess: ExecaResult<typeof execaOptions>;\n let args: string[];\n\n switch (pkgManager) {\n case \"npm\": {\n // --save-exact: pin version, e.g. 3.0.0-beta.20 instead of ^3.0.0-beta.20\n args = [\"install\", \"--save-exact\", ...userArgs, `@trigger.dev/sdk@${options.tag}`];\n\n break;\n }\n case \"pnpm\":\n case \"yarn\": {\n // pins version by default\n args = [\"add\", ...userArgs, `@trigger.dev/sdk@${options.tag}`];\n\n break;\n }\n }\n\n installSpinner.start(`Running ${pkgManager} ${args.join(\" \")}`);\n\n installProcess = execa(pkgManager, args, execaOptions);\n\n const handleProcessOutput = (data: Buffer) => {\n logger.debug(data.toString());\n };\n\n installProcess.stderr?.on(\"data\", handleProcessOutput);\n installProcess.stdout?.on(\"data\", handleProcessOutput);\n\n await installProcess;\n\n installSpinner.stop(`@trigger.dev/sdk@${options.tag} installed`);\n\n span.end();\n } catch (e) {\n if (options.logLevel === \"debug\") {\n installSpinner.stop(`Failed to install @trigger.dev/sdk@${options.tag}.`);\n } else {\n installSpinner.stop(\n `Failed to install @trigger.dev/sdk@${options.tag}. Rerun command with --log-level debug for more details.`\n );\n }\n\n if (!(e instanceof SkipCommandError)) {\n recordSpanException(span, e);\n }\n\n if (e instanceof ExecaError) {\n if (pkgManager) {\n e.message += ` \\n\\nNote: You can pass additional args to ${pkgManager} by using --pkg-args. For example: trigger.dev init --pkg-args=\"--workspace-root\"`;\n }\n }\n\n span.end();\n\n throw e;\n }\n });\n}\n\nasync function writeConfigFile(\n dir: string,\n project: GetProjectResponseBody,\n options: InitCommandOptions,\n triggerDir: { location: string; isCustomValue: boolean }\n) {\n return await tracer.startActiveSpan(\"writeConfigFile\", async (span) => {\n try {\n const spnnr = spinner();\n spnnr.start(\"Creating config file\");\n\n const projectDir = resolve(process.cwd(), dir);\n const templatePath = join(cliRootPath(), \"templates\", \"trigger.config.ts.template\");\n const outputPath = join(projectDir, \"trigger.config.ts\");\n\n span.setAttributes({\n \"cli.projectDir\": projectDir,\n \"cli.templatePath\": templatePath,\n \"cli.outputPath\": outputPath,\n });\n\n const result = await createFileFromTemplate({\n templatePath,\n replacements: {\n projectRef: project.externalRef,\n triggerDirectoriesOption: triggerDir.isCustomValue\n ? `\\n triggerDirectories: [\"${triggerDir.location}\"],`\n : \"\",\n },\n outputPath,\n override: options.overrideConfig,\n });\n\n const relativePathToOutput = relative(process.cwd(), outputPath);\n\n spnnr.stop(\n result.success\n ? `Config file created at ${relativePathToOutput}`\n : `Failed to create config file: ${result.error}`\n );\n\n if (!result.success) {\n throw new SkipLoggingError(result.error);\n }\n\n span.end();\n\n return result.success;\n } catch (e) {\n if (!(e instanceof SkipCommandError)) {\n recordSpanException(span, e);\n }\n\n span.end();\n\n throw e;\n }\n });\n}\n\nasync function selectProject(apiClient: CliApiClient, dashboardUrl: string, projectRef?: string) {\n return await tracer.startActiveSpan(\"selectProject\", async (span) => {\n try {\n if (projectRef) {\n const projectResponse = await apiClient.getProject(projectRef);\n\n if (!projectResponse.success) {\n log.error(\n `--project-ref ${projectRef} is not a valid project ref. Request to fetch data resulted in: ${projectResponse.error}`\n );\n\n throw new SkipCommandError(projectResponse.error);\n }\n\n span.setAttributes({\n ...flattenAttributes(projectResponse.data, \"cli.project\"),\n });\n\n span.end();\n\n return projectResponse.data;\n }\n\n const projectsResponse = await apiClient.getProjects();\n\n if (!projectsResponse.success) {\n throw new Error(`Failed to get projects: ${projectsResponse.error}`);\n }\n\n if (projectsResponse.data.length === 0) {\n const newProjectLink = cliLink(\n \"Create new project\",\n `${dashboardUrl}/projects/new?version=v3`\n );\n\n outro(`You don't have any projects yet. ${newProjectLink}`);\n\n throw new SkipCommandError();\n }\n\n const selectedProject = await select({\n message: \"Select an existing Trigger.dev project\",\n options: projectsResponse.data.map((project) => ({\n value: project.externalRef,\n label: `${project.name} - ${project.externalRef}`,\n hint: project.organization.title,\n })),\n });\n\n if (isCancel(selectedProject)) {\n throw new OutroCommandError();\n }\n\n const projectData = projectsResponse.data.find(\n (project) => project.externalRef === selectedProject\n );\n\n if (!projectData) {\n throw new Error(\"Invalid project ref\");\n }\n\n span.setAttributes({\n ...flattenAttributes(projectData, \"cli.project\"),\n });\n\n span.end();\n\n return projectData;\n } catch (e) {\n if (!(e instanceof SkipCommandError)) {\n recordSpanException(span, e);\n }\n\n span.end();\n\n throw e;\n }\n });\n}\n","import fs from \"fs/promises\";\nimport { pathExists, readFile } from \"./fileSystem\";\nimport path from \"path\";\n\ntype Result =\n | {\n success: true;\n alreadyExisted: boolean;\n }\n | {\n success: false;\n error: string;\n };\n\nexport async function createFileFromTemplate(params: {\n templatePath: string;\n replacements: Record<string, string>;\n outputPath: string;\n override?: boolean;\n}): Promise<Result> {\n let template = await readFile(params.templatePath);\n\n if ((await pathExists(params.outputPath)) && !params.override) {\n return {\n success: true,\n alreadyExisted: true,\n };\n }\n\n try {\n const output = replaceAll(template, params.replacements);\n\n const directoryName = path.dirname(params.outputPath);\n await fs.mkdir(directoryName, { recursive: true });\n await fs.writeFile(params.outputPath, output);\n\n return {\n success: true,\n alreadyExisted: false,\n };\n } catch (e) {\n if (e instanceof Error) {\n return {\n success: false,\n error: e.message,\n };\n }\n return {\n success: false,\n error: JSON.stringify(e),\n };\n }\n}\n\n// find strings that match ${varName} and replace with the value from a Record<string, string> where { varName: \"value\" }\nexport function replaceAll(input: string, replacements: Record<string, string>) {\n let output = input;\n for (const [key, value] of Object.entries(replacements)) {\n output = output.replace(new RegExp(`\\\\$\\\\{${key}\\\\}`, \"g\"), value);\n }\n return output;\n}\n","import { Command } from \"commander\";\nimport { z } from \"zod\";\nimport {\n CommonCommandOptions,\n commonOptions,\n handleTelemetry,\n wrapCommandAction,\n} from \"../cli/common.js\";\nimport { deleteAuthConfigProfile, readAuthConfigProfile } from \"../utilities/configFiles.js\";\nimport { printInitialBanner } from \"../utilities/initialBanner.js\";\nimport { logger } from \"../utilities/logger.js\";\n\nconst LogoutCommandOptions = CommonCommandOptions;\n\ntype LogoutCommandOptions = z.infer<typeof LogoutCommandOptions>;\n\nexport function configureLogoutCommand(program: Command) {\n return commonOptions(program.command(\"logout\").description(\"Logout of Trigger.dev\")).action(\n async (options) => {\n await handleTelemetry(async () => {\n await printInitialBanner(false);\n await logoutCommand(options);\n });\n }\n );\n}\n\nexport async function logoutCommand(options: unknown) {\n return await wrapCommandAction(\"logoutCommand\", LogoutCommandOptions, options, async (opts) => {\n return await logout(opts);\n });\n}\n\nexport async function logout(options: LogoutCommandOptions) {\n const config = readAuthConfigProfile(options.profile);\n\n if (!config?.accessToken) {\n logger.info(`You are already logged out [${options.profile}]`);\n return;\n }\n\n deleteAuthConfigProfile(options.profile);\n\n logger.info(`Logged out of Trigger.dev [${options.profile}]`);\n}\n","import { Command } from \"commander\";\nimport {\n deleteAuthConfigProfile,\n readAuthConfigFile,\n readAuthConfigProfile,\n writeAuthConfigProfile,\n} from \"../utilities/configFiles.js\";\nimport { logger } from \"../utilities/logger.js\";\nimport {\n CommonCommandOptions,\n commonOptions,\n handleTelemetry,\n wrapCommandAction,\n} from \"../cli/common.js\";\nimport { printInitialBanner } from \"../utilities/initialBanner.js\";\nimport { z } from \"zod\";\nimport { chalkGrey } from \"../utilities/cliOutput.js\";\nimport { log, outro, text } from \"@clack/prompts\";\n\nconst ListProfilesOptions = CommonCommandOptions;\n\ntype ListProfilesOptions = z.infer<typeof ListProfilesOptions>;\n\nexport function configureListProfilesCommand(program: Command) {\n return program\n .command(\"list-profiles\")\n .description(\"List all of your CLI profiles\")\n .option(\n \"-l, --log-level <level>\",\n \"The CLI log level to use (debug, info, log, warn, error, none). This does not effect the log level of your trigger.dev tasks.\",\n \"log\"\n )\n .option(\"--skip-telemetry\", \"Opt-out of sending telemetry\")\n .action(async (options) => {\n await handleTelemetry(async () => {\n await printInitialBanner(true);\n await listProfilesCommand(options);\n });\n });\n}\n\nexport async function listProfilesCommand(options: unknown) {\n return await wrapCommandAction(\"listProfiles\", ListProfilesOptions, options, async (opts) => {\n return await listProfiles(opts);\n });\n}\n\nexport async function listProfiles(options: ListProfilesOptions) {\n const authConfig = readAuthConfigFile();\n\n if (!authConfig) {\n logger.info(\"No profiles found\");\n return;\n }\n\n const profiles = Object.keys(authConfig);\n\n log.message(\"Profiles:\");\n\n for (const profile of profiles) {\n const profileConfig = authConfig[profile];\n\n log.info(`${profile}${profileConfig?.apiUrl ? ` - ${chalkGrey(profileConfig.apiUrl)}` : \"\"}`);\n }\n\n outro(\"Retrieve account info by running whoami --profile <profile>\");\n}\n","#!/usr/bin/env node\n\nimport { program } from \"./cli/index.js\";\nimport { logger } from \"./utilities/logger.js\";\n\nconst main = async () => {\n await program.parseAsync();\n};\n\nmain().catch((err) => {\n if (err instanceof Error) {\n logger.error(err);\n } else {\n logger.error(\"An unknown error has occurred. Please open an issue on github with the below:\");\n logger.error(err);\n }\n process.exit(1);\n});\n"],"mappings":"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","names":["path","XDGAppPaths_","options","_a","path","XDG_","os","path","posix","v","OSPaths_","os","path","path","path","original","require_retry","Command","intro","log","outro","trace","flattenAttributes","recordSpanException","build","execa","readFileSync","readFile","writeFile","join","relative","setTimeout","z","text","chalk","text","url","path","join","_","z","path","path","path","path","fs","z","path","join","build","chalk","path","path","log","path","text","chalk","join","join","path","version","intro","log","outro","recordSpanException","process","Buffer","path","fileURLToPath","fs","process","fs","fs","fs","fs","process","fs","promisify","process","execFile","process","process","promisify","execFile","execFileAsync","promisify","execFile","execFileAsync","execFileAsync","promisify","execFile","defaultBrowser","process","path","fileURLToPath","process","fs","defaultBrowser","Buffer","resolve","resolve","retry","z","outro","recordSpanException","tracer","apiClient","recordSpanException","program","outro","apiClient","z","program","intro","apiClient","outro","log","recordSpanException","esbuildDecorators","build","dependencies","chalk","relative","chalk","relative","join","findUp","path","findUp","recordSpanException","flattenAttributes","join","version","childProcess","dependencies","path","fileURLToPath","__filename","__dirname","intro","log","outro","join","resolve","program","path","intro","resolve","log","mismatches","version","isDowngrade","outro","join","resolvedEnvVars","z","program","path","trace","intro","recordSpanException","flattenAttributes","apiClient","log","version","outro","parsedError","errorMessages","join","writeFile","setTimeout","childProcess","text","execa","readFileSync","build","esbuildDecorators","dependencies","resolvedEnvVars","readFile","resolve","relative","detectDependencyVersion","ZodMessageHandler","ZodMessageSender","context","createHash","fs","readFileSync","basename","dirname","join","z","text","dirname","resolve","path","apiClient","dirname","resolvedEnvVars","resolve","taskRunProcess","findUp","pathExists","esbuildDecorators","z","program","path","authorization","ZodMessageSender","ZodMessageHandler","join","readFileSync","context","esbuildDecorators","build","createHash","basename","fs","dirname","dependencies","sourceMapPath","detectDependencyVersion","findUp","pathExists","intro","isCancel","log","outro","select","context","trace","flattenAttributes","recordSpanException","chalk","ExecaError","execa","writeFile","join","relative","resolve","z","fs","path","fs","z","program","path","trace","context","intro","outro","apiClient","flattenAttributes","log","installPackages","chalk","join","isCancel","resolve","select","relative","recordSpanException","writeFile","execa","ExecaError","program","log","outro","program","Command"]}
|
|
1
|
+
{"version":3,"sources":["../../../node_modules/.pnpm/xdg-app-paths@8.3.0/node_modules/src/lib/XDGAppPaths.ts","../../../node_modules/.pnpm/xdg-portable@10.6.0/node_modules/src/lib/XDG.ts","../../../node_modules/.pnpm/os-paths@7.4.0/node_modules/src/lib/OSPaths.ts","../../../node_modules/.pnpm/os-paths@7.4.0/node_modules/src/platform-adapters/node.ts","../../../node_modules/.pnpm/os-paths@7.4.0/node_modules/src/mod.cjs.ts","../../../node_modules/.pnpm/xdg-portable@10.6.0/node_modules/src/platform-adapters/node.ts","../../../node_modules/.pnpm/xdg-portable@10.6.0/node_modules/src/mod.cjs.ts","../../../node_modules/.pnpm/xdg-app-paths@8.3.0/node_modules/src/platform-adapters/node.ts","../../../node_modules/.pnpm/xdg-app-paths@8.3.0/node_modules/src/mod.cjs.ts","../../../node_modules/.pnpm/retry@0.13.1/node_modules/retry/lib/retry_operation.js","../../../node_modules/.pnpm/retry@0.13.1/node_modules/retry/lib/retry.js","../../../node_modules/.pnpm/retry@0.13.1/node_modules/retry/index.js","../src/cli/index.ts","../src/commands/deploy.ts","../package.json","../src/apiClient.ts","../src/cli/common.ts","../src/telemetry/tracing.ts","../src/utilities/logger.ts","../src/utilities/getEnvironmentVariableFactory.ts","../src/utilities/cliOutput.ts","../src/utilities/configFiles.ts","../../../node_modules/.pnpm/xdg-app-paths@8.3.0/node_modules/xdg-app-paths/dist/cjs/esm-wrapper/mod.esm.js","../src/consts.ts","../src/utilities/fileSystem.ts","../src/utilities/taskFiles.ts","../src/utilities/initialBanner.ts","../src/utilities/getVersion.ts","../src/utilities/windows.ts","../src/utilities/installPackages.ts","../src/commands/login.ts","../../../node_modules/.pnpm/open@10.0.3/node_modules/open/index.js","../../../node_modules/.pnpm/is-wsl@3.1.0/node_modules/is-wsl/index.js","../../../node_modules/.pnpm/is-inside-container@1.0.0/node_modules/is-inside-container/index.js","../../../node_modules/.pnpm/is-docker@3.0.0/node_modules/is-docker/index.js","../../../node_modules/.pnpm/define-lazy-prop@3.0.0/node_modules/define-lazy-prop/index.js","../../../node_modules/.pnpm/default-browser@5.2.1/node_modules/default-browser/index.js","../../../node_modules/.pnpm/default-browser-id@5.0.0/node_modules/default-browser-id/index.js","../../../node_modules/.pnpm/run-applescript@7.0.0/node_modules/run-applescript/index.js","../../../node_modules/.pnpm/bundle-name@4.1.0/node_modules/bundle-name/index.js","../../../node_modules/.pnpm/default-browser@5.2.1/node_modules/default-browser/windows.js","../../../node_modules/.pnpm/p-retry@6.1.0/node_modules/p-retry/index.js","../../../node_modules/.pnpm/is-network-error@1.0.0/node_modules/is-network-error/index.js","../src/commands/whoami.ts","../src/utilities/session.ts","../src/utilities/linux.ts","../src/utilities/build.ts","../src/utilities/deployErrors.ts","../src/utilities/links.ts","../src/utilities/javascriptProject.ts","../src/utilities/getUserPackageManager.ts","../src/utilities/assertExhaustive.ts","../src/utilities/resolveInternalFilePath.ts","../src/utilities/safeJsonParse.ts","../src/commands/update.ts","../src/utilities/resolveEnvVars.ts","../src/commands/dev.tsx","../src/workers/common/errors.ts","../src/workers/dev/backgroundWorker.ts","../src/utilities/runtimeCheck.ts","../src/commands/init.ts","../src/utilities/createFileFromTemplate.ts","../src/commands/logout.ts","../src/commands/list-profiles.ts","../src/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,"function RetryOperation(timeouts, options) {\n // Compatibility for the old (timeouts, retryForever) signature\n if (typeof options === 'boolean') {\n options = { forever: options };\n }\n\n this._originalTimeouts = JSON.parse(JSON.stringify(timeouts));\n this._timeouts = timeouts;\n this._options = options || {};\n this._maxRetryTime = options && options.maxRetryTime || Infinity;\n this._fn = null;\n this._errors = [];\n this._attempts = 1;\n this._operationTimeout = null;\n this._operationTimeoutCb = null;\n this._timeout = null;\n this._operationStart = null;\n this._timer = null;\n\n if (this._options.forever) {\n this._cachedTimeouts = this._timeouts.slice(0);\n }\n}\nmodule.exports = RetryOperation;\n\nRetryOperation.prototype.reset = function() {\n this._attempts = 1;\n this._timeouts = this._originalTimeouts.slice(0);\n}\n\nRetryOperation.prototype.stop = function() {\n if (this._timeout) {\n clearTimeout(this._timeout);\n }\n if (this._timer) {\n clearTimeout(this._timer);\n }\n\n this._timeouts = [];\n this._cachedTimeouts = null;\n};\n\nRetryOperation.prototype.retry = function(err) {\n if (this._timeout) {\n clearTimeout(this._timeout);\n }\n\n if (!err) {\n return false;\n }\n var currentTime = new Date().getTime();\n if (err && currentTime - this._operationStart >= this._maxRetryTime) {\n this._errors.push(err);\n this._errors.unshift(new Error('RetryOperation timeout occurred'));\n return false;\n }\n\n this._errors.push(err);\n\n var timeout = this._timeouts.shift();\n if (timeout === undefined) {\n if (this._cachedTimeouts) {\n // retry forever, only keep last error\n this._errors.splice(0, this._errors.length - 1);\n timeout = this._cachedTimeouts.slice(-1);\n } else {\n return false;\n }\n }\n\n var self = this;\n this._timer = setTimeout(function() {\n self._attempts++;\n\n if (self._operationTimeoutCb) {\n self._timeout = setTimeout(function() {\n self._operationTimeoutCb(self._attempts);\n }, self._operationTimeout);\n\n if (self._options.unref) {\n self._timeout.unref();\n }\n }\n\n self._fn(self._attempts);\n }, timeout);\n\n if (this._options.unref) {\n this._timer.unref();\n }\n\n return true;\n};\n\nRetryOperation.prototype.attempt = function(fn, timeoutOps) {\n this._fn = fn;\n\n if (timeoutOps) {\n if (timeoutOps.timeout) {\n this._operationTimeout = timeoutOps.timeout;\n }\n if (timeoutOps.cb) {\n this._operationTimeoutCb = timeoutOps.cb;\n }\n }\n\n var self = this;\n if (this._operationTimeoutCb) {\n this._timeout = setTimeout(function() {\n self._operationTimeoutCb();\n }, self._operationTimeout);\n }\n\n this._operationStart = new Date().getTime();\n\n this._fn(this._attempts);\n};\n\nRetryOperation.prototype.try = function(fn) {\n console.log('Using RetryOperation.try() is deprecated');\n this.attempt(fn);\n};\n\nRetryOperation.prototype.start = function(fn) {\n console.log('Using RetryOperation.start() is deprecated');\n this.attempt(fn);\n};\n\nRetryOperation.prototype.start = RetryOperation.prototype.try;\n\nRetryOperation.prototype.errors = function() {\n return this._errors;\n};\n\nRetryOperation.prototype.attempts = function() {\n return this._attempts;\n};\n\nRetryOperation.prototype.mainError = function() {\n if (this._errors.length === 0) {\n return null;\n }\n\n var counts = {};\n var mainError = null;\n var mainErrorCount = 0;\n\n for (var i = 0; i < this._errors.length; i++) {\n var error = this._errors[i];\n var message = error.message;\n var count = (counts[message] || 0) + 1;\n\n counts[message] = count;\n\n if (count >= mainErrorCount) {\n mainError = error;\n mainErrorCount = count;\n }\n }\n\n return mainError;\n};\n","var RetryOperation = require('./retry_operation');\n\nexports.operation = function(options) {\n var timeouts = exports.timeouts(options);\n return new RetryOperation(timeouts, {\n forever: options && (options.forever || options.retries === Infinity),\n unref: options && options.unref,\n maxRetryTime: options && options.maxRetryTime\n });\n};\n\nexports.timeouts = function(options) {\n if (options instanceof Array) {\n return [].concat(options);\n }\n\n var opts = {\n retries: 10,\n factor: 2,\n minTimeout: 1 * 1000,\n maxTimeout: Infinity,\n randomize: false\n };\n for (var key in options) {\n opts[key] = options[key];\n }\n\n if (opts.minTimeout > opts.maxTimeout) {\n throw new Error('minTimeout is greater than maxTimeout');\n }\n\n var timeouts = [];\n for (var i = 0; i < opts.retries; i++) {\n timeouts.push(this.createTimeout(i, opts));\n }\n\n if (options && options.forever && !timeouts.length) {\n timeouts.push(this.createTimeout(i, opts));\n }\n\n // sort the array numerically ascending\n timeouts.sort(function(a,b) {\n return a - b;\n });\n\n return timeouts;\n};\n\nexports.createTimeout = function(attempt, opts) {\n var random = (opts.randomize)\n ? (Math.random() + 1)\n : 1;\n\n var timeout = Math.round(random * Math.max(opts.minTimeout, 1) * Math.pow(opts.factor, attempt));\n timeout = Math.min(timeout, opts.maxTimeout);\n\n return timeout;\n};\n\nexports.wrap = function(obj, options, methods) {\n if (options instanceof Array) {\n methods = options;\n options = null;\n }\n\n if (!methods) {\n methods = [];\n for (var key in obj) {\n if (typeof obj[key] === 'function') {\n methods.push(key);\n }\n }\n }\n\n for (var i = 0; i < methods.length; i++) {\n var method = methods[i];\n var original = obj[method];\n\n obj[method] = function retryWrapper(original) {\n var op = exports.operation(options);\n var args = Array.prototype.slice.call(arguments, 1);\n var callback = args.pop();\n\n args.push(function(err) {\n if (op.retry(err)) {\n return;\n }\n if (err) {\n arguments[0] = op.mainError();\n }\n callback.apply(this, arguments);\n });\n\n op.attempt(function() {\n original.apply(obj, args);\n });\n }.bind(obj, original);\n obj[method].options = options;\n }\n};\n","module.exports = require('./lib/retry');","import { Command } from \"commander\";\nimport { configureDeployCommand } from \"../commands/deploy.js\";\nimport { configureDevCommand } from \"../commands/dev.js\";\nimport { configureInitCommand } from \"../commands/init.js\";\nimport { configureLoginCommand } from \"../commands/login.js\";\nimport { configureLogoutCommand } from \"../commands/logout.js\";\nimport { configureWhoamiCommand } from \"../commands/whoami.js\";\nimport { COMMAND_NAME } from \"../consts.js\";\nimport { getVersion } from \"../utilities/getVersion.js\";\nimport { configureListProfilesCommand } from \"../commands/list-profiles.js\";\nimport { configureUpdateCommand } from \"../commands/update.js\";\n\nexport const program = new Command();\n\nprogram\n .name(COMMAND_NAME)\n .description(\"Create, run locally and deploy Trigger.dev background tasks.\")\n .version(getVersion(), \"-v, --version\", \"Display the version number\");\n\nconfigureLoginCommand(program);\nconfigureInitCommand(program);\nconfigureDevCommand(program);\nconfigureDeployCommand(program);\nconfigureWhoamiCommand(program);\nconfigureLogoutCommand(program);\nconfigureListProfilesCommand(program);\nconfigureUpdateCommand(program);\n","import { intro, log, outro } from \"@clack/prompts\";\nimport { depot } from \"@depot/cli\";\nimport { context, trace } from \"@opentelemetry/api\";\nimport {\n ResolvedConfig,\n TaskMetadataFailedToParseData,\n detectDependencyVersion,\n flattenAttributes,\n} from \"@trigger.dev/core/v3\";\nimport { recordSpanException } from \"@trigger.dev/core/v3/workers\";\nimport { Command, Option as CommandOption } from \"commander\";\nimport { Metafile, build } from \"esbuild\";\nimport { execa } from \"execa\";\nimport { createHash } from \"node:crypto\";\nimport { readFileSync } from \"node:fs\";\nimport { copyFile, mkdir, readFile, writeFile } from \"node:fs/promises\";\nimport { dirname, join, posix, relative, resolve } from \"node:path\";\nimport { setTimeout } from \"node:timers/promises\";\nimport invariant from \"tiny-invariant\";\nimport { z } from \"zod\";\nimport * as packageJson from \"../../package.json\";\nimport { CliApiClient } from \"../apiClient\";\nimport {\n CommonCommandOptions,\n SkipCommandError,\n SkipLoggingError,\n commonOptions,\n handleTelemetry,\n tracer,\n wrapCommandAction,\n} from \"../cli/common.js\";\nimport { ReadConfigResult, readConfig } from \"../utilities/configFiles.js\";\nimport { createTempDir, writeJSONFile } from \"../utilities/fileSystem\";\nimport { printStandloneInitialBanner } from \"../utilities/initialBanner.js\";\nimport {\n detectPackageNameFromImportPath,\n parsePackageName,\n stripWorkspaceFromVersion,\n} from \"../utilities/installPackages\";\nimport { logger } from \"../utilities/logger.js\";\nimport { createTaskFileImports, gatherTaskFiles } from \"../utilities/taskFiles\";\nimport { login } from \"./login\";\n\nimport { esbuildDecorators } from \"@anatine/esbuild-decorators\";\nimport { Glob, GlobOptions } from \"glob\";\nimport type { SetOptional } from \"type-fest\";\nimport {\n bundleDependenciesPlugin,\n mockServerOnlyPlugin,\n workerSetupImportConfigPlugin,\n} from \"../utilities/build\";\nimport { chalkError, chalkPurple, chalkWarning, cliLink } from \"../utilities/cliOutput\";\nimport {\n logESMRequireError,\n logTaskMetadataParseError,\n parseBuildErrorStack,\n parseNpmInstallError,\n} from \"../utilities/deployErrors\";\nimport { JavascriptProject } from \"../utilities/javascriptProject\";\nimport { docs, getInTouch } from \"../utilities/links\";\nimport { cliRootPath } from \"../utilities/resolveInternalFilePath\";\nimport { safeJsonParse } from \"../utilities/safeJsonParse\";\nimport { escapeImportPath, spinner } from \"../utilities/windows\";\nimport { updateTriggerPackages } from \"./update\";\nimport { callResolveEnvVars } from \"../utilities/resolveEnvVars\";\n\nconst DeployCommandOptions = CommonCommandOptions.extend({\n skipTypecheck: z.boolean().default(false),\n skipDeploy: z.boolean().default(false),\n env: z.enum([\"prod\", \"staging\"]),\n loadImage: z.boolean().default(false),\n buildPlatform: z.enum([\"linux/amd64\", \"linux/arm64\"]).default(\"linux/amd64\"),\n selfHosted: z.boolean().default(false),\n registry: z.string().optional(),\n push: z.boolean().default(false),\n config: z.string().optional(),\n projectRef: z.string().optional(),\n outputMetafile: z.string().optional(),\n apiUrl: z.string().optional(),\n saveLogs: z.boolean().default(false),\n skipUpdateCheck: z.boolean().default(false),\n noCache: z.boolean().default(false),\n});\n\ntype DeployCommandOptions = z.infer<typeof DeployCommandOptions>;\n\nexport function configureDeployCommand(program: Command) {\n return commonOptions(\n program\n .command(\"deploy\")\n .description(\"Deploy your Trigger.dev v3 project to the cloud.\")\n .argument(\"[path]\", \"The path to the project\", \".\")\n .option(\n \"-e, --env <env>\",\n \"Deploy to a specific environment (currently only prod and staging are supported)\",\n \"prod\"\n )\n .option(\"--skip-typecheck\", \"Whether to skip the pre-build typecheck\")\n .option(\"--skip-update-check\", \"Skip checking for @trigger.dev package updates\")\n .option(\"-c, --config <config file>\", \"The name of the config file, found at [path]\")\n .option(\n \"-p, --project-ref <project ref>\",\n \"The project ref. Required if there is no config file. This will override the project specified in the config file.\"\n )\n )\n .addOption(\n new CommandOption(\n \"--self-hosted\",\n \"Build and load the image using your local Docker. Use the --registry option to specify the registry to push the image to when using --self-hosted, or just use --push to push to the default registry.\"\n ).hideHelp()\n )\n .addOption(\n new CommandOption(\n \"--no-cache\",\n \"Do not use the cache when building the image. This will slow down the build process but can be useful if you are experiencing issues with the cache.\"\n ).hideHelp()\n )\n .addOption(\n new CommandOption(\n \"--push\",\n \"When using the --self-hosted flag, push the image to the default registry. (defaults to false when not using --registry)\"\n ).hideHelp()\n )\n .addOption(\n new CommandOption(\n \"--registry <registry>\",\n \"The registry to push the image to when using --self-hosted\"\n ).hideHelp()\n )\n .addOption(\n new CommandOption(\n \"--tag <tag>\",\n \"(Coming soon) Specify the tag to use when pushing the image to the registry\"\n ).hideHelp()\n )\n .addOption(\n new CommandOption(\n \"--ignore-env-var-check\",\n \"(deprecated) Detected missing environment variables won't block deployment\"\n ).hideHelp()\n )\n .addOption(new CommandOption(\"-D, --skip-deploy\", \"Skip deploying the image\").hideHelp())\n .addOption(\n new CommandOption(\"--load-image\", \"Load the built image into your local docker\").hideHelp()\n )\n .addOption(\n new CommandOption(\n \"--build-platform <platform>\",\n \"The platform to build the deployment image for\"\n )\n .default(\"linux/amd64\")\n .hideHelp()\n )\n .addOption(\n new CommandOption(\n \"--output-metafile <path>\",\n \"If provided, will save the esbuild metafile for the build to the specified path\"\n ).hideHelp()\n )\n .addOption(\n new CommandOption(\n \"--save-logs\",\n \"If provided, will save logs even for successful builds\"\n ).hideHelp()\n )\n .action(async (path, options) => {\n await handleTelemetry(async () => {\n await printStandloneInitialBanner(true);\n await deployCommand(path, options);\n });\n });\n}\n\nexport async function deployCommand(dir: string, options: unknown) {\n return await wrapCommandAction(\"deployCommand\", DeployCommandOptions, options, async (opts) => {\n return await _deployCommand(dir, opts);\n });\n}\n\nasync function _deployCommand(dir: string, options: DeployCommandOptions) {\n const span = trace.getSpan(context.active());\n\n intro(\"Deploying project\");\n\n if (!options.skipUpdateCheck) {\n await updateTriggerPackages(dir, { ...options }, true, true);\n }\n\n const authorization = await login({\n embedded: true,\n defaultApiUrl: options.apiUrl,\n profile: options.profile,\n });\n\n if (!authorization.ok) {\n if (authorization.error === \"fetch failed\") {\n throw new Error(\n `Failed to connect to ${authorization.auth?.apiUrl}. Are you sure it's the correct URL?`\n );\n } else {\n throw new Error(\n `You must login first. Use the \\`login\\` CLI command.\\n\\n${authorization.error}`\n );\n }\n }\n\n span?.setAttributes({\n \"cli.userId\": authorization.userId,\n \"cli.email\": authorization.email,\n \"cli.config.apiUrl\": authorization.auth.apiUrl,\n });\n\n const resolvedConfig = await readConfig(dir, {\n configFile: options.config,\n projectRef: options.projectRef,\n });\n\n if (resolvedConfig.status === \"error\") {\n logger.error(\"Failed to read config:\", resolvedConfig.error);\n span && recordSpanException(span, resolvedConfig.error);\n\n throw new SkipLoggingError(\"Failed to read config\");\n }\n\n logger.debug(\"Resolved config\", { resolvedConfig });\n\n span?.setAttributes({\n \"resolvedConfig.status\": resolvedConfig.status,\n \"resolvedConfig.path\": resolvedConfig.status === \"file\" ? resolvedConfig.path : undefined,\n \"resolvedConfig.config.project\": resolvedConfig.config.project,\n \"resolvedConfig.config.projectDir\": resolvedConfig.config.projectDir,\n \"resolvedConfig.config.triggerUrl\": resolvedConfig.config.triggerUrl,\n \"resolvedConfig.config.triggerDirectories\": resolvedConfig.config.triggerDirectories,\n ...flattenAttributes(resolvedConfig.config.retries, \"resolvedConfig.config.retries\"),\n });\n\n const apiClient = new CliApiClient(authorization.auth.apiUrl, authorization.auth.accessToken);\n\n const deploymentEnv = await apiClient.getProjectEnv({\n projectRef: resolvedConfig.config.project,\n env: options.env,\n });\n\n if (!deploymentEnv.success) {\n throw new Error(deploymentEnv.error);\n }\n\n const environmentClient = new CliApiClient(authorization.auth.apiUrl, deploymentEnv.data.apiKey);\n\n log.step(\n `Preparing to deploy \"${deploymentEnv.data.name}\" (${resolvedConfig.config.project}) to ${options.env}`\n );\n\n // Step 1: Build the project into a temporary directory\n const compilation = await compileProject(\n resolvedConfig.config,\n options,\n resolvedConfig.status === \"file\" ? resolvedConfig.path : undefined\n );\n\n logger.debug(\"Compilation result\", { compilation });\n\n // Optional Step 1.1: resolve environment variables\n await resolveEnvironmentVariables(resolvedConfig, environmentClient, options);\n\n // Step 2: Initialize a deployment on the server (response will have everything we need to build an image)\n const deploymentResponse = await environmentClient.initializeDeployment({\n contentHash: compilation.contentHash,\n userId: authorization.userId,\n });\n\n if (!deploymentResponse.success) {\n throw new Error(`Failed to start deployment: ${deploymentResponse.error}`);\n }\n\n // If the deployment doesn't have any externalBuildData, then we can't use the remote image builder\n // TODO: handle this and allow the user to the build and push the image themselves\n if (!deploymentResponse.data.externalBuildData && !options.selfHosted) {\n throw new Error(\n `Failed to start deployment, as your instance of trigger.dev does not support hosting. To deploy this project, you must use the --self-hosted flag to build and push the image yourself.`\n );\n }\n\n const version = deploymentResponse.data.version;\n\n const deploymentSpinner = spinner();\n\n deploymentSpinner.start(`Deploying version ${version}`);\n const selfHostedRegistryHost = deploymentResponse.data.registryHost ?? options.registry;\n const registryHost = selfHostedRegistryHost ?? \"registry.trigger.dev\";\n\n const buildImage = async () => {\n if (options.selfHosted) {\n return buildAndPushSelfHostedImage({\n registryHost: selfHostedRegistryHost,\n imageTag: deploymentResponse.data.imageTag,\n cwd: compilation.path,\n projectId: resolvedConfig.config.project,\n deploymentId: deploymentResponse.data.id,\n deploymentVersion: version,\n contentHash: deploymentResponse.data.contentHash,\n projectRef: resolvedConfig.config.project,\n buildPlatform: options.buildPlatform,\n pushImage: options.push,\n selfHostedRegistry: !!options.registry,\n noCache: options.noCache,\n extraCACerts: resolvedConfig.config.extraCACerts,\n });\n }\n\n if (!deploymentResponse.data.externalBuildData) {\n throw new Error(\n \"Failed to initialize deployment. The deployment does not have any external build data. To deploy this project, you must use the --self-hosted flag to build and push the image yourself.\"\n );\n }\n\n return buildAndPushImage(\n {\n registryHost,\n auth: authorization.auth.accessToken,\n imageTag: deploymentResponse.data.imageTag,\n buildId: deploymentResponse.data.externalBuildData.buildId,\n buildToken: deploymentResponse.data.externalBuildData.buildToken,\n buildProjectId: deploymentResponse.data.externalBuildData.projectId,\n cwd: compilation.path,\n projectId: resolvedConfig.config.project,\n deploymentId: deploymentResponse.data.id,\n deploymentVersion: deploymentResponse.data.version,\n contentHash: deploymentResponse.data.contentHash,\n projectRef: resolvedConfig.config.project,\n loadImage: options.loadImage,\n buildPlatform: options.buildPlatform,\n noCache: options.noCache,\n extraCACerts: resolvedConfig.config.extraCACerts,\n },\n deploymentSpinner\n );\n };\n\n const image = await buildImage();\n\n const warnings = checkLogsForWarnings(image.logs);\n\n if (!warnings.ok) {\n await failDeploy(\n deploymentResponse.data.shortCode,\n warnings.summary,\n image.logs,\n deploymentSpinner,\n warnings.warnings,\n warnings.errors\n );\n\n throw new SkipLoggingError(`Failed to build project image: ${warnings.summary}`);\n }\n\n if (!image.ok) {\n await failDeploy(\n deploymentResponse.data.shortCode,\n image.error,\n image.logs,\n deploymentSpinner,\n warnings.warnings\n );\n\n throw new SkipLoggingError(`Failed to build project image: ${image.error}`);\n }\n\n const preExitTasks = async () => {\n printWarnings(warnings.warnings);\n\n if (options.saveLogs) {\n const logPath = await saveLogs(deploymentResponse.data.shortCode, image.logs);\n log.info(`Build logs have been saved to ${logPath}`);\n }\n };\n\n const imageReference = options.selfHosted\n ? `${selfHostedRegistryHost ? `${selfHostedRegistryHost}/` : \"\"}${image.image}${\n image.digest ? `@${image.digest}` : \"\"\n }`\n : `${registryHost}/${image.image}${image.digest ? `@${image.digest}` : \"\"}`;\n\n span?.setAttributes({\n \"image.reference\": imageReference,\n });\n\n if (options.skipDeploy) {\n deploymentSpinner.stop(\n `Project image built: ${imageReference}. Skipping deployment as requested`\n );\n\n await preExitTasks();\n\n throw new SkipCommandError(\"Skipping deployment as requested\");\n }\n\n deploymentSpinner.message(\n `${deploymentResponse.data.version} image built, detecting deployed tasks`\n );\n\n logger.debug(`Start indexing image ${imageReference}`);\n\n const startIndexingResponse = await environmentClient.startDeploymentIndexing(\n deploymentResponse.data.id,\n {\n imageReference,\n selfHosted: options.selfHosted,\n }\n );\n\n if (!startIndexingResponse.success) {\n deploymentSpinner.stop(`Failed to start indexing: ${startIndexingResponse.error}`);\n\n await preExitTasks();\n\n throw new SkipLoggingError(`Failed to start indexing: ${startIndexingResponse.error}`);\n }\n\n const finishedDeployment = await waitForDeploymentToFinish(\n deploymentResponse.data.id,\n environmentClient\n );\n\n if (!finishedDeployment) {\n deploymentSpinner.stop(`Deployment failed to complete`);\n\n await preExitTasks();\n\n throw new SkipLoggingError(\"Deployment failed to complete: unknown issue\");\n }\n\n if (typeof finishedDeployment === \"string\") {\n deploymentSpinner.stop(`Deployment failed to complete: ${finishedDeployment}`);\n\n await preExitTasks();\n\n throw new SkipLoggingError(`Deployment failed to complete: ${finishedDeployment}`);\n }\n\n const deploymentLink = cliLink(\n \"View deployment\",\n `${authorization.dashboardUrl}/projects/v3/${resolvedConfig.config.project}/deployments/${finishedDeployment.shortCode}`\n );\n\n const testLink = cliLink(\n \"Test tasks\",\n `${authorization.dashboardUrl}/projects/v3/${resolvedConfig.config.project}/test?environment=${\n options.env === \"prod\" ? \"prod\" : \"stg\"\n }`\n );\n\n switch (finishedDeployment.status) {\n case \"DEPLOYED\": {\n if (warnings.warnings.length > 0) {\n deploymentSpinner.stop(\"Deployment completed with warnings\");\n } else {\n deploymentSpinner.stop(\"Deployment completed\");\n }\n\n await preExitTasks();\n\n const taskCount = finishedDeployment.worker?.tasks.length ?? 0;\n\n if (taskCount === 0) {\n outro(\n `Version ${version} deployed with no detected tasks. Please make sure you are exporting tasks in your project. ${deploymentLink}`\n );\n } else {\n outro(\n `Version ${version} deployed with ${taskCount} detected task${\n taskCount === 1 ? \"\" : \"s\"\n } | ${deploymentLink} | ${testLink}`\n );\n }\n\n break;\n }\n case \"FAILED\": {\n if (finishedDeployment.errorData) {\n if (finishedDeployment.errorData.name === \"TaskMetadataParseError\") {\n const errorJson = safeJsonParse(finishedDeployment.errorData.stack);\n\n if (errorJson) {\n const parsedError = TaskMetadataFailedToParseData.safeParse(errorJson);\n\n if (parsedError.success) {\n deploymentSpinner.stop(`Deployment encountered an error. ${deploymentLink}`);\n\n logTaskMetadataParseError(parsedError.data.zodIssues, parsedError.data.tasks);\n\n await preExitTasks();\n\n throw new SkipLoggingError(\n `Deployment encountered an error: ${finishedDeployment.errorData.name}`\n );\n }\n }\n }\n\n const parsedError = finishedDeployment.errorData.stack\n ? parseBuildErrorStack(finishedDeployment.errorData) ??\n finishedDeployment.errorData.message\n : finishedDeployment.errorData.message;\n\n if (typeof parsedError === \"string\") {\n deploymentSpinner.stop(`Deployment encountered an error. ${deploymentLink}`);\n\n logger.log(`${chalkError(\"X Error:\")} ${parsedError}`);\n } else {\n deploymentSpinner.stop(`Deployment encountered an error. ${deploymentLink}`);\n\n logESMRequireError(parsedError, resolvedConfig);\n }\n\n await preExitTasks();\n\n if (finishedDeployment.errorData.stderr) {\n log.error(`Error logs:\\n${finishedDeployment.errorData.stderr}`);\n }\n\n throw new SkipLoggingError(\n `Deployment encountered an error: ${finishedDeployment.errorData.name}`\n );\n } else {\n deploymentSpinner.stop(\n `Deployment failed with an unknown error. Please contact eric@trigger.dev for help. ${deploymentLink}`\n );\n\n await preExitTasks();\n\n throw new SkipLoggingError(\"Deployment failed with an unknown error\");\n }\n }\n case \"CANCELED\": {\n deploymentSpinner.stop(`Deployment was canceled. ${deploymentLink}`);\n\n await preExitTasks();\n\n throw new SkipLoggingError(\"Deployment was canceled\");\n }\n case \"TIMED_OUT\": {\n deploymentSpinner.stop(`Deployment timed out. ${deploymentLink}`);\n\n await preExitTasks();\n\n throw new SkipLoggingError(\"Deployment timed out\");\n }\n }\n}\n\nfunction printErrors(errors?: string[]) {\n for (const error of errors ?? []) {\n log.error(`${chalkError(\"Error:\")} ${error}`);\n }\n}\n\nfunction printWarnings(warnings?: string[]) {\n for (const warning of warnings ?? []) {\n log.warn(`${chalkWarning(\"Warning:\")} ${warning}`);\n }\n}\n\ntype WarningsCheckReturn =\n | {\n ok: true;\n warnings: string[];\n }\n | {\n ok: false;\n summary: string;\n errors: string[];\n warnings: string[];\n };\n\ntype LogParserOptions = Array<{\n regex: RegExp;\n message: string;\n shouldFail?: boolean;\n}>;\n\n// Try to extract useful warnings from logs. Sometimes we may even want to fail the build. This won't work if the step is cached.\nfunction checkLogsForWarnings(logs: string): WarningsCheckReturn {\n const warnings: LogParserOptions = [\n {\n regex: /prisma:warn We could not find your Prisma schema/,\n message: `Prisma generate failed to find the default schema. Did you include it in config.additionalFiles? ${cliLink(\n \"Config docs\",\n docs.config.prisma\n )}\\nCustom schema paths require a postinstall script like this: \\`prisma generate --schema=./custom/path/to/schema.prisma\\``,\n shouldFail: true,\n },\n ];\n\n const errorMessages: string[] = [];\n const warningMessages: string[] = [];\n\n let shouldFail = false;\n\n for (const warning of warnings) {\n const matches = logs.match(warning.regex);\n\n if (!matches) {\n continue;\n }\n\n const message = getMessageFromTemplate(warning.message, matches.groups);\n\n if (warning.shouldFail) {\n shouldFail = true;\n errorMessages.push(message);\n } else {\n warningMessages.push(message);\n }\n }\n\n if (shouldFail) {\n return {\n ok: false,\n summary: \"Build succeeded with critical warnings. Will not proceed\",\n warnings: warningMessages,\n errors: errorMessages,\n };\n }\n\n return {\n ok: true,\n warnings: warningMessages,\n };\n}\n\n// Try to extract useful error messages from the logs\nfunction checkLogsForErrors(logs: string) {\n const errors: LogParserOptions = [\n {\n regex: /Error: Provided --schema at (?<schema>.*) doesn't exist/,\n message: `Prisma generate failed to find the specified schema at \"$schema\".\\nDid you include it in config.additionalFiles? ${cliLink(\n \"Config docs\",\n docs.config.prisma\n )}`,\n },\n {\n regex: /@prisma\\/client did not initialize yet/,\n message: `Prisma client not initialized yet.\\nDid you forget to add the postinstall script? ${cliLink(\n \"Config docs\",\n docs.config.prisma\n )}`,\n },\n {\n regex: /sh: 1: (?<packageOrBinary>.*): not found/,\n message: `$packageOrBinary not found\\n\\nIf it's a package: Include it in ${cliLink(\n \"config.additionalPackages\",\n docs.config.prisma\n )}\\nIf it's a binary: Please ${cliLink(\n \"get in touch\",\n getInTouch\n )} and we'll see what we can do!`,\n },\n ];\n\n for (const error of errors) {\n const matches = logs.match(error.regex);\n\n if (!matches) {\n continue;\n }\n\n const message = getMessageFromTemplate(error.message, matches.groups);\n\n log.error(`${chalkError(\"Error:\")} ${message}`);\n break;\n }\n}\n\nfunction getMessageFromTemplate(template: string, replacer: RegExpMatchArray[\"groups\"]) {\n let message = template;\n\n if (replacer) {\n for (const [key, value] of Object.entries(replacer)) {\n message = message.replaceAll(`$${key}`, value);\n }\n }\n\n return message;\n}\n\nasync function saveLogs(shortCode: string, logs: string) {\n const logPath = join(await createTempDir(), `build-${shortCode}.log`);\n await writeFile(logPath, logs);\n return logPath;\n}\n\nasync function failDeploy(\n shortCode: string,\n errorSummary: string,\n logs: string,\n deploymentSpinner: ReturnType<typeof spinner>,\n warnings?: string[],\n errors?: string[]\n) {\n deploymentSpinner.stop(`Failed to deploy project`);\n\n // If there are logs, let's write it out to a temporary file and include the path in the error message\n if (logs.trim() !== \"\") {\n const logPath = await saveLogs(shortCode, logs);\n\n printWarnings(warnings);\n printErrors(errors);\n\n checkLogsForErrors(logs);\n\n outro(`${chalkError(\"Error:\")} ${errorSummary}. Full build logs have been saved to ${logPath}`);\n } else {\n outro(`${chalkError(\"Error:\")} ${errorSummary}.`);\n }\n\n // TODO: Let platform know so it can fail the deploy with an appropriate error\n}\n\n// Poll every 1 second for the deployment to finish\nasync function waitForDeploymentToFinish(\n deploymentId: string,\n client: CliApiClient,\n timeoutInSeconds: number = 180\n) {\n return tracer.startActiveSpan(\"waitForDeploymentToFinish\", async (span) => {\n try {\n const start = Date.now();\n let attempts = 0;\n\n while (true) {\n if (Date.now() - start > timeoutInSeconds * 1000) {\n span.recordException(new Error(\"Deployment timed out\"));\n span.end();\n return;\n }\n\n const deployment = await client.getDeployment(deploymentId);\n\n attempts++;\n\n if (!deployment.success) {\n throw new Error(deployment.error);\n }\n\n logger.debug(`Deployment status: ${deployment.data.status}`);\n\n if (\n deployment.data.status === \"DEPLOYED\" ||\n deployment.data.status === \"FAILED\" ||\n deployment.data.status === \"CANCELED\" ||\n deployment.data.status === \"TIMED_OUT\"\n ) {\n span.setAttributes({\n \"deployment.status\": deployment.data.status,\n \"deployment.attempts\": attempts,\n });\n\n span.end();\n\n return deployment.data;\n }\n\n await setTimeout(1000);\n }\n } catch (error) {\n recordSpanException(span, error);\n span.end();\n\n return error instanceof Error ? error.message : JSON.stringify(error);\n }\n });\n}\n\ntype BuildAndPushImageOptions = {\n registryHost: string;\n auth: string;\n imageTag: string;\n buildId: string;\n buildToken: string;\n buildProjectId: string;\n cwd: string;\n projectId: string;\n deploymentId: string;\n deploymentVersion: string;\n contentHash: string;\n projectRef: string;\n loadImage: boolean;\n buildPlatform: string;\n noCache: boolean;\n extraCACerts?: string;\n};\n\ntype BuildAndPushImageResults =\n | {\n ok: true;\n image: string;\n logs: string;\n digest?: string;\n }\n | {\n ok: false;\n error: string;\n logs: string;\n };\n\nasync function buildAndPushImage(\n options: BuildAndPushImageOptions,\n updater: ReturnType<typeof spinner>\n): Promise<BuildAndPushImageResults> {\n return tracer.startActiveSpan(\"buildAndPushImage\", async (span) => {\n span.setAttributes({\n \"options.registryHost\": options.registryHost,\n \"options.imageTag\": options.imageTag,\n \"options.buildPlatform\": options.buildPlatform,\n \"options.projectId\": options.projectId,\n \"options.deploymentId\": options.deploymentId,\n \"options.deploymentVersion\": options.deploymentVersion,\n \"options.contentHash\": options.contentHash,\n \"options.projectRef\": options.projectRef,\n \"options.loadImage\": options.loadImage,\n });\n\n // Step 3: Ensure we are \"logged in\" to our registry by writing to $HOME/.docker/config.json\n // TODO: make sure this works on windows\n const dockerConfigDir = await ensureLoggedIntoDockerRegistry(options.registryHost, {\n username: \"trigger\",\n password: options.auth,\n });\n\n const args = [\n \"build\",\n \"-f\",\n \"Containerfile\",\n options.noCache ? \"--no-cache\" : undefined,\n \"--platform\",\n options.buildPlatform,\n \"--provenance\",\n \"false\",\n \"--build-arg\",\n `TRIGGER_PROJECT_ID=${options.projectId}`,\n \"--build-arg\",\n `TRIGGER_DEPLOYMENT_ID=${options.deploymentId}`,\n \"--build-arg\",\n `TRIGGER_DEPLOYMENT_VERSION=${options.deploymentVersion}`,\n \"--build-arg\",\n `TRIGGER_CONTENT_HASH=${options.contentHash}`,\n \"--build-arg\",\n `TRIGGER_PROJECT_REF=${options.projectRef}`,\n ...(options.extraCACerts\n ? [\"--build-arg\", `NODE_EXTRA_CA_CERTS=${options.extraCACerts}`]\n : []),\n \"-t\",\n `${options.registryHost}/${options.imageTag}`,\n \".\",\n \"--push\",\n options.loadImage ? \"--load\" : undefined,\n ].filter(Boolean) as string[];\n\n logger.debug(`depot ${args.join(\" \")}`);\n\n span.setAttribute(\"depot.command\", `depot ${args.join(\" \")}`);\n\n // Step 4: Build and push the image\n const childProcess = depot(args, {\n cwd: options.cwd,\n env: {\n DEPOT_BUILD_ID: options.buildId,\n DEPOT_TOKEN: options.buildToken,\n DEPOT_PROJECT_ID: options.buildProjectId,\n DEPOT_NO_SUMMARY_LINK: \"1\",\n DEPOT_NO_UPDATE_NOTIFIER: \"1\",\n DOCKER_CONFIG: dockerConfigDir,\n },\n });\n\n const errors: string[] = [];\n\n try {\n const processCode = await new Promise<number | null>((res, rej) => {\n // For some reason everything is output on stderr, not stdout\n childProcess.stderr?.on(\"data\", (data: Buffer) => {\n const text = data.toString();\n\n // Emitted data chunks can contain multiple lines. Remove empty lines.\n const lines = text.split(\"\\n\").filter(Boolean);\n\n errors.push(...lines);\n logger.debug(text);\n });\n\n childProcess.on(\"error\", (e) => rej(e));\n childProcess.on(\"close\", (code) => res(code));\n });\n\n const logs = extractLogs(errors);\n\n if (processCode !== 0) {\n return {\n ok: false as const,\n error: `Error building image`,\n logs,\n };\n }\n\n const digest = extractImageDigest(errors);\n\n span.setAttributes({\n \"image.digest\": digest,\n });\n\n span.end();\n\n return {\n ok: true as const,\n image: options.imageTag,\n logs,\n digest,\n };\n } catch (e) {\n recordSpanException(span, e);\n span.end();\n\n return {\n ok: false as const,\n error: e instanceof Error ? e.message : JSON.stringify(e),\n logs: extractLogs(errors),\n };\n }\n });\n}\n\ntype BuildAndPushSelfHostedImageOptions = SetOptional<\n Omit<\n BuildAndPushImageOptions,\n \"buildId\" | \"buildToken\" | \"buildProjectId\" | \"auth\" | \"loadImage\"\n >,\n \"registryHost\"\n> & {\n pushImage: boolean;\n selfHostedRegistry: boolean;\n};\n\nasync function buildAndPushSelfHostedImage(\n options: BuildAndPushSelfHostedImageOptions\n): Promise<BuildAndPushImageResults> {\n return await tracer.startActiveSpan(\"buildAndPushSelfHostedImage\", async (span) => {\n span.setAttributes({\n \"options.imageTag\": options.imageTag,\n \"options.buildPlatform\": options.buildPlatform,\n \"options.projectId\": options.projectId,\n \"options.deploymentId\": options.deploymentId,\n \"options.deploymentVersion\": options.deploymentVersion,\n \"options.contentHash\": options.contentHash,\n \"options.projectRef\": options.projectRef,\n });\n\n const imageRef = `${options.registryHost ? `${options.registryHost}/` : \"\"}${options.imageTag}`;\n\n const buildArgs = [\n \"build\",\n \"-f\",\n \"Containerfile\",\n options.noCache ? \"--no-cache\" : undefined,\n \"--platform\",\n options.buildPlatform,\n \"--build-arg\",\n `TRIGGER_PROJECT_ID=${options.projectId}`,\n \"--build-arg\",\n `TRIGGER_DEPLOYMENT_ID=${options.deploymentId}`,\n \"--build-arg\",\n `TRIGGER_DEPLOYMENT_VERSION=${options.deploymentVersion}`,\n \"--build-arg\",\n `TRIGGER_CONTENT_HASH=${options.contentHash}`,\n \"--build-arg\",\n `TRIGGER_PROJECT_REF=${options.projectRef}`,\n ...(options.extraCACerts\n ? [\"--build-arg\", `NODE_EXTRA_CA_CERTS=${options.extraCACerts}`]\n : []),\n \"-t\",\n imageRef,\n \".\", // The build context\n ].filter(Boolean) as string[];\n\n logger.debug(`docker ${buildArgs.join(\" \")}`, {\n cwd: options.cwd,\n });\n\n span.setAttribute(\"docker.command.build\", `docker ${buildArgs.join(\" \")}`);\n\n // Build the image\n const buildProcess = execa(\"docker\", buildArgs, {\n cwd: options.cwd,\n });\n\n const errors: string[] = [];\n let digest: string | undefined;\n\n try {\n const processCode = await new Promise<number | null>((res, rej) => {\n // For some reason everything is output on stderr, not stdout\n buildProcess.stderr?.on(\"data\", (data: Buffer) => {\n const text = data.toString();\n\n errors.push(text);\n logger.debug(text);\n });\n\n buildProcess.on(\"error\", (e) => rej(e));\n buildProcess.on(\"close\", (code) => res(code));\n });\n\n if (processCode !== 0) {\n return {\n ok: false as const,\n error: \"Error building image\",\n logs: extractLogs(errors),\n };\n }\n\n digest = extractImageDigest(errors);\n\n span.setAttributes({\n \"image.digest\": digest,\n });\n } catch (e) {\n recordSpanException(span, e);\n\n span.end();\n\n return {\n ok: false as const,\n error: e instanceof Error ? e.message : JSON.stringify(e),\n logs: extractLogs(errors),\n };\n }\n\n const pushArgs = [\"push\", imageRef].filter(Boolean) as string[];\n\n logger.debug(`docker ${pushArgs.join(\" \")}`);\n\n span.setAttribute(\"docker.command.push\", `docker ${pushArgs.join(\" \")}`);\n\n if (options.selfHostedRegistry || options.pushImage) {\n // Push the image\n const pushProcess = execa(\"docker\", pushArgs, {\n cwd: options.cwd,\n });\n\n try {\n const processCode = await new Promise<number | null>((res, rej) => {\n pushProcess.stdout?.on(\"data\", (data: Buffer) => {\n const text = data.toString();\n\n logger.debug(text);\n });\n\n pushProcess.stderr?.on(\"data\", (data: Buffer) => {\n const text = data.toString();\n\n logger.debug(text);\n });\n\n pushProcess.on(\"error\", (e) => rej(e));\n pushProcess.on(\"close\", (code) => res(code));\n });\n\n if (processCode !== 0) {\n return {\n ok: false as const,\n error: \"Error pushing image\",\n logs: extractLogs(errors),\n };\n }\n\n span.end();\n } catch (e) {\n recordSpanException(span, e);\n\n span.end();\n\n return {\n ok: false as const,\n error: e instanceof Error ? e.message : JSON.stringify(e),\n logs: extractLogs(errors),\n };\n }\n }\n\n span.end();\n\n return {\n ok: true as const,\n image: options.imageTag,\n digest,\n logs: extractLogs(errors),\n };\n });\n}\n\nfunction extractImageDigest(outputs: string[]) {\n const imageDigestRegex = /pushing manifest for .+(?<digest>sha256:[a-f0-9]{64})/;\n\n for (const line of outputs) {\n const imageDigestMatch = line.match(imageDigestRegex);\n\n const digest = imageDigestMatch?.groups?.digest;\n\n if (digest) {\n return digest;\n }\n }\n}\n\nfunction extractLogs(outputs: string[]) {\n // Remove empty lines\n const cleanedOutputs = outputs.map((line) => line.trim()).filter((line) => line !== \"\");\n\n return cleanedOutputs.map((line) => line.trim()).join(\"\\n\");\n}\n\nasync function compileProject(\n config: ResolvedConfig,\n options: DeployCommandOptions,\n configPath?: string\n) {\n return await tracer.startActiveSpan(\"compileProject\", async (span) => {\n try {\n if (!options.skipTypecheck) {\n const typecheck = await typecheckProject(config);\n\n if (!typecheck) {\n throw new Error(\"Typecheck failed, aborting deployment\");\n }\n }\n\n const compileSpinner = spinner();\n compileSpinner.start(`Building project in ${config.projectDir}`);\n\n const taskFiles = await gatherTaskFiles(config);\n const workerFacade = readFileSync(\n join(cliRootPath(), \"workers\", \"prod\", \"worker-facade.js\"),\n \"utf-8\"\n );\n\n const workerSetupPath = join(cliRootPath(), \"workers\", \"prod\", \"worker-setup.js\");\n\n let workerContents = workerFacade\n .replace(\"__TASKS__\", createTaskFileImports(taskFiles))\n .replace(\n \"__WORKER_SETUP__\",\n `import { tracingSDK, otelTracer, otelLogger } from \"${escapeImportPath(\n workerSetupPath\n )}\";`\n );\n\n if (configPath) {\n logger.debug(\"Importing project config from\", { configPath });\n\n workerContents = workerContents.replace(\n \"__IMPORTED_PROJECT_CONFIG__\",\n `import * as importedConfigExports from \"${escapeImportPath(\n configPath\n )}\"; const importedConfig = importedConfigExports.config; const handleError = importedConfigExports.handleError;`\n );\n } else {\n workerContents = workerContents.replace(\n \"__IMPORTED_PROJECT_CONFIG__\",\n `const importedConfig = undefined; const handleError = undefined;`\n );\n }\n\n const result = await build({\n stdin: {\n contents: workerContents,\n resolveDir: process.cwd(),\n sourcefile: \"__entryPoint.ts\",\n },\n bundle: true,\n metafile: true,\n write: false,\n minify: false,\n sourcemap: \"external\", // does not set the //# sourceMappingURL= comment in the file, we handle it ourselves\n logLevel: \"error\",\n platform: \"node\",\n format: \"cjs\", // This is needed to support opentelemetry instrumentation that uses module patching\n target: [\"node18\", \"es2020\"],\n outdir: \"out\",\n banner: {\n js: `process.on(\"uncaughtException\", function(error, origin) { if (error instanceof Error) { process.send && process.send({ type: \"EVENT\", message: { type: \"UNCAUGHT_EXCEPTION\", payload: { error: { name: error.name, message: error.message, stack: error.stack }, origin }, version: \"v1\" } }); } else { process.send && process.send({ type: \"EVENT\", message: { type: \"UNCAUGHT_EXCEPTION\", payload: { error: { name: \"Error\", message: typeof error === \"string\" ? error : JSON.stringify(error) }, origin }, version: \"v1\" } }); } });`,\n },\n define: {\n TRIGGER_API_URL: `\"${config.triggerUrl}\"`,\n __PROJECT_CONFIG__: JSON.stringify(config),\n },\n plugins: [\n mockServerOnlyPlugin(),\n bundleDependenciesPlugin(\n \"workerFacade\",\n {},\n config.dependenciesToBundle,\n config.tsconfigPath\n ),\n workerSetupImportConfigPlugin(configPath),\n esbuildDecorators({\n tsconfig: config.tsconfigPath,\n tsx: true,\n force: false,\n }),\n ],\n });\n\n if (result.errors.length > 0) {\n compileSpinner.stop(\"Build failed, aborting deployment\");\n\n span.setAttributes({\n \"build.workerErrors\": result.errors.map(\n (error) => `Error: ${error.text} at ${error.location?.file}`\n ),\n });\n\n throw new Error(\"Build failed, aborting deployment\");\n }\n\n if (options.outputMetafile) {\n await writeJSONFile(join(options.outputMetafile, \"worker.json\"), result.metafile);\n }\n\n const entryPointContents = readFileSync(\n join(cliRootPath(), \"workers\", \"prod\", \"entry-point.js\"),\n \"utf-8\"\n );\n\n const entryPointResult = await build({\n stdin: {\n contents: entryPointContents,\n resolveDir: process.cwd(),\n sourcefile: \"index.ts\",\n },\n bundle: true,\n metafile: true,\n write: false,\n minify: false,\n sourcemap: false,\n logLevel: \"error\",\n platform: \"node\",\n packages: \"external\",\n format: \"cjs\", // This is needed to support opentelemetry instrumentation that uses module patching\n target: [\"node18\", \"es2020\"],\n outdir: \"out\",\n define: {\n __PROJECT_CONFIG__: JSON.stringify(config),\n },\n plugins: [\n bundleDependenciesPlugin(\n \"entryPoint.ts\",\n {},\n config.dependenciesToBundle,\n config.tsconfigPath\n ),\n ],\n });\n\n if (entryPointResult.errors.length > 0) {\n compileSpinner.stop(\"Build failed, aborting deployment\");\n\n span.setAttributes({\n \"build.entryPointErrors\": entryPointResult.errors.map(\n (error) => `Error: ${error.text} at ${error.location?.file}`\n ),\n });\n\n throw new Error(\"Build failed, aborting deployment\");\n }\n\n if (options.outputMetafile) {\n await writeJSONFile(\n join(options.outputMetafile, \"entry-point.json\"),\n entryPointResult.metafile\n );\n }\n\n // Create a tmp directory to store the build\n const tempDir = await createTempDir();\n\n logger.debug(`Writing compiled files to ${tempDir}`);\n\n // Get the metaOutput for the result build\n const metaOutput = result.metafile!.outputs[posix.join(\"out\", \"stdin.js\")];\n\n invariant(metaOutput, \"Meta output for the result build is missing\");\n\n // Get the metaOutput for the entryPoint build\n const entryPointMetaOutput =\n entryPointResult.metafile!.outputs[posix.join(\"out\", \"stdin.js\")];\n\n invariant(entryPointMetaOutput, \"Meta output for the entryPoint build is missing\");\n\n // Get the outputFile and the sourceMapFile for the result build\n const workerOutputFile = result.outputFiles.find(\n (file) => file.path === join(config.projectDir, \"out\", \"stdin.js\")\n );\n\n invariant(workerOutputFile, \"Output file for the result build is missing\");\n\n const workerSourcemapFile = result.outputFiles.find(\n (file) => file.path === join(config.projectDir, \"out\", \"stdin.js.map\")\n );\n\n invariant(workerSourcemapFile, \"Sourcemap file for the result build is missing\");\n\n // Get the outputFile for the entryPoint build\n\n const entryPointOutputFile = entryPointResult.outputFiles.find(\n (file) => file.path === join(config.projectDir, \"out\", \"stdin.js\")\n );\n\n invariant(entryPointOutputFile, \"Output file for the entryPoint build is missing\");\n\n // Save the result outputFile to /tmp/dir/worker.js (and make sure to map the sourceMap to the correct location in the file)\n await writeFile(\n join(tempDir, \"worker.js\"),\n `${workerOutputFile.text}\\n//# sourceMappingURL=worker.js.map`\n );\n // Save the sourceMapFile to /tmp/dir/worker.js.map\n await writeFile(join(tempDir, \"worker.js.map\"), workerSourcemapFile.text);\n // Save the entryPoint outputFile to /tmp/dir/index.js\n await writeFile(join(tempDir, \"index.js\"), entryPointOutputFile.text);\n\n logger.debug(\"Getting the imports for the worker and entryPoint builds\", {\n workerImports: metaOutput.imports,\n entryPointImports: entryPointMetaOutput.imports,\n });\n\n // Get all the required dependencies from the metaOutputs and save them to /tmp/dir/package.json\n const allImports = [...metaOutput.imports, ...entryPointMetaOutput.imports];\n\n const javascriptProject = new JavascriptProject(config.projectDir);\n\n const dependencies = await resolveRequiredDependencies(allImports, config, javascriptProject);\n\n logger.debug(\"gatherRequiredDependencies()\", { dependencies });\n\n const packageJsonContents = {\n ...javascriptProject.allowedPackageJson,\n dependencies,\n scripts: {\n ...javascriptProject.scripts,\n ...(typeof config.postInstall === \"string\" ? { postinstall: config.postInstall } : {}),\n },\n };\n\n span.setAttributes({\n ...flattenAttributes(packageJsonContents, \"packageJson.contents\"),\n });\n\n await writeJSONFile(join(tempDir, \"package.json\"), packageJsonContents);\n\n const copyResult = await copyAdditionalFiles(config, tempDir);\n\n if (!copyResult.ok) {\n compileSpinner.stop(\"Project built with warnings\");\n\n log.warn(\n `No additionalFiles matches for:\\n\\n${copyResult.noMatches\n .map((glob) => `- \"${glob}\"`)\n .join(\"\\n\")}\\n\\nIf this is unexpected you should check your ${cliLink(\n \"glob patterns\",\n \"https://github.com/isaacs/node-glob?tab=readme-ov-file#glob-primer\"\n )} are valid.`\n );\n } else {\n compileSpinner.stop(\"Project built successfully\");\n }\n\n const resolvingDependenciesResult = await resolveDependencies(\n tempDir,\n packageJsonContents,\n config\n );\n\n if (!resolvingDependenciesResult) {\n throw new SkipLoggingError(\"Failed to resolve dependencies\");\n }\n\n // Write the Containerfile to /tmp/dir/Containerfile\n const containerFilePath = join(cliRootPath(), \"Containerfile.prod\");\n\n let containerFileContents = readFileSync(containerFilePath, \"utf-8\");\n\n await writeFile(join(tempDir, \"Containerfile\"), containerFileContents);\n\n const contentHasher = createHash(\"sha256\");\n contentHasher.update(Buffer.from(entryPointOutputFile.text));\n contentHasher.update(Buffer.from(workerOutputFile.text));\n contentHasher.update(Buffer.from(JSON.stringify(dependencies)));\n\n const contentHash = contentHasher.digest(\"hex\");\n\n span.setAttributes({\n contentHash: contentHash,\n });\n\n span.end();\n\n return { path: tempDir, contentHash };\n } catch (e) {\n recordSpanException(span, e);\n\n span.end();\n\n throw e;\n }\n });\n}\n\nasync function resolveEnvironmentVariables(\n config: ReadConfigResult,\n apiClient: CliApiClient,\n options: DeployCommandOptions\n) {\n if (config.status !== \"file\") {\n return;\n }\n\n if (!config.module || typeof config.module.resolveEnvVars !== \"function\") {\n return;\n }\n\n const projectConfig = config.config;\n\n return await tracer.startActiveSpan(\"resolveEnvironmentVariables\", async (span) => {\n const $spinner = spinner();\n $spinner.start(\"Resolving environment variables\");\n\n try {\n let processEnv: Record<string, string | undefined> = {\n ...process.env,\n };\n\n // Step 1: Get existing env vars from the apiClient\n const environmentVariables = await apiClient.getEnvironmentVariables(projectConfig.project);\n\n if (environmentVariables.success) {\n processEnv = {\n ...processEnv,\n ...environmentVariables.data.variables,\n };\n }\n\n logger.debug(\"Existing environment variables\", {\n keys: Object.keys(processEnv),\n });\n\n // Step 2: Call the resolveEnvVars function with the existing env vars (and process.env)\n const resolvedEnvVars = await callResolveEnvVars(\n config.module,\n processEnv,\n options.env,\n projectConfig.project\n );\n\n // Step 3: Upload the new env vars via the apiClient\n if (resolvedEnvVars) {\n const total = Object.keys(resolvedEnvVars.variables).length;\n\n logger.debug(\"Resolved env vars\", {\n keys: Object.keys(resolvedEnvVars.variables),\n });\n\n if (total > 0) {\n $spinner.message(\n `Syncing ${total} environment variable${total > 1 ? \"s\" : \"\"} with the server`\n );\n\n const uploadResult = await apiClient.importEnvVars(projectConfig.project, options.env, {\n variables: resolvedEnvVars.variables,\n override:\n typeof resolvedEnvVars.override === \"boolean\" ? resolvedEnvVars.override : true,\n });\n\n if (uploadResult.success) {\n $spinner.stop(`${total} environment variable${total > 1 ? \"s\" : \"\"} synced`);\n return;\n } else {\n $spinner.stop(\"Failed to sync environment variables\");\n\n throw new Error(uploadResult.error);\n }\n } else {\n $spinner.stop(\"No environment variables to sync\");\n return;\n }\n } else {\n $spinner.stop(\"No environment variables to sync\");\n }\n\n $spinner.stop(\"Environment variables resolved\");\n } catch (e) {\n $spinner.stop(\"Failed to resolve environment variables\");\n\n recordSpanException(span, e);\n\n throw e;\n } finally {\n span.end();\n }\n });\n}\n\n// Let's first create a digest from the package.json, and then use that digest to lookup a cached package-lock.json\n// in the `.trigger/cache` directory. If the package-lock.json is found, we'll write it to the project directory\n// If the package-lock.json is not found, we will run `npm install --package-lock-only` and then write the package-lock.json\n// to the project directory, and finally we'll write the digest to the `.trigger/cache` directory with the contents of the package-lock.json\nexport async function resolveDependencies(\n projectDir: string,\n packageJsonContents: any,\n config: ResolvedConfig\n) {\n return await tracer.startActiveSpan(\"resolveDependencies\", async (span) => {\n const resolvingDepsSpinner = spinner();\n resolvingDepsSpinner.start(\"Resolving dependencies\");\n\n const hasher = createHash(\"sha256\");\n hasher.update(JSON.stringify(packageJsonContents));\n const digest = hasher.digest(\"hex\").slice(0, 16);\n\n const cacheDir = join(config.projectDir, \".trigger\", \"cache\");\n const cachePath = join(cacheDir, `${digest}.json`);\n\n span.setAttributes({\n \"packageJson.digest\": digest,\n \"cache.path\": cachePath,\n ...flattenAttributes(packageJsonContents, \"packageJson.contents\"),\n });\n\n try {\n const cachedPackageLock = await readFile(cachePath, \"utf-8\");\n\n logger.debug(`Using cached package-lock.json for ${digest}`);\n\n await writeFile(join(projectDir, \"package-lock.json\"), cachedPackageLock);\n\n span.setAttributes({\n \"cache.hit\": true,\n });\n\n span.end();\n\n resolvingDepsSpinner.stop(\"Dependencies resolved\");\n\n return true;\n } catch (e) {\n // If the file doesn't exist, we'll continue to the next step\n if (e instanceof Error && \"code\" in e && e.code !== \"ENOENT\") {\n span.recordException(e as Error);\n span.end();\n\n resolvingDepsSpinner.stop(`Failed to resolve dependencies: ${e.message}`);\n\n return false;\n }\n\n span.setAttributes({\n \"cache.hit\": false,\n });\n\n logger.debug(`No cached package-lock.json found for ${digest}`);\n\n try {\n if (logger.loggerLevel === \"debug\") {\n const childProcess = await execa(\"npm\", [\"config\", \"list\"], {\n cwd: projectDir,\n stdio: \"inherit\",\n });\n\n logger.debug(\"npm config list\");\n console.log(childProcess.stdout);\n }\n\n await execa(\n \"npm\",\n [\n \"install\",\n \"--package-lock-only\",\n \"--ignore-scripts\",\n \"--no-audit\",\n \"--legacy-peer-deps=false\",\n \"--strict-peer-deps=false\",\n ],\n {\n cwd: projectDir,\n stdio: logger.loggerLevel === \"debug\" ? \"inherit\" : \"pipe\",\n }\n );\n\n const packageLockContents = await readFile(join(projectDir, \"package-lock.json\"), \"utf-8\");\n\n logger.debug(`Writing package-lock.json to cache for ${digest}`);\n\n // Make sure the cache directory exists\n await mkdir(cacheDir, { recursive: true });\n\n // Save the package-lock.json to the cache\n await writeFile(cachePath, packageLockContents);\n\n // Write the package-lock.json to the project directory\n await writeFile(join(projectDir, \"package-lock.json\"), packageLockContents);\n\n span.end();\n\n resolvingDepsSpinner.stop(\"Dependencies resolved\");\n\n return true;\n } catch (installError) {\n recordSpanException(span, installError);\n span.end();\n\n const parsedError = parseNpmInstallError(installError);\n\n if (typeof parsedError === \"string\") {\n resolvingDepsSpinner.stop(`Failed to resolve dependencies: ${parsedError}`);\n } else {\n switch (parsedError.type) {\n case \"package-not-found-error\": {\n resolvingDepsSpinner.stop(`Failed to resolve dependencies`);\n\n logger.log(\n `\\n${chalkError(\"X Error:\")} The package ${chalkPurple(\n parsedError.packageName\n )} could not be found in the npm registry.`\n );\n\n break;\n }\n case \"no-matching-version-error\": {\n resolvingDepsSpinner.stop(`Failed to resolve dependencies`);\n\n logger.log(\n `\\n${chalkError(\"X Error:\")} The package ${chalkPurple(\n parsedError.packageName\n )} could not resolve because the version doesn't exist`\n );\n\n break;\n }\n }\n }\n\n return false;\n }\n }\n });\n}\n\nexport async function typecheckProject(config: ResolvedConfig) {\n return await tracer.startActiveSpan(\"typecheckProject\", async (span) => {\n try {\n const typecheckSpinner = spinner();\n typecheckSpinner.start(\"Typechecking project\");\n\n const tscTypecheck = execa(\"npm\", [\"exec\", \"tsc\", \"--\", \"--noEmit\"], {\n cwd: config.projectDir,\n });\n\n const stdouts: string[] = [];\n const stderrs: string[] = [];\n\n tscTypecheck.stdout?.on(\"data\", (chunk) => stdouts.push(chunk.toString()));\n tscTypecheck.stderr?.on(\"data\", (chunk) => stderrs.push(chunk.toString()));\n\n try {\n await new Promise((resolve, reject) => {\n tscTypecheck.addListener(\"exit\", (code) => (code === 0 ? resolve(code) : reject(code)));\n });\n } catch (error) {\n typecheckSpinner.stop(\n `Typechecking failed, check the logs below to view the issues. To skip typechecking, pass the --skip-typecheck flag`\n );\n\n logger.log(\"\");\n\n for (const stdout of stdouts) {\n logger.log(stdout);\n }\n\n span.recordException(new Error(stdouts.join(\"\\n\")));\n span.end();\n\n return false;\n }\n\n typecheckSpinner.stop(`Typechecking passed with 0 errors`);\n\n span.end();\n return true;\n } catch (e) {\n recordSpanException(span, e);\n\n span.end();\n\n return false;\n }\n });\n}\n\n// Returns the dependencies that are required by the output that are found in output and the CLI package dependencies\n// Returns the dependency names and the version to use (taken from the CLI deps package.json)\nexport async function resolveRequiredDependencies(\n imports: Metafile[\"outputs\"][string][\"imports\"],\n config: ResolvedConfig,\n project: JavascriptProject\n) {\n return await tracer.startActiveSpan(\"resolveRequiredDependencies\", async (span) => {\n const resolvablePackageNames = new Set<string>();\n\n for (const file of imports) {\n if ((file.kind !== \"require-call\" && file.kind !== \"dynamic-import\") || !file.external) {\n continue;\n }\n\n const packageName = detectPackageNameFromImportPath(file.path);\n\n if (!packageName) {\n continue;\n }\n\n resolvablePackageNames.add(packageName);\n }\n\n span.setAttribute(\"resolvablePackageNames\", Array.from(resolvablePackageNames));\n\n const resolvedPackageVersions = await project.resolveAll(Array.from(resolvablePackageNames));\n const missingPackages = Array.from(resolvablePackageNames).filter(\n (packageName) => !resolvedPackageVersions[packageName]\n );\n\n span.setAttributes({\n ...flattenAttributes(resolvedPackageVersions, \"resolvedPackageVersions\"),\n });\n span.setAttribute(\"missingPackages\", missingPackages);\n\n const dependencies: Record<string, string> = {};\n\n for (const missingPackage of missingPackages) {\n const internalDependencyVersion =\n (packageJson.dependencies as Record<string, string>)[missingPackage] ??\n detectDependencyVersion(missingPackage);\n\n if (internalDependencyVersion) {\n dependencies[missingPackage] = stripWorkspaceFromVersion(internalDependencyVersion);\n }\n }\n\n for (const [packageName, version] of Object.entries(resolvedPackageVersions)) {\n dependencies[packageName] = version;\n }\n\n if (config.additionalPackages) {\n span.setAttribute(\"additionalPackages\", config.additionalPackages);\n\n for (const packageName of config.additionalPackages) {\n if (dependencies[packageName]) {\n continue;\n }\n\n const packageParts = parsePackageName(packageName);\n\n if (packageParts.version) {\n dependencies[packageParts.name] = packageParts.version;\n continue;\n } else {\n const externalDependencyVersion = await project.resolve(packageParts.name, {\n allowDev: true,\n });\n\n if (externalDependencyVersion) {\n dependencies[packageParts.name] = externalDependencyVersion;\n continue;\n } else {\n logger.log(\n `${chalkWarning(\"X Warning:\")} Could not find version for package ${chalkPurple(\n packageName\n )}, add a version specifier to the package name (e.g. ${\n packageParts.name\n }@latest) or add it to your project's package.json`\n );\n }\n }\n }\n }\n\n if (!dependencies[\"@trigger.dev/sdk\"]) {\n logger.debug(\"Adding missing @trigger.dev/sdk dependency\", {\n version: packageJson.version,\n });\n\n span.setAttribute(\"addingMissingSDK\", packageJson.version);\n\n dependencies[\"@trigger.dev/sdk\"] = packageJson.version;\n }\n\n if (!dependencies[\"@trigger.dev/core\"]) {\n logger.debug(\"Adding missing @trigger.dev/core dependency\", {\n version: packageJson.version,\n });\n\n span.setAttribute(\"addingMissingCore\", packageJson.version);\n\n dependencies[\"@trigger.dev/core\"] = packageJson.version;\n }\n\n // Make sure we sort the dependencies by key to ensure consistent hashing\n const result = Object.fromEntries(\n Object.entries(dependencies).sort(([a], [b]) => a.localeCompare(b))\n );\n\n span.setAttributes({\n ...flattenAttributes(result, \"dependencies\"),\n });\n\n span.end();\n\n return result;\n });\n}\n\ntype AdditionalFilesReturn =\n | {\n ok: true;\n }\n | {\n ok: false;\n noMatches: string[];\n };\n\nexport async function copyAdditionalFiles(\n config: ResolvedConfig,\n tempDir: string\n): Promise<AdditionalFilesReturn> {\n const additionalFiles = config.additionalFiles ?? [];\n const noMatches: string[] = [];\n\n if (additionalFiles.length === 0) {\n return { ok: true };\n }\n\n return await tracer.startActiveSpan(\n \"copyAdditionalFiles\",\n {\n attributes: {\n \"config.additionalFiles\": additionalFiles,\n },\n },\n async (span) => {\n try {\n logger.debug(`Copying files to ${tempDir}`, {\n additionalFiles,\n });\n\n const globOptions = {\n withFileTypes: true,\n ignore: [\"node_modules\"],\n cwd: config.projectDir,\n nodir: true,\n } satisfies GlobOptions;\n\n const globs: Array<GlobOptions> = [];\n let i = 0;\n\n for (const additionalFile of additionalFiles) {\n let glob: GlobOptions | Glob<typeof globOptions>;\n\n if (i === 0) {\n glob = new Glob(additionalFile, globOptions);\n } else {\n const previousGlob = globs[i - 1];\n if (!previousGlob) {\n logger.error(\"No previous glob, this shouldn't happen\", { i, additionalFiles });\n continue;\n }\n\n // Use the previous glob's options and cache\n glob = new Glob(additionalFile, previousGlob);\n }\n\n if (!(Symbol.asyncIterator in glob)) {\n logger.error(\"Glob should be an async iterator\", { glob });\n throw new Error(\"Unrecoverable error while copying additional files\");\n }\n\n let matches = 0;\n for await (const file of glob) {\n matches++;\n\n // Any additional files that aren't a child of projectDir will be moved inside tempDir, so they can be part of the build context\n // The file \"../foo/bar\" will be written to \"tempDir/foo/bar\"\n // The file \"../../bar/baz\" will be written to \"tempDir/bar/baz\"\n const pathInsideTempDir = relative(config.projectDir, file.fullpath())\n .split(posix.sep)\n .filter((p) => p !== \"..\")\n .join(posix.sep);\n\n const relativeDestinationPath = join(tempDir, pathInsideTempDir);\n\n logger.debug(`Copying file ${file.fullpath()} to ${relativeDestinationPath}`);\n\n await mkdir(dirname(relativeDestinationPath), { recursive: true });\n await copyFile(file.fullpath(), relativeDestinationPath);\n }\n\n if (matches === 0) {\n noMatches.push(additionalFile);\n }\n\n globs[i] = glob;\n i++;\n }\n\n span.end();\n\n if (noMatches.length > 0) {\n return {\n ok: false,\n noMatches,\n } as const;\n }\n\n return {\n ok: true,\n } as const;\n } catch (error) {\n recordSpanException(span, error);\n\n span.end();\n\n throw error;\n }\n }\n );\n}\n\nasync function ensureLoggedIntoDockerRegistry(\n registryHost: string,\n auth: { username: string; password: string }\n) {\n const tmpDir = await createTempDir();\n // Read the current docker config\n const dockerConfigPath = join(tmpDir, \"config.json\");\n\n await writeJSONFile(dockerConfigPath, {\n auths: {\n [registryHost]: {\n auth: Buffer.from(`${auth.username}:${auth.password}`).toString(\"base64\"),\n },\n },\n });\n\n logger.debug(`Writing docker config to ${dockerConfigPath}`);\n\n return tmpDir;\n}\n","{\n \"name\": \"trigger.dev\",\n \"version\": \"3.0.0-beta.53\",\n \"description\": \"A Command-Line Interface for Trigger.dev (v3) projects\",\n \"main\": \"./dist/index.js\",\n \"types\": \"./dist/index.d.ts\",\n \"license\": \"MIT\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/triggerdotdev/trigger.dev.git\",\n \"directory\": \"packages/cli-v3\"\n },\n \"publishConfig\": {\n \"access\": \"public\"\n },\n \"keywords\": [\n \"typescript\",\n \"trigger.dev\",\n \"workflows\",\n \"orchestration\",\n \"events\",\n \"webhooks\",\n \"integrations\",\n \"apis\",\n \"jobs\",\n \"background jobs\",\n \"nextjs\"\n ],\n \"files\": [\n \"dist\"\n ],\n \"type\": \"module\",\n \"exports\": \"./dist/index.js\",\n \"bin\": {\n \"triggerdev\": \"./dist/index.js\"\n },\n \"devDependencies\": {\n \"@trigger.dev/core-apps\": \"workspace:*\",\n \"@trigger.dev/tsconfig\": \"workspace:*\",\n \"@types/gradient-string\": \"^1.1.2\",\n \"@types/mock-fs\": \"^4.13.1\",\n \"@types/node\": \"18\",\n \"@types/object-hash\": \"^3.0.6\",\n \"@types/react\": \"^18.2.48\",\n \"@types/semver\": \"^7.3.13\",\n \"@types/ws\": \"^8.5.3\",\n \"cpy-cli\": \"^5.0.0\",\n \"nodemon\": \"^3.0.1\",\n \"npm-run-all\": \"^4.1.5\",\n \"open\": \"^10.0.3\",\n \"p-retry\": \"^6.1.0\",\n \"rimraf\": \"^5.0.7\",\n \"tsup\": \"^8.0.1\",\n \"type-fest\": \"^3.6.0\",\n \"typescript\": \"^5.3.3\",\n \"vitest\": \"^1.6.0\",\n \"xdg-app-paths\": \"^8.3.0\"\n },\n \"scripts\": {\n \"typecheck\": \"tsc -p tsconfig.check.json\",\n \"build\": \"npm run clean && run-p build:**\",\n \"build:main\": \"tsup\",\n \"build:workers\": \"tsup --config tsup.workers.config.ts\",\n \"build:prod-containerfile\": \"cpy --flat src/Containerfile.prod dist/\",\n \"dev\": \"npm run clean && run-p dev:**\",\n \"dev:main\": \"tsup --watch\",\n \"dev:workers\": \"tsup --config tsup.workers.config.ts --watch\",\n \"dev:test\": \"nodemon -w src/Containerfile.prod -x npm run build:prod-containerfile\",\n \"clean\": \"rimraf dist\",\n \"start\": \"node dist/index.js\",\n \"test\": \"vitest\",\n \"test:e2e\": \"vitest --run -c e2e/vite.config.js\"\n },\n \"dependencies\": {\n \"@anatine/esbuild-decorators\": \"^0.2.19\",\n \"@clack/prompts\": \"^0.7.0\",\n \"@depot/cli\": \"0.0.1-cli.2.71.0\",\n \"@opentelemetry/api\": \"^1.8.0\",\n \"@opentelemetry/api-logs\": \"^0.49.1\",\n \"@opentelemetry/exporter-logs-otlp-http\": \"^0.49.1\",\n \"@opentelemetry/exporter-trace-otlp-http\": \"^0.49.1\",\n \"@opentelemetry/instrumentation\": \"^0.49.1\",\n \"@opentelemetry/instrumentation-fetch\": \"^0.49.1\",\n \"@opentelemetry/resources\": \"^1.22.0\",\n \"@opentelemetry/sdk-logs\": \"^0.49.1\",\n \"@opentelemetry/sdk-node\": \"^0.49.1\",\n \"@opentelemetry/sdk-trace-base\": \"^1.22.0\",\n \"@opentelemetry/sdk-trace-node\": \"^1.22.0\",\n \"@opentelemetry/semantic-conventions\": \"^1.22.0\",\n \"@trigger.dev/core\": \"workspace:3.0.0-beta.53\",\n \"@types/degit\": \"^2.8.3\",\n \"chalk\": \"^5.2.0\",\n \"chokidar\": \"^3.5.3\",\n \"cli-table3\": \"^0.6.3\",\n \"commander\": \"^9.4.1\",\n \"degit\": \"^2.8.4\",\n \"dotenv\": \"^16.4.4\",\n \"esbuild\": \"^0.19.11\",\n \"evt\": \"^2.4.13\",\n \"execa\": \"^9.1.0\",\n \"find-up\": \"^7.0.0\",\n \"glob\": \"^10.3.10\",\n \"gradient-string\": \"^2.0.2\",\n \"import-meta-resolve\": \"^4.0.0\",\n \"ink\": \"^4.4.1\",\n \"jsonc-parser\": \"3.2.1\",\n \"liquidjs\": \"^10.9.2\",\n \"mock-fs\": \"^5.2.0\",\n \"nanoid\": \"^4.0.2\",\n \"node-fetch\": \"^3.3.0\",\n \"object-hash\": \"^3.0.0\",\n \"p-debounce\": \"^4.0.0\",\n \"p-throttle\": \"^6.1.0\",\n \"partysocket\": \"^0.0.17\",\n \"proxy-agent\": \"^6.3.0\",\n \"react\": \"^18.2.0\",\n \"react-error-boundary\": \"^4.0.12\",\n \"semver\": \"^7.5.0\",\n \"simple-git\": \"^3.19.0\",\n \"source-map-support\": \"^0.5.21\",\n \"terminal-link\": \"^3.0.0\",\n \"tiny-invariant\": \"^1.2.0\",\n \"tsconfig-paths\": \"^4.2.0\",\n \"typescript\": \"^5.4.0\",\n \"update-check\": \"^1.5.4\",\n \"url\": \"^0.11.1\",\n \"ws\": \"^8.12.0\",\n \"zod\": \"3.22.3\",\n \"zod-validation-error\": \"^1.5.0\"\n },\n \"engines\": {\n \"node\": \">=18.0.0\"\n }\n}\n","import { z } from \"zod\";\nimport {\n CreateAuthorizationCodeResponseSchema,\n GetPersonalAccessTokenResponseSchema,\n WhoAmIResponseSchema,\n CreateBackgroundWorkerRequestBody,\n CreateBackgroundWorkerResponse,\n StartDeploymentIndexingResponseBody,\n GetProjectEnvResponse,\n GetEnvironmentVariablesResponseBody,\n InitializeDeploymentResponseBody,\n InitializeDeploymentRequestBody,\n StartDeploymentIndexingRequestBody,\n GetDeploymentResponseBody,\n GetProjectsResponseBody,\n GetProjectResponseBody,\n ImportEnvironmentVariablesRequestBody,\n EnvironmentVariableResponseBody,\n TaskRunExecution,\n} from \"@trigger.dev/core/v3\";\nimport { zodfetch, ApiError } from \"@trigger.dev/core/v3/zodfetch\";\n\nexport class CliApiClient {\n private readonly apiURL: string;\n\n constructor(\n apiURL: string,\n private readonly accessToken?: string\n ) {\n this.apiURL = apiURL.replace(/\\/$/, \"\");\n }\n\n async createAuthorizationCode() {\n return wrapZodFetch(\n CreateAuthorizationCodeResponseSchema,\n `${this.apiURL}/api/v1/authorization-code`,\n {\n method: \"POST\",\n }\n );\n }\n\n async getPersonalAccessToken(authorizationCode: string) {\n return wrapZodFetch(GetPersonalAccessTokenResponseSchema, `${this.apiURL}/api/v1/token`, {\n method: \"POST\",\n body: JSON.stringify({\n authorizationCode,\n }),\n });\n }\n\n async whoAmI() {\n if (!this.accessToken) {\n throw new Error(\"whoAmI: No access token\");\n }\n\n return wrapZodFetch(WhoAmIResponseSchema, `${this.apiURL}/api/v2/whoami`, {\n headers: {\n Authorization: `Bearer ${this.accessToken}`,\n \"Content-Type\": \"application/json\",\n },\n });\n }\n\n async getProject(projectRef: string) {\n if (!this.accessToken) {\n throw new Error(\"getProject: No access token\");\n }\n\n return wrapZodFetch(GetProjectResponseBody, `${this.apiURL}/api/v1/projects/${projectRef}`, {\n headers: {\n Authorization: `Bearer ${this.accessToken}`,\n \"Content-Type\": \"application/json\",\n },\n });\n }\n\n async getProjects() {\n if (!this.accessToken) {\n throw new Error(\"getProjects: No access token\");\n }\n\n return wrapZodFetch(GetProjectsResponseBody, `${this.apiURL}/api/v1/projects`, {\n headers: {\n Authorization: `Bearer ${this.accessToken}`,\n \"Content-Type\": \"application/json\",\n },\n });\n }\n\n async createBackgroundWorker(projectRef: string, body: CreateBackgroundWorkerRequestBody) {\n if (!this.accessToken) {\n throw new Error(\"createBackgroundWorker: No access token\");\n }\n\n return wrapZodFetch(\n CreateBackgroundWorkerResponse,\n `${this.apiURL}/api/v1/projects/${projectRef}/background-workers`,\n {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${this.accessToken}`,\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(body),\n }\n );\n }\n\n async createTaskRunAttempt(runFriendlyId: string) {\n if (!this.accessToken) {\n throw new Error(\"creatTaskRunAttempt: No access token\");\n }\n\n return wrapZodFetch(TaskRunExecution, `${this.apiURL}/api/v1/runs/${runFriendlyId}/attempts`, {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${this.accessToken}`,\n \"Content-Type\": \"application/json\",\n },\n });\n }\n\n async getProjectEnv({\n projectRef,\n env,\n }: {\n projectRef: string;\n env: \"dev\" | \"prod\" | \"staging\";\n }) {\n if (!this.accessToken) {\n throw new Error(\"getProjectDevEnv: No access token\");\n }\n\n return wrapZodFetch(\n GetProjectEnvResponse,\n `${this.apiURL}/api/v1/projects/${projectRef}/${env}`,\n {\n headers: {\n Authorization: `Bearer ${this.accessToken}`,\n \"Content-Type\": \"application/json\",\n },\n }\n );\n }\n\n async getEnvironmentVariables(projectRef: string) {\n if (!this.accessToken) {\n throw new Error(\"getEnvironmentVariables: No access token\");\n }\n\n return wrapZodFetch(\n GetEnvironmentVariablesResponseBody,\n `${this.apiURL}/api/v1/projects/${projectRef}/envvars`,\n {\n headers: {\n Authorization: `Bearer ${this.accessToken}`,\n \"Content-Type\": \"application/json\",\n },\n }\n );\n }\n\n async importEnvVars(\n projectRef: string,\n slug: \"dev\" | \"prod\" | \"staging\",\n params: ImportEnvironmentVariablesRequestBody\n ) {\n if (!this.accessToken) {\n throw new Error(\"importEnvVars: No access token\");\n }\n\n return wrapZodFetch(\n EnvironmentVariableResponseBody,\n `${this.apiURL}/api/v1/projects/${projectRef}/envvars/${slug}/import`,\n {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${this.accessToken}`,\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(params),\n }\n );\n }\n\n async initializeDeployment(body: InitializeDeploymentRequestBody) {\n if (!this.accessToken) {\n throw new Error(\"initializeDeployment: No access token\");\n }\n\n return wrapZodFetch(InitializeDeploymentResponseBody, `${this.apiURL}/api/v1/deployments`, {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${this.accessToken}`,\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(body),\n });\n }\n\n async startDeploymentIndexing(deploymentId: string, body: StartDeploymentIndexingRequestBody) {\n if (!this.accessToken) {\n throw new Error(\"startDeploymentIndexing: No access token\");\n }\n\n return wrapZodFetch(\n StartDeploymentIndexingResponseBody,\n `${this.apiURL}/api/v1/deployments/${deploymentId}/start-indexing`,\n {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${this.accessToken}`,\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(body),\n }\n );\n }\n\n async getDeployment(deploymentId: string) {\n if (!this.accessToken) {\n throw new Error(\"getDeployment: No access token\");\n }\n\n return wrapZodFetch(\n GetDeploymentResponseBody,\n `${this.apiURL}/api/v1/deployments/${deploymentId}`,\n {\n headers: {\n Authorization: `Bearer ${this.accessToken}`,\n Accept: \"application/json\",\n },\n }\n );\n }\n}\n\ntype ApiResult<TSuccessResult> =\n | { success: true; data: TSuccessResult }\n | {\n success: false;\n error: string;\n };\n\nasync function wrapZodFetch<T extends z.ZodTypeAny>(\n schema: T,\n url: string,\n requestInit?: RequestInit\n): Promise<ApiResult<z.infer<T>>> {\n try {\n const response = await zodfetch(schema, url, requestInit, {\n retry: {\n minTimeoutInMs: 500,\n maxTimeoutInMs: 5000,\n maxAttempts: 3,\n factor: 2,\n randomize: false,\n },\n });\n\n return {\n success: true,\n data: response,\n };\n } catch (error) {\n if (error instanceof ApiError) {\n return {\n success: false,\n error: error.message,\n };\n } else if (error instanceof Error) {\n return {\n success: false,\n error: error.message,\n };\n } else {\n return {\n success: false,\n error: String(error),\n };\n }\n }\n}\n","import { flattenAttributes } from \"@trigger.dev/core/v3\";\nimport { recordSpanException } from \"@trigger.dev/core/v3/workers\";\nimport { Command } from \"commander\";\nimport { z } from \"zod\";\nimport { getTracer, provider } from \"../telemetry/tracing\";\nimport { fromZodError } from \"zod-validation-error\";\nimport { logger } from \"../utilities/logger\";\nimport { outro } from \"@clack/prompts\";\nimport { chalkError } from \"../utilities/cliOutput\";\n\nexport const CommonCommandOptions = z.object({\n apiUrl: z.string().optional(),\n logLevel: z.enum([\"debug\", \"info\", \"log\", \"warn\", \"error\", \"none\"]).default(\"log\"),\n skipTelemetry: z.boolean().default(false),\n profile: z.string().default(\"default\"),\n});\n\nexport type CommonCommandOptions = z.infer<typeof CommonCommandOptions>;\n\nexport function commonOptions(command: Command) {\n return command\n .option(\"--profile <profile>\", \"The login profile to use\", \"default\")\n .option(\"-a, --api-url <value>\", \"Override the API URL\", \"https://api.trigger.dev\")\n .option(\n \"-l, --log-level <level>\",\n \"The CLI log level to use (debug, info, log, warn, error, none). This does not effect the log level of your trigger.dev tasks.\",\n \"log\"\n )\n .option(\"--skip-telemetry\", \"Opt-out of sending telemetry\");\n}\n\nexport class SkipLoggingError extends Error {}\nexport class SkipCommandError extends Error {}\nexport class OutroCommandError extends SkipCommandError {}\n\nexport async function handleTelemetry(action: () => Promise<void>) {\n try {\n await action();\n\n await provider?.forceFlush();\n } catch (e) {\n await provider?.forceFlush();\n\n process.exitCode = 1;\n }\n}\n\nexport const tracer = getTracer();\n\nexport async function wrapCommandAction<T extends z.AnyZodObject, TResult>(\n name: string,\n schema: T,\n options: unknown,\n action: (opts: z.output<T>) => Promise<TResult>\n): Promise<TResult> {\n return await tracer.startActiveSpan(name, async (span) => {\n try {\n const parsedOptions = schema.safeParse(options);\n\n if (!parsedOptions.success) {\n throw new Error(fromZodError(parsedOptions.error).toString());\n }\n\n span.setAttributes({\n ...flattenAttributes(parsedOptions.data, \"cli.options\"),\n });\n\n logger.loggerLevel = parsedOptions.data.logLevel;\n\n logger.debug(`Running \"${name}\" with the following options`, {\n options: options,\n spanContext: span?.spanContext(),\n });\n\n const result = await action(parsedOptions.data);\n\n span.end();\n\n return result;\n } catch (e) {\n if (e instanceof SkipLoggingError) {\n recordSpanException(span, e);\n } else if (e instanceof OutroCommandError) {\n outro(\"Operation cancelled\");\n } else if (e instanceof SkipCommandError) {\n // do nothing\n } else {\n recordSpanException(span, e);\n\n logger.log(`${chalkError(\"X Error:\")} ${e instanceof Error ? e.message : String(e)}`);\n }\n\n span.end();\n\n throw e;\n }\n });\n}\n","import { OTLPTraceExporter } from \"@opentelemetry/exporter-trace-otlp-http\";\nimport { registerInstrumentations } from \"@opentelemetry/instrumentation\";\nimport { Resource, detectResourcesSync, processDetectorSync } from \"@opentelemetry/resources\";\nimport { NodeTracerProvider, SimpleSpanProcessor } from \"@opentelemetry/sdk-trace-node\";\nimport { FetchInstrumentation } from \"@opentelemetry/instrumentation-fetch\";\nimport { DiagConsoleLogger, DiagLogLevel, diag, trace } from \"@opentelemetry/api\";\nimport * as packageJson from \"../../package.json\";\nimport {\n SEMRESATTRS_SERVICE_NAME,\n SEMRESATTRS_SERVICE_VERSION,\n} from \"@opentelemetry/semantic-conventions\";\nimport { logger } from \"../utilities/logger\";\n\nfunction initializeTracing(): NodeTracerProvider | undefined {\n if (\n process.argv.includes(\"--skip-telemetry\") ||\n process.env.TRIGGER_DEV_SKIP_TELEMETRY || // only for backwards compat\n process.env.TRIGGER_TELEMETRY_DISABLED\n ) {\n logger.debug(\"📉 Telemetry disabled\");\n return;\n }\n\n if (process.env.OTEL_INTERNAL_DIAG_DEBUG) {\n diag.setLogger(new DiagConsoleLogger(), DiagLogLevel.DEBUG);\n }\n\n const resource = detectResourcesSync({\n detectors: [processDetectorSync],\n }).merge(\n new Resource({\n [SEMRESATTRS_SERVICE_NAME]: \"trigger.dev cli v3\",\n [SEMRESATTRS_SERVICE_VERSION]: packageJson.version,\n })\n );\n\n const traceProvider = new NodeTracerProvider({\n forceFlushTimeoutMillis: 30_000,\n resource,\n spanLimits: {\n attributeCountLimit: 1000,\n attributeValueLengthLimit: 2048,\n eventCountLimit: 100,\n attributePerEventCountLimit: 100,\n linkCountLimit: 10,\n attributePerLinkCountLimit: 100,\n },\n });\n\n const spanExporter = new OTLPTraceExporter({\n url: \"https://otel.baselime.io/v1\",\n timeoutMillis: 5000,\n headers: {\n \"x-api-key\": \"b6e0fbbaf8dc2524773d2152ae2e9eb5c7fbaa52\",\n },\n });\n\n const spanProcessor = new SimpleSpanProcessor(spanExporter);\n\n traceProvider.addSpanProcessor(spanProcessor);\n traceProvider.register();\n\n registerInstrumentations({\n instrumentations: [new FetchInstrumentation()],\n });\n\n return traceProvider;\n}\n\nexport const provider = initializeTracing();\n\nexport function getTracer() {\n return trace.getTracer(\"trigger.dev cli v3\", packageJson.version);\n}\n","// This is a copy of the logger utility from the wrangler repo: https://github.com/cloudflare/workers-sdk/blob/main/packages/wrangler/src/logger.ts\n\nimport { format } from \"node:util\";\nimport chalk from \"chalk\";\nimport CLITable from \"cli-table3\";\nimport { formatMessagesSync } from \"esbuild\";\nimport type { Message } from \"esbuild\";\nimport { getEnvironmentVariableFactory } from \"./getEnvironmentVariableFactory.js\";\nexport const LOGGER_LEVELS = {\n none: -1,\n error: 0,\n warn: 1,\n info: 2,\n log: 3,\n debug: 4,\n} as const;\n\nexport type LoggerLevel = keyof typeof LOGGER_LEVELS;\n\n/** A map from LOGGER_LEVEL to the error `kind` needed by `formatMessagesSync()`. */\nconst LOGGER_LEVEL_FORMAT_TYPE_MAP = {\n error: \"error\",\n warn: \"warning\",\n info: undefined,\n log: undefined,\n debug: undefined,\n} as const;\n\nconst getLogLevelFromEnv = getEnvironmentVariableFactory({\n variableName: \"TRIGGER_LOG_LEVEL\",\n});\n\nfunction getLoggerLevel(): LoggerLevel {\n const fromEnv = getLogLevelFromEnv()?.toLowerCase();\n if (fromEnv !== undefined) {\n if (fromEnv in LOGGER_LEVELS) return fromEnv as LoggerLevel;\n const expected = Object.keys(LOGGER_LEVELS)\n .map((level) => `\"${level}\"`)\n .join(\" | \");\n console.warn(\n `Unrecognised WRANGLER_LOG value ${JSON.stringify(\n fromEnv\n )}, expected ${expected}, defaulting to \"log\"...`\n );\n }\n return \"log\";\n}\n\nexport type TableRow<Keys extends string> = Record<Keys, string>;\n\nexport class Logger {\n constructor() {}\n\n loggerLevel = getLoggerLevel();\n columns = process.stdout.columns;\n\n debug = (...args: unknown[]) => this.doLog(\"debug\", args);\n ignore = (...args: unknown[]) => {};\n debugWithSanitization = (label: string, ...args: unknown[]) => {\n this.doLog(\"debug\", [label, ...args]);\n };\n info = (...args: unknown[]) => this.doLog(\"info\", args);\n log = (...args: unknown[]) => this.doLog(\"log\", args);\n warn = (...args: unknown[]) => this.doLog(\"warn\", args);\n error = (...args: unknown[]) => this.doLog(\"error\", args);\n table<Keys extends string>(data: TableRow<Keys>[], level?: Exclude<LoggerLevel, \"none\">) {\n const keys: Keys[] = data.length === 0 ? [] : (Object.keys(data[0]!) as Keys[]);\n const t = new CLITable({\n head: keys,\n style: {\n head: chalk.level ? [\"blue\"] : [],\n border: chalk.level ? [\"gray\"] : [],\n },\n });\n t.push(...data.map((row) => keys.map((k) => row[k])));\n return this.doLog(level ?? \"log\", [t.toString()]);\n }\n\n private doLog(messageLevel: Exclude<LoggerLevel, \"none\">, args: unknown[]) {\n const message = this.formatMessage(messageLevel, format(...args));\n\n // only send logs to the terminal if their level is at least the configured log-level\n if (LOGGER_LEVELS[this.loggerLevel] >= LOGGER_LEVELS[messageLevel]) {\n console[messageLevel](message);\n }\n }\n\n private formatMessage(level: Exclude<LoggerLevel, \"none\">, message: string): string {\n const kind = LOGGER_LEVEL_FORMAT_TYPE_MAP[level];\n if (kind) {\n // Format the message using the esbuild formatter.\n // The first line of the message is the main `text`,\n // subsequent lines are put into the `notes`.\n const [firstLine, ...otherLines] = message.split(\"\\n\");\n const notes = otherLines.length > 0 ? otherLines.map((text) => ({ text })) : undefined;\n return formatMessagesSync([{ text: firstLine, notes }], {\n color: true,\n kind,\n terminalWidth: this.columns,\n })[0]!;\n } else {\n return message;\n }\n }\n}\n\n/**\n * A drop-in replacement for `console` for outputting logging messages.\n *\n * Errors and Warnings will get additional formatting to highlight them to the user.\n * You can also set a `logger.loggerLevel` value to one of \"debug\", \"log\", \"warn\" or \"error\",\n * to filter out logging messages.\n */\nexport const logger = new Logger();\n\nexport function logBuildWarnings(warnings: Message[]) {\n const logs = formatMessagesSync(warnings, { kind: \"warning\", color: true });\n for (const log of logs) console.warn(log);\n}\n\n/**\n * Logs all errors/warnings associated with an esbuild BuildFailure in the same\n * style esbuild would.\n */\nexport function logBuildFailure(errors: Message[], warnings: Message[]) {\n const logs = formatMessagesSync(errors, { kind: \"error\", color: true });\n for (const log of logs) console.error(log);\n logBuildWarnings(warnings);\n}\n","import { logger } from \"./logger.js\";\n\ntype VariableNames = \"TRIGGER_API_URL\" | \"TRIGGER_SECRET_KEY\" | \"TRIGGER_LOG_LEVEL\";\n\ntype DeprecatedNames = \"\";\n\n/**\n * Create a function used to access an environment variable.\n *\n * This is not memoized to allow us to change the value at runtime, such as in testing.\n * A warning is shown if the client is using a deprecated version - but only once.\n */\nexport function getEnvironmentVariableFactory({\n variableName,\n deprecatedName,\n}: {\n variableName: VariableNames;\n deprecatedName?: DeprecatedNames;\n}): () => string | undefined;\n\n/**\n * Create a function used to access an environment variable, with a default value.\n *\n * This is not memoized to allow us to change the value at runtime, such as in testing.\n * A warning is shown if the client is using a deprecated version - but only once.\n */\nexport function getEnvironmentVariableFactory({\n variableName,\n deprecatedName,\n defaultValue,\n}: {\n variableName: VariableNames;\n deprecatedName?: DeprecatedNames;\n defaultValue: () => string;\n}): () => string;\n\n/**\n * Create a function used to access an environment variable.\n *\n * This is not memoized to allow us to change the value at runtime, such as in testing.\n * A warning is shown if the client is using a deprecated version - but only once.\n */\nexport function getEnvironmentVariableFactory({\n variableName,\n deprecatedName,\n defaultValue,\n}: {\n variableName: VariableNames;\n deprecatedName?: DeprecatedNames;\n defaultValue?: () => string;\n}): () => string | undefined {\n let hasWarned = false;\n return () => {\n if (process.env[variableName]) {\n return process.env[variableName];\n } else if (deprecatedName && process.env[deprecatedName]) {\n if (!hasWarned) {\n // Only show the warning once.\n hasWarned = true;\n logger.warn(\n `Using \"${deprecatedName}\" environment variable. This is deprecated. Please use \"${variableName}\", instead.`\n );\n }\n return process.env[deprecatedName];\n } else {\n return defaultValue?.();\n }\n };\n}\n","import { log } from \"@clack/prompts\";\nimport chalk from \"chalk\";\nimport terminalLink, { Options as TerminalLinkOptions } from \"terminal-link\";\n\nexport const green = \"#4FFF54\";\nexport const purple = \"#735BF3\";\n\nexport function chalkGreen(text: string) {\n return chalk.hex(green)(text);\n}\n\nexport function chalkPurple(text: string) {\n return chalk.hex(purple)(text);\n}\n\nexport function chalkGrey(text: string) {\n return chalk.hex(\"#878C99\")(text);\n}\n\nexport function chalkError(text: string) {\n return chalk.hex(\"#E11D48\")(text);\n}\n\nexport function chalkWarning(text: string) {\n return chalk.yellow(text);\n}\n\nexport function chalkSuccess(text: string) {\n return chalk.hex(\"#28BF5C\")(text);\n}\n\nexport function chalkLink(text: string) {\n return chalk.underline.hex(\"#D7D9DD\")(text);\n}\n\nexport function chalkWorker(text: string) {\n return chalk.hex(\"#FFFF89\")(text);\n}\n\nexport function chalkTask(text: string) {\n return chalk.hex(\"#60A5FA\")(text);\n}\n\nexport function chalkRun(text: string) {\n return chalk.hex(\"#A78BFA\")(text);\n}\n\nexport function logo() {\n return `${chalk.hex(green).bold(\"Trigger\")}${chalk.hex(purple).bold(\".dev\")}`;\n}\n\n// Mar 27 09:17:25.653\nexport function prettyPrintDate(date: Date = new Date()) {\n let formattedDate = new Intl.DateTimeFormat(\"en-US\", {\n month: \"short\",\n day: \"2-digit\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n second: \"2-digit\",\n hour12: false,\n }).format(date);\n\n // Append milliseconds\n formattedDate += \".\" + (\"00\" + date.getMilliseconds()).slice(-3);\n\n return formattedDate;\n}\n\nexport function prettyError(header: string, body?: string, footer?: string) {\n const prefix = \"Error: \";\n const indent = Array(prefix.length).fill(\" \").join(\"\");\n const spacing = \"\\n\\n\";\n\n const prettyPrefix = chalkError(prefix);\n\n const withIndents = (text?: string) =>\n text\n ?.split(\"\\n\")\n .map((line) => `${indent}${line}`)\n .join(\"\\n\");\n\n const prettyBody = withIndents(body);\n const prettyFooter = withIndents(footer);\n\n log.error(\n `${prettyPrefix}${header}${prettyBody ? `${spacing}${prettyBody}` : \"\"}${\n prettyFooter ? `${spacing}${prettyFooter}` : \"\"\n }`\n );\n}\n\nexport function prettyWarning(header: string, body?: string, footer?: string) {\n const prefix = \"Warning: \";\n const indent = Array(prefix.length).fill(\" \").join(\"\");\n const spacing = \"\\n\\n\";\n\n const prettyPrefix = chalkWarning(prefix);\n\n const withIndents = (text?: string) =>\n text\n ?.split(\"\\n\")\n .map((line) => `${indent}${line}`)\n .join(\"\\n\");\n\n const prettyBody = withIndents(body);\n const prettyFooter = withIndents(footer);\n\n log.warn(\n `${prettyPrefix}${header}${prettyBody ? `${spacing}${prettyBody}` : \"\"}${\n prettyFooter ? `${spacing}${prettyFooter}` : \"\"\n }`\n );\n}\n\nexport function cliLink(text: string, url: string, options?: TerminalLinkOptions) {\n return terminalLink(text, url, {\n fallback: (text, url) => `${text} ${url}`,\n ...options,\n });\n}\n","import { Config, ResolvedConfig } from \"@trigger.dev/core/v3\";\nimport { findUp } from \"find-up\";\nimport { mkdirSync, writeFileSync } from \"node:fs\";\nimport path, { join } from \"node:path\";\nimport { pathToFileURL } from \"node:url\";\nimport xdgAppPaths from \"xdg-app-paths\";\nimport { z } from \"zod\";\nimport { CLOUD_API_URL, CONFIG_FILES } from \"../consts.js\";\nimport { createTempDir, readJSONFileSync } from \"./fileSystem.js\";\nimport { logger } from \"./logger.js\";\nimport { findTriggerDirectories, resolveTriggerDirectories } from \"./taskFiles.js\";\nimport { build } from \"esbuild\";\nimport { esbuildDecorators } from \"@anatine/esbuild-decorators\";\n\nfunction getGlobalConfigFolderPath() {\n const configDir = xdgAppPaths(\"trigger\").config();\n\n return configDir;\n}\n\n//auth config file\nexport const UserAuthConfigSchema = z.object({\n accessToken: z.string().optional(),\n apiUrl: z.string().optional(),\n});\n\nexport type UserAuthConfig = z.infer<typeof UserAuthConfigSchema>;\n\nconst UserAuthConfigFileSchema = z.record(UserAuthConfigSchema);\n\ntype UserAuthConfigFile = z.infer<typeof UserAuthConfigFileSchema>;\n\nfunction getAuthConfigFilePath() {\n return path.join(getGlobalConfigFolderPath(), \"default.json\");\n}\n\nexport function writeAuthConfigProfile(config: UserAuthConfig, profile: string = \"default\") {\n const existingConfig = readAuthConfigFile() || {};\n\n existingConfig[profile] = config;\n\n writeAuthConfigFile(existingConfig);\n}\n\nexport function readAuthConfigProfile(profile: string = \"default\"): UserAuthConfig | undefined {\n try {\n const authConfigFilePath = getAuthConfigFilePath();\n\n logger.debug(`Reading auth config file`, { authConfigFilePath });\n\n const json = readJSONFileSync(authConfigFilePath);\n const parsed = UserAuthConfigFileSchema.parse(json);\n return parsed[profile];\n } catch (error) {\n logger.debug(`Error reading auth config file: ${error}`);\n return undefined;\n }\n}\n\nexport function deleteAuthConfigProfile(profile: string = \"default\") {\n const existingConfig = readAuthConfigFile() || {};\n\n delete existingConfig[profile];\n\n writeAuthConfigFile(existingConfig);\n}\n\nexport function readAuthConfigFile(): UserAuthConfigFile | undefined {\n try {\n const authConfigFilePath = getAuthConfigFilePath();\n\n logger.debug(`Reading auth config file`, { authConfigFilePath });\n\n const json = readJSONFileSync(authConfigFilePath);\n const parsed = UserAuthConfigFileSchema.parse(json);\n return parsed;\n } catch (error) {\n logger.debug(`Error reading auth config file: ${error}`);\n return undefined;\n }\n}\n\nexport function writeAuthConfigFile(config: UserAuthConfigFile) {\n const authConfigFilePath = getAuthConfigFilePath();\n mkdirSync(path.dirname(authConfigFilePath), {\n recursive: true,\n });\n writeFileSync(path.join(authConfigFilePath), JSON.stringify(config), {\n encoding: \"utf-8\",\n });\n}\n\nasync function getConfigPath(dir: string, fileName?: string): Promise<string | undefined> {\n logger.debug(\"Searching for the config file\", {\n dir,\n fileName,\n configFiles: CONFIG_FILES,\n });\n\n return await findUp(fileName ? [fileName] : CONFIG_FILES, { cwd: dir });\n}\n\nasync function findFilePath(dir: string, fileName: string): Promise<string | undefined> {\n const result = await findUp([fileName], { cwd: dir });\n\n logger.debug(\"Searched for the file\", {\n dir,\n fileName,\n result,\n });\n\n return result;\n}\n\nexport type ReadConfigOptions = {\n projectRef?: string;\n configFile?: string;\n cwd?: string;\n};\n\nexport type ReadConfigFileResult = {\n status: \"file\";\n config: ResolvedConfig;\n path: string;\n module?: any;\n};\n\nexport type ReadConfigResult =\n | ReadConfigFileResult\n | {\n status: \"in-memory\";\n config: ResolvedConfig;\n }\n | {\n status: \"error\";\n error: unknown;\n };\n\nexport async function readConfig(\n dir: string,\n options?: ReadConfigOptions\n): Promise<ReadConfigResult> {\n const absoluteDir = path.resolve(options?.cwd || process.cwd(), dir);\n\n const configPath = await getConfigPath(dir, options?.configFile);\n\n if (!configPath) {\n if (options?.projectRef) {\n const rawConfig = await normalizeConfig({ project: options.projectRef });\n const config = Config.parse(rawConfig);\n\n return {\n status: \"in-memory\",\n config: await resolveConfig(absoluteDir, config),\n };\n } else {\n throw new Error(`Config file not found in ${absoluteDir} or any parent directory.`);\n }\n }\n\n const tempDir = await createTempDir();\n\n const builtConfigFilePath = join(tempDir, \"config.js\");\n const builtConfigFileHref = pathToFileURL(builtConfigFilePath).href;\n\n logger.debug(\"Building config file\", {\n configPath,\n builtConfigFileHref,\n builtConfigFilePath,\n });\n\n // We need to build the path to the config file, and then import it?\n await build({\n entryPoints: [configPath],\n bundle: true,\n metafile: true,\n minify: false,\n write: true,\n format: \"cjs\",\n platform: \"node\",\n target: [\"es2020\", \"node18\"],\n outfile: builtConfigFilePath,\n logLevel: \"silent\",\n plugins: [\n esbuildDecorators({\n cwd: absoluteDir,\n tsx: false,\n force: false,\n }),\n {\n name: \"native-node-modules\",\n setup(build) {\n const opts = build.initialOptions;\n opts.loader = opts.loader || {};\n opts.loader[\".node\"] = \"copy\";\n },\n },\n ],\n });\n\n try {\n // import the config file\n const userConfigModule = await import(builtConfigFileHref);\n\n // The --project-ref CLI arg will always override the project specified in the config file\n const rawConfig = await normalizeConfig(\n userConfigModule?.config,\n options?.projectRef ? { project: options?.projectRef } : undefined\n );\n\n const config = Config.parse(rawConfig);\n\n return {\n status: \"file\",\n config: await resolveConfig(absoluteDir, config),\n path: configPath,\n module: userConfigModule,\n };\n } catch (error) {\n return {\n status: \"error\",\n error,\n };\n }\n}\n\nexport async function resolveConfig(path: string, config: Config): Promise<ResolvedConfig> {\n if (!config.triggerDirectories) {\n config.triggerDirectories = await findTriggerDirectories(path);\n // TODO trigger-dir-missing: throw error if no trigger directory is found\n }\n\n config.triggerDirectories = resolveTriggerDirectories(path, config.triggerDirectories);\n // TODO trigger-dir-not-found: throw error if trigger directories do not exist\n\n logger.debug(\"Resolved trigger directories\", { triggerDirectories: config.triggerDirectories });\n\n if (!config.triggerUrl) {\n config.triggerUrl = CLOUD_API_URL;\n }\n\n if (!config.projectDir) {\n config.projectDir = path;\n }\n\n if (!config.tsconfigPath) {\n config.tsconfigPath = await findFilePath(path, \"tsconfig.json\");\n }\n\n if (!config.additionalFiles) {\n config.additionalFiles = [];\n }\n\n if (config.extraCACerts) {\n config.additionalFiles.push(config.extraCACerts);\n config.extraCACerts = config.extraCACerts.replace(/^(\\.[.]?\\/)+/, \"\");\n }\n\n return config as ResolvedConfig;\n}\n\nexport async function normalizeConfig(config: any, overrides?: Record<string, any>): Promise<any> {\n let normalized = config;\n\n if (typeof config === \"function\") {\n normalized = await config();\n }\n\n normalized = { ...normalized, ...overrides };\n\n return normalized;\n}\n","// deno-fmt-ignore-file ## prefer customized `prettier` formatting\n\nimport _ from '../mod.cjs.js';\nexport * from '../mod.cjs.js';\nexport default _;\n","import path from \"path\";\nimport { fileURLToPath } from \"url\";\n\n// With the move to TSUP as a build tool, this keeps path routes in other files (installers, loaders, etc) in check more easily.\n// Path is in relation to a single index.js file inside ./dist\nconst __filename = fileURLToPath(import.meta.url);\nconst distPath = path.dirname(__filename);\n\nexport const PKG_ROOT = path.join(distPath, \"../\");\nexport const COMMAND_NAME = \"trigger.dev\";\nexport const CLOUD_WEB_URL = \"https://cloud.trigger.dev\";\nexport const CLOUD_API_URL = \"https://api.trigger.dev\";\nexport const CONFIG_FILES = [\"trigger.config.ts\", \"trigger.config.js\", \"trigger.config.mjs\"];\n","import fsSync from \"fs\";\nimport fsModule, { writeFile } from \"fs/promises\";\nimport fs from \"node:fs\";\nimport { tmpdir } from \"node:os\";\nimport pathModule from \"node:path\";\n\n// Creates a file at the given path, if the directory doesn't exist it will be created\nexport async function createFile(path: string, contents: string): Promise<string> {\n await fsModule.mkdir(pathModule.dirname(path), { recursive: true });\n await fsModule.writeFile(path, contents);\n\n return path;\n}\n\nexport function isDirectory(configPath: string) {\n try {\n return fs.statSync(configPath).isDirectory();\n } catch (error) {\n // ignore error\n return false;\n }\n}\n\nexport async function pathExists(path: string): Promise<boolean> {\n return fsSync.existsSync(path);\n}\n\nexport async function someFileExists(directory: string, filenames: string[]): Promise<boolean> {\n for (let index = 0; index < filenames.length; index++) {\n const filename = filenames[index];\n if (!filename) continue;\n\n const path = pathModule.join(directory, filename);\n if (await pathExists(path)) {\n return true;\n }\n }\n\n return false;\n}\n\nexport async function removeFile(path: string) {\n await fsModule.unlink(path);\n}\n\nexport async function readFile(path: string) {\n return await fsModule.readFile(path, \"utf8\");\n}\n\nexport async function readJSONFile(path: string) {\n const fileContents = await fsModule.readFile(path, \"utf8\");\n\n return JSON.parse(fileContents);\n}\n\nexport async function safeFeadJSONFile(path: string) {\n try {\n const fileExists = await pathExists(path);\n\n if (!fileExists) return;\n\n const fileContents = await readFile(path);\n\n return JSON.parse(fileContents);\n } catch {\n return;\n }\n}\n\nexport async function writeJSONFile(path: string, json: any, pretty = false) {\n await writeFile(path, JSON.stringify(json, undefined, pretty ? 2 : undefined), \"utf8\");\n}\n\nexport function readJSONFileSync(path: string) {\n const fileContents = fsSync.readFileSync(path, \"utf8\");\n\n return JSON.parse(fileContents);\n}\n\nexport function safeDeleteFileSync(path: string) {\n try {\n fs.unlinkSync(path);\n } catch (error) {\n // ignore error\n }\n}\n\n// Create a temporary directory within the OS's temp directory\nexport async function createTempDir(): Promise<string> {\n // Generate a unique temp directory path\n const tempDirPath: string = pathModule.join(tmpdir(), \"trigger-\");\n\n // Create the temp directory synchronously and return the path\n const directory = await fsModule.mkdtemp(tempDirPath);\n\n return directory;\n}\n","import { ResolvedConfig } from \"@trigger.dev/core/v3\";\nimport fs from \"node:fs\";\nimport { join, relative, resolve } from \"node:path\";\nimport { TaskFile } from \"../types\";\n\nexport function createTaskFileImports(taskFiles: TaskFile[]) {\n return taskFiles\n .map(\n (taskFile) =>\n `import * as ${taskFile.importName} from \"./${taskFile.importPath}\"; TaskFileImports[\"${\n taskFile.importName\n }\"] = ${taskFile.importName}; TaskFiles[\"${taskFile.importName}\"] = ${JSON.stringify(\n taskFile\n )};`\n )\n .join(\"\\n\");\n}\n\n// Find all the top-level .js or .ts files in the trigger directories\nexport async function gatherTaskFiles(config: ResolvedConfig): Promise<Array<TaskFile>> {\n const taskFiles: Array<TaskFile> = [];\n\n for (const triggerDir of config.triggerDirectories) {\n const files = await gatherTaskFilesFromDir(triggerDir, triggerDir, config);\n taskFiles.push(...files);\n }\n\n return taskFiles;\n}\n\nasync function gatherTaskFilesFromDir(\n dirPath: string,\n triggerDir: string,\n config: ResolvedConfig\n): Promise<TaskFile[]> {\n const taskFiles: TaskFile[] = [];\n\n const files = await fs.promises.readdir(dirPath, { withFileTypes: true });\n for (const file of files) {\n if (!file.isFile()) {\n // Recurse into subdirectories\n const fullPath = join(dirPath, file.name);\n taskFiles.push(...(await gatherTaskFilesFromDir(fullPath, triggerDir, config)));\n } else {\n if (\n !file.name.endsWith(\".js\") &&\n !file.name.endsWith(\".ts\") &&\n !file.name.endsWith(\".jsx\") &&\n !file.name.endsWith(\".tsx\")\n ) {\n continue;\n }\n\n const fullPath = join(dirPath, file.name);\n const filePath = relative(config.projectDir, fullPath);\n\n //remove the file extension and replace any invalid characters with underscores\n const importName = filePath.replace(/\\..+$/, \"\").replace(/[^a-zA-Z0-9_$]/g, \"_\");\n\n //change backslashes to forward slashes\n const importPath = filePath.replace(/\\\\/g, \"/\");\n\n taskFiles.push({ triggerDir, importPath, importName, filePath });\n }\n }\n\n return taskFiles;\n}\n\nexport function resolveTriggerDirectories(projectDir: string, dirs: string[]): string[] {\n return dirs.map((dir) => resolve(projectDir, dir));\n}\n\nconst IGNORED_DIRS = [\"node_modules\", \".git\", \"dist\", \"build\"];\n\nexport async function findTriggerDirectories(dirPath: string): Promise<string[]> {\n return getTriggerDirectories(dirPath);\n}\n\nasync function getTriggerDirectories(dirPath: string): Promise<string[]> {\n const entries = await fs.promises.readdir(dirPath, { withFileTypes: true });\n const triggerDirectories: string[] = [];\n\n for (const entry of entries) {\n if (!entry.isDirectory() || IGNORED_DIRS.includes(entry.name) || entry.name.startsWith(\".\"))\n continue;\n\n const fullPath = join(dirPath, entry.name);\n\n // Ignore the directory if it's <any>/app/api/trigger\n if (fullPath.endsWith(\"app/api/trigger\")) {\n continue;\n }\n\n if (entry.name === \"trigger\") {\n triggerDirectories.push(fullPath);\n }\n\n triggerDirectories.push(...(await getTriggerDirectories(fullPath)));\n }\n\n return triggerDirectories;\n}\n","import chalk from \"chalk\";\nimport type { Result } from \"update-check\";\nimport checkForUpdate from \"update-check\";\nimport pkg from \"../../package.json\";\nimport { chalkGrey, chalkRun, chalkTask, chalkWorker, green, logo } from \"./cliOutput.js\";\nimport { getVersion } from \"./getVersion.js\";\nimport { logger } from \"./logger.js\";\nimport { spinner } from \"./windows\";\n\nexport async function printInitialBanner(performUpdateCheck = true) {\n const cliVersion = getVersion();\n const text = `\\n${logo()} ${chalkGrey(`(${cliVersion})`)}\\n`;\n\n logger.info(text);\n\n let maybeNewVersion: string | undefined;\n if (performUpdateCheck) {\n const loadingSpinner = spinner();\n loadingSpinner.start(\"Checking for updates\");\n maybeNewVersion = await updateCheck();\n\n // Log a slightly more noticeable message if this is a major bump\n if (maybeNewVersion !== undefined) {\n loadingSpinner.stop(`Update available ${chalk.green(maybeNewVersion)}`);\n const currentMajor = parseInt(cliVersion.split(\".\")[0]!);\n const newMajor = parseInt(maybeNewVersion.split(\".\")[0]!);\n if (newMajor > currentMajor) {\n logger.warn(\n `Please update to the latest version of \\`trigger.dev\\` to prevent critical errors.\nRun \\`npm install --save-dev trigger.dev@${newMajor}\\` to update to the latest version.\nAfter installation, run Trigger.dev with \\`npx trigger.dev\\`.`\n );\n }\n } else {\n loadingSpinner.stop(\"On latest version\");\n }\n }\n}\n\nexport async function printStandloneInitialBanner(performUpdateCheck = true) {\n const cliVersion = getVersion();\n\n if (performUpdateCheck) {\n const maybeNewVersion = await updateCheck();\n\n // Log a slightly more noticeable message if this is a major bump\n if (maybeNewVersion !== undefined) {\n logger.log(`\\n${logo()} ${chalkGrey(`(${cliVersion} -> ${chalk.green(maybeNewVersion)})`)}`);\n } else {\n logger.log(`\\n${logo()} ${chalkGrey(`(${cliVersion})`)}`);\n }\n } else {\n logger.log(`\\n${logo()} ${chalkGrey(`(${cliVersion})`)}`);\n }\n\n logger.log(`${chalkGrey(\"-\".repeat(54))}`);\n}\n\nexport function printDevBanner(printTopBorder = true) {\n if (printTopBorder) {\n logger.log(chalkGrey(\"-\".repeat(54)));\n }\n\n logger.log(\n `${chalkGrey(\"Key:\")} ${chalkWorker(\"Version\")} ${chalkGrey(\"|\")} ${chalkTask(\n \"Task\"\n )} ${chalkGrey(\"|\")} ${chalkRun(\"Run\")}`\n );\n logger.log(chalkGrey(\"-\".repeat(54)));\n}\n\nasync function doUpdateCheck(): Promise<string | undefined> {\n let update: Result | null = null;\n try {\n // default cache for update check is 1 day\n update = await checkForUpdate(pkg, {\n distTag: pkg.version.startsWith(\"3.0.0-beta\") ? \"beta\" : \"latest\",\n });\n } catch (err) {\n // ignore error\n }\n return update?.latest;\n}\n\n//only do this once while the cli is running\nlet updateCheckPromise: Promise<string | undefined>;\nexport function updateCheck(): Promise<string | undefined> {\n return (updateCheckPromise ??= doUpdateCheck());\n}\n","import { type PackageJson } from \"type-fest\";\nimport path from \"path\";\nimport { PKG_ROOT } from \"../consts.js\";\nimport { readJSONFileSync } from \"./fileSystem.js\";\n\nexport function getVersion() {\n const packageJsonPath = path.join(PKG_ROOT, \"package.json\");\n\n const packageJsonContent = readJSONFileSync(packageJsonPath) as PackageJson;\n\n return packageJsonContent.version ?? \"1.0.0\";\n}\n","import { log, spinner as clackSpinner } from \"@clack/prompts\";\n\nexport const isWindows = process.platform === \"win32\";\n\nexport function escapeImportPath(path: string) {\n return isWindows ? path.replaceAll(\"\\\\\", \"\\\\\\\\\") : path;\n}\n\nconst ballmerSpinner = () => ({\n start: (msg?: string): void => {\n log.step(msg ?? \"\");\n },\n stop: (msg?: string, code?: number): void => {\n log.message(msg ?? \"\");\n },\n message: (msg?: string): void => {\n log.message(msg ?? \"\");\n },\n});\n\n// This will become unecessary with the next clack release, the bug was fixed here:\n// https://github.com/natemoo-re/clack/pull/182\nexport const spinner = () => (isWindows ? ballmerSpinner() : clackSpinner());\n","import { execa } from \"execa\";\nimport { join } from \"node:path\";\nimport { readJSONFile, writeJSONFile } from \"./fileSystem\";\nimport { logger } from \"./logger\";\n\nexport type InstallPackagesOptions = { cwd?: string };\n\nexport async function installPackages(\n packages: Record<string, string>,\n options?: InstallPackagesOptions\n) {\n const cwd = options?.cwd ?? process.cwd();\n\n logger.debug(\"Installing packages\", { packages });\n\n await setPackageJsonDeps(join(cwd, \"package.json\"), packages);\n\n await execa(\n \"npm\",\n [\"install\", \"--install-strategy\", \"nested\", \"--ignore-scripts\", \"--no-audit\", \"--no-fund\"],\n {\n cwd,\n stderr: \"pipe\",\n }\n );\n}\n\n// Expects path to be in the format:\n// - source-map-support/register.js\n// - @opentelemetry/api\n// - zod\n//\n// With the result being:\n// - source-map-support\n// - @opentelemetry/api\n// - zod\nexport function detectPackageNameFromImportPath(path: string): string {\n if (path.startsWith(\"@\")) {\n return path.split(\"/\").slice(0, 2).join(\"/\");\n } else {\n return path.split(\"/\")[0] as string;\n }\n}\n\n/**\n * Removes the workspace prefix from a version string.\n * @param version - The version string to strip the workspace prefix from.\n * @returns The version string without the workspace prefix.\n * @example\n * stripWorkspaceFromVersion(\"workspace:1.0.0\") // \"1.0.0\"\n * stripWorkspaceFromVersion(\"1.0.0\") // \"1.0.0\"\n */\nexport function stripWorkspaceFromVersion(version: string) {\n return version.replace(/^workspace:/, \"\");\n}\n\nexport function parsePackageName(packageSpecifier: string): { name: string; version?: string } {\n let name: string | undefined;\n let version: string | undefined;\n\n // Check if the package is scoped\n if (packageSpecifier.startsWith(\"@\")) {\n const atIndex = packageSpecifier.indexOf(\"@\", 1);\n // If a version is included\n if (atIndex !== -1) {\n name = packageSpecifier.slice(0, atIndex);\n version = packageSpecifier.slice(atIndex + 1);\n } else {\n name = packageSpecifier;\n }\n } else {\n const [packageName, packageVersion] = packageSpecifier.split(\"@\");\n\n if (typeof packageName === \"string\") {\n name = packageName;\n }\n\n version = packageVersion;\n }\n\n if (!name) {\n return { name: packageSpecifier };\n }\n\n return { name, version };\n}\n\nasync function setPackageJsonDeps(path: string, deps: Record<string, string>) {\n try {\n const existingPackageJson = await readJSONFile(path);\n\n const newPackageJson = {\n ...existingPackageJson,\n dependencies: {\n ...deps,\n },\n };\n\n await writeJSONFile(path, newPackageJson);\n } catch (error) {\n const defaultPackageJson = {\n name: \"temp\",\n version: \"1.0.0\",\n description: \"\",\n dependencies: deps,\n };\n\n await writeJSONFile(path, defaultPackageJson);\n }\n}\n","import { intro, log, outro, select } from \"@clack/prompts\";\nimport { recordSpanException } from \"@trigger.dev/core/v3/workers\";\nimport { Command } from \"commander\";\nimport open from \"open\";\nimport pRetry, { AbortError } from \"p-retry\";\nimport { z } from \"zod\";\nimport { CliApiClient } from \"../apiClient.js\";\nimport {\n CommonCommandOptions,\n SkipLoggingError,\n commonOptions,\n handleTelemetry,\n tracer,\n wrapCommandAction,\n} from \"../cli/common.js\";\nimport { chalkLink, prettyError } from \"../utilities/cliOutput.js\";\nimport { readAuthConfigProfile, writeAuthConfigProfile } from \"../utilities/configFiles.js\";\nimport { getVersion } from \"../utilities/getVersion.js\";\nimport { printInitialBanner } from \"../utilities/initialBanner.js\";\nimport { LoginResult } from \"../utilities/session.js\";\nimport { whoAmI } from \"./whoami.js\";\nimport { logger } from \"../utilities/logger.js\";\nimport { spinner } from \"../utilities/windows.js\";\nimport { isLinuxServer } from \"../utilities/linux.js\";\n\nexport const LoginCommandOptions = CommonCommandOptions.extend({\n apiUrl: z.string(),\n});\n\nexport type LoginCommandOptions = z.infer<typeof LoginCommandOptions>;\n\nexport function configureLoginCommand(program: Command) {\n return commonOptions(\n program\n .command(\"login\")\n .description(\"Login with Trigger.dev so you can perform authenticated actions\")\n )\n .version(getVersion(), \"-v, --version\", \"Display the version number\")\n .action(async (options) => {\n await handleTelemetry(async () => {\n await printInitialBanner(false);\n await loginCommand(options);\n });\n });\n}\n\nexport async function loginCommand(options: unknown) {\n return await wrapCommandAction(\"loginCommand\", LoginCommandOptions, options, async (opts) => {\n return await _loginCommand(opts);\n });\n}\n\nasync function _loginCommand(options: LoginCommandOptions) {\n return login({ defaultApiUrl: options.apiUrl, embedded: false, profile: options.profile });\n}\n\nexport type LoginOptions = {\n defaultApiUrl?: string;\n embedded?: boolean;\n profile?: string;\n};\n\nexport async function login(options?: LoginOptions): Promise<LoginResult> {\n return await tracer.startActiveSpan(\"login\", async (span) => {\n try {\n const opts = { defaultApiUrl: \"https://api.trigger.dev\", embedded: false, ...options };\n\n span.setAttributes({\n \"cli.config.apiUrl\": opts.defaultApiUrl,\n \"cli.options.profile\": opts.profile,\n });\n\n if (!opts.embedded) {\n intro(\"Logging in to Trigger.dev\");\n }\n\n const accessTokenFromEnv = process.env.TRIGGER_ACCESS_TOKEN;\n\n if (accessTokenFromEnv) {\n const auth = {\n accessToken: accessTokenFromEnv,\n apiUrl: process.env.TRIGGER_API_URL ?? opts.defaultApiUrl ?? \"https://api.trigger.dev\",\n };\n const apiClient = new CliApiClient(auth.apiUrl, auth.accessToken);\n const userData = await apiClient.whoAmI();\n\n if (!userData.success) {\n throw new Error(userData.error);\n }\n\n return {\n ok: true as const,\n profile: options?.profile ?? \"default\",\n userId: userData.data.userId,\n email: userData.data.email,\n dashboardUrl: userData.data.dashboardUrl,\n auth: {\n accessToken: auth.accessToken,\n apiUrl: auth.apiUrl,\n },\n };\n }\n\n const authConfig = readAuthConfigProfile(options?.profile);\n\n if (authConfig && authConfig.accessToken) {\n const whoAmIResult = await whoAmI(\n {\n profile: options?.profile ?? \"default\",\n skipTelemetry: !span.isRecording(),\n logLevel: logger.loggerLevel,\n },\n true\n );\n\n if (!whoAmIResult.success) {\n prettyError(\"Unable to validate existing personal access token\", whoAmIResult.error);\n\n if (!opts.embedded) {\n outro(\n `Login failed using stored token. To fix, first logout using \\`trigger.dev logout${\n options?.profile ? ` --profile ${options.profile}` : \"\"\n }\\` and then try again.`\n );\n\n throw new SkipLoggingError(whoAmIResult.error);\n } else {\n throw new Error(whoAmIResult.error);\n }\n } else {\n if (!opts.embedded) {\n const continueOption = await select({\n message: \"You are already logged in.\",\n options: [\n {\n value: false,\n label: \"Exit\",\n },\n {\n value: true,\n label: \"Login with a different account\",\n },\n ],\n initialValue: false,\n });\n\n if (continueOption !== true) {\n outro(\"Already logged in\");\n\n span.setAttributes({\n \"cli.userId\": whoAmIResult.data.userId,\n \"cli.email\": whoAmIResult.data.email,\n \"cli.config.apiUrl\": authConfig.apiUrl ?? opts.defaultApiUrl,\n });\n\n span.end();\n\n return {\n ok: true as const,\n profile: options?.profile ?? \"default\",\n userId: whoAmIResult.data.userId,\n email: whoAmIResult.data.email,\n dashboardUrl: whoAmIResult.data.dashboardUrl,\n auth: {\n accessToken: authConfig.accessToken,\n apiUrl: authConfig.apiUrl ?? opts.defaultApiUrl,\n },\n };\n }\n } else {\n span.setAttributes({\n \"cli.userId\": whoAmIResult.data.userId,\n \"cli.email\": whoAmIResult.data.email,\n \"cli.config.apiUrl\": authConfig.apiUrl ?? opts.defaultApiUrl,\n });\n\n span.end();\n\n return {\n ok: true as const,\n profile: options?.profile ?? \"default\",\n userId: whoAmIResult.data.userId,\n email: whoAmIResult.data.email,\n dashboardUrl: whoAmIResult.data.dashboardUrl,\n auth: {\n accessToken: authConfig.accessToken,\n apiUrl: authConfig.apiUrl ?? opts.defaultApiUrl,\n },\n };\n }\n }\n }\n\n if (opts.embedded) {\n log.step(\"You must login to continue.\");\n }\n\n const apiClient = new CliApiClient(authConfig?.apiUrl ?? opts.defaultApiUrl);\n\n //generate authorization code\n const authorizationCodeResult = await createAuthorizationCode(apiClient);\n\n //Link the user to the authorization code\n log.step(\n `Please visit the following URL to login:\\n${chalkLink(authorizationCodeResult.url)}`\n );\n\n if (await isLinuxServer()) {\n log.message(\"Please install `xdg-utils` to automatically open the login URL.\");\n } else {\n await open(authorizationCodeResult.url);\n }\n\n //poll for personal access token (we need to poll for it)\n const getPersonalAccessTokenSpinner = spinner();\n getPersonalAccessTokenSpinner.start(\"Waiting for you to login\");\n try {\n const indexResult = await pRetry(\n () => getPersonalAccessToken(apiClient, authorizationCodeResult.authorizationCode),\n {\n //this means we're polling, same distance between each attempt\n factor: 1,\n retries: 60,\n minTimeout: 1000,\n }\n );\n\n getPersonalAccessTokenSpinner.stop(`Logged in with token ${indexResult.obfuscatedToken}`);\n\n writeAuthConfigProfile(\n { accessToken: indexResult.token, apiUrl: opts.defaultApiUrl },\n options?.profile\n );\n\n const whoAmIResult = await whoAmI(\n {\n profile: options?.profile ?? \"default\",\n skipTelemetry: !span.isRecording(),\n logLevel: logger.loggerLevel,\n },\n opts.embedded\n );\n\n if (!whoAmIResult.success) {\n throw new Error(whoAmIResult.error);\n }\n\n if (opts.embedded) {\n log.step(\"Logged in successfully\");\n } else {\n outro(\"Logged in successfully\");\n }\n\n span.end();\n\n return {\n ok: true as const,\n profile: options?.profile ?? \"default\",\n userId: whoAmIResult.data.userId,\n email: whoAmIResult.data.email,\n dashboardUrl: whoAmIResult.data.dashboardUrl,\n auth: {\n accessToken: indexResult.token,\n apiUrl: authConfig?.apiUrl ?? opts.defaultApiUrl,\n },\n };\n } catch (e) {\n getPersonalAccessTokenSpinner.stop(`Failed to get access token`);\n\n if (e instanceof AbortError) {\n log.error(e.message);\n }\n\n recordSpanException(span, e);\n span.end();\n\n return {\n ok: false as const,\n error: e instanceof Error ? e.message : String(e),\n };\n }\n } catch (e) {\n recordSpanException(span, e);\n span.end();\n\n if (options?.embedded) {\n return {\n ok: false as const,\n error: e instanceof Error ? e.message : String(e),\n };\n }\n\n throw e;\n }\n });\n}\n\nasync function getPersonalAccessToken(apiClient: CliApiClient, authorizationCode: string) {\n return await tracer.startActiveSpan(\"getPersonalAccessToken\", async (span) => {\n try {\n const token = await apiClient.getPersonalAccessToken(authorizationCode);\n\n if (!token.success) {\n throw new AbortError(token.error);\n }\n\n if (!token.data.token) {\n throw new Error(\"No token found yet\");\n }\n\n span.end();\n\n return {\n token: token.data.token.token,\n obfuscatedToken: token.data.token.obfuscatedToken,\n };\n } catch (e) {\n if (e instanceof AbortError) {\n recordSpanException(span, e);\n }\n\n span.end();\n\n throw e;\n }\n });\n}\n\nasync function createAuthorizationCode(apiClient: CliApiClient) {\n return await tracer.startActiveSpan(\"createAuthorizationCode\", async (span) => {\n try {\n //generate authorization code\n const createAuthCodeSpinner = spinner();\n createAuthCodeSpinner.start(\"Creating authorization code\");\n const authorizationCodeResult = await apiClient.createAuthorizationCode();\n\n if (!authorizationCodeResult.success) {\n createAuthCodeSpinner.stop(\n `Failed to create authorization code\\n${authorizationCodeResult.error}`\n );\n\n throw new SkipLoggingError(\n `Failed to create authorization code\\n${authorizationCodeResult.error}`\n );\n }\n\n createAuthCodeSpinner.stop(\"Created authorization code\");\n\n span.end();\n\n return authorizationCodeResult.data;\n } catch (e) {\n recordSpanException(span, e);\n\n span.end();\n\n throw e;\n }\n });\n}\n","import process from 'node:process';\nimport {Buffer} from 'node:buffer';\nimport path from 'node:path';\nimport {fileURLToPath} from 'node:url';\nimport childProcess from 'node:child_process';\nimport fs, {constants as fsConstants} from 'node:fs/promises';\nimport isWsl from 'is-wsl';\nimport defineLazyProperty from 'define-lazy-prop';\nimport defaultBrowser from 'default-browser';\nimport isInsideContainer from 'is-inside-container';\n\n// Path to included `xdg-open`.\nconst __dirname = path.dirname(fileURLToPath(import.meta.url));\nconst localXdgOpenPath = path.join(__dirname, 'xdg-open');\n\nconst {platform, arch} = process;\n\n/**\nGet the mount point for fixed drives in WSL.\n\n@inner\n@returns {string} The mount point.\n*/\nconst getWslDrivesMountPoint = (() => {\n\t// Default value for \"root\" param\n\t// according to https://docs.microsoft.com/en-us/windows/wsl/wsl-config\n\tconst defaultMountPoint = '/mnt/';\n\n\tlet mountPoint;\n\n\treturn async function () {\n\t\tif (mountPoint) {\n\t\t\t// Return memoized mount point value\n\t\t\treturn mountPoint;\n\t\t}\n\n\t\tconst configFilePath = '/etc/wsl.conf';\n\n\t\tlet isConfigFileExists = false;\n\t\ttry {\n\t\t\tawait fs.access(configFilePath, fsConstants.F_OK);\n\t\t\tisConfigFileExists = true;\n\t\t} catch {}\n\n\t\tif (!isConfigFileExists) {\n\t\t\treturn defaultMountPoint;\n\t\t}\n\n\t\tconst configContent = await fs.readFile(configFilePath, {encoding: 'utf8'});\n\t\tconst configMountPoint = /(?<!#.*)root\\s*=\\s*(?<mountPoint>.*)/g.exec(configContent);\n\n\t\tif (!configMountPoint) {\n\t\t\treturn defaultMountPoint;\n\t\t}\n\n\t\tmountPoint = configMountPoint.groups.mountPoint.trim();\n\t\tmountPoint = mountPoint.endsWith('/') ? mountPoint : `${mountPoint}/`;\n\n\t\treturn mountPoint;\n\t};\n})();\n\nconst pTryEach = async (array, mapper) => {\n\tlet latestError;\n\n\tfor (const item of array) {\n\t\ttry {\n\t\t\treturn await mapper(item); // eslint-disable-line no-await-in-loop\n\t\t} catch (error) {\n\t\t\tlatestError = error;\n\t\t}\n\t}\n\n\tthrow latestError;\n};\n\nconst baseOpen = async options => {\n\toptions = {\n\t\twait: false,\n\t\tbackground: false,\n\t\tnewInstance: false,\n\t\tallowNonzeroExitCode: false,\n\t\t...options,\n\t};\n\n\tif (Array.isArray(options.app)) {\n\t\treturn pTryEach(options.app, singleApp => baseOpen({\n\t\t\t...options,\n\t\t\tapp: singleApp,\n\t\t}));\n\t}\n\n\tlet {name: app, arguments: appArguments = []} = options.app ?? {};\n\tappArguments = [...appArguments];\n\n\tif (Array.isArray(app)) {\n\t\treturn pTryEach(app, appName => baseOpen({\n\t\t\t...options,\n\t\t\tapp: {\n\t\t\t\tname: appName,\n\t\t\t\targuments: appArguments,\n\t\t\t},\n\t\t}));\n\t}\n\n\tif (app === 'browser' || app === 'browserPrivate') {\n\t\t// IDs from default-browser for macOS and windows are the same\n\t\tconst ids = {\n\t\t\t'com.google.chrome': 'chrome',\n\t\t\t'google-chrome.desktop': 'chrome',\n\t\t\t'org.mozilla.firefox': 'firefox',\n\t\t\t'firefox.desktop': 'firefox',\n\t\t\t'com.microsoft.msedge': 'edge',\n\t\t\t'com.microsoft.edge': 'edge',\n\t\t\t'microsoft-edge.desktop': 'edge',\n\t\t};\n\n\t\t// Incognito flags for each browser in `apps`.\n\t\tconst flags = {\n\t\t\tchrome: '--incognito',\n\t\t\tfirefox: '--private-window',\n\t\t\tedge: '--inPrivate',\n\t\t};\n\n\t\tconst browser = await defaultBrowser();\n\t\tif (browser.id in ids) {\n\t\t\tconst browserName = ids[browser.id];\n\n\t\t\tif (app === 'browserPrivate') {\n\t\t\t\tappArguments.push(flags[browserName]);\n\t\t\t}\n\n\t\t\treturn baseOpen({\n\t\t\t\t...options,\n\t\t\t\tapp: {\n\t\t\t\t\tname: apps[browserName],\n\t\t\t\t\targuments: appArguments,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tthrow new Error(`${browser.name} is not supported as a default browser`);\n\t}\n\n\tlet command;\n\tconst cliArguments = [];\n\tconst childProcessOptions = {};\n\n\tif (platform === 'darwin') {\n\t\tcommand = 'open';\n\n\t\tif (options.wait) {\n\t\t\tcliArguments.push('--wait-apps');\n\t\t}\n\n\t\tif (options.background) {\n\t\t\tcliArguments.push('--background');\n\t\t}\n\n\t\tif (options.newInstance) {\n\t\t\tcliArguments.push('--new');\n\t\t}\n\n\t\tif (app) {\n\t\t\tcliArguments.push('-a', app);\n\t\t}\n\t} else if (platform === 'win32' || (isWsl && !isInsideContainer() && !app)) {\n\t\tconst mountPoint = await getWslDrivesMountPoint();\n\n\t\tcommand = isWsl\n\t\t\t? `${mountPoint}c/Windows/System32/WindowsPowerShell/v1.0/powershell.exe`\n\t\t\t: `${process.env.SYSTEMROOT || process.env.windir || 'C:\\\\Windows'}\\\\System32\\\\WindowsPowerShell\\\\v1.0\\\\powershell`;\n\n\t\tcliArguments.push(\n\t\t\t'-NoProfile',\n\t\t\t'-NonInteractive',\n\t\t\t'-ExecutionPolicy',\n\t\t\t'Bypass',\n\t\t\t'-EncodedCommand',\n\t\t);\n\n\t\tif (!isWsl) {\n\t\t\tchildProcessOptions.windowsVerbatimArguments = true;\n\t\t}\n\n\t\tconst encodedArguments = ['Start'];\n\n\t\tif (options.wait) {\n\t\t\tencodedArguments.push('-Wait');\n\t\t}\n\n\t\tif (app) {\n\t\t\t// Double quote with double quotes to ensure the inner quotes are passed through.\n\t\t\t// Inner quotes are delimited for PowerShell interpretation with backticks.\n\t\t\tencodedArguments.push(`\"\\`\"${app}\\`\"\"`);\n\t\t\tif (options.target) {\n\t\t\t\tappArguments.push(options.target);\n\t\t\t}\n\t\t} else if (options.target) {\n\t\t\tencodedArguments.push(`\"${options.target}\"`);\n\t\t}\n\n\t\tif (appArguments.length > 0) {\n\t\t\tappArguments = appArguments.map(argument => `\"\\`\"${argument}\\`\"\"`);\n\t\t\tencodedArguments.push('-ArgumentList', appArguments.join(','));\n\t\t}\n\n\t\t// Using Base64-encoded command, accepted by PowerShell, to allow special characters.\n\t\toptions.target = Buffer.from(encodedArguments.join(' '), 'utf16le').toString('base64');\n\t} else {\n\t\tif (app) {\n\t\t\tcommand = app;\n\t\t} else {\n\t\t\t// When bundled by Webpack, there's no actual package file path and no local `xdg-open`.\n\t\t\tconst isBundled = !__dirname || __dirname === '/';\n\n\t\t\t// Check if local `xdg-open` exists and is executable.\n\t\t\tlet exeLocalXdgOpen = false;\n\t\t\ttry {\n\t\t\t\tawait fs.access(localXdgOpenPath, fsConstants.X_OK);\n\t\t\t\texeLocalXdgOpen = true;\n\t\t\t} catch {}\n\n\t\t\tconst useSystemXdgOpen = process.versions.electron\n\t\t\t\t?? (platform === 'android' || isBundled || !exeLocalXdgOpen);\n\t\t\tcommand = useSystemXdgOpen ? 'xdg-open' : localXdgOpenPath;\n\t\t}\n\n\t\tif (appArguments.length > 0) {\n\t\t\tcliArguments.push(...appArguments);\n\t\t}\n\n\t\tif (!options.wait) {\n\t\t\t// `xdg-open` will block the process unless stdio is ignored\n\t\t\t// and it's detached from the parent even if it's unref'd.\n\t\t\tchildProcessOptions.stdio = 'ignore';\n\t\t\tchildProcessOptions.detached = true;\n\t\t}\n\t}\n\n\tif (platform === 'darwin' && appArguments.length > 0) {\n\t\tcliArguments.push('--args', ...appArguments);\n\t}\n\n\t// This has to come after `--args`.\n\tif (options.target) {\n\t\tcliArguments.push(options.target);\n\t}\n\n\tconst subprocess = childProcess.spawn(command, cliArguments, childProcessOptions);\n\n\tif (options.wait) {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tsubprocess.once('error', reject);\n\n\t\t\tsubprocess.once('close', exitCode => {\n\t\t\t\tif (!options.allowNonzeroExitCode && exitCode > 0) {\n\t\t\t\t\treject(new Error(`Exited with code ${exitCode}`));\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tresolve(subprocess);\n\t\t\t});\n\t\t});\n\t}\n\n\tsubprocess.unref();\n\n\treturn subprocess;\n};\n\nconst open = (target, options) => {\n\tif (typeof target !== 'string') {\n\t\tthrow new TypeError('Expected a `target`');\n\t}\n\n\treturn baseOpen({\n\t\t...options,\n\t\ttarget,\n\t});\n};\n\nexport const openApp = (name, options) => {\n\tif (typeof name !== 'string') {\n\t\tthrow new TypeError('Expected a `name`');\n\t}\n\n\tconst {arguments: appArguments = []} = options ?? {};\n\tif (appArguments !== undefined && appArguments !== null && !Array.isArray(appArguments)) {\n\t\tthrow new TypeError('Expected `appArguments` as Array type');\n\t}\n\n\treturn baseOpen({\n\t\t...options,\n\t\tapp: {\n\t\t\tname,\n\t\t\targuments: appArguments,\n\t\t},\n\t});\n};\n\nfunction detectArchBinary(binary) {\n\tif (typeof binary === 'string' || Array.isArray(binary)) {\n\t\treturn binary;\n\t}\n\n\tconst {[arch]: archBinary} = binary;\n\n\tif (!archBinary) {\n\t\tthrow new Error(`${arch} is not supported`);\n\t}\n\n\treturn archBinary;\n}\n\nfunction detectPlatformBinary({[platform]: platformBinary}, {wsl}) {\n\tif (wsl && isWsl) {\n\t\treturn detectArchBinary(wsl);\n\t}\n\n\tif (!platformBinary) {\n\t\tthrow new Error(`${platform} is not supported`);\n\t}\n\n\treturn detectArchBinary(platformBinary);\n}\n\nexport const apps = {};\n\ndefineLazyProperty(apps, 'chrome', () => detectPlatformBinary({\n\tdarwin: 'google chrome',\n\twin32: 'chrome',\n\tlinux: ['google-chrome', 'google-chrome-stable', 'chromium'],\n}, {\n\twsl: {\n\t\tia32: '/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe',\n\t\tx64: ['/mnt/c/Program Files/Google/Chrome/Application/chrome.exe', '/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe'],\n\t},\n}));\n\ndefineLazyProperty(apps, 'firefox', () => detectPlatformBinary({\n\tdarwin: 'firefox',\n\twin32: 'C:\\\\Program Files\\\\Mozilla Firefox\\\\firefox.exe',\n\tlinux: 'firefox',\n}, {\n\twsl: '/mnt/c/Program Files/Mozilla Firefox/firefox.exe',\n}));\n\ndefineLazyProperty(apps, 'edge', () => detectPlatformBinary({\n\tdarwin: 'microsoft edge',\n\twin32: 'msedge',\n\tlinux: ['microsoft-edge', 'microsoft-edge-dev'],\n}, {\n\twsl: '/mnt/c/Program Files (x86)/Microsoft/Edge/Application/msedge.exe',\n}));\n\ndefineLazyProperty(apps, 'browser', () => 'browser');\n\ndefineLazyProperty(apps, 'browserPrivate', () => 'browserPrivate');\n\nexport default open;\n","import process from 'node:process';\nimport os from 'node:os';\nimport fs from 'node:fs';\nimport isInsideContainer from 'is-inside-container';\n\nconst isWsl = () => {\n\tif (process.platform !== 'linux') {\n\t\treturn false;\n\t}\n\n\tif (os.release().toLowerCase().includes('microsoft')) {\n\t\tif (isInsideContainer()) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t}\n\n\ttry {\n\t\treturn fs.readFileSync('/proc/version', 'utf8').toLowerCase().includes('microsoft')\n\t\t\t? !isInsideContainer() : false;\n\t} catch {\n\t\treturn false;\n\t}\n};\n\nexport default process.env.__IS_WSL_TEST__ ? isWsl : isWsl();\n","import fs from 'node:fs';\nimport isDocker from 'is-docker';\n\nlet cachedResult;\n\n// Podman detection\nconst hasContainerEnv = () => {\n\ttry {\n\t\tfs.statSync('/run/.containerenv');\n\t\treturn true;\n\t} catch {\n\t\treturn false;\n\t}\n};\n\nexport default function isInsideContainer() {\n\t// TODO: Use `??=` when targeting Node.js 16.\n\tif (cachedResult === undefined) {\n\t\tcachedResult = hasContainerEnv() || isDocker();\n\t}\n\n\treturn cachedResult;\n}\n","import fs from 'node:fs';\n\nlet isDockerCached;\n\nfunction hasDockerEnv() {\n\ttry {\n\t\tfs.statSync('/.dockerenv');\n\t\treturn true;\n\t} catch {\n\t\treturn false;\n\t}\n}\n\nfunction hasDockerCGroup() {\n\ttry {\n\t\treturn fs.readFileSync('/proc/self/cgroup', 'utf8').includes('docker');\n\t} catch {\n\t\treturn false;\n\t}\n}\n\nexport default function isDocker() {\n\t// TODO: Use `??=` when targeting Node.js 16.\n\tif (isDockerCached === undefined) {\n\t\tisDockerCached = hasDockerEnv() || hasDockerCGroup();\n\t}\n\n\treturn isDockerCached;\n}\n","export default function defineLazyProperty(object, propertyName, valueGetter) {\n\tconst define = value => Object.defineProperty(object, propertyName, {value, enumerable: true, writable: true});\n\n\tObject.defineProperty(object, propertyName, {\n\t\tconfigurable: true,\n\t\tenumerable: true,\n\t\tget() {\n\t\t\tconst result = valueGetter();\n\t\t\tdefine(result);\n\t\t\treturn result;\n\t\t},\n\t\tset(value) {\n\t\t\tdefine(value);\n\t\t}\n\t});\n\n\treturn object;\n}\n","import {promisify} from 'node:util';\nimport process from 'node:process';\nimport {execFile} from 'node:child_process';\nimport defaultBrowserId from 'default-browser-id';\nimport bundleName from 'bundle-name';\nimport windows from './windows.js';\n\nconst execFileAsync = promisify(execFile);\n\n// Inlined: https://github.com/sindresorhus/titleize/blob/main/index.js\nconst titleize = string => string.toLowerCase().replaceAll(/(?:^|\\s|-)\\S/g, x => x.toUpperCase());\n\nexport default async function defaultBrowser() {\n\tif (process.platform === 'darwin') {\n\t\tconst id = await defaultBrowserId();\n\t\tconst name = await bundleName(id);\n\t\treturn {name, id};\n\t}\n\n\tif (process.platform === 'linux') {\n\t\tconst {stdout} = await execFileAsync('xdg-mime', ['query', 'default', 'x-scheme-handler/http']);\n\t\tconst id = stdout.trim();\n\t\tconst name = titleize(id.replace(/.desktop$/, '').replace('-', ' '));\n\t\treturn {name, id};\n\t}\n\n\tif (process.platform === 'win32') {\n\t\treturn windows();\n\t}\n\n\tthrow new Error('Only macOS, Linux, and Windows are supported');\n}\n","import {promisify} from 'node:util';\nimport process from 'node:process';\nimport {execFile} from 'node:child_process';\n\nconst execFileAsync = promisify(execFile);\n\nexport default async function defaultBrowserId() {\n\tif (process.platform !== 'darwin') {\n\t\tthrow new Error('macOS only');\n\t}\n\n\tconst {stdout} = await execFileAsync('defaults', ['read', 'com.apple.LaunchServices/com.apple.launchservices.secure', 'LSHandlers']);\n\n\t// `(?!-)` is to prevent matching `LSHandlerRoleAll = \"-\";`.\n\tconst match = /LSHandlerRoleAll = \"(?!-)(?<id>[^\"]+?)\";\\s+?LSHandlerURLScheme = (?:http|https);/.exec(stdout);\n\n\treturn match?.groups.id ?? 'com.apple.Safari';\n}\n","import process from 'node:process';\nimport {promisify} from 'node:util';\nimport {execFile, execFileSync} from 'node:child_process';\n\nconst execFileAsync = promisify(execFile);\n\nexport async function runAppleScript(script, {humanReadableOutput = true} = {}) {\n\tif (process.platform !== 'darwin') {\n\t\tthrow new Error('macOS only');\n\t}\n\n\tconst outputArguments = humanReadableOutput ? [] : ['-ss'];\n\n\tconst {stdout} = await execFileAsync('osascript', ['-e', script, outputArguments]);\n\treturn stdout.trim();\n}\n\nexport function runAppleScriptSync(script, {humanReadableOutput = true} = {}) {\n\tif (process.platform !== 'darwin') {\n\t\tthrow new Error('macOS only');\n\t}\n\n\tconst outputArguments = humanReadableOutput ? [] : ['-ss'];\n\n\tconst stdout = execFileSync('osascript', ['-e', script, ...outputArguments], {\n\t\tencoding: 'utf8',\n\t\tstdio: ['ignore', 'pipe', 'ignore'],\n\t\ttimeout: 500,\n\t});\n\n\treturn stdout.trim();\n}\n","import {runAppleScript} from 'run-applescript';\n\nexport default async function bundleName(bundleId) {\n\treturn runAppleScript(`tell application \"Finder\" to set app_path to application file id \"${bundleId}\" as string\\ntell application \"System Events\" to get value of property list item \"CFBundleName\" of property list file (app_path & \":Contents:Info.plist\")`);\n}\n","import {promisify} from 'node:util';\nimport {execFile} from 'node:child_process';\n\nconst execFileAsync = promisify(execFile);\n\n// Windows doesn't have browser IDs in the same way macOS/Linux does so we give fake\n// ones that look real and match the macOS/Linux versions for cross-platform apps.\nconst windowsBrowserProgIds = {\n\tAppXq0fevzme2pys62n3e0fbqa7peapykr8v: {name: 'Edge', id: 'com.microsoft.edge.old'},\n\tMSEdgeDHTML: {name: 'Edge', id: 'com.microsoft.edge'}, // On macOS, it's \"com.microsoft.edgemac\"\n\tMSEdgeHTM: {name: 'Edge', id: 'com.microsoft.edge'}, // Newer Edge/Win10 releases\n\t'IE.HTTP': {name: 'Internet Explorer', id: 'com.microsoft.ie'},\n\tFirefoxURL: {name: 'Firefox', id: 'org.mozilla.firefox'},\n\tChromeHTML: {name: 'Chrome', id: 'com.google.chrome'},\n\tBraveHTML: {name: 'Brave', id: 'com.brave.Browser'},\n\tBraveBHTML: {name: 'Brave Beta', id: 'com.brave.Browser.beta'},\n\tBraveSSHTM: {name: 'Brave Nightly', id: 'com.brave.Browser.nightly'},\n};\n\nexport class UnknownBrowserError extends Error {}\n\nexport default async function defaultBrowser(_execFileAsync = execFileAsync) {\n\tconst {stdout} = await _execFileAsync('reg', [\n\t\t'QUERY',\n\t\t' HKEY_CURRENT_USER\\\\Software\\\\Microsoft\\\\Windows\\\\Shell\\\\Associations\\\\UrlAssociations\\\\http\\\\UserChoice',\n\t\t'/v',\n\t\t'ProgId',\n\t]);\n\n\tconst match = /ProgId\\s*REG_SZ\\s*(?<id>\\S+)/.exec(stdout);\n\tif (!match) {\n\t\tthrow new UnknownBrowserError(`Cannot find Windows browser in stdout: ${JSON.stringify(stdout)}`);\n\t}\n\n\tconst {id} = match.groups;\n\n\tconst browser = windowsBrowserProgIds[id];\n\tif (!browser) {\n\t\tthrow new UnknownBrowserError(`Unknown browser ID: ${id}`);\n\t}\n\n\treturn browser;\n}\n","import retry from 'retry';\nimport isNetworkError from 'is-network-error';\n\nexport class AbortError extends Error {\n\tconstructor(message) {\n\t\tsuper();\n\n\t\tif (message instanceof Error) {\n\t\t\tthis.originalError = message;\n\t\t\t({message} = message);\n\t\t} else {\n\t\t\tthis.originalError = new Error(message);\n\t\t\tthis.originalError.stack = this.stack;\n\t\t}\n\n\t\tthis.name = 'AbortError';\n\t\tthis.message = message;\n\t}\n}\n\nconst decorateErrorWithCounts = (error, attemptNumber, options) => {\n\t// Minus 1 from attemptNumber because the first attempt does not count as a retry\n\tconst retriesLeft = options.retries - (attemptNumber - 1);\n\n\terror.attemptNumber = attemptNumber;\n\terror.retriesLeft = retriesLeft;\n\treturn error;\n};\n\nexport default async function pRetry(input, options) {\n\treturn new Promise((resolve, reject) => {\n\t\toptions = {\n\t\t\tonFailedAttempt() {},\n\t\t\tretries: 10,\n\t\t\t...options,\n\t\t};\n\n\t\tconst operation = retry.operation(options);\n\n\t\tconst abortHandler = () => {\n\t\t\toperation.stop();\n\t\t\treject(options.signal?.reason);\n\t\t};\n\n\t\tif (options.signal && !options.signal.aborted) {\n\t\t\toptions.signal.addEventListener('abort', abortHandler, {once: true});\n\t\t}\n\n\t\tconst cleanUp = () => {\n\t\t\toptions.signal?.removeEventListener('abort', abortHandler);\n\t\t\toperation.stop();\n\t\t};\n\n\t\toperation.attempt(async attemptNumber => {\n\t\t\ttry {\n\t\t\t\tconst result = await input(attemptNumber);\n\t\t\t\tcleanUp();\n\t\t\t\tresolve(result);\n\t\t\t} catch (error) {\n\t\t\t\ttry {\n\t\t\t\t\tif (!(error instanceof Error)) {\n\t\t\t\t\t\tthrow new TypeError(`Non-error was thrown: \"${error}\". You should only throw errors.`);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (error instanceof AbortError) {\n\t\t\t\t\t\tthrow error.originalError;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (error instanceof TypeError && !isNetworkError(error)) {\n\t\t\t\t\t\tthrow error;\n\t\t\t\t\t}\n\n\t\t\t\t\tawait options.onFailedAttempt(decorateErrorWithCounts(error, attemptNumber, options));\n\n\t\t\t\t\tif (!operation.retry(error)) {\n\t\t\t\t\t\tthrow operation.mainError();\n\t\t\t\t\t}\n\t\t\t\t} catch (finalError) {\n\t\t\t\t\tdecorateErrorWithCounts(finalError, attemptNumber, options);\n\t\t\t\t\tcleanUp();\n\t\t\t\t\treject(finalError);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n}\n","const objectToString = Object.prototype.toString;\n\nconst isError = value => objectToString.call(value) === '[object Error]';\n\nconst errorMessages = new Set([\n\t'Failed to fetch', // Chrome\n\t'NetworkError when attempting to fetch resource.', // Firefox\n\t'The Internet connection appears to be offline.', // Safari 16\n\t'Load failed', // Safari 17+\n\t'Network request failed', // `cross-fetch`\n\t'fetch failed', // Undici (Node.js)\n]);\n\nexport default function isNetworkError(error) {\n\tconst isValid = error\n\t\t&& isError(error)\n\t\t&& error.name === 'TypeError'\n\t\t&& typeof error.message === 'string';\n\n\tif (!isValid) {\n\t\treturn false;\n\t}\n\n\t// We do an extra check for Safari 17+ as it has a very generic error message.\n\t// Network errors in Safari have no stack.\n\tif (error.message === 'Load failed') {\n\t\treturn error.stack === undefined;\n\t}\n\n\treturn errorMessages.has(error.message);\n}\n","import { intro, note, outro } from \"@clack/prompts\";\nimport { chalkLink } from \"../utilities/cliOutput.js\";\nimport { logger } from \"../utilities/logger.js\";\nimport { isLoggedIn } from \"../utilities/session.js\";\nimport { Command } from \"commander\";\nimport { printInitialBanner } from \"../utilities/initialBanner.js\";\nimport {\n CommonCommandOptions,\n commonOptions,\n handleTelemetry,\n wrapCommandAction,\n} from \"../cli/common.js\";\nimport { z } from \"zod\";\nimport { CliApiClient } from \"../apiClient.js\";\nimport { spinner } from \"../utilities/windows.js\";\n\ntype WhoAmIResult =\n | {\n success: true;\n data: {\n userId: string;\n email: string;\n dashboardUrl: string;\n };\n }\n | {\n success: false;\n error: string;\n };\n\nconst WhoamiCommandOptions = CommonCommandOptions;\n\ntype WhoamiCommandOptions = z.infer<typeof WhoamiCommandOptions>;\n\nexport function configureWhoamiCommand(program: Command) {\n return commonOptions(\n program.command(\"whoami\").description(\"display the current logged in user and project details\")\n ).action(async (options) => {\n await handleTelemetry(async () => {\n await printInitialBanner(false);\n await whoAmICommand(options);\n });\n });\n}\n\nexport async function whoAmICommand(options: unknown) {\n return await wrapCommandAction(\"whoamiCommand\", WhoamiCommandOptions, options, async (opts) => {\n return await whoAmI(opts);\n });\n}\n\nexport async function whoAmI(\n options?: WhoamiCommandOptions,\n embedded: boolean = false\n): Promise<WhoAmIResult> {\n if (!embedded) {\n intro(`Displaying your account details [${options?.profile ?? \"default\"}]`);\n }\n\n const loadingSpinner = spinner();\n loadingSpinner.start(\"Checking your account details\");\n\n const authentication = await isLoggedIn(options?.profile);\n\n if (!authentication.ok) {\n if (authentication.error === \"fetch failed\") {\n loadingSpinner.stop(\"Fetch failed. Platform down?\");\n } else {\n if (embedded) {\n loadingSpinner.stop(\n `Failed to check account details. You may want to run \\`trigger.dev logout --profile ${\n options?.profile ?? \"default\"\n }\\` and try again.`\n );\n } else {\n loadingSpinner.stop(\n `You must login first. Use \\`trigger.dev login --profile ${\n options?.profile ?? \"default\"\n }\\` to login.`\n );\n outro(`Whoami failed: ${authentication.error}`);\n }\n }\n\n return {\n success: false,\n error: authentication.error,\n };\n }\n\n const apiClient = new CliApiClient(authentication.auth.apiUrl, authentication.auth.accessToken);\n const userData = await apiClient.whoAmI();\n\n if (!userData.success) {\n loadingSpinner.stop(\"Error getting your account details\");\n logger.error(userData.error);\n return {\n success: false,\n error: userData.error,\n };\n }\n\n if (!embedded) {\n loadingSpinner.stop(\"Retrieved your account details\");\n note(\n `User ID: ${userData.data.userId}\nEmail: ${userData.data.email}\nURL: ${chalkLink(authentication.auth.apiUrl)}\n`,\n `Account details [${authentication.profile}]`\n );\n } else {\n loadingSpinner.stop(`Retrieved your account details for ${userData.data.email}`);\n }\n\n return userData;\n}\n","import { recordSpanException } from \"@trigger.dev/core/v3/workers\";\nimport { CliApiClient } from \"../apiClient.js\";\nimport { readAuthConfigProfile } from \"./configFiles.js\";\nimport { getTracer } from \"../telemetry/tracing.js\";\n\nconst tracer = getTracer();\n\nexport type LoginResult =\n | {\n ok: true;\n profile: string;\n userId: string;\n email: string;\n dashboardUrl: string;\n auth: {\n apiUrl: string;\n accessToken: string;\n };\n }\n | {\n ok: false;\n error: string;\n auth?: {\n apiUrl: string;\n accessToken: string;\n };\n };\n\nexport async function isLoggedIn(profile: string = \"default\"): Promise<LoginResult> {\n return await tracer.startActiveSpan(\"isLoggedIn\", async (span) => {\n try {\n const config = readAuthConfigProfile(profile);\n\n if (!config?.accessToken || !config?.apiUrl) {\n span.recordException(new Error(\"You must login first\"));\n span.end();\n return { ok: false as const, error: \"You must login first\" };\n }\n\n const apiClient = new CliApiClient(config.apiUrl, config.accessToken);\n const userData = await apiClient.whoAmI();\n\n if (!userData.success) {\n recordSpanException(span, userData.error);\n span.end();\n\n return {\n ok: false as const,\n error: userData.error,\n auth: {\n apiUrl: config.apiUrl,\n accessToken: config.accessToken,\n },\n };\n }\n\n span.setAttributes({\n \"login.userId\": userData.data.userId,\n \"login.email\": userData.data.email,\n \"login.dashboardUrl\": userData.data.dashboardUrl,\n \"login.profile\": profile,\n });\n\n span.end();\n\n return {\n ok: true as const,\n profile,\n userId: userData.data.userId,\n email: userData.data.email,\n dashboardUrl: userData.data.dashboardUrl,\n auth: {\n apiUrl: config.apiUrl,\n accessToken: config.accessToken,\n },\n };\n } catch (e) {\n recordSpanException(span, e);\n span.end();\n\n return {\n ok: false as const,\n error: e instanceof Error ? e.message : \"Unknown error\",\n };\n }\n });\n}\n","import { spawn } from \"child_process\";\nimport { logger } from \"./logger\";\n\nexport const isLinuxServer = async () => {\n if (process.platform !== \"linux\") {\n return false;\n }\n\n const xdgAvailable = await new Promise<boolean>((res) => {\n const xdg = spawn(\"xdg-open\");\n\n xdg.on(\"error\", (error) => {\n logger.debug(\"Error while checking for xdg-open\", error);\n res(false);\n });\n\n xdg.on(\"spawn\", () => {\n res(true);\n });\n\n xdg.on(\"exit\", (code) => {\n res(code === 0);\n });\n\n xdg.unref();\n });\n\n logger.debug(\"xdg-open available:\", xdgAvailable);\n\n return !xdgAvailable;\n};\n","import type * as esbuild from \"esbuild\";\nimport type { Plugin } from \"esbuild\";\nimport { readFileSync } from \"node:fs\";\nimport { extname, isAbsolute } from \"node:path\";\nimport tsConfigPaths from \"tsconfig-paths\";\nimport { logger } from \"./logger\";\nimport { escapeImportPath } from \"./windows\";\nimport { DependencyMeta } from \"./javascriptProject\";\n\nexport function mockServerOnlyPlugin(): Plugin {\n return {\n name: \"trigger-mock-server-only\",\n setup(build) {\n build.onResolve({ filter: /server-only/ }, (args) => {\n if (args.path !== \"server-only\") {\n return undefined;\n }\n\n logger.debug(`[trigger-mock-server-only] Bundling ${args.path}`, {\n ...args,\n });\n\n return {\n path: args.path,\n external: false,\n namespace: \"server-only-mock\",\n };\n });\n\n build.onLoad({ filter: /server-only/, namespace: \"server-only-mock\" }, (args) => {\n return {\n contents: `export default true;`,\n loader: \"js\",\n };\n });\n },\n };\n}\n\nexport function bundleTriggerDevCore(buildIdentifier: string, tsconfigPath?: string): Plugin {\n return {\n name: \"trigger-bundle-core\",\n setup(build) {\n build.onResolve({ filter: /.*/ }, (args) => {\n if (!args.path.startsWith(\"@trigger.dev/core/v3\")) {\n return undefined;\n }\n\n const triggerSdkPath = require.resolve(\"@trigger.dev/sdk/v3\", { paths: [process.cwd()] });\n\n logger.debug(`[${buildIdentifier}][trigger-bundle-core] Resolved @trigger.dev/sdk/v3`, {\n ...args,\n triggerSdkPath,\n });\n\n const resolvedPath = require.resolve(args.path, {\n paths: [triggerSdkPath],\n });\n\n logger.debug(`[${buildIdentifier}][trigger-bundle-core] Externalizing ${args.path}`, {\n ...args,\n triggerSdkPath,\n resolvedPath,\n });\n\n return {\n path: resolvedPath,\n external: false,\n };\n });\n },\n };\n}\n\nexport function workerSetupImportConfigPlugin(configPath?: string): Plugin {\n return {\n name: \"trigger-worker-setup\",\n setup(build) {\n if (!configPath) {\n return;\n }\n\n build.onLoad({ filter: /worker-setup\\.js$/ }, async (args) => {\n let workerSetupContents = readFileSync(args.path, \"utf-8\");\n\n workerSetupContents = workerSetupContents.replace(\n \"__SETUP_IMPORTED_PROJECT_CONFIG__\",\n `import * as setupImportedConfigExports from \"${escapeImportPath(\n configPath\n )}\"; const setupImportedConfig = setupImportedConfigExports.config;`\n );\n\n logger.debug(\"Loading worker setup\", {\n args,\n workerSetupContents,\n configPath,\n });\n\n return {\n contents: workerSetupContents,\n loader: \"js\",\n };\n });\n },\n };\n}\n\nexport function bundleDependenciesPlugin(\n buildIdentifier: string,\n dependencies: Record<string, DependencyMeta>,\n dependenciesToBundle?: Array<string | RegExp>,\n tsconfigPath?: string\n): Plugin {\n const matchPath = tsconfigPath ? createMatchPath(tsconfigPath) : undefined;\n\n function resolvePath(id: string) {\n if (!matchPath) {\n return id;\n }\n return matchPath(id, undefined, undefined, [\".ts\", \".tsx\", \".js\", \".jsx\"]) || id;\n }\n\n return {\n name: \"trigger-bundle-dependencies\",\n setup(build) {\n build.onResolve({ filter: /.*/ }, (args) => {\n const resolvedPath = resolvePath(args.path);\n\n if (!isBareModuleId(resolvedPath)) {\n return undefined; // let esbuild handle it\n }\n\n // Skip assets that are treated as files (.css, .svg, .png, etc.).\n // Otherwise, esbuild would emit code that would attempt to require()\n // or import these files --- which aren't JavaScript!\n let loader;\n try {\n loader = getLoaderForFile(args.path);\n } catch (e) {\n if (!(e instanceof Error && e.message.startsWith(\"Cannot get loader for file\"))) {\n throw e;\n }\n }\n if (loader === \"file\") {\n return undefined;\n }\n\n for (let pattern of dependenciesToBundle ?? []) {\n if (typeof pattern === \"string\" ? args.path === pattern : pattern.test(args.path)) {\n return undefined; // let esbuild bundle it\n }\n }\n\n if (dependencies[args.path] && !dependencies[args.path]!.external) {\n return undefined; // let esbuild bundle it\n }\n\n logger.debug(`[${buildIdentifier}] Externalizing ${args.path}`, {\n ...args,\n });\n\n // Everything else should be external\n return {\n path: args.path,\n external: true,\n };\n });\n },\n };\n}\n\nfunction isBareModuleId(id: string): boolean {\n return !id.startsWith(\"node:\") && !id.startsWith(\".\") && !isAbsolute(id);\n}\n\nexport function createMatchPath(tsconfigPath: string | undefined) {\n // There is no tsconfig to match paths against.\n if (!tsconfigPath) {\n return undefined;\n }\n\n // When passing a absolute path, loadConfig assumes that the path contains\n // a tsconfig file.\n // Ref.: https://github.com/dividab/tsconfig-paths/blob/v4.0.0/src/__tests__/config-loader.test.ts#L74\n let configLoaderResult = tsConfigPaths.loadConfig(tsconfigPath);\n\n if (configLoaderResult.resultType === \"failed\") {\n if (configLoaderResult.message === \"Missing baseUrl in compilerOptions\") {\n throw new Error(\n `🚨 Oops! No baseUrl found, please set compilerOptions.baseUrl in your tsconfig or jsconfig`\n );\n }\n return undefined;\n }\n\n return tsConfigPaths.createMatchPath(\n configLoaderResult.absoluteBaseUrl,\n configLoaderResult.paths,\n configLoaderResult.mainFields,\n configLoaderResult.addMatchAll\n );\n}\n\nconst loaders: { [ext: string]: esbuild.Loader } = {\n \".aac\": \"file\",\n \".avif\": \"file\",\n \".css\": \"file\",\n \".csv\": \"file\",\n \".eot\": \"file\",\n \".fbx\": \"file\",\n \".flac\": \"file\",\n \".gif\": \"file\",\n \".glb\": \"file\",\n \".gltf\": \"file\",\n \".gql\": \"text\",\n \".graphql\": \"text\",\n \".hdr\": \"file\",\n \".ico\": \"file\",\n \".jpeg\": \"file\",\n \".jpg\": \"file\",\n \".js\": \"jsx\",\n \".jsx\": \"jsx\",\n \".json\": \"json\",\n // We preprocess md and mdx files using @mdx-js/mdx and send through\n // the JSX for esbuild to handle\n \".md\": \"jsx\",\n \".mdx\": \"jsx\",\n \".mov\": \"file\",\n \".mp3\": \"file\",\n \".mp4\": \"file\",\n \".node\": \"copy\",\n \".ogg\": \"file\",\n \".otf\": \"file\",\n \".png\": \"file\",\n \".psd\": \"file\",\n \".sql\": \"text\",\n \".svg\": \"file\",\n \".ts\": \"ts\",\n \".tsx\": \"tsx\",\n \".ttf\": \"file\",\n \".wasm\": \"file\",\n \".wav\": \"file\",\n \".webm\": \"file\",\n \".webmanifest\": \"file\",\n \".webp\": \"file\",\n \".woff\": \"file\",\n \".woff2\": \"file\",\n \".zip\": \"file\",\n};\n\nexport function getLoaderForFile(file: string): esbuild.Loader {\n const ext = extname(file);\n const loader = loaders[ext];\n\n if (loader) return loader;\n\n throw new Error(`Cannot get loader for file ${file}`);\n}\n","import chalk from \"chalk\";\nimport { relative } from \"node:path\";\nimport { chalkError, chalkPurple, chalkGrey, chalkGreen, chalkWarning, cliLink } from \"./cliOutput\";\nimport { logger } from \"./logger\";\nimport { ReadConfigResult } from \"./configFiles\";\nimport { z } from \"zod\";\nimport { groupTaskMetadataIssuesByTask } from \"@trigger.dev/core/v3\";\nimport { docs } from \"./links\";\n\nexport type ESMRequireError = {\n type: \"esm-require-error\";\n moduleName: string;\n};\n\nexport type BuildError = ESMRequireError | string;\n\nfunction errorIsErrorLike(error: unknown): error is Error {\n return (\n error instanceof Error || (typeof error === \"object\" && error !== null && \"message\" in error)\n );\n}\n\nexport function parseBuildErrorStack(error: unknown): BuildError | undefined {\n if (typeof error === \"string\") {\n return error;\n }\n\n if (errorIsErrorLike(error)) {\n if (typeof error.stack === \"string\") {\n if (error.stack.includes(\"ERR_REQUIRE_ESM\")) {\n const moduleName = getPackageNameFromEsmRequireError(error.stack);\n\n if (moduleName) {\n return {\n type: \"esm-require-error\",\n moduleName,\n };\n }\n }\n } else {\n return error.message;\n }\n }\n}\n\nfunction getPackageNameFromEsmRequireError(stack: string): string | undefined {\n const pathRegex = /require\\(\\) of ES Module (.*) from/;\n const pathMatch = pathRegex.exec(stack);\n\n if (!pathMatch) {\n return;\n }\n\n const filePath = pathMatch[1];\n\n if (!filePath) {\n return;\n }\n\n const lastPart = filePath.split(\"node_modules/\").pop();\n\n if (!lastPart) {\n return;\n }\n\n // regular expression to match the package name\n const moduleRegex = /(@[^\\/]+\\/[^\\/]+|[^\\/]+)/;\n\n const match = moduleRegex.exec(lastPart);\n\n if (!match) {\n return;\n }\n\n return match[1];\n}\n\nexport function logESMRequireError(parsedError: ESMRequireError, resolvedConfig: ReadConfigResult) {\n logger.log(\n `\\n${chalkError(\"X Error:\")} The ${chalkPurple(\n parsedError.moduleName\n )} module is being required even though it's ESM only, and builds only support CommonJS. There are two ${chalk.underline(\n \"possible\"\n )} ways to fix this:`\n );\n logger.log(\n `\\n${chalkGrey(\"○\")} Dynamically import the module in your code: ${chalkGrey(\n `const myModule = await import(\"${parsedError.moduleName}\");`\n )}`\n );\n\n if (resolvedConfig.status === \"file\") {\n const relativePath = relative(resolvedConfig.config.projectDir, resolvedConfig.path).replace(\n /\\\\/g,\n \"/\"\n );\n\n logger.log(\n `${chalkGrey(\"○\")} ${chalk.underline(\"Or\")} add ${chalkPurple(\n parsedError.moduleName\n )} to the ${chalkGreen(\"dependenciesToBundle\")} array in your config file ${chalkGrey(\n `(${relativePath})`\n )}. This will bundle the module with your code.\\n`\n );\n } else {\n logger.log(\n `${chalkGrey(\"○\")} ${chalk.underline(\"Or\")} add ${chalkPurple(\n parsedError.moduleName\n )} to the ${chalkGreen(\"dependenciesToBundle\")} array in your config file ${chalkGrey(\n \"(you'll need to create one)\"\n )}. This will bundle the module with your code.\\n`\n );\n }\n\n logger.log(\n `${chalkGrey(\"○\")} For more info see the ${cliLink(\"relevant docs\", docs.config.esm)}.\\n`\n );\n}\n\nexport type PackageNotFoundError = {\n type: \"package-not-found-error\";\n packageName: string;\n};\n\nexport type NoMatchingVersionError = {\n type: \"no-matching-version-error\";\n packageName: string;\n};\n\nexport type NpmInstallError = PackageNotFoundError | NoMatchingVersionError | string;\n\nexport function parseNpmInstallError(error: unknown): NpmInstallError {\n if (typeof error === \"string\") {\n return error;\n }\n\n if (error instanceof Error) {\n if (typeof error.stack === \"string\") {\n const isPackageNotFoundError =\n error.stack.includes(\"ERR! 404 Not Found\") &&\n error.stack.includes(\"is not in this registry\");\n let packageName = null;\n\n if (isPackageNotFoundError) {\n // Regular expression to match the package name\n const packageNameRegex = /'([^']+)' is not in this registry/;\n const match = packageNameRegex.exec(error.stack);\n if (match) {\n packageName = match[1] as string; // Capture the package name\n }\n }\n\n if (packageName) {\n return {\n type: \"package-not-found-error\",\n packageName,\n };\n }\n\n const noMatchingVersionRegex = /No matching version found for ([^\\s]+)\\s/;\n const noMatchingVersionMatch = noMatchingVersionRegex.exec(error.stack);\n if (noMatchingVersionMatch) {\n return {\n type: \"no-matching-version-error\",\n packageName: (noMatchingVersionMatch[1] as string).replace(/.$/, \"\"),\n };\n }\n\n return error.message;\n } else {\n return error.message;\n }\n }\n\n return \"Unknown error\";\n}\n\nexport function logTaskMetadataParseError(zodIssues: z.ZodIssue[], tasks: any) {\n logger.log(\n `\\n${chalkError(\"X Error:\")} Failed to start. The following ${\n zodIssues.length === 1 ? \"task issue was\" : \"task issues were\"\n } found:`\n );\n\n const groupedIssues = groupTaskMetadataIssuesByTask(tasks, zodIssues);\n\n for (const key in groupedIssues) {\n const taskWithIssues = groupedIssues[key];\n\n if (!taskWithIssues) {\n continue;\n }\n\n logger.log(\n `\\n ${chalkWarning(\"❯\")} ${taskWithIssues.exportName} ${chalkGrey(\"in\")} ${\n taskWithIssues.filePath\n }`\n );\n\n for (const issue of taskWithIssues.issues) {\n if (issue.path) {\n logger.log(` ${chalkError(\"x\")} ${issue.path} ${chalkGrey(issue.message)}`);\n } else {\n logger.log(` ${chalkError(\"x\")} ${chalkGrey(issue.message)}`);\n }\n }\n }\n}\n","export const docs = {\n config: {\n home: \"https://trigger.dev/docs/v3/trigger-config\",\n esm: \"https://trigger.dev/docs/v3/trigger-config#esm-only-packages\",\n prisma: \"https://trigger.dev/docs/v3/trigger-config#prisma-and-other-generators\",\n additionalPackages: \"https://trigger.dev/docs/v3/trigger-config#prisma-and-other-generators\",\n },\n};\n\nexport const getInTouch = \"https://trigger.dev/contact\";\n","import { $, ExecaError } from \"execa\";\nimport { join } from \"node:path\";\nimport { readJSONFileSync } from \"./fileSystem\";\nimport { logger } from \"./logger\";\nimport { PackageManager, getUserPackageManager } from \"./getUserPackageManager\";\nimport { PackageJson } from \"type-fest\";\nimport { assertExhaustive } from \"./assertExhaustive\";\nimport { builtinModules } from \"node:module\";\nimport { tracer } from \"../cli/common\";\nimport { recordSpanException } from \"@trigger.dev/core/v3/otel\";\nimport { flattenAttributes } from \"@trigger.dev/core/v3\";\n\nexport type ResolveOptions = { allowDev: boolean };\nexport type DependencyMeta = { version: string; external: boolean };\n\nexport class JavascriptProject {\n private _packageJson?: PackageJson;\n private _packageManager?: PackageManager;\n\n constructor(private projectPath: string) {}\n\n private get packageJson() {\n if (!this._packageJson) {\n this._packageJson = readJSONFileSync(join(this.projectPath, \"package.json\")) as PackageJson;\n }\n\n return this._packageJson;\n }\n\n public get allowedPackageJson(): Record<string, unknown> {\n const disallowedKeys = [\n \"scripts\",\n \"devDependencies\",\n \"dependencies\",\n \"peerDependencies\",\n \"author\",\n \"contributors\",\n \"funding\",\n \"bugs\",\n \"files\",\n \"keywords\",\n \"main\",\n \"module\",\n \"type\",\n \"bin\",\n \"browser\",\n \"man\",\n \"directories\",\n \"repository\",\n \"peerDependenciesMeta\",\n \"optionalDependencies\",\n \"engines\",\n \"os\",\n \"cpu\",\n \"private\",\n \"publishConfig\",\n \"workspaces\",\n ];\n\n return Object.keys(this.packageJson).reduce(\n (acc, key) => {\n if (!disallowedKeys.includes(key)) {\n acc[key] = this.packageJson[key];\n }\n\n return acc;\n },\n {} as Record<string, unknown>\n );\n }\n\n public get scripts(): Record<string, string> {\n return this.#filterScripts();\n }\n\n #filterScripts(): Record<string, string> {\n if (!this.packageJson.scripts || typeof this.packageJson.scripts !== \"object\") {\n return {};\n }\n\n return this.packageJson.scripts as Record<string, string>;\n }\n\n async install(): Promise<void> {\n const command = await this.#getCommand();\n\n try {\n await command.installDependencies({\n cwd: this.projectPath,\n });\n } catch (error) {\n logger.debug(`Failed to install dependencies using ${command.name}`, {\n error,\n });\n }\n }\n\n async extractDirectDependenciesMeta(): Promise<Record<string, DependencyMeta>> {\n return tracer.startActiveSpan(\n \"JavascriptProject.extractDirectDependenciesMeta\",\n async (span) => {\n const command = await this.#getCommand();\n\n span.setAttributes({\n packageManager: command.name,\n });\n\n try {\n span.end();\n return await command.extractDirectDependenciesMeta({\n cwd: this.projectPath,\n });\n } catch (error) {\n recordSpanException(span, error);\n span.end();\n\n logger.debug(`Failed to resolve internal dependencies using ${command.name}`, {\n error,\n });\n\n throw error;\n }\n }\n );\n }\n\n async resolveAll(packageNames: string[]): Promise<Record<string, string>> {\n return tracer.startActiveSpan(\"JavascriptProject.resolveAll\", async (span) => {\n const externalPackages = packageNames.filter((packageName) => !isBuiltInModule(packageName));\n\n const command = await this.#getCommand();\n\n span.setAttributes({\n externalPackages,\n packageManager: command.name,\n });\n\n try {\n const versions = await command.resolveDependencyVersions(externalPackages, {\n cwd: this.projectPath,\n });\n\n if (versions) {\n logger.debug(`Resolved [${externalPackages.join(\", \")}] version using ${command.name}`, {\n versions,\n });\n\n span.setAttributes({\n ...flattenAttributes(versions, \"versions\"),\n });\n }\n\n // Merge the resolved versions with the package.json dependencies\n const missingPackages = externalPackages.filter((packageName) => !versions[packageName]);\n const missingPackageVersions: Record<string, string> = {};\n\n for (const packageName of missingPackages) {\n const packageJsonVersion = this.packageJson.dependencies?.[packageName];\n\n if (typeof packageJsonVersion === \"string\") {\n logger.debug(`Resolved ${packageName} version using package.json`, {\n packageJsonVersion,\n });\n\n missingPackageVersions[packageName] = packageJsonVersion;\n }\n }\n\n span.setAttributes({\n ...flattenAttributes(missingPackageVersions, \"missingPackageVersions\"),\n missingPackages,\n });\n\n span.end();\n\n return { ...versions, ...missingPackageVersions };\n } catch (error) {\n recordSpanException(span, error);\n span.end();\n\n logger.debug(`Failed to resolve dependency versions using ${command.name}`, {\n packageNames,\n error,\n });\n\n return {};\n }\n });\n }\n\n async resolve(packageName: string, options?: ResolveOptions): Promise<string | undefined> {\n if (isBuiltInModule(packageName)) {\n return undefined;\n }\n\n const opts = { allowDev: false, ...options };\n\n const command = await this.#getCommand();\n\n try {\n const version = await command.resolveDependencyVersion(packageName, {\n cwd: this.projectPath,\n });\n\n if (version) {\n logger.debug(`Resolved ${packageName} version using ${command.name}`, { version });\n\n return version;\n }\n\n const packageJsonVersion = this.packageJson.dependencies?.[packageName];\n\n if (typeof packageJsonVersion === \"string\") {\n logger.debug(`Resolved ${packageName} version using package.json`, { packageJsonVersion });\n\n return packageJsonVersion;\n }\n\n if (opts.allowDev) {\n const devPackageJsonVersion = this.packageJson.devDependencies?.[packageName];\n\n if (typeof devPackageJsonVersion === \"string\") {\n logger.debug(`Resolved ${packageName} version using devDependencies`, {\n devPackageJsonVersion,\n });\n\n return devPackageJsonVersion;\n }\n }\n } catch (error) {\n logger.debug(`Failed to resolve dependency version using ${command.name}`, {\n packageName,\n error,\n });\n }\n }\n\n async #getCommand(): Promise<PackageManagerCommands> {\n const packageManager = await this.getPackageManager();\n\n switch (packageManager) {\n case \"npm\":\n return new NPMCommands();\n case \"pnpm\":\n return new PNPMCommands();\n case \"yarn\":\n return new YarnCommands();\n default:\n assertExhaustive(packageManager);\n }\n }\n\n async getPackageManager(): Promise<PackageManager> {\n if (!this._packageManager) {\n this._packageManager = await getUserPackageManager(this.projectPath);\n }\n\n return this._packageManager;\n }\n}\n\ntype PnpmList = {\n name: string;\n path: string;\n version: string;\n private: boolean;\n dependencies?: Record<\n string,\n {\n from: string;\n version: string;\n resolved: string;\n path: string;\n }\n >;\n}[];\n\ntype PackageManagerOptions = {\n cwd?: string;\n};\n\ninterface PackageManagerCommands {\n name: string;\n\n installDependencies(options: PackageManagerOptions): Promise<void>;\n\n extractDirectDependenciesMeta(\n options: PackageManagerOptions\n ): Promise<Record<string, DependencyMeta>>;\n\n resolveDependencyVersion(\n packageName: string,\n options: PackageManagerOptions\n ): Promise<string | undefined>;\n\n resolveDependencyVersions(\n packageNames: string[],\n options: PackageManagerOptions\n ): Promise<Record<string, string>>;\n}\n\nclass PNPMCommands implements PackageManagerCommands {\n get name() {\n return \"pnpm\";\n }\n\n private get cmd() {\n return process.platform === \"win32\" ? \"pnpm.cmd\" : \"pnpm\";\n }\n\n async installDependencies(options: PackageManagerOptions) {\n const { stdout, stderr } = await $({ cwd: options.cwd })`${this.cmd} install`;\n\n logger.debug(`Installing dependencies using ${this.name}`, { stdout, stderr });\n }\n\n async resolveDependencyVersion(packageName: string, options: PackageManagerOptions) {\n const { stdout } = await $({ cwd: options.cwd })`${this.cmd} list ${packageName} -r --json`;\n const result = JSON.parse(stdout) as PnpmList;\n\n logger.debug(`Resolving ${packageName} version using ${this.name}`);\n\n // Return the first dependency version that matches the package name\n for (const dep of result) {\n const dependency = dep.dependencies?.[packageName];\n\n if (dependency) {\n return dependency.version;\n }\n }\n }\n\n async resolveDependencyVersions(\n packageNames: string[],\n options: PackageManagerOptions\n ): Promise<Record<string, string>> {\n const result = await this.#listDependencies(packageNames, options);\n\n logger.debug(`Resolving ${packageNames.join(\" \")} version using ${this.name}`);\n\n const results: Record<string, string> = {};\n\n // Return the first dependency version that matches the package name\n for (const dep of result) {\n for (const packageName of packageNames) {\n const dependency = dep.dependencies?.[packageName];\n\n if (dependency) {\n results[packageName] = dependency.version;\n }\n }\n }\n\n return results;\n }\n\n async extractDirectDependenciesMeta(options: PackageManagerOptions) {\n const result = await this.#listDirectDependencies(options);\n\n logger.debug(`Extracting direct dependencies metadata using ${this.name}`);\n\n const results: Record<string, DependencyMeta> = {};\n\n for (const projectPkg of result) {\n results[projectPkg.name] = { version: projectPkg.version, external: false };\n\n if (projectPkg.dependencies) {\n for (const [name, dep] of Object.entries(projectPkg.dependencies)) {\n const { version } = dep;\n\n results[name] = {\n version,\n external: !version.startsWith(\"link:\"),\n };\n }\n }\n }\n\n return results;\n }\n\n async #listDirectDependencies(options: PackageManagerOptions) {\n const childProcess = await $({\n cwd: options.cwd,\n reject: false,\n })`${this.cmd} list --recursive --json`;\n\n if (childProcess.failed) {\n logger.debug(\"Failed to list dependencies, using stdout anyway...\", {\n error: childProcess,\n });\n }\n\n return JSON.parse(childProcess.stdout) as PnpmList;\n }\n\n async #listDependencies(packageNames: string[], options: PackageManagerOptions) {\n const childProcess = await $({\n cwd: options.cwd,\n reject: false,\n })`${this.cmd} list ${packageNames} -r --json`;\n\n if (childProcess.failed) {\n logger.debug(\"Failed to list dependencies, using stdout anyway...\", {\n error: childProcess,\n });\n }\n\n return JSON.parse(childProcess.stdout) as PnpmList;\n }\n}\n\ntype NpmDependency = {\n version: string;\n resolved: string;\n overridden: boolean;\n required?: { version: string };\n dependencies?: Record<string, NpmDependency>;\n};\n\ntype NpmListOutput = {\n dependencies: Record<string, NpmDependency>;\n};\n\nclass NPMCommands implements PackageManagerCommands {\n get name() {\n return \"npm\";\n }\n\n private get cmd() {\n return process.platform === \"win32\" ? \"npm.cmd\" : \"npm\";\n }\n\n async installDependencies(options: PackageManagerOptions) {\n const { stdout, stderr } = await $({ cwd: options.cwd })`${this.cmd} install`;\n\n logger.debug(`Installing dependencies using ${this.name}`, { stdout, stderr });\n }\n\n async resolveDependencyVersion(packageName: string, options: PackageManagerOptions) {\n const { stdout } = await $({ cwd: options.cwd })`${this.cmd} list ${packageName} --json`;\n const output = JSON.parse(stdout) as NpmListOutput;\n\n logger.debug(`Resolving ${packageName} version using ${this.name}`, { output });\n\n return this.#recursivelySearchDependencies(output.dependencies, packageName);\n }\n\n async resolveDependencyVersions(\n packageNames: string[],\n options: PackageManagerOptions\n ): Promise<Record<string, string>> {\n const output = await this.#listDependencies(packageNames, options);\n\n logger.debug(`Resolving ${packageNames.join(\" \")} version using ${this.name}`, { output });\n\n const results: Record<string, string> = {};\n\n for (const packageName of packageNames) {\n const version = this.#recursivelySearchDependencies(output.dependencies, packageName);\n\n if (version) {\n results[packageName] = version;\n }\n }\n\n return results;\n }\n\n async extractDirectDependenciesMeta(\n options: PackageManagerOptions\n ): Promise<Record<string, DependencyMeta>> {\n const result = await this.#listDirectDependencies(options);\n\n logger.debug(`Extracting direct dependencies metadata using ${this.name}`);\n\n return result.dependencies ? this.#flattenDependenciesMeta(result.dependencies) : {};\n }\n\n async #listDirectDependencies(options: PackageManagerOptions) {\n const childProcess = await $({\n cwd: options.cwd,\n reject: false,\n })`${this.cmd} list --json`;\n\n if (childProcess.failed) {\n logger.debug(\"Failed to list dependencies, using stdout anyway...\", {\n error: childProcess,\n });\n }\n\n return JSON.parse(childProcess.stdout) as NpmListOutput;\n }\n\n async #listDependencies(packageNames: string[], options: PackageManagerOptions) {\n const childProcess = await $({\n cwd: options.cwd,\n reject: false,\n })`${this.cmd} list ${packageNames} --json`;\n\n if (childProcess.failed) {\n logger.debug(\"Failed to list dependencies, using stdout anyway...\", {\n error: childProcess,\n });\n }\n\n return JSON.parse(childProcess.stdout) as NpmListOutput;\n }\n\n #recursivelySearchDependencies(\n dependencies: Record<string, NpmDependency>,\n packageName: string\n ): string | undefined {\n for (const [name, dependency] of Object.entries(dependencies)) {\n if (name === packageName) {\n return dependency.version;\n }\n\n if (dependency.dependencies) {\n const result = this.#recursivelySearchDependencies(dependency.dependencies, packageName);\n\n if (result) {\n return result;\n }\n }\n }\n }\n\n #flattenDependenciesMeta(\n dependencies: Record<string, NpmDependency>\n ): Record<string, DependencyMeta> {\n let results: Record<string, DependencyMeta> = {};\n\n for (const [name, dep] of Object.entries(dependencies)) {\n const { version, resolved, dependencies: children } = dep;\n results[name] = { version, external: !!resolved && !resolved.startsWith(\"file:\") };\n\n if (children) {\n results = { ...results, ...this.#flattenDependenciesMeta(children) };\n }\n }\n\n return results;\n }\n}\n\nclass YarnCommands implements PackageManagerCommands {\n get name() {\n return \"yarn\";\n }\n\n private get cmd() {\n return process.platform === \"win32\" ? \"yarn.cmd\" : \"yarn\";\n }\n\n async installDependencies(options: PackageManagerOptions) {\n const { stdout, stderr } = await $({ cwd: options.cwd })`${this.cmd} install`;\n\n logger.debug(`Installing dependencies using ${this.name}`, { stdout, stderr });\n }\n\n async resolveDependencyVersion(packageName: string, options: PackageManagerOptions) {\n const { stdout } = await $({ cwd: options.cwd })`${this.cmd} info ${packageName} --json`;\n\n const lines = stdout.split(\"\\n\");\n\n logger.debug(`Resolving ${packageName} version using ${this.name}`);\n\n for (const line of lines) {\n const json = JSON.parse(line);\n\n if (json.value === packageName) {\n return json.children.Version;\n }\n }\n }\n\n async resolveDependencyVersions(\n packageNames: string[],\n options: PackageManagerOptions\n ): Promise<Record<string, string>> {\n const stdout = await this.#listDependencies(packageNames, options);\n\n const lines = stdout.split(\"\\n\");\n\n logger.debug(`Resolving ${packageNames.join(\" \")} version using ${this.name}`);\n\n const results: Record<string, string> = {};\n\n for (const line of lines) {\n const json = JSON.parse(line);\n\n const packageName = this.#parseYarnValueIntoPackageName(json.value);\n\n if (packageNames.includes(packageName)) {\n results[packageName] = json.children.Version;\n }\n }\n\n return results;\n }\n\n async extractDirectDependenciesMeta(options: PackageManagerOptions) {\n const result = await this.#listDirectDependencies(options);\n\n const rawPackagesData = result.split(\"\\n\");\n logger.debug(`Extracting direct dependencies metadata using ${this.name}`);\n\n const results: Record<string, DependencyMeta> = {};\n\n for (const rawPackageData of rawPackagesData) {\n const packageData = JSON.parse(rawPackageData);\n\n const [name, dependencyMeta] = this.#parseYarnValueIntoDependencyMeta(packageData.value);\n results[name] = dependencyMeta;\n }\n\n return results;\n }\n\n async #listDirectDependencies(options: PackageManagerOptions) {\n const childProcess = await $({\n cwd: options.cwd,\n reject: false,\n })`${this.cmd} info --all --json`;\n\n if (childProcess.failed) {\n logger.debug(\"Failed to list dependencies, using stdout anyway...\", {\n error: childProcess,\n });\n }\n\n return childProcess.stdout;\n }\n\n async #listDependencies(packageNames: string[], options: PackageManagerOptions) {\n const childProcess = await $({\n cwd: options.cwd,\n reject: false,\n })`${this.cmd} info ${packageNames} --json`;\n\n if (childProcess.failed) {\n logger.debug(\"Failed to list dependencies, using stdout anyway...\", {\n error: childProcess,\n });\n }\n\n return childProcess.stdout;\n }\n\n // The \"value\" when doing yarn info is formatted like this:\n // \"package-name@npm:version\" or \"package-name@workspace:version\"\n // This function will parse the value into just the package name.\n // This correctly handles scoped packages as well e.g. @scope/package-name@npm:version\n #parseYarnValueIntoPackageName(value: string): string {\n const parts = value.split(\"@\");\n\n // If the value does not contain an \"@\" symbol, then it's just the package name\n if (parts.length === 3) {\n return parts[1] as string;\n }\n\n // If the value contains an \"@\" symbol, then the package name is the first part\n return parts[0] as string;\n }\n\n #parseYarnValueIntoDependencyMeta(value: string): [string, DependencyMeta] {\n const parts = value.split(\"@\");\n let name: string, protocol: string, version: string;\n\n if (parts.length === 3) {\n // e.g. @<scope>/<package>@<protocol>:<version> -> [\"\", \"<scope>/<package>\"\", \"<protocol>:<version>\"\"]\n name = `@${parts[1]}`;\n [protocol = \"\", version = \"\"] = parts[2]!.split(\":\");\n } else if (parts.length === 2) {\n // e.g. <package>@<protocol>:<version> -> [\"<package>\"\", \"<protocol>:<version>\"\"]\n name = parts[0]!.toString();\n [protocol = \"\", version = \"\"] = parts[1]!.split(\":\");\n } else {\n throw new Error(\"Failed parsing ${value} into dependency meta\");\n }\n\n return [\n name,\n {\n version,\n external: protocol !== \"workspace\" && protocol !== \"file\",\n },\n ];\n }\n}\n\nfunction isBuiltInModule(module: string): boolean {\n // if the module has node: prefix, it's a built-in module\n if (module.startsWith(\"node:\")) {\n return true;\n }\n\n return builtinModules.includes(module);\n}\n","import { findUp } from \"find-up\";\nimport { basename } from \"path\";\nimport { logger } from \"./logger\";\n\nexport type PackageManager = \"npm\" | \"pnpm\" | \"yarn\";\nexport const LOCKFILES = {\n npm: \"package-lock.json\",\n npmShrinkwrap: \"npm-shrinkwrap.json\",\n pnpm: \"pnpm-lock.yaml\",\n yarn: \"yarn.lock\",\n bun: \"bun.lockb\",\n};\n\nexport async function getUserPackageManager(path: string): Promise<PackageManager> {\n const packageManager = await detectPackageManager(path);\n logger.debug(\"Detected package manager\", { packageManager });\n return packageManager;\n}\n\nasync function detectPackageManager(path: string): Promise<PackageManager> {\n try {\n return await detectPackageManagerFromArtifacts(path);\n } catch (error) {\n return detectPackageManagerFromCurrentCommand();\n }\n}\n\nfunction detectPackageManagerFromCurrentCommand(): PackageManager {\n // This environment variable is set by npm and yarn but pnpm seems less consistent\n const userAgent = process.env.npm_config_user_agent;\n\n if (userAgent) {\n if (userAgent.startsWith(\"yarn\")) {\n return \"yarn\";\n } else if (userAgent.startsWith(\"pnpm\")) {\n return \"pnpm\";\n } else {\n return \"npm\";\n }\n } else {\n // If no user agent is set, assume npm\n return \"npm\";\n }\n}\n\nexport async function detectPackageManagerFromArtifacts(path: string): Promise<PackageManager> {\n const foundPath = await findUp(Object.values(LOCKFILES), { cwd: path });\n\n if (!foundPath) {\n throw new Error(\"Could not detect package manager from artifacts\");\n }\n\n logger.debug(\"Found path from package manager artifacts\", { foundPath });\n\n switch (basename(foundPath)) {\n case LOCKFILES.yarn:\n logger.debug(\"Found yarn artifact\", { foundPath });\n return \"yarn\";\n case LOCKFILES.pnpm:\n logger.debug(\"Found pnpm artifact\", { foundPath });\n return \"pnpm\";\n case LOCKFILES.npm:\n case LOCKFILES.npmShrinkwrap:\n logger.debug(\"Found npm artifact\", { foundPath });\n return \"npm\";\n case LOCKFILES.bun:\n logger.debug(\"Found bun artifact\", { foundPath });\n return \"npm\";\n default:\n throw new Error(`Unhandled package manager detection path: ${foundPath}`);\n }\n}\n","export function assertExhaustive(x: never): never {\n throw new Error(\"Unexpected object: \" + x);\n}\n","import path from \"path\";\nimport { fileURLToPath } from \"url\";\n\nexport function cliRootPath() {\n const __filename = fileURLToPath(import.meta.url);\n const __dirname = path.dirname(__filename);\n return __dirname;\n}\n","export function safeJsonParse(json?: string): unknown {\n if (!json) {\n return undefined;\n }\n\n try {\n return JSON.parse(json);\n } catch {\n return undefined;\n }\n}\n","import { confirm, intro, isCancel, log, outro } from \"@clack/prompts\";\nimport { z } from \"zod\";\nimport { readJSONFile, removeFile, writeJSONFile } from \"../utilities/fileSystem.js\";\nimport { spinner } from \"../utilities/windows.js\";\nimport { CommonCommandOptions, OutroCommandError, wrapCommandAction } from \"../cli/common.js\";\nimport { Command } from \"commander\";\nimport { logger } from \"../utilities/logger.js\";\nimport { PackageJson } from \"type-fest\";\nimport { printStandloneInitialBanner, updateCheck } from \"../utilities/initialBanner.js\";\nimport { join, resolve } from \"path\";\nimport { JavascriptProject } from \"../utilities/javascriptProject.js\";\nimport { PackageManager } from \"../utilities/getUserPackageManager.js\";\nimport { getVersion } from \"../utilities/getVersion.js\";\nimport { chalkError, prettyError, prettyWarning } from \"../utilities/cliOutput.js\";\n\nexport const UpdateCommandOptions = CommonCommandOptions.pick({\n logLevel: true,\n skipTelemetry: true,\n});\n\nexport type UpdateCommandOptions = z.infer<typeof UpdateCommandOptions>;\n\nexport function configureUpdateCommand(program: Command) {\n return program\n .command(\"update\")\n .description(\"Updates all @trigger.dev/* packages to match the CLI version\")\n .argument(\"[path]\", \"The path to the directory that contains the package.json file\", \".\")\n .option(\n \"-l, --log-level <level>\",\n \"The CLI log level to use (debug, info, log, warn, error, none). This does not effect the log level of your trigger.dev tasks.\",\n \"log\"\n )\n .option(\"--skip-telemetry\", \"Opt-out of sending telemetry\")\n .action(async (path, options) => {\n wrapCommandAction(\"dev\", UpdateCommandOptions, options, async (opts) => {\n await printStandloneInitialBanner(true);\n await updateCommand(path, opts);\n });\n });\n}\n\nconst triggerPackageFilter = /^@trigger\\.dev/;\n\nexport async function updateCommand(dir: string, options: UpdateCommandOptions) {\n await updateTriggerPackages(dir, options);\n}\n\nexport async function updateTriggerPackages(\n dir: string,\n options: UpdateCommandOptions,\n embedded?: boolean,\n requireUpdate?: boolean\n): Promise<boolean> {\n let hasOutput = false;\n\n if (!embedded) {\n intro(\"Updating packages\");\n }\n\n const projectPath = resolve(process.cwd(), dir);\n\n const { packageJson, readonlyPackageJson, packageJsonPath } = await getPackageJson(projectPath);\n\n if (!packageJson) {\n log.error(\"Failed to load package.json. Try to re-run with `-l debug` to see what's going on.\");\n return false;\n }\n\n const cliVersion = getVersion();\n const newCliVersion = await updateCheck();\n\n if (newCliVersion) {\n prettyWarning(\n \"You're not running the latest CLI version, please consider updating ASAP\",\n `Current: ${cliVersion}\\nLatest: ${newCliVersion}`,\n \"Run latest: npx trigger.dev@beta\"\n );\n\n hasOutput = true;\n }\n\n const triggerDependencies = getTriggerDependencies(packageJson);\n\n function getVersionMismatches(\n deps: Dependency[],\n targetVersion: string\n ): {\n mismatches: Dependency[];\n isDowngrade: boolean;\n } {\n const mismatches: Dependency[] = [];\n\n for (const dep of deps) {\n if (dep.version === targetVersion) {\n continue;\n }\n\n mismatches.push(dep);\n }\n\n const extractRelease = (version: string) => {\n const release = Number(version.split(\"3.0.0-beta.\")[1]);\n return release || undefined;\n };\n\n let isDowngrade = false;\n const targetRelease = extractRelease(targetVersion);\n\n if (targetRelease) {\n isDowngrade = mismatches.some((dep) => {\n const depRelease = extractRelease(dep.version);\n\n if (!depRelease) {\n return false;\n }\n\n return depRelease > targetRelease;\n });\n }\n\n return {\n mismatches,\n isDowngrade,\n };\n }\n\n const { mismatches, isDowngrade } = getVersionMismatches(triggerDependencies, cliVersion);\n\n if (mismatches.length === 0) {\n if (!embedded) {\n outro(`Nothing to do${newCliVersion ? \" ..but you should really update your CLI!\" : \"\"}`);\n return hasOutput;\n }\n return hasOutput;\n }\n\n if (isDowngrade) {\n prettyError(\"Some of the installed @trigger.dev packages are newer than your CLI version\");\n } else {\n prettyWarning(\n \"Mismatch between your CLI version and installed packages\",\n \"We recommend pinned versions for guaranteed compatibility\"\n );\n }\n\n if (!process.stdout.isTTY) {\n // Running in CI with version mismatch detected\n outro(\"Deploy failed\");\n\n console.log(\n `ERROR: Version mismatch detected while running in CI. This won't end well. Aborting.\n \n Please run the dev command locally and check that your CLI version matches the one printed below. Additionally, all \\`@trigger.dev/*\\` packages also need to match this version.\n \n If your local CLI version doesn't match the one below, you may want to pin the CLI version in this CI step. To do that, just replace \\`trigger.dev@beta\\` with \\`trigger.dev@<FULL_VERSION>\\`, for example: \\`npx trigger.dev@3.0.0-beta.17 deploy\\`\n \n CLI version: ${cliVersion}\n \n Current package versions that don't match the CLI:\n ${mismatches.map((dep) => `- ${dep.name}@${dep.version}`).join(\"\\n\")}\\n`\n );\n process.exit(1);\n }\n\n // WARNING: We can only start accepting user input once we know this is a TTY, otherwise, the process will exit with an error in CI\n\n if (isDowngrade) {\n printUpdateTable(\"Versions\", mismatches, cliVersion, \"installed\", \"CLI\");\n\n outro(\"CLI update required!\");\n\n logger.log(\n `${chalkError(\n \"X Error:\"\n )} Please update your CLI. Alternatively, use \\`--skip-update-check\\` at your own risk.\\n`\n );\n process.exit(1);\n }\n\n log.message(\"\"); // spacing\n\n // Always require user confirmation\n const userWantsToUpdate = await updateConfirmation(mismatches, cliVersion);\n\n if (isCancel(userWantsToUpdate)) {\n throw new OutroCommandError();\n }\n\n if (!userWantsToUpdate) {\n if (requireUpdate) {\n outro(\"You shall not pass!\");\n\n logger.log(\n `${chalkError(\n \"X Error:\"\n )} Update required: Version mismatches are a common source of bugs and errors. Please update or use \\`--skip-update-check\\` at your own risk.\\n`\n );\n process.exit(1);\n }\n\n if (!embedded) {\n outro(\"You've been warned!\");\n }\n\n return hasOutput;\n }\n\n const installSpinner = spinner();\n installSpinner.start(\"Writing new package.json file\");\n\n // Backup package.json\n const packageJsonBackupPath = `${packageJsonPath}.bak`;\n await writeJSONFile(packageJsonBackupPath, readonlyPackageJson, true);\n\n const exitHandler = async (sig: any) => {\n log.warn(\n `You may have to manually roll back any package.json changes. Backup written to ${packageJsonBackupPath}`\n );\n };\n\n // Add exit handler to warn about manual rollback of package.json\n // Automatically rolling back can end up overwriting with an empty file instead\n process.prependOnceListener(\"exit\", exitHandler);\n\n // Update package.json\n mutatePackageJsonWithUpdatedPackages(packageJson, mismatches, cliVersion);\n await writeJSONFile(packageJsonPath, packageJson, true);\n\n async function revertPackageJsonChanges() {\n await writeJSONFile(packageJsonPath, readonlyPackageJson, true);\n await removeFile(packageJsonBackupPath);\n }\n\n installSpinner.message(\"Installing new package versions\");\n\n const jsProject = new JavascriptProject(projectPath);\n\n let packageManager: PackageManager | undefined;\n\n try {\n packageManager = await jsProject.getPackageManager();\n\n installSpinner.message(`Installing new package versions with ${packageManager}`);\n\n await jsProject.install();\n } catch (error) {\n installSpinner.stop(\n `Failed to install new package versions${packageManager ? ` with ${packageManager}` : \"\"}`\n );\n\n // Remove exit handler in case of failure\n process.removeListener(\"exit\", exitHandler);\n\n await revertPackageJsonChanges();\n throw error;\n }\n\n installSpinner.stop(\"Installed new package versions\");\n\n // Remove exit handler once packages have been updated, also delete backup file\n process.removeListener(\"exit\", exitHandler);\n await removeFile(packageJsonBackupPath);\n\n if (!embedded) {\n outro(\n `Packages updated${newCliVersion ? \" ..but you should really update your CLI too!\" : \"\"}`\n );\n }\n\n return hasOutput;\n}\n\ntype Dependency = {\n type: \"dependencies\" | \"devDependencies\";\n name: string;\n version: string;\n};\n\nfunction getTriggerDependencies(packageJson: PackageJson): Dependency[] {\n const deps: Dependency[] = [];\n\n for (const type of [\"dependencies\", \"devDependencies\"] as const) {\n for (const [name, version] of Object.entries(packageJson[type] ?? {})) {\n if (!version) {\n continue;\n }\n\n if (version.startsWith(\"workspace\")) {\n continue;\n }\n\n if (!triggerPackageFilter.test(name)) {\n continue;\n }\n\n const ignoredPackages = [\"@trigger.dev/companyicons\"];\n\n if (ignoredPackages.includes(name)) {\n continue;\n }\n\n deps.push({ type, name, version });\n }\n }\n\n return deps;\n}\n\nfunction mutatePackageJsonWithUpdatedPackages(\n packageJson: PackageJson,\n depsToUpdate: Dependency[],\n targetVersion: string\n) {\n for (const { type, name, version } of depsToUpdate) {\n if (!packageJson[type]) {\n throw new Error(\n `No ${type} entry found in package.json. Please try to upgrade manually instead.`\n );\n }\n\n packageJson[type]![name] = targetVersion;\n }\n}\n\nfunction printUpdateTable(\n heading: string,\n depsToUpdate: Dependency[],\n targetVersion: string,\n oldColumn = \"old\",\n newColumn = \"new\"\n): void {\n log.message(heading);\n\n const tableData = depsToUpdate.map((dep) => ({\n package: dep.name,\n [oldColumn]: dep.version,\n [newColumn]: targetVersion,\n }));\n\n logger.table(tableData);\n}\n\nasync function updateConfirmation(depsToUpdate: Dependency[], targetVersion: string) {\n printUpdateTable(\"Suggested updates\", depsToUpdate, targetVersion);\n\n let confirmMessage = \"Would you like to apply those updates?\";\n\n return await confirm({\n message: confirmMessage,\n });\n}\n\nexport async function getPackageJson(absoluteProjectPath: string) {\n const packageJsonPath = join(absoluteProjectPath, \"package.json\");\n\n const readonlyPackageJson = Object.freeze((await readJSONFile(packageJsonPath)) as PackageJson);\n\n const packageJson = structuredClone(readonlyPackageJson);\n\n return { packageJson, readonlyPackageJson, packageJsonPath };\n}\n","import { logger } from \"./logger\";\n\nexport async function callResolveEnvVars(\n configModule: any,\n env: Record<string, string | undefined>,\n environment: string,\n projectRef: string\n): Promise<{ variables: Record<string, string>; override: boolean } | undefined> {\n if (\n configModule &&\n configModule.resolveEnvVars &&\n typeof configModule.resolveEnvVars === \"function\"\n ) {\n let resolvedEnvVars: Record<string, string> = {};\n\n try {\n let result = await configModule.resolveEnvVars({\n projectRef,\n environment,\n env,\n });\n\n if (!result) {\n return;\n }\n\n result = await result;\n\n if (typeof result === \"object\" && result !== null && \"variables\" in result) {\n const variables = result.variables;\n\n if (Array.isArray(variables)) {\n for (const item of variables) {\n if (\n typeof item === \"object\" &&\n item !== null &&\n \"name\" in item &&\n \"value\" in item &&\n typeof item.name === \"string\" &&\n typeof item.value === \"string\"\n ) {\n resolvedEnvVars[item.name] = item.value;\n }\n }\n } else if (typeof variables === \"object\") {\n for (const [key, value] of Object.entries(variables)) {\n if (typeof key === \"string\" && typeof value === \"string\") {\n resolvedEnvVars[key] = value;\n }\n }\n }\n }\n\n return {\n variables: resolvedEnvVars,\n override: result.override,\n };\n } catch (error) {\n logger.error(error);\n }\n }\n}\n","import {\n CreateBackgroundWorkerRequestBody,\n ResolvedConfig,\n TaskResource,\n clientWebsocketMessages,\n detectDependencyVersion,\n serverWebsocketMessages,\n} from \"@trigger.dev/core/v3\";\nimport { ZodMessageHandler, ZodMessageSender } from \"@trigger.dev/core/v3/zodMessageHandler\";\nimport { watch } from \"chokidar\";\nimport { Command } from \"commander\";\nimport { BuildContext, Metafile, context } from \"esbuild\";\nimport { render, useInput } from \"ink\";\nimport { createHash } from \"node:crypto\";\nimport fs, { readFileSync } from \"node:fs\";\nimport { ClientRequestArgs } from \"node:http\";\nimport { basename, dirname, join, normalize } from \"node:path\";\nimport pDebounce from \"p-debounce\";\nimport { WebSocket } from \"partysocket\";\nimport React, { Suspense, useEffect } from \"react\";\nimport { ClientOptions, WebSocket as wsWebSocket } from \"ws\";\nimport { z } from \"zod\";\nimport * as packageJson from \"../../package.json\";\nimport { CliApiClient } from \"../apiClient\";\nimport { CommonCommandOptions, commonOptions, wrapCommandAction } from \"../cli/common.js\";\nimport {\n bundleDependenciesPlugin,\n bundleTriggerDevCore,\n mockServerOnlyPlugin,\n workerSetupImportConfigPlugin,\n} from \"../utilities/build\";\nimport {\n chalkError,\n chalkGrey,\n chalkLink,\n chalkPurple,\n chalkTask,\n chalkWorker,\n cliLink,\n} from \"../utilities/cliOutput\";\nimport { readConfig } from \"../utilities/configFiles\";\nimport { readJSONFile } from \"../utilities/fileSystem\";\nimport { printDevBanner, printStandloneInitialBanner } from \"../utilities/initialBanner.js\";\nimport {\n detectPackageNameFromImportPath,\n parsePackageName,\n stripWorkspaceFromVersion,\n} from \"../utilities/installPackages\";\nimport { logger } from \"../utilities/logger.js\";\nimport { isLoggedIn } from \"../utilities/session.js\";\nimport { createTaskFileImports, gatherTaskFiles } from \"../utilities/taskFiles\";\nimport { TaskMetadataParseError, UncaughtExceptionError } from \"../workers/common/errors\";\nimport { BackgroundWorker, BackgroundWorkerCoordinator } from \"../workers/dev/backgroundWorker.js\";\nimport { runtimeCheck } from \"../utilities/runtimeCheck\";\nimport {\n logESMRequireError,\n logTaskMetadataParseError,\n parseBuildErrorStack,\n parseNpmInstallError,\n} from \"../utilities/deployErrors\";\nimport { findUp, pathExists } from \"find-up\";\nimport { cliRootPath } from \"../utilities/resolveInternalFilePath\";\nimport { escapeImportPath } from \"../utilities/windows\";\nimport { updateTriggerPackages } from \"./update\";\nimport { esbuildDecorators } from \"@anatine/esbuild-decorators\";\nimport { callResolveEnvVars } from \"../utilities/resolveEnvVars\";\n\nlet apiClient: CliApiClient | undefined;\n\nconst DevCommandOptions = CommonCommandOptions.extend({\n debugger: z.boolean().default(false),\n debugOtel: z.boolean().default(false),\n config: z.string().optional(),\n projectRef: z.string().optional(),\n skipUpdateCheck: z.boolean().default(false),\n});\n\ntype DevCommandOptions = z.infer<typeof DevCommandOptions>;\n\nexport function configureDevCommand(program: Command) {\n return commonOptions(\n program\n .command(\"dev\")\n .description(\"Run your Trigger.dev tasks locally\")\n .argument(\"[path]\", \"The path to the project\", \".\")\n .option(\"-c, --config <config file>\", \"The name of the config file, found at [path].\")\n .option(\n \"-p, --project-ref <project ref>\",\n \"The project ref. Required if there is no config file.\"\n )\n .option(\"--debugger\", \"Enable the debugger\")\n .option(\"--debug-otel\", \"Enable OpenTelemetry debugging\")\n .option(\"--skip-update-check\", \"Skip checking for @trigger.dev package updates\")\n ).action(async (path, options) => {\n wrapCommandAction(\"dev\", DevCommandOptions, options, async (opts) => {\n await devCommand(path, opts);\n });\n });\n}\n\nconst MINIMUM_NODE_MAJOR = 18;\nconst MINIMUM_NODE_MINOR = 16;\n\nexport async function devCommand(dir: string, options: DevCommandOptions) {\n try {\n runtimeCheck(MINIMUM_NODE_MAJOR, MINIMUM_NODE_MINOR);\n } catch (e) {\n logger.log(`${chalkError(\"X Error:\")} ${e}`);\n process.exitCode = 1;\n return;\n }\n\n const authorization = await isLoggedIn(options.profile);\n\n if (!authorization.ok) {\n if (authorization.error === \"fetch failed\") {\n logger.log(\n `${chalkError(\n \"X Error:\"\n )} Connecting to the server failed. Please check your internet connection or contact eric@trigger.dev for help.`\n );\n } else {\n logger.log(\n `${chalkError(\"X Error:\")} You must login first. Use the \\`login\\` CLI command.\\n\\n${\n authorization.error\n }`\n );\n }\n process.exitCode = 1;\n return;\n }\n\n const devInstance = await startDev(dir, options, authorization.auth, authorization.dashboardUrl);\n const { waitUntilExit } = devInstance.devReactElement;\n await waitUntilExit();\n}\n\nasync function startDev(\n dir: string,\n options: DevCommandOptions,\n authorization: { apiUrl: string; accessToken: string },\n dashboardUrl: string\n) {\n let rerender: (node: React.ReactNode) => void | undefined;\n\n try {\n if (options.logLevel) {\n logger.loggerLevel = options.logLevel;\n }\n\n await printStandloneInitialBanner(true);\n\n let displayedUpdateMessage = false;\n\n if (!options.skipUpdateCheck) {\n displayedUpdateMessage = await updateTriggerPackages(dir, { ...options }, true, true);\n }\n\n printDevBanner(displayedUpdateMessage);\n\n logger.debug(\"Starting dev session\", { dir, options, authorization });\n\n let config = await readConfig(dir, {\n projectRef: options.projectRef,\n configFile: options.config,\n });\n\n logger.debug(\"Initial config\", { config });\n\n if (config.status === \"error\") {\n logger.error(\"Failed to read config\", config.error);\n process.exit(1);\n }\n\n async function getDevReactElement(\n configParam: ResolvedConfig,\n authorization: { apiUrl: string; accessToken: string },\n configPath?: string,\n configModule?: any\n ) {\n const accessToken = authorization.accessToken;\n const apiUrl = authorization.apiUrl;\n\n apiClient = new CliApiClient(apiUrl, accessToken);\n\n const devEnv = await apiClient.getProjectEnv({\n projectRef: configParam.project,\n env: \"dev\",\n });\n\n if (!devEnv.success) {\n if (devEnv.error === \"Project not found\") {\n logger.error(\n `Project not found: ${configParam.project}. Ensure you are using the correct project ref and CLI profile (use --profile). Currently using the \"${options.profile}\" profile, which points to ${authorization.apiUrl}`\n );\n } else {\n logger.error(\n `Failed to initialize dev environment: ${devEnv.error}. Using project ref ${configParam.project}`\n );\n }\n\n process.exit(1);\n }\n\n const environmentClient = new CliApiClient(apiUrl, devEnv.data.apiKey);\n\n return (\n <DevUI\n dashboardUrl={dashboardUrl}\n config={configParam}\n apiUrl={apiUrl}\n apiKey={devEnv.data.apiKey}\n environmentClient={environmentClient}\n projectName={devEnv.data.name}\n debuggerOn={options.debugger}\n debugOtel={options.debugOtel}\n configPath={configPath}\n configModule={configModule}\n />\n );\n }\n\n const devReactElement = render(\n await getDevReactElement(\n config.config,\n authorization,\n config.status === \"file\" ? config.path : undefined,\n config.status === \"file\" ? config.module : undefined\n )\n );\n\n rerender = devReactElement.rerender;\n\n return {\n devReactElement,\n stop: async () => {\n devReactElement.unmount();\n },\n };\n } catch (e) {\n throw e;\n }\n}\n\ntype DevProps = {\n config: ResolvedConfig;\n dashboardUrl: string;\n apiUrl: string;\n apiKey: string;\n environmentClient: CliApiClient;\n projectName: string;\n debuggerOn: boolean;\n debugOtel: boolean;\n configPath?: string;\n configModule?: any;\n};\n\nfunction useDev({\n config,\n dashboardUrl,\n apiUrl,\n apiKey,\n environmentClient,\n projectName,\n debuggerOn,\n debugOtel,\n configPath,\n configModule,\n}: DevProps) {\n useEffect(() => {\n const websocketUrl = new URL(apiUrl);\n websocketUrl.protocol = websocketUrl.protocol.replace(\"http\", \"ws\");\n websocketUrl.pathname = `/ws`;\n\n const websocket = new WebSocket(websocketUrl.href, [], {\n WebSocket: WebsocketFactory(apiKey),\n connectionTimeout: 10000,\n maxRetries: 10,\n minReconnectionDelay: 1000,\n maxReconnectionDelay: 30000,\n reconnectionDelayGrowFactor: 1.4, // This leads to the following retry times: 1, 1.4, 1.96, 2.74, 3.84, 5.38, 7.53, 10.54, 14.76, 20.66\n maxEnqueuedMessages: 250,\n });\n\n const sender = new ZodMessageSender({\n schema: clientWebsocketMessages,\n sender: async (message) => {\n websocket.send(JSON.stringify(message));\n },\n });\n\n const backgroundWorkerCoordinator = new BackgroundWorkerCoordinator(\n `${dashboardUrl}/projects/v3/${config.project}`\n );\n\n websocket.addEventListener(\"open\", async (event) => {\n logger.debug(\"WebSocket opened\", { event });\n });\n\n websocket.addEventListener(\"close\", (event) => {\n logger.debug(\"WebSocket closed\", { event });\n });\n\n websocket.addEventListener(\"error\", (event) => {\n logger.log(`${chalkError(\"WebSocketError:\")} ${event.error.message}`);\n logger.debug(\"WebSocket error\", { event, rawError: event.error });\n });\n\n // This is the deprecated task heart beat that uses the friendly attempt ID\n // It will only be used if the worker does not support lazy attempts\n backgroundWorkerCoordinator.onWorkerTaskHeartbeat.attach(\n async ({ worker, backgroundWorkerId, id }) => {\n await sender.send(\"BACKGROUND_WORKER_MESSAGE\", {\n backgroundWorkerId,\n data: {\n type: \"TASK_HEARTBEAT\",\n id,\n },\n });\n }\n );\n\n // \"Task Run Heartbeat\" id is the actual run ID that corresponds to the MarQS message ID\n backgroundWorkerCoordinator.onWorkerTaskRunHeartbeat.attach(\n async ({ worker, backgroundWorkerId, id }) => {\n await sender.send(\"BACKGROUND_WORKER_MESSAGE\", {\n backgroundWorkerId,\n data: {\n type: \"TASK_RUN_HEARTBEAT\",\n id,\n },\n });\n }\n );\n\n backgroundWorkerCoordinator.onTaskCompleted.attach(\n async ({ backgroundWorkerId, completion, execution }) => {\n await sender.send(\"BACKGROUND_WORKER_MESSAGE\", {\n backgroundWorkerId,\n data: {\n type: \"TASK_RUN_COMPLETED\",\n completion,\n execution,\n },\n });\n }\n );\n\n backgroundWorkerCoordinator.onTaskFailedToRun.attach(\n async ({ backgroundWorkerId, completion }) => {\n await sender.send(\"BACKGROUND_WORKER_MESSAGE\", {\n backgroundWorkerId,\n data: {\n type: \"TASK_RUN_FAILED_TO_RUN\",\n completion,\n },\n });\n }\n );\n\n backgroundWorkerCoordinator.onWorkerRegistered.attach(async ({ id, worker, record }) => {\n await sender.send(\"READY_FOR_TASKS\", {\n backgroundWorkerId: id,\n });\n });\n\n backgroundWorkerCoordinator.onWorkerDeprecated.attach(async ({ id, worker }) => {\n await sender.send(\"BACKGROUND_WORKER_DEPRECATED\", {\n backgroundWorkerId: id,\n });\n });\n\n websocket.addEventListener(\"message\", async (event) => {\n try {\n const data = JSON.parse(\n typeof event.data === \"string\" ? event.data : new TextDecoder(\"utf-8\").decode(event.data)\n );\n\n const messageHandler = new ZodMessageHandler({\n schema: serverWebsocketMessages,\n messages: {\n SERVER_READY: async (payload) => {\n for (const worker of backgroundWorkerCoordinator.currentWorkers) {\n await sender.send(\"READY_FOR_TASKS\", {\n backgroundWorkerId: worker.id,\n inProgressRuns: worker.worker.inProgressRuns,\n });\n }\n },\n BACKGROUND_WORKER_MESSAGE: async (payload) => {\n await backgroundWorkerCoordinator.handleMessage(\n payload.backgroundWorkerId,\n payload.data\n );\n },\n },\n });\n\n await messageHandler.handleMessage(data);\n } catch (error) {\n if (error instanceof Error) {\n logger.error(\"Error while handling websocket message\", { error: error.message });\n } else {\n logger.error(\n \"Unkown error while handling websocket message, use `-l debug` for additional output\"\n );\n logger.debug(\"Error while handling websocket message\", { error });\n }\n }\n });\n\n let ctx: BuildContext | undefined;\n\n let firstBuild = true;\n\n async function runBuild() {\n if (ctx) {\n // This will stop the watching\n await ctx.dispose();\n }\n\n let latestWorkerContentHash: string | undefined;\n\n const taskFiles = await gatherTaskFiles(config);\n\n const workerFacadePath = join(cliRootPath(), \"workers\", \"dev\", \"worker-facade.js\");\n const workerFacade = readFileSync(workerFacadePath, \"utf-8\");\n\n const workerSetupPath = join(cliRootPath(), \"workers\", \"dev\", \"worker-setup.js\");\n\n let entryPointContents = workerFacade\n .replace(\"__TASKS__\", createTaskFileImports(taskFiles))\n .replace(\n \"__WORKER_SETUP__\",\n `import { tracingSDK, otelTracer, otelLogger, sender } from \"${escapeImportPath(\n workerSetupPath\n )}\";`\n );\n\n if (configPath) {\n configPath = normalize(configPath);\n logger.debug(\"Importing project config from\", { configPath });\n\n entryPointContents = entryPointContents.replace(\n \"__IMPORTED_PROJECT_CONFIG__\",\n `import * as importedConfigExports from \"${escapeImportPath(\n configPath\n )}\"; const importedConfig = importedConfigExports.config; const handleError = importedConfigExports.handleError;`\n );\n } else {\n entryPointContents = entryPointContents.replace(\n \"__IMPORTED_PROJECT_CONFIG__\",\n `const importedConfig = undefined; const handleError = undefined;`\n );\n }\n\n logger.log(chalkGrey(\"○ Building background worker…\"));\n\n ctx = await context({\n stdin: {\n contents: entryPointContents,\n resolveDir: process.cwd(),\n sourcefile: \"__entryPoint.ts\",\n },\n banner: {\n js: `process.on(\"uncaughtException\", function(error, origin) { if (error instanceof Error) { process.send && process.send({ type: \"UNCAUGHT_EXCEPTION\", payload: { error: { name: error.name, message: error.message, stack: error.stack }, origin }, version: \"v1\" }); } else { process.send && process.send({ type: \"UNCAUGHT_EXCEPTION\", payload: { error: { name: \"Error\", message: typeof error === \"string\" ? error : JSON.stringify(error) }, origin }, version: \"v1\" }); } });`,\n },\n bundle: true,\n metafile: true,\n write: false,\n minify: false,\n sourcemap: \"external\", // does not set the //# sourceMappingURL= comment in the file, we handle it ourselves\n logLevel: \"error\",\n platform: \"node\",\n format: \"cjs\", // This is needed to support opentelemetry instrumentation that uses module patching\n target: [\"node18\", \"es2020\"],\n outdir: \"out\",\n define: {\n TRIGGER_API_URL: `\"${config.triggerUrl}\"`,\n __PROJECT_CONFIG__: JSON.stringify(config),\n },\n plugins: [\n mockServerOnlyPlugin(),\n bundleTriggerDevCore(\"workerFacade\", config.tsconfigPath),\n bundleDependenciesPlugin(\n \"workerFacade\",\n {},\n (config.dependenciesToBundle ?? []).concat([/^@trigger.dev/]),\n config.tsconfigPath\n ),\n workerSetupImportConfigPlugin(configPath),\n esbuildDecorators({\n tsconfig: config.tsconfigPath,\n tsx: true,\n force: false,\n }),\n {\n name: \"trigger.dev v3\",\n setup(build) {\n build.onEnd(async (result) => {\n if (result.errors.length > 0) return;\n if (!result || !result.outputFiles) {\n logger.error(\"Build failed: no result\");\n return;\n }\n\n if (!firstBuild) {\n logger.log(chalkGrey(\"○ Building background worker…\"));\n }\n\n const metaOutputKey = join(\"out\", `stdin.js`).replace(/\\\\/g, \"/\");\n\n const metaOutput = result.metafile!.outputs[metaOutputKey];\n\n if (!metaOutput) {\n throw new Error(`Could not find metafile`);\n }\n\n const outputFileKey = join(config.projectDir, metaOutputKey);\n const outputFile = result.outputFiles.find((file) => file.path === outputFileKey);\n\n if (!outputFile) {\n throw new Error(\n `Could not find output file for entry point ${metaOutput.entryPoint}`\n );\n }\n\n const sourceMapFileKey = join(config.projectDir, `${metaOutputKey}.map`);\n const sourceMapFile = result.outputFiles.find(\n (file) => file.path === sourceMapFileKey\n );\n\n const md5Hasher = createHash(\"md5\");\n md5Hasher.update(Buffer.from(outputFile.contents.buffer));\n\n const contentHash = md5Hasher.digest(\"hex\");\n\n if (latestWorkerContentHash === contentHash) {\n logger.log(chalkGrey(\"○ No changes detected, skipping build…\"));\n\n return;\n }\n\n // Create a file at join(dir, \".trigger\", path) with the fileContents\n const fullPath = join(config.projectDir, \".trigger\", `${contentHash}.js`);\n const sourceMapPath = `${fullPath}.map`;\n\n const outputFileWithSourceMap = `${\n outputFile.text\n }\\n//# sourceMappingURL=${basename(sourceMapPath)}`;\n\n await fs.promises.mkdir(dirname(fullPath), { recursive: true });\n await fs.promises.writeFile(fullPath, outputFileWithSourceMap);\n\n logger.debug(`Wrote background worker to ${fullPath}`);\n\n const dependencies = await gatherRequiredDependencies(metaOutput, config);\n\n if (sourceMapFile) {\n const sourceMapPath = `${fullPath}.map`;\n await fs.promises.writeFile(sourceMapPath, sourceMapFile.text);\n }\n\n const environmentVariablesResponse =\n await environmentClient.getEnvironmentVariables(config.project);\n\n const processEnv = await gatherProcessEnv();\n\n const backgroundWorker = new BackgroundWorker(\n fullPath,\n {\n projectConfig: config,\n dependencies,\n env: {\n ...processEnv,\n TRIGGER_API_URL: apiUrl,\n TRIGGER_SECRET_KEY: apiKey,\n ...(environmentVariablesResponse.success\n ? environmentVariablesResponse.data.variables\n : {}),\n },\n debuggerOn,\n debugOtel,\n resolveEnvVariables: createResolveEnvironmentVariablesFunction(configModule),\n },\n environmentClient\n );\n\n try {\n await backgroundWorker.initialize();\n\n latestWorkerContentHash = contentHash;\n\n let packageVersion: string | undefined;\n\n const taskResources: Array<TaskResource> = [];\n\n if (!backgroundWorker.tasks || backgroundWorker.tasks.length === 0) {\n logger.log(\n `${chalkError(\n \"X Error:\"\n )} Worker failed to build: no tasks found. Searched in ${config.triggerDirectories.join(\n \", \"\n )}`\n );\n return;\n }\n\n for (const task of backgroundWorker.tasks) {\n taskResources.push(task);\n\n packageVersion = task.packageVersion;\n }\n\n if (!packageVersion) {\n throw new Error(`Background Worker started without package version`);\n }\n\n // Check for any duplicate task ids\n const taskIds = taskResources.map((task) => task.id);\n const duplicateTaskIds = taskIds.filter(\n (id, index) => taskIds.indexOf(id) !== index\n );\n\n if (duplicateTaskIds.length > 0) {\n logger.error(\n createDuplicateTaskIdOutputErrorMessage(duplicateTaskIds, taskResources)\n );\n return;\n }\n\n logger.debug(\"Creating background worker with tasks\", {\n tasks: taskResources,\n });\n\n const backgroundWorkerBody: CreateBackgroundWorkerRequestBody = {\n localOnly: true,\n metadata: {\n packageVersion,\n cliPackageVersion: packageJson.version,\n tasks: taskResources,\n contentHash: contentHash,\n },\n supportsLazyAttempts: true,\n };\n\n const backgroundWorkerRecord = await environmentClient.createBackgroundWorker(\n config.project,\n backgroundWorkerBody\n );\n\n if (!backgroundWorkerRecord.success) {\n throw new Error(backgroundWorkerRecord.error);\n }\n\n backgroundWorker.metadata = backgroundWorkerRecord.data;\n backgroundWorker;\n\n const testUrl = `${dashboardUrl}/projects/v3/${config.project}/test?environment=dev`;\n const runsUrl = `${dashboardUrl}/projects/v3/${config.project}/runs?envSlug=dev`;\n\n const pipe = chalkGrey(\"|\");\n const bullet = chalkGrey(\"○\");\n const arrow = chalkGrey(\"->\");\n\n const testLink = chalkLink(cliLink(\"Test tasks\", testUrl));\n const runsLink = chalkLink(cliLink(\"View runs\", runsUrl));\n\n const workerStarted = chalkGrey(\"Background worker started\");\n const workerVersion = chalkWorker(backgroundWorkerRecord.data.version);\n\n logger.log(\n `${bullet} ${workerStarted} ${arrow} ${workerVersion} ${pipe} ${testLink} ${pipe} ${runsLink}`\n );\n\n firstBuild = false;\n\n await backgroundWorkerCoordinator.registerWorker(\n backgroundWorkerRecord.data,\n backgroundWorker\n );\n } catch (e) {\n logger.debug(\"Error starting background worker\", {\n error: e,\n });\n\n if (e instanceof TaskMetadataParseError) {\n logTaskMetadataParseError(e.zodIssues, e.tasks);\n return;\n } else if (e instanceof UncaughtExceptionError) {\n const parsedBuildError = parseBuildErrorStack(e.originalError);\n\n if (parsedBuildError && typeof parsedBuildError !== \"string\") {\n logESMRequireError(\n parsedBuildError,\n configPath\n ? { status: \"file\", path: configPath, config }\n : { status: \"in-memory\", config }\n );\n return;\n } else {\n }\n\n if (e.originalError.message || e.originalError.stack) {\n logger.log(\n `${chalkError(\"X Error:\")} Worker failed to start`,\n e.originalError.stack ?? e.originalError.message\n );\n }\n\n return;\n }\n\n const parsedError = parseNpmInstallError(e);\n\n if (typeof parsedError === \"string\") {\n logger.log(`\\n${chalkError(\"X Error:\")} ${parsedError}`);\n } else {\n switch (parsedError.type) {\n case \"package-not-found-error\": {\n logger.log(\n `\\n${chalkError(\"X Error:\")} The package ${chalkPurple(\n parsedError.packageName\n )} could not be found in the npm registry.`\n );\n\n break;\n }\n case \"no-matching-version-error\": {\n logger.log(\n `\\n${chalkError(\"X Error:\")} The package ${chalkPurple(\n parsedError.packageName\n )} could not resolve because the version doesn't exist`\n );\n\n break;\n }\n }\n }\n\n const stderr = backgroundWorker.stderr\n .map((line) => line.trim())\n .filter((line) => line.length > 0)\n .join(\"\\n\");\n\n if (stderr) {\n logger.log(`\\n${chalkError(\"X Error logs:\")}\\n${stderr}`);\n }\n }\n });\n },\n },\n ],\n });\n\n await ctx.watch();\n }\n\n const throttledRebuild = pDebounce(runBuild, 250, { before: true });\n\n const taskFileWatcher = watch(\n config.triggerDirectories.map((triggerDir) => `${triggerDir}/**/*.ts`),\n {\n ignoreInitial: true,\n }\n );\n\n taskFileWatcher.on(\"add\", async (path) => {\n throttledRebuild().catch((error) => {\n logger.error(error);\n });\n });\n\n taskFileWatcher.on(\"unlink\", async (path) => {\n throttledRebuild().catch((error) => {\n logger.error(error);\n });\n });\n\n throttledRebuild().catch((error) => {\n logger.error(error);\n });\n\n return () => {\n const cleanup = async () => {\n logger.debug(`Shutting down dev session for ${config.project}`);\n\n const start = Date.now();\n\n await taskFileWatcher.close();\n\n websocket?.close();\n backgroundWorkerCoordinator.close();\n ctx?.dispose().catch((error) => {\n console.error(error);\n });\n\n logger.debug(`Shutdown completed in ${Date.now() - start}ms`);\n };\n\n cleanup();\n };\n }, [config, apiUrl, apiKey, environmentClient]);\n}\n\nfunction DevUI(props: DevProps) {\n return (\n <Suspense>\n <DevUIImp {...props} />\n </Suspense>\n );\n}\n\nfunction DevUIImp(props: DevProps) {\n const dev = useDev(props);\n\n return (\n <>\n <HotKeys />\n </>\n );\n}\n\nfunction useHotkeys() {\n useInput(async (input, key) => {});\n}\n\nfunction HotKeys() {\n useHotkeys();\n\n return <></>;\n}\n\nfunction WebsocketFactory(apiKey: string) {\n return class extends wsWebSocket {\n constructor(address: string | URL, options?: ClientOptions | ClientRequestArgs) {\n super(address, { ...(options ?? {}), headers: { Authorization: `Bearer ${apiKey}` } });\n }\n };\n}\n\n// Returns the dependencies that are required by the output that are found in output and the CLI package dependencies\n// Returns the dependency names and the version to use (taken from the CLI deps package.json)\nasync function gatherRequiredDependencies(\n outputMeta: Metafile[\"outputs\"][string],\n config: ResolvedConfig\n) {\n const dependencies: Record<string, string> = {};\n\n logger.debug(\"Gathering required dependencies from imports\", {\n imports: outputMeta.imports,\n });\n\n for (const file of outputMeta.imports) {\n if ((file.kind !== \"require-call\" && file.kind !== \"dynamic-import\") || !file.external) {\n continue;\n }\n\n const packageName = detectPackageNameFromImportPath(file.path);\n\n if (dependencies[packageName]) {\n continue;\n }\n\n const internalDependencyVersion =\n (packageJson.dependencies as Record<string, string>)[packageName] ??\n detectDependencyVersion(packageName);\n\n if (internalDependencyVersion) {\n dependencies[packageName] = stripWorkspaceFromVersion(internalDependencyVersion);\n }\n }\n\n if (config.additionalPackages) {\n const projectPackageJson = await readJSONFile(join(config.projectDir, \"package.json\"));\n\n for (const packageName of config.additionalPackages) {\n if (dependencies[packageName]) {\n continue;\n }\n\n const packageParts = parsePackageName(packageName);\n\n if (packageParts.version) {\n dependencies[packageParts.name] = packageParts.version;\n continue;\n } else {\n const externalDependencyVersion = {\n ...projectPackageJson?.devDependencies,\n ...projectPackageJson?.dependencies,\n }[packageName];\n\n if (externalDependencyVersion) {\n dependencies[packageParts.name] = externalDependencyVersion;\n continue;\n } else {\n logger.warn(\n `Could not find version for package ${packageName}, add a version specifier to the package name (e.g. ${packageParts.name}@latest) or add it to your project's package.json`\n );\n }\n }\n }\n }\n\n return dependencies;\n}\n\nfunction createDuplicateTaskIdOutputErrorMessage(\n duplicateTaskIds: Array<string>,\n taskResources: Array<TaskResource>\n) {\n const duplicateTable = duplicateTaskIds\n .map((id) => {\n const tasks = taskResources.filter((task) => task.id === id);\n\n return `\\n\\n${chalkTask(id)} was found in:${tasks\n .map((task) => `\\n${task.filePath} -> ${task.exportName}`)\n .join(\"\")}`;\n })\n .join(\"\");\n\n return `Duplicate ${chalkTask(\"task id\")} detected:${duplicateTable}`;\n}\n\nasync function gatherProcessEnv() {\n const env = {\n ...process.env,\n NODE_ENV: process.env.NODE_ENV ?? \"development\",\n NODE_PATH: await amendNodePathWithPnpmNodeModules(process.env.NODE_PATH),\n };\n\n // Filter out undefined values\n return Object.fromEntries(Object.entries(env).filter(([key, value]) => value !== undefined));\n}\n\nasync function amendNodePathWithPnpmNodeModules(nodePath?: string): Promise<string | undefined> {\n const pnpmModulesPath = await findPnpmNodeModulesPath();\n\n if (!pnpmModulesPath) {\n return nodePath;\n }\n\n if (nodePath) {\n if (nodePath.includes(pnpmModulesPath)) {\n return nodePath;\n }\n\n return `${nodePath}:${pnpmModulesPath}`;\n }\n\n return pnpmModulesPath;\n}\n\nasync function findPnpmNodeModulesPath(): Promise<string | undefined> {\n return await findUp(\n async (directory) => {\n const pnpmModules = join(directory, \"node_modules\", \".pnpm\", \"node_modules\");\n\n const hasPnpmNodeModules = await pathExists(pnpmModules);\n\n if (hasPnpmNodeModules) {\n return pnpmModules;\n }\n },\n { type: \"directory\" }\n );\n}\n\nlet hasResolvedEnvVars = false;\nlet resolvedEnvVars: Record<string, string> = {};\n\nfunction createResolveEnvironmentVariablesFunction(configModule?: any) {\n return async (\n env: Record<string, string>,\n worker: BackgroundWorker\n ): Promise<Record<string, string> | undefined> => {\n if (hasResolvedEnvVars) {\n return resolvedEnvVars;\n }\n\n const $resolvedEnvVars = await callResolveEnvVars(\n configModule,\n env,\n \"dev\",\n worker.params.projectConfig.project\n );\n\n if ($resolvedEnvVars) {\n resolvedEnvVars = $resolvedEnvVars.variables;\n hasResolvedEnvVars = true;\n }\n\n return resolvedEnvVars;\n };\n}\n","import { z } from \"zod\";\n\nexport class UncaughtExceptionError extends Error {\n constructor(\n public readonly originalError: { name: string; message: string; stack?: string },\n public readonly origin: \"uncaughtException\" | \"unhandledRejection\"\n ) {\n super(`Uncaught exception: ${originalError.message}`);\n\n this.name = \"UncaughtExceptionError\";\n }\n}\n\nexport class TaskMetadataParseError extends Error {\n constructor(\n public readonly zodIssues: z.ZodIssue[],\n public readonly tasks: any\n ) {\n super(`Failed to parse task metadata`);\n\n this.name = \"TaskMetadataParseError\";\n }\n}\n\nexport class UnexpectedExitError extends Error {\n constructor(\n public code: number,\n public signal: NodeJS.Signals | null,\n public stderr: string | undefined\n ) {\n super(`Unexpected exit with code ${code}`);\n\n this.name = \"UnexpectedExitError\";\n }\n}\n\nexport class CleanupProcessError extends Error {\n constructor() {\n super(\"Cancelled\");\n\n this.name = \"CleanupProcessError\";\n }\n}\n\nexport class CancelledProcessError extends Error {\n constructor() {\n super(\"Cancelled\");\n\n this.name = \"CancelledProcessError\";\n }\n}\n\nexport class SigKillTimeoutProcessError extends Error {\n constructor() {\n super(\"Process kill timeout\");\n\n this.name = \"SigKillTimeoutProcessError\";\n }\n}\n\nexport class GracefulExitTimeoutError extends Error {\n constructor() {\n super(\"Graceful exit timeout\");\n\n this.name = \"GracefulExitTimeoutError\";\n }\n}\n\nexport function getFriendlyErrorMessage(\n code: number,\n signal: NodeJS.Signals | null,\n stderr: string | undefined,\n dockerMode = true\n) {\n const message = (text: string) => {\n if (signal) {\n return `[${signal}] ${text}`;\n } else {\n return text;\n }\n };\n\n if (code === 137) {\n if (dockerMode) {\n return message(\n \"Process ran out of memory! Try choosing a machine preset with more memory for this task.\"\n );\n } else {\n // Note: containerState reason and message should be checked to clarify the error\n return message(\n \"Process most likely ran out of memory, but we can't be certain. Try choosing a machine preset with more memory for this task.\"\n );\n }\n }\n\n if (stderr?.includes(\"OOMErrorHandler\")) {\n return message(\n \"Process ran out of memory! Try choosing a machine preset with more memory for this task.\"\n );\n }\n\n return message(`Process exited with code ${code}.`);\n}\n","import {\n BackgroundWorkerProperties,\n BackgroundWorkerServerMessages,\n CreateBackgroundWorkerResponse,\n ResolvedConfig,\n SemanticInternalAttributes,\n TaskMetadataWithFilePath,\n TaskRunBuiltInError,\n TaskRunError,\n TaskRunErrorCodes,\n TaskRunExecution,\n TaskRunExecutionLazyAttemptPayload,\n TaskRunExecutionPayload,\n TaskRunExecutionResult,\n TaskRunFailedExecutionResult,\n childToWorkerMessages,\n correctErrorStackTrace,\n formatDurationMilliseconds,\n workerToChildMessages,\n} from \"@trigger.dev/core/v3\";\nimport { ZodMessageHandler, ZodMessageSender } from \"@trigger.dev/core/v3/zodMessageHandler\";\nimport dotenv from \"dotenv\";\nimport { Evt } from \"evt\";\nimport { ChildProcess, fork } from \"node:child_process\";\nimport { dirname, resolve } from \"node:path\";\nimport {\n chalkError,\n chalkGrey,\n chalkLink,\n chalkRun,\n chalkSuccess,\n chalkTask,\n chalkWarning,\n chalkWorker,\n cliLink,\n prettyPrintDate,\n} from \"../../utilities/cliOutput.js\";\nimport { safeDeleteFileSync } from \"../../utilities/fileSystem.js\";\nimport { installPackages } from \"../../utilities/installPackages.js\";\nimport { logger } from \"../../utilities/logger.js\";\nimport {\n CancelledProcessError,\n CleanupProcessError,\n SigKillTimeoutProcessError,\n TaskMetadataParseError,\n UncaughtExceptionError,\n UnexpectedExitError,\n getFriendlyErrorMessage,\n} from \"../common/errors.js\";\nimport { CliApiClient } from \"../../apiClient.js\";\n\nexport type CurrentWorkers = BackgroundWorkerCoordinator[\"currentWorkers\"];\nexport class BackgroundWorkerCoordinator {\n public onTaskCompleted: Evt<{\n backgroundWorkerId: string;\n completion: TaskRunExecutionResult;\n worker: BackgroundWorker;\n execution: TaskRunExecution;\n }> = new Evt();\n public onTaskFailedToRun: Evt<{\n backgroundWorkerId: string;\n worker: BackgroundWorker;\n completion: TaskRunFailedExecutionResult;\n }> = new Evt();\n public onWorkerRegistered: Evt<{\n worker: BackgroundWorker;\n id: string;\n record: CreateBackgroundWorkerResponse;\n }> = new Evt();\n\n /**\n * @deprecated use onWorkerTaskRunHeartbeat instead\n */\n public onWorkerTaskHeartbeat: Evt<{\n id: string;\n backgroundWorkerId: string;\n worker: BackgroundWorker;\n }> = new Evt();\n public onWorkerTaskRunHeartbeat: Evt<{\n id: string;\n backgroundWorkerId: string;\n worker: BackgroundWorker;\n }> = new Evt();\n public onWorkerDeprecated: Evt<{ worker: BackgroundWorker; id: string }> = new Evt();\n private _backgroundWorkers: Map<string, BackgroundWorker> = new Map();\n private _records: Map<string, CreateBackgroundWorkerResponse> = new Map();\n private _deprecatedWorkers: Set<string> = new Set();\n\n constructor(private baseURL: string) {\n this.onTaskCompleted.attach(async ({ completion }) => {\n if (!completion.ok && typeof completion.retry !== \"undefined\") {\n return;\n }\n\n await this.#notifyWorkersOfTaskCompletion(completion);\n });\n\n this.onTaskFailedToRun.attach(async ({ completion }) => {\n await this.#notifyWorkersOfTaskCompletion(completion);\n });\n }\n\n async #notifyWorkersOfTaskCompletion(completion: TaskRunExecutionResult) {\n for (const worker of this._backgroundWorkers.values()) {\n await worker.taskRunCompletedNotification(completion);\n }\n }\n\n get currentWorkers() {\n return Array.from(this._backgroundWorkers.entries()).map(([id, worker]) => ({\n id,\n worker,\n record: this._records.get(id)!,\n isDeprecated: this._deprecatedWorkers.has(id),\n }));\n }\n\n async registerWorker(record: CreateBackgroundWorkerResponse, worker: BackgroundWorker) {\n for (const [workerId, existingWorker] of this._backgroundWorkers.entries()) {\n if (workerId === record.id) {\n continue;\n }\n\n this._deprecatedWorkers.add(workerId);\n this.onWorkerDeprecated.post({ worker: existingWorker, id: workerId });\n }\n\n this._backgroundWorkers.set(record.id, worker);\n this._records.set(record.id, record);\n this.onWorkerRegistered.post({ worker, id: record.id, record });\n\n worker.onTaskHeartbeat.attach((id) => {\n this.onWorkerTaskHeartbeat.post({ id, backgroundWorkerId: record.id, worker });\n });\n\n worker.onTaskRunHeartbeat.attach((id) => {\n this.onWorkerTaskRunHeartbeat.post({ id, backgroundWorkerId: record.id, worker });\n });\n }\n\n close() {\n for (const worker of this._backgroundWorkers.values()) {\n worker.close();\n }\n\n this._backgroundWorkers.clear();\n this._records.clear();\n }\n\n async handleMessage(id: string, message: BackgroundWorkerServerMessages) {\n logger.debug(`Received message from worker ${id}`, JSON.stringify({ workerMessage: message }));\n\n switch (message.type) {\n case \"EXECUTE_RUNS\": {\n await Promise.all(message.payloads.map((payload) => this.#executeTaskRun(id, payload)));\n break;\n }\n case \"CANCEL_ATTEMPT\": {\n // Need to cancel the attempt somehow here\n const worker = this._backgroundWorkers.get(id);\n\n if (!worker) {\n logger.error(`Could not find worker ${id}`);\n return;\n }\n\n await worker.cancelRun(message.taskRunId);\n break;\n }\n case \"EXECUTE_RUN_LAZY_ATTEMPT\": {\n await this.#executeTaskRunLazyAttempt(id, message.payload);\n }\n }\n }\n\n async #executeTaskRunLazyAttempt(id: string, payload: TaskRunExecutionLazyAttemptPayload) {\n const worker = this._backgroundWorkers.get(id);\n\n if (!worker) {\n logger.error(`Could not find worker ${id}`);\n return;\n }\n\n const record = this._records.get(id);\n\n if (!record) {\n logger.error(`Could not find worker record ${id}`);\n return;\n }\n\n try {\n const { completion, execution } = await worker.executeTaskRunLazyAttempt(\n payload,\n this.baseURL\n );\n\n this.onTaskCompleted.post({\n completion,\n execution,\n worker,\n backgroundWorkerId: id,\n });\n } catch (error) {\n this.onTaskFailedToRun.post({\n backgroundWorkerId: id,\n worker,\n completion: {\n ok: false,\n id: payload.runId,\n retry: undefined,\n error:\n error instanceof Error\n ? {\n type: \"BUILT_IN_ERROR\",\n name: error.name,\n message: error.message,\n stackTrace: error.stack ?? \"\",\n }\n : {\n type: \"BUILT_IN_ERROR\",\n name: \"UnknownError\",\n message: String(error),\n stackTrace: \"\",\n },\n },\n });\n }\n }\n\n async #executeTaskRun(id: string, payload: TaskRunExecutionPayload) {\n const worker = this._backgroundWorkers.get(id);\n\n if (!worker) {\n logger.error(`Could not find worker ${id}`);\n return;\n }\n\n const record = this._records.get(id);\n\n if (!record) {\n logger.error(`Could not find worker record ${id}`);\n return;\n }\n\n const completion = await worker.executeTaskRun(payload, this.baseURL);\n\n this.onTaskCompleted.post({\n completion,\n execution: payload.execution,\n worker,\n backgroundWorkerId: id,\n });\n }\n}\n\nexport type BackgroundWorkerParams = {\n env: Record<string, string>;\n dependencies?: Record<string, string>;\n projectConfig: ResolvedConfig;\n debuggerOn: boolean;\n debugOtel?: boolean;\n resolveEnvVariables?: (\n env: Record<string, string>,\n worker: BackgroundWorker\n ) => Promise<Record<string, string> | undefined>;\n};\n\nexport class BackgroundWorker {\n private _initialized: boolean = false;\n private _handler = new ZodMessageHandler({\n schema: childToWorkerMessages,\n });\n\n /**\n * @deprecated use onTaskRunHeartbeat instead\n */\n public onTaskHeartbeat: Evt<string> = new Evt();\n public onTaskRunHeartbeat: Evt<string> = new Evt();\n private _onClose: Evt<void> = new Evt();\n\n public tasks: Array<TaskMetadataWithFilePath> = [];\n public metadata: BackgroundWorkerProperties | undefined;\n public stderr: Array<string> = [];\n\n _taskRunProcesses: Map<string, TaskRunProcess> = new Map();\n private _taskRunProcessesBeingKilled: Set<number> = new Set();\n\n private _closed: boolean = false;\n\n private _fullEnv: Record<string, string> = {};\n\n constructor(\n public path: string,\n public params: BackgroundWorkerParams,\n private apiClient: CliApiClient\n ) {}\n\n close() {\n if (this._closed) {\n return;\n }\n\n this._closed = true;\n\n this.onTaskHeartbeat.detach();\n this.onTaskRunHeartbeat.detach();\n\n // We need to close all the task run processes\n for (const taskRunProcess of this._taskRunProcesses.values()) {\n taskRunProcess.cleanup(true);\n }\n\n // Delete worker files\n this._onClose.post();\n\n safeDeleteFileSync(this.path);\n safeDeleteFileSync(`${this.path}.map`);\n }\n\n get inProgressRuns(): Array<string> {\n return Array.from(this._taskRunProcesses.keys());\n }\n\n async initialize() {\n if (this._initialized) {\n throw new Error(\"Worker already initialized\");\n }\n\n // Install the dependencies in dirname(this.path) using npm and child_process\n if (this.params.dependencies) {\n await installPackages(this.params.dependencies, { cwd: dirname(this.path) });\n }\n\n let resolved = false;\n\n const cwd = dirname(this.path);\n\n this._fullEnv = {\n ...this.params.env,\n ...this.#readEnvVars(),\n ...(this.params.debugOtel ? { OTEL_LOG_LEVEL: \"debug\" } : {}),\n };\n\n let resolvedEnvVars: Record<string, string> = {};\n\n if (this.params.resolveEnvVariables) {\n const resolvedEnv = await this.params.resolveEnvVariables(this._fullEnv, this);\n\n if (resolvedEnv) {\n resolvedEnvVars = resolvedEnv;\n }\n }\n\n this._fullEnv = {\n ...this._fullEnv,\n ...resolvedEnvVars,\n };\n\n logger.debug(\"Initializing worker\", { path: this.path, cwd, fullEnv: this._fullEnv });\n\n this.tasks = await new Promise<Array<TaskMetadataWithFilePath>>((resolve, reject) => {\n const child = fork(this.path, {\n stdio: [/*stdin*/ \"ignore\", /*stdout*/ \"pipe\", /*stderr*/ \"pipe\", \"ipc\"],\n cwd,\n env: this._fullEnv,\n });\n\n // Set a timeout to kill the child process if it doesn't respond\n const timeout = setTimeout(() => {\n if (resolved) {\n return;\n }\n\n resolved = true;\n child.kill();\n reject(new Error(\"Worker timed out\"));\n }, 20_000);\n\n child.on(\"message\", async (msg: any) => {\n const message = this._handler.parseMessage(msg);\n\n if (!message.success) {\n clearTimeout(timeout);\n resolved = true;\n reject(new Error(`Failed to parse message: ${message.error}`));\n child.kill();\n return;\n }\n\n if (message.data.type === \"TASKS_READY\" && !resolved) {\n clearTimeout(timeout);\n resolved = true;\n resolve(message.data.payload.tasks);\n child.kill();\n } else if (message.data.type === \"UNCAUGHT_EXCEPTION\") {\n clearTimeout(timeout);\n resolved = true;\n reject(\n new UncaughtExceptionError(message.data.payload.error, message.data.payload.origin)\n );\n child.kill();\n } else if (message.data.type === \"TASKS_FAILED_TO_PARSE\") {\n clearTimeout(timeout);\n resolved = true;\n reject(\n new TaskMetadataParseError(message.data.payload.zodIssues, message.data.payload.tasks)\n );\n child.kill();\n }\n });\n\n child.on(\"exit\", (code) => {\n if (!resolved) {\n clearTimeout(timeout);\n resolved = true;\n reject(new Error(`Worker exited with code ${code}`));\n }\n });\n\n child.stdout?.on(\"data\", (data) => {\n logger.log(data.toString());\n });\n\n child.stderr?.on(\"data\", (data) => {\n this.stderr.push(data.toString());\n });\n });\n\n this._initialized = true;\n }\n\n // We need to notify all the task run processes that a task run has completed,\n // in case they are waiting for it through triggerAndWait\n async taskRunCompletedNotification(completion: TaskRunExecutionResult) {\n for (const taskRunProcess of this._taskRunProcesses.values()) {\n taskRunProcess.taskRunCompletedNotification(completion);\n }\n }\n\n #prefixedMessage(payload: TaskRunExecutionPayload, message: string = \"\") {\n return `[${payload.execution.run.id}.${payload.execution.attempt.number}] ${message}`;\n }\n\n async #getFreshTaskRunProcess(\n payload: TaskRunExecutionPayload,\n messageId?: string\n ): Promise<TaskRunProcess> {\n logger.debug(this.#prefixedMessage(payload, \"getFreshTaskRunProcess()\"));\n\n if (!this.metadata) {\n throw new Error(\"Worker not registered\");\n }\n\n this._closed = false;\n\n logger.debug(this.#prefixedMessage(payload, \"killing current task run process before attempt\"));\n\n await this.#killCurrentTaskRunProcessBeforeAttempt(payload.execution.run.id);\n\n logger.debug(this.#prefixedMessage(payload, \"creating new task run process\"));\n\n const taskRunProcess = new TaskRunProcess(\n payload.execution.run.id,\n payload.execution.run.isTest,\n this.path,\n {\n ...this._fullEnv,\n ...(payload.environment ?? {}),\n ...this.#readEnvVars(),\n },\n this.metadata,\n this.params,\n messageId\n );\n\n taskRunProcess.onExit.attach(({ pid }) => {\n logger.debug(this.#prefixedMessage(payload, \"onExit()\"), { pid });\n\n const taskRunProcess = this._taskRunProcesses.get(payload.execution.run.id);\n\n // Only delete the task run process if the pid matches\n if (taskRunProcess?.pid === pid) {\n this._taskRunProcesses.delete(payload.execution.run.id);\n }\n\n if (pid) {\n this._taskRunProcessesBeingKilled.delete(pid);\n }\n });\n\n taskRunProcess.onIsBeingKilled.attach((pid) => {\n if (pid) {\n this._taskRunProcessesBeingKilled.add(pid);\n }\n });\n\n taskRunProcess.onTaskHeartbeat.attach((id) => {\n this.onTaskHeartbeat.post(id);\n });\n\n taskRunProcess.onTaskRunHeartbeat.attach((id) => {\n this.onTaskRunHeartbeat.post(id);\n });\n\n await taskRunProcess.initialize();\n\n this._taskRunProcesses.set(payload.execution.run.id, taskRunProcess);\n\n return taskRunProcess;\n }\n\n async #killCurrentTaskRunProcessBeforeAttempt(runId: string) {\n const taskRunProcess = this._taskRunProcesses.get(runId);\n\n if (!taskRunProcess) {\n logger.debug(`[${runId}] no current task process to kill`);\n return;\n }\n\n logger.debug(`[${runId}] killing current task process`, {\n pid: taskRunProcess.pid,\n });\n\n if (taskRunProcess.isBeingKilled) {\n if (this._taskRunProcessesBeingKilled.size > 1) {\n await this.#tryGracefulExit(taskRunProcess);\n } else {\n // If there's only one or none being killed, don't do anything so we can create a fresh one in parallel\n }\n } else {\n // It's not being killed, so kill it\n if (this._taskRunProcessesBeingKilled.size > 0) {\n await this.#tryGracefulExit(taskRunProcess);\n } else {\n // There's none being killed yet, so we can kill it without waiting. We still set a timeout to kill it forcefully just in case it sticks around.\n taskRunProcess.kill(\"SIGTERM\", 5_000).catch(() => {});\n }\n }\n }\n\n async #tryGracefulExit(\n taskRunProcess: TaskRunProcess,\n kill = false,\n initialSignal: number | NodeJS.Signals = \"SIGTERM\"\n ) {\n try {\n const initialExit = taskRunProcess.onExit.waitFor(5_000);\n\n if (kill) {\n taskRunProcess.kill(initialSignal);\n }\n\n await initialExit;\n } catch (error) {\n logger.error(\"TaskRunProcess graceful kill timeout exceeded\", error);\n\n this.#tryForcefulExit(taskRunProcess);\n }\n }\n\n async #tryForcefulExit(taskRunProcess: TaskRunProcess) {\n try {\n const forcedKill = taskRunProcess.onExit.waitFor(5_000);\n taskRunProcess.kill(\"SIGKILL\");\n await forcedKill;\n } catch (error) {\n logger.error(\"TaskRunProcess forced kill timeout exceeded\", error);\n throw new SigKillTimeoutProcessError();\n }\n }\n\n async cancelRun(taskRunId: string) {\n const taskRunProcess = this._taskRunProcesses.get(taskRunId);\n\n if (!taskRunProcess) {\n return;\n }\n\n await taskRunProcess.cancel();\n }\n\n async executeTaskRunLazyAttempt(payload: TaskRunExecutionLazyAttemptPayload, baseURL: string) {\n const attemptResponse = await this.apiClient.createTaskRunAttempt(payload.runId);\n\n if (!attemptResponse.success) {\n throw new Error(`Failed to create task run attempt: ${attemptResponse.error}`);\n }\n\n const execution = attemptResponse.data;\n\n const completion = await this.executeTaskRun(\n { execution, traceContext: payload.traceContext, environment: payload.environment },\n baseURL,\n payload.messageId\n );\n\n return { execution, completion };\n }\n\n // We need to fork the process before we can execute any tasks\n async executeTaskRun(\n payload: TaskRunExecutionPayload,\n baseURL: string,\n messageId?: string\n ): Promise<TaskRunExecutionResult> {\n if (this._closed) {\n throw new Error(\"Worker is closed\");\n }\n\n if (!this.metadata) {\n throw new Error(\"Worker not registered\");\n }\n\n const { execution } = payload;\n // ○ Mar 27 09:17:25.653 -> View logs | 20240326.20 | create-avatar | run_slufhjdfiv8ejnrkw9dsj.1\n\n const logsUrl = `${baseURL}/runs/${execution.run.id}`;\n\n const pipe = chalkGrey(\"|\");\n const bullet = chalkGrey(\"○\");\n const link = chalkLink(cliLink(\"View logs\", logsUrl));\n let timestampPrefix = chalkGrey(prettyPrintDate(payload.execution.attempt.startedAt));\n const workerPrefix = chalkWorker(this.metadata.version);\n const taskPrefix = chalkTask(execution.task.id);\n const runId = chalkRun(`${execution.run.id}.${execution.attempt.number}`);\n\n logger.log(\n `${bullet} ${timestampPrefix} ${chalkGrey(\n \"->\"\n )} ${link} ${pipe} ${workerPrefix} ${pipe} ${taskPrefix} ${pipe} ${runId}`\n );\n\n const now = performance.now();\n\n const completion = await this.#doExecuteTaskRun(payload, messageId);\n\n const elapsed = performance.now() - now;\n\n const retryingText = chalkGrey(\n !completion.ok && completion.skippedRetrying\n ? \" (retrying skipped)\"\n : !completion.ok && completion.retry !== undefined\n ? ` (retrying in ${completion.retry.delay}ms)`\n : \"\"\n );\n\n const resultText = !completion.ok\n ? completion.error.type === \"INTERNAL_ERROR\" &&\n (completion.error.code === TaskRunErrorCodes.TASK_EXECUTION_ABORTED ||\n completion.error.code === TaskRunErrorCodes.TASK_RUN_CANCELLED)\n ? chalkWarning(\"Cancelled\")\n : `${chalkError(\"Error\")}${retryingText}`\n : chalkSuccess(\"Success\");\n\n const errorText = !completion.ok\n ? formatErrorLog(completion.error)\n : \"retry\" in completion\n ? `retry in ${completion.retry}ms`\n : \"\";\n\n const elapsedText = chalkGrey(`(${formatDurationMilliseconds(elapsed, { style: \"short\" })})`);\n\n timestampPrefix = chalkGrey(prettyPrintDate());\n\n logger.log(\n `${bullet} ${timestampPrefix} ${chalkGrey(\n \"->\"\n )} ${link} ${pipe} ${workerPrefix} ${pipe} ${taskPrefix} ${pipe} ${runId} ${pipe} ${resultText} ${elapsedText}${errorText}`\n );\n\n return completion;\n }\n\n async #doExecuteTaskRun(\n payload: TaskRunExecutionPayload,\n messageId?: string\n ): Promise<TaskRunExecutionResult> {\n try {\n const taskRunProcess = await this.#getFreshTaskRunProcess(payload, messageId);\n\n logger.debug(this.#prefixedMessage(payload, \"executing task run\"), {\n pid: taskRunProcess.pid,\n });\n\n const result = await taskRunProcess.executeTaskRun(payload);\n\n // Always kill the worker\n await taskRunProcess.cleanup(true);\n\n if (result.ok) {\n return result;\n }\n\n const error = result.error;\n\n if (error.type === \"BUILT_IN_ERROR\") {\n const mappedError = await this.#correctError(error, payload.execution);\n\n return {\n ...result,\n error: mappedError,\n };\n }\n\n return result;\n } catch (e) {\n if (e instanceof CancelledProcessError) {\n return {\n id: payload.execution.attempt.id,\n ok: false,\n retry: undefined,\n error: {\n type: \"INTERNAL_ERROR\",\n code: TaskRunErrorCodes.TASK_RUN_CANCELLED,\n },\n };\n }\n\n if (e instanceof CleanupProcessError) {\n return {\n id: payload.execution.attempt.id,\n ok: false,\n retry: undefined,\n error: {\n type: \"INTERNAL_ERROR\",\n code: TaskRunErrorCodes.TASK_EXECUTION_ABORTED,\n },\n };\n }\n\n if (e instanceof UnexpectedExitError) {\n return {\n id: payload.execution.attempt.id,\n ok: false,\n retry: undefined,\n error: {\n type: \"INTERNAL_ERROR\",\n code: TaskRunErrorCodes.TASK_PROCESS_EXITED_WITH_NON_ZERO_CODE,\n message: getFriendlyErrorMessage(e.code, e.signal, e.stderr),\n stackTrace: e.stderr,\n },\n };\n }\n\n return {\n id: payload.execution.attempt.id,\n ok: false,\n retry: undefined,\n error: {\n type: \"INTERNAL_ERROR\",\n code: TaskRunErrorCodes.TASK_EXECUTION_FAILED,\n },\n };\n }\n }\n\n #readEnvVars() {\n const result: { [key: string]: string } = {};\n\n dotenv.config({\n processEnv: result,\n path: [\".env\", \".env.local\", \".env.development.local\"].map((p) => resolve(process.cwd(), p)),\n });\n\n process.env.TRIGGER_API_URL && (result.TRIGGER_API_URL = process.env.TRIGGER_API_URL);\n\n // remove TRIGGER_API_URL and TRIGGER_SECRET_KEY, since those should be coming from the worker\n delete result.TRIGGER_API_URL;\n delete result.TRIGGER_SECRET_KEY;\n\n return result;\n }\n\n async #correctError(\n error: TaskRunBuiltInError,\n execution: TaskRunExecution\n ): Promise<TaskRunBuiltInError> {\n return {\n ...error,\n stackTrace: correctErrorStackTrace(error.stackTrace, this.params.projectConfig.projectDir),\n };\n }\n}\n\nclass TaskRunProcess {\n private _handler = new ZodMessageHandler({\n schema: childToWorkerMessages,\n });\n private _sender: ZodMessageSender<typeof workerToChildMessages>;\n private _child: ChildProcess | undefined;\n private _childPid?: number;\n private _attemptPromises: Map<\n string,\n { resolver: (value: TaskRunExecutionResult) => void; rejecter: (err?: any) => void }\n > = new Map();\n private _attemptStatuses: Map<string, \"PENDING\" | \"REJECTED\" | \"RESOLVED\"> = new Map();\n private _currentExecution: TaskRunExecution | undefined;\n private _isBeingKilled: boolean = false;\n private _isBeingCancelled: boolean = false;\n private _stderr: Array<string> = [];\n /**\n * @deprecated use onTaskRunHeartbeat instead\n */\n public onTaskHeartbeat: Evt<string> = new Evt();\n public onTaskRunHeartbeat: Evt<string> = new Evt();\n public onExit: Evt<{ code: number | null; signal: NodeJS.Signals | null; pid?: number }> =\n new Evt();\n public onIsBeingKilled: Evt<number | undefined> = new Evt();\n\n constructor(\n private runId: string,\n private isTest: boolean,\n private path: string,\n private env: NodeJS.ProcessEnv,\n private metadata: BackgroundWorkerProperties,\n private worker: BackgroundWorkerParams,\n private messageId?: string\n ) {\n this._sender = new ZodMessageSender({\n schema: workerToChildMessages,\n sender: async (message) => {\n if (this._child?.connected && !this._isBeingKilled && !this._child.killed) {\n this._child.send(message);\n }\n },\n });\n }\n\n async cancel() {\n this._isBeingCancelled = true;\n\n await this.cleanup(true);\n }\n\n async initialize() {\n const fullEnv = {\n ...(this.isTest ? { TRIGGER_LOG_LEVEL: \"debug\" } : {}),\n ...this.env,\n OTEL_RESOURCE_ATTRIBUTES: JSON.stringify({\n [SemanticInternalAttributes.PROJECT_DIR]: this.worker.projectConfig.projectDir,\n }),\n OTEL_EXPORTER_OTLP_COMPRESSION: \"none\",\n ...(this.worker.debugOtel ? { OTEL_LOG_LEVEL: \"debug\" } : {}),\n };\n\n const cwd = dirname(this.path);\n\n logger.debug(`[${this.runId}] initializing task run process`, {\n env: fullEnv,\n path: this.path,\n cwd,\n });\n\n this._child = fork(this.path, {\n stdio: [/*stdin*/ \"ignore\", /*stdout*/ \"pipe\", /*stderr*/ \"pipe\", \"ipc\"],\n cwd,\n env: fullEnv,\n execArgv: this.worker.debuggerOn\n ? [\"--inspect-brk\", \"--trace-uncaught\", \"--no-warnings=ExperimentalWarning\"]\n : [\"--trace-uncaught\", \"--no-warnings=ExperimentalWarning\"],\n });\n this._childPid = this._child?.pid;\n\n this._child.on(\"message\", this.#handleMessage.bind(this));\n this._child.on(\"exit\", this.#handleExit.bind(this));\n this._child.stdout?.on(\"data\", this.#handleLog.bind(this));\n this._child.stderr?.on(\"data\", this.#handleStdErr.bind(this));\n }\n\n async cleanup(kill: boolean = false) {\n if (kill && this._isBeingKilled) {\n return;\n }\n\n if (kill) {\n this._isBeingKilled = true;\n this.onIsBeingKilled.post(this._child?.pid);\n }\n\n logger.debug(`[${this.runId}] cleaning up task run process`, { kill, pid: this.pid });\n\n await this._sender.send(\"CLEANUP\", {\n flush: true,\n kill,\n });\n\n // FIXME: Something broke READY_TO_DISPOSE. We never receive it, so we always have to kill the process after the timeout below.\n\n if (!kill) {\n return;\n }\n\n // Set a timeout to kill the child process if it hasn't been killed within 5 seconds\n setTimeout(() => {\n if (this._child && !this._child.killed) {\n logger.debug(`[${this.runId}] killing task run process after timeout`, { pid: this.pid });\n\n this._child.kill();\n }\n }, 5000);\n }\n\n async executeTaskRun(payload: TaskRunExecutionPayload): Promise<TaskRunExecutionResult> {\n let resolver: (value: TaskRunExecutionResult) => void;\n let rejecter: (err?: any) => void;\n\n const promise = new Promise<TaskRunExecutionResult>((resolve, reject) => {\n resolver = resolve;\n rejecter = reject;\n });\n\n this._attemptStatuses.set(payload.execution.attempt.id, \"PENDING\");\n\n // @ts-expect-error - We know that the resolver and rejecter are defined\n this._attemptPromises.set(payload.execution.attempt.id, { resolver, rejecter });\n\n const { execution, traceContext } = payload;\n\n this._currentExecution = execution;\n\n await this._sender.send(\"EXECUTE_TASK_RUN\", {\n execution,\n traceContext,\n metadata: this.metadata,\n });\n\n const result = await promise;\n\n this._currentExecution = undefined;\n\n return result;\n }\n\n taskRunCompletedNotification(completion: TaskRunExecutionResult) {\n if (!completion.ok && typeof completion.retry !== \"undefined\") {\n return;\n }\n\n if (completion.id === this.runId) {\n // We don't need to notify the task run process if it's the same as the one we're running\n return;\n }\n\n logger.debug(`[${this.runId}] task run completed notification`, {\n completion,\n });\n\n this._sender.send(\"TASK_RUN_COMPLETED_NOTIFICATION\", {\n version: \"v2\",\n completion,\n });\n }\n\n async #handleMessage(msg: any) {\n const message = this._handler.parseMessage(msg);\n\n if (!message.success) {\n logger.error(`Dropping message: ${message.error}`, { message });\n return;\n }\n\n switch (message.data.type) {\n case \"TASK_RUN_COMPLETED\": {\n const { result, execution } = message.data.payload;\n\n logger.debug(`[${this.runId}] task run completed`, {\n result,\n });\n\n const promiseStatus = this._attemptStatuses.get(execution.attempt.id);\n\n if (promiseStatus !== \"PENDING\") {\n return;\n }\n\n this._attemptStatuses.set(execution.attempt.id, \"RESOLVED\");\n\n const attemptPromise = this._attemptPromises.get(execution.attempt.id);\n\n if (!attemptPromise) {\n return;\n }\n\n const { resolver } = attemptPromise;\n\n resolver(result);\n\n break;\n }\n case \"READY_TO_DISPOSE\": {\n logger.debug(`[${this.runId}] task run process is ready to dispose`);\n\n this.#kill();\n\n break;\n }\n case \"TASK_HEARTBEAT\": {\n if (this.messageId) {\n this.onTaskRunHeartbeat.post(this.messageId);\n } else {\n this.onTaskHeartbeat.post(message.data.payload.id);\n }\n\n break;\n }\n case \"TASKS_READY\": {\n break;\n }\n }\n }\n\n async #handleExit(code: number | null, signal: NodeJS.Signals | null) {\n logger.debug(`[${this.runId}] handle task run process exit`, { code, signal, pid: this.pid });\n\n // Go through all the attempts currently pending and reject them\n for (const [id, status] of this._attemptStatuses.entries()) {\n if (status === \"PENDING\") {\n this._attemptStatuses.set(id, \"REJECTED\");\n\n const attemptPromise = this._attemptPromises.get(id);\n\n if (!attemptPromise) {\n continue;\n }\n\n const { rejecter } = attemptPromise;\n\n if (this._isBeingCancelled) {\n rejecter(new CancelledProcessError());\n } else if (this._isBeingKilled) {\n rejecter(new CleanupProcessError());\n } else {\n rejecter(\n new UnexpectedExitError(\n code ?? -1,\n signal,\n this._stderr.length ? this._stderr.join(\"\\n\") : undefined\n )\n );\n }\n }\n }\n\n this.onExit.post({ code, signal, pid: this.pid });\n }\n\n #handleLog(data: Buffer) {\n if (!this._currentExecution) {\n logger.log(`${chalkGrey(\"○\")} ${chalkGrey(prettyPrintDate(new Date()))} ${data.toString()}`);\n\n return;\n }\n\n const runId = chalkRun(\n `${this._currentExecution.run.id}.${this._currentExecution.attempt.number}`\n );\n\n logger.log(\n `${chalkGrey(\"○\")} ${chalkGrey(prettyPrintDate(new Date()))} ${runId} ${data.toString()}`\n );\n }\n\n #handleStdErr(data: Buffer) {\n if (this._isBeingKilled) {\n return;\n }\n\n if (!this._currentExecution) {\n logger.log(`${chalkError(\"○\")} ${chalkGrey(prettyPrintDate(new Date()))} ${data.toString()}`);\n\n return;\n }\n\n const runId = chalkRun(\n `${this._currentExecution.run.id}.${this._currentExecution.attempt.number}`\n );\n\n const errorLine = data.toString();\n\n logger.log(\n `${chalkError(\"○\")} ${chalkGrey(prettyPrintDate(new Date()))} ${runId} ${errorLine}`\n );\n\n if (this._stderr.length > 100) {\n this._stderr.shift();\n }\n this._stderr.push(errorLine);\n }\n\n #kill() {\n logger.debug(`[${this.runId}] #kill()`, { pid: this.pid });\n\n if (this._child && !this._child.killed) {\n this._child?.kill();\n }\n }\n\n async kill(signal?: number | NodeJS.Signals, timeoutInMs?: number) {\n logger.debug(`[${this.runId}] killing task run process`, {\n signal,\n timeoutInMs,\n pid: this.pid,\n });\n\n this._isBeingKilled = true;\n\n const killTimeout = this.onExit.waitFor(timeoutInMs);\n\n this.onIsBeingKilled.post(this._child?.pid);\n this._child?.kill(signal);\n\n if (timeoutInMs) {\n await killTimeout;\n }\n }\n\n get isBeingKilled() {\n return this._isBeingKilled || this._child?.killed;\n }\n\n get pid() {\n return this._childPid;\n }\n}\n\nfunction formatErrorLog(error: TaskRunError) {\n switch (error.type) {\n case \"INTERNAL_ERROR\": {\n return \"\";\n }\n case \"STRING_ERROR\": {\n return `\\n\\n${chalkError(\"X Error:\")} ${error.raw}\\n`;\n }\n case \"CUSTOM_ERROR\": {\n return `\\n\\n${chalkError(\"X Error:\")} ${error.raw}\\n`;\n }\n case \"BUILT_IN_ERROR\": {\n return `\\n\\n${error.stackTrace.replace(/^Error: /, chalkError(\"X Error: \"))}\\n`;\n }\n }\n}\n","import { logger } from \"./logger\";\n\n/**\n * This function is used by the dev CLI to make sure that the runtime is compatible\n */\nexport function runtimeCheck(minimumMajor: number, minimumMinor: number) {\n // Check if the runtime is Node.js\n if (typeof process === \"undefined\") {\n throw \"The dev CLI can only be run in a Node.js compatible environment\";\n }\n\n // Check if the runtime version is compatible\n const [major = 0, minor = 0] = process.versions.node.split(\".\").map(Number);\n\n const isBun = typeof process.versions.bun === \"string\";\n\n if (major < minimumMajor || (major === minimumMajor && minor < minimumMinor)) {\n if (isBun) {\n throw `The dev CLI requires at least Node.js ${minimumMajor}.${minimumMinor}. You are running Bun ${process.versions.bun}, which is compatible with Node.js ${process.versions.node}`;\n } else {\n throw `The dev CLI requires at least Node.js ${minimumMajor}.${minimumMinor}. You are running Node.js ${process.versions.node}`;\n }\n }\n\n logger.debug(\n `Node.js version: ${process.versions.node}${isBun ? ` (Bun ${process.versions.bun})` : \"\"}`\n );\n}\n","import { intro, isCancel, log, outro, select, text } from \"@clack/prompts\";\nimport { context, trace } from \"@opentelemetry/api\";\nimport { GetProjectResponseBody, flattenAttributes } from \"@trigger.dev/core/v3\";\nimport { recordSpanException } from \"@trigger.dev/core/v3/workers\";\nimport chalk from \"chalk\";\nimport { Command } from \"commander\";\nimport { ExecaError, Options as ExecaOptions, ResultPromise as ExecaResult, execa } from \"execa\";\nimport { applyEdits, modify, findNodeAtLocation, parseTree, getNodeValue } from \"jsonc-parser\";\nimport { writeFile } from \"node:fs/promises\";\nimport { join, relative, resolve } from \"node:path\";\nimport { z } from \"zod\";\nimport { CliApiClient } from \"../apiClient\";\nimport {\n CommonCommandOptions,\n OutroCommandError,\n SkipCommandError,\n SkipLoggingError,\n commonOptions,\n handleTelemetry,\n tracer,\n wrapCommandAction,\n} from \"../cli/common.js\";\nimport { readConfig } from \"../utilities/configFiles.js\";\nimport { createFileFromTemplate } from \"../utilities/createFileFromTemplate\";\nimport { createFile, pathExists, readFile } from \"../utilities/fileSystem\";\nimport { PackageManager, getUserPackageManager } from \"../utilities/getUserPackageManager\";\nimport { printStandloneInitialBanner } from \"../utilities/initialBanner.js\";\nimport { logger } from \"../utilities/logger\";\nimport { cliRootPath } from \"../utilities/resolveInternalFilePath\";\nimport { login } from \"./login\";\nimport { spinner } from \"../utilities/windows\";\nimport { CLOUD_API_URL } from \"../consts\";\nimport * as packageJson from \"../../package.json\";\nimport { cliLink, prettyError } from \"../utilities/cliOutput\";\n\nconst InitCommandOptions = CommonCommandOptions.extend({\n projectRef: z.string().optional(),\n overrideConfig: z.boolean().default(false),\n tag: z.string().default(\"beta\"),\n skipPackageInstall: z.boolean().default(false),\n pkgArgs: z.string().optional(),\n});\n\ntype InitCommandOptions = z.infer<typeof InitCommandOptions>;\n\nexport function configureInitCommand(program: Command) {\n return commonOptions(\n program\n .command(\"init\")\n .description(\"Initialize your existing project for development with Trigger.dev\")\n .argument(\"[path]\", \"The path to the project\", \".\")\n .option(\n \"-p, --project-ref <project ref>\",\n \"The project ref to use when initializing the project\"\n )\n .option(\n \"-t, --tag <package tag>\",\n \"The version of the @trigger.dev/sdk package to install\",\n packageJson.version\n )\n .option(\"--skip-package-install\", \"Skip installing the @trigger.dev/sdk package\")\n .option(\"--override-config\", \"Override the existing config file if it exists\")\n .option(\n \"--pkg-args <args>\",\n \"Additional arguments to pass to the package manager, accepts CSV for multiple args\"\n )\n ).action(async (path, options) => {\n await handleTelemetry(async () => {\n await printStandloneInitialBanner(true);\n await initCommand(path, options);\n });\n });\n}\n\nexport async function initCommand(dir: string, options: unknown) {\n return await wrapCommandAction(\"initCommand\", InitCommandOptions, options, async (opts) => {\n return await _initCommand(dir, opts);\n });\n}\n\nasync function _initCommand(dir: string, options: InitCommandOptions) {\n const span = trace.getSpan(context.active());\n\n intro(\"Initializing project\");\n\n // Detect tsconfig.json and exit if not found\n await detectTsConfig(dir, options);\n\n const authorization = await login({\n embedded: true,\n defaultApiUrl: options.apiUrl,\n profile: options.profile,\n });\n\n if (!authorization.ok) {\n if (authorization.error === \"fetch failed\") {\n throw new Error(\n `Failed to connect to ${authorization.auth?.apiUrl}. Are you sure it's the correct URL?`\n );\n } else {\n throw new Error(\"You must login first. Use `trigger.dev login` to login.\");\n }\n }\n\n span?.setAttributes({\n \"cli.userId\": authorization.userId,\n \"cli.email\": authorization.email,\n \"cli.config.apiUrl\": authorization.auth.apiUrl,\n \"cli.config.profile\": authorization.profile,\n });\n\n if (!options.overrideConfig) {\n try {\n // check to see if there is an existing trigger.dev config file in the project directory\n const result = await readConfig(dir);\n\n outro(\n result.status === \"file\"\n ? `Project already initialized: Found config file at ${result.path}. Pass --override-config to override`\n : \"Project already initialized\"\n );\n\n return;\n } catch (e) {\n // continue\n }\n }\n\n const apiClient = new CliApiClient(authorization.auth.apiUrl, authorization.auth.accessToken);\n\n const selectedProject = await selectProject(\n apiClient,\n authorization.dashboardUrl,\n options.projectRef\n );\n\n span?.setAttributes({\n ...flattenAttributes(selectedProject, \"cli.project\"),\n });\n\n logger.debug(\"Selected project\", selectedProject);\n\n log.step(`Configuring project \"${selectedProject.name}\" (${selectedProject.externalRef})`);\n\n // Install @trigger.dev/sdk package\n if (!options.skipPackageInstall) {\n await installPackages(dir, options);\n } else {\n log.info(\"Skipping package installation\");\n }\n\n // Create the trigger dir\n const triggerDir = await createTriggerDir(dir, options);\n\n // Create the config file\n await writeConfigFile(dir, selectedProject, options, triggerDir);\n\n // Add trigger.config.ts to tsconfig.json\n await addConfigFileToTsConfig(dir, options);\n\n // Ignore .trigger dir\n await gitIgnoreDotTriggerDir(dir, options);\n\n const projectDashboard = cliLink(\n \"project dashboard\",\n `${authorization.dashboardUrl}/projects/v3/${selectedProject.externalRef}`\n );\n\n log.success(\"Successfully initialized project for Trigger.dev v3 🫡\");\n log.info(\"Next steps:\");\n log.info(\n ` 1. To start developing, run ${chalk.green(\n `npx trigger.dev@${options.tag} dev${\n options.apiUrl === CLOUD_API_URL ? \"\" : ` -a ${options.apiUrl}`\n }`\n )} in your project directory`\n );\n log.info(` 2. Visit your ${projectDashboard} to view your newly created tasks.`);\n log.info(\n ` 3. Head over to our ${cliLink(\"v3 docs\", \"https://trigger.dev/docs/v3\")} to learn more.`\n );\n log.info(\n ` 4. Need help? Join our ${cliLink(\n \"Discord community\",\n \"https://trigger.dev/discord\"\n )} or email us at ${chalk.cyan(\"help@trigger.dev\")}`\n );\n\n outro(`Project initialized successfully. Happy coding!`);\n}\n\nasync function createTriggerDir(dir: string, options: InitCommandOptions) {\n return await tracer.startActiveSpan(\"createTriggerDir\", async (span) => {\n try {\n const defaultValue = join(dir, \"src\", \"trigger\");\n\n const location = await text({\n message: \"Where would you like to create the Trigger.dev directory?\",\n defaultValue: defaultValue,\n placeholder: defaultValue,\n });\n\n if (isCancel(location)) {\n throw new OutroCommandError();\n }\n\n const triggerDir = resolve(process.cwd(), location);\n\n logger.debug({ triggerDir });\n\n span.setAttributes({\n \"cli.triggerDir\": triggerDir,\n });\n\n if (await pathExists(triggerDir)) {\n throw new Error(`Directory already exists at ${triggerDir}`);\n }\n\n const exampleSelection = await select({\n message: `Choose an example to create in the ${location} directory`,\n options: [\n { value: \"simple\", label: \"Simple (Hello World)\" },\n {\n value: \"none\",\n label: \"None\",\n hint: \"skip creating an example\",\n },\n ],\n });\n\n if (isCancel(exampleSelection)) {\n throw new OutroCommandError();\n }\n\n const example = exampleSelection as string;\n\n span.setAttributes({\n \"cli.example\": example,\n });\n\n if (example === \"none\") {\n // Create a .gitkeep file in the trigger dir\n await createFile(join(triggerDir, \".gitkeep\"), \"\");\n\n log.step(`Created directory at ${location}`);\n\n span.end();\n return { location, isCustomValue: location !== defaultValue };\n }\n\n const templatePath = join(cliRootPath(), \"templates\", \"examples\", `${example}.ts.template`);\n const outputPath = join(triggerDir, \"example.ts\");\n\n await createFileFromTemplate({\n templatePath,\n outputPath,\n replacements: {},\n });\n\n const relativeOutputPath = relative(process.cwd(), outputPath);\n\n log.step(`Created example file at ${relativeOutputPath}`);\n\n span.end();\n\n return { location, isCustomValue: location !== defaultValue };\n } catch (e) {\n if (!(e instanceof SkipCommandError)) {\n recordSpanException(span, e);\n }\n\n span.end();\n\n throw e;\n }\n });\n}\n\nasync function gitIgnoreDotTriggerDir(dir: string, options: InitCommandOptions) {\n return await tracer.startActiveSpan(\"gitIgnoreDotTriggerDir\", async (span) => {\n try {\n const projectDir = resolve(process.cwd(), dir);\n const gitIgnorePath = join(projectDir, \".gitignore\");\n\n span.setAttributes({\n \"cli.projectDir\": projectDir,\n \"cli.gitIgnorePath\": gitIgnorePath,\n });\n\n if (!(await pathExists(gitIgnorePath))) {\n // Create .gitignore file\n await createFile(gitIgnorePath, \".trigger\");\n\n log.step(`Added .trigger to .gitignore`);\n\n span.end();\n\n return;\n }\n\n // Check if .gitignore already contains .trigger\n const gitIgnoreContent = await readFile(gitIgnorePath);\n\n if (gitIgnoreContent.includes(\".trigger\")) {\n span.end();\n\n return;\n }\n\n const newGitIgnoreContent = `${gitIgnoreContent}\\n.trigger`;\n\n await writeFile(gitIgnorePath, newGitIgnoreContent, \"utf-8\");\n\n log.step(`Added .trigger to .gitignore`);\n\n span.end();\n } catch (e) {\n if (!(e instanceof SkipCommandError)) {\n recordSpanException(span, e);\n }\n\n span.end();\n\n throw e;\n }\n });\n}\n\nasync function detectTsConfig(dir: string, options: InitCommandOptions) {\n return await tracer.startActiveSpan(\"detectTsConfig\", async (span) => {\n try {\n const projectDir = resolve(process.cwd(), dir);\n const tsconfigPath = join(projectDir, \"tsconfig.json\");\n\n span.setAttributes({\n \"cli.projectDir\": projectDir,\n \"cli.tsconfigPath\": tsconfigPath,\n });\n\n const tsconfigExists = await pathExists(tsconfigPath);\n\n if (!tsconfigExists) {\n prettyError(\n \"No tsconfig.json found\",\n `The init command needs to be run in a TypeScript project. You can create one like this:`,\n `npm install typescript --save-dev\\nnpx tsc --init\\n`\n );\n\n throw new Error(\"TypeScript required\");\n }\n\n logger.debug(\"tsconfig.json exists\", { tsconfigPath });\n\n span.end();\n } catch (e) {\n if (!(e instanceof SkipCommandError)) {\n recordSpanException(span, e);\n }\n\n span.end();\n\n throw e;\n }\n });\n}\n\nasync function addConfigFileToTsConfig(dir: string, options: InitCommandOptions) {\n return await tracer.startActiveSpan(\"addConfigFileToTsConfig\", async (span) => {\n try {\n const projectDir = resolve(process.cwd(), dir);\n const tsconfigPath = join(projectDir, \"tsconfig.json\");\n\n span.setAttributes({\n \"cli.projectDir\": projectDir,\n \"cli.tsconfigPath\": tsconfigPath,\n });\n\n const tsconfigContent = await readFile(tsconfigPath);\n const tsconfigContentTree = parseTree(tsconfigContent, undefined);\n if (!tsconfigContentTree) {\n span.end();\n\n return;\n }\n\n const tsconfigIncludeOption = findNodeAtLocation(tsconfigContentTree, [\"include\"]);\n if (!tsconfigIncludeOption) {\n span.end();\n\n return;\n }\n\n const tsConfigFileName = \"trigger.config.ts\";\n const tsconfigIncludeOptionValue: string[] = getNodeValue(tsconfigIncludeOption);\n if (tsconfigIncludeOptionValue.includes(tsConfigFileName)) {\n span.end();\n\n return;\n }\n\n const edits = modify(tsconfigContent, [\"include\", -1], tsConfigFileName, {\n isArrayInsertion: true,\n formattingOptions: {\n tabSize: 2,\n insertSpaces: true,\n eol: \"\\n\",\n },\n });\n\n logger.debug(\"tsconfig.json edits\", { edits });\n\n const newTsconfigContent = applyEdits(tsconfigContent, edits);\n\n logger.debug(\"new tsconfig.json content\", { newTsconfigContent });\n\n await writeFile(tsconfigPath, newTsconfigContent, \"utf-8\");\n\n log.step(`Added trigger.config.ts to tsconfig.json`);\n\n span.end();\n } catch (e) {\n if (!(e instanceof SkipCommandError)) {\n recordSpanException(span, e);\n }\n\n span.end();\n\n throw e;\n }\n });\n}\n\nasync function installPackages(dir: string, options: InitCommandOptions) {\n return await tracer.startActiveSpan(\"installPackages\", async (span) => {\n const installSpinner = spinner();\n\n let pkgManager: PackageManager | undefined;\n\n try {\n const projectDir = resolve(process.cwd(), dir);\n\n pkgManager = await getUserPackageManager(projectDir);\n\n span.setAttributes({\n \"cli.projectDir\": projectDir,\n \"cli.packageManager\": pkgManager,\n \"cli.tag\": options.tag,\n });\n\n const userArgs = options.pkgArgs?.split(\",\") ?? [];\n const execaOptions = { cwd: projectDir } satisfies ExecaOptions;\n\n let installProcess: ExecaResult<typeof execaOptions>;\n let args: string[];\n\n switch (pkgManager) {\n case \"npm\": {\n // --save-exact: pin version, e.g. 3.0.0-beta.20 instead of ^3.0.0-beta.20\n args = [\"install\", \"--save-exact\", ...userArgs, `@trigger.dev/sdk@${options.tag}`];\n\n break;\n }\n case \"pnpm\":\n case \"yarn\": {\n // pins version by default\n args = [\"add\", ...userArgs, `@trigger.dev/sdk@${options.tag}`];\n\n break;\n }\n }\n\n installSpinner.start(`Running ${pkgManager} ${args.join(\" \")}`);\n\n installProcess = execa(pkgManager, args, execaOptions);\n\n const handleProcessOutput = (data: Buffer) => {\n logger.debug(data.toString());\n };\n\n installProcess.stderr?.on(\"data\", handleProcessOutput);\n installProcess.stdout?.on(\"data\", handleProcessOutput);\n\n await installProcess;\n\n installSpinner.stop(`@trigger.dev/sdk@${options.tag} installed`);\n\n span.end();\n } catch (e) {\n if (options.logLevel === \"debug\") {\n installSpinner.stop(`Failed to install @trigger.dev/sdk@${options.tag}.`);\n } else {\n installSpinner.stop(\n `Failed to install @trigger.dev/sdk@${options.tag}. Rerun command with --log-level debug for more details.`\n );\n }\n\n if (!(e instanceof SkipCommandError)) {\n recordSpanException(span, e);\n }\n\n if (e instanceof ExecaError) {\n if (pkgManager) {\n e.message += ` \\n\\nNote: You can pass additional args to ${pkgManager} by using --pkg-args. For example: trigger.dev init --pkg-args=\"--workspace-root\"`;\n }\n }\n\n span.end();\n\n throw e;\n }\n });\n}\n\nasync function writeConfigFile(\n dir: string,\n project: GetProjectResponseBody,\n options: InitCommandOptions,\n triggerDir: { location: string; isCustomValue: boolean }\n) {\n return await tracer.startActiveSpan(\"writeConfigFile\", async (span) => {\n try {\n const spnnr = spinner();\n spnnr.start(\"Creating config file\");\n\n const projectDir = resolve(process.cwd(), dir);\n const templatePath = join(cliRootPath(), \"templates\", \"trigger.config.ts.template\");\n const outputPath = join(projectDir, \"trigger.config.ts\");\n\n span.setAttributes({\n \"cli.projectDir\": projectDir,\n \"cli.templatePath\": templatePath,\n \"cli.outputPath\": outputPath,\n });\n\n const result = await createFileFromTemplate({\n templatePath,\n replacements: {\n projectRef: project.externalRef,\n triggerDirectoriesOption: triggerDir.isCustomValue\n ? `\\n triggerDirectories: [\"${triggerDir.location}\"],`\n : \"\",\n },\n outputPath,\n override: options.overrideConfig,\n });\n\n const relativePathToOutput = relative(process.cwd(), outputPath);\n\n spnnr.stop(\n result.success\n ? `Config file created at ${relativePathToOutput}`\n : `Failed to create config file: ${result.error}`\n );\n\n if (!result.success) {\n throw new SkipLoggingError(result.error);\n }\n\n span.end();\n\n return result.success;\n } catch (e) {\n if (!(e instanceof SkipCommandError)) {\n recordSpanException(span, e);\n }\n\n span.end();\n\n throw e;\n }\n });\n}\n\nasync function selectProject(apiClient: CliApiClient, dashboardUrl: string, projectRef?: string) {\n return await tracer.startActiveSpan(\"selectProject\", async (span) => {\n try {\n if (projectRef) {\n const projectResponse = await apiClient.getProject(projectRef);\n\n if (!projectResponse.success) {\n log.error(\n `--project-ref ${projectRef} is not a valid project ref. Request to fetch data resulted in: ${projectResponse.error}`\n );\n\n throw new SkipCommandError(projectResponse.error);\n }\n\n span.setAttributes({\n ...flattenAttributes(projectResponse.data, \"cli.project\"),\n });\n\n span.end();\n\n return projectResponse.data;\n }\n\n const projectsResponse = await apiClient.getProjects();\n\n if (!projectsResponse.success) {\n throw new Error(`Failed to get projects: ${projectsResponse.error}`);\n }\n\n if (projectsResponse.data.length === 0) {\n const newProjectLink = cliLink(\n \"Create new project\",\n `${dashboardUrl}/projects/new?version=v3`\n );\n\n outro(`You don't have any projects yet. ${newProjectLink}`);\n\n throw new SkipCommandError();\n }\n\n const selectedProject = await select({\n message: \"Select an existing Trigger.dev project\",\n options: projectsResponse.data.map((project) => ({\n value: project.externalRef,\n label: `${project.name} - ${project.externalRef}`,\n hint: project.organization.title,\n })),\n });\n\n if (isCancel(selectedProject)) {\n throw new OutroCommandError();\n }\n\n const projectData = projectsResponse.data.find(\n (project) => project.externalRef === selectedProject\n );\n\n if (!projectData) {\n throw new Error(\"Invalid project ref\");\n }\n\n span.setAttributes({\n ...flattenAttributes(projectData, \"cli.project\"),\n });\n\n span.end();\n\n return projectData;\n } catch (e) {\n if (!(e instanceof SkipCommandError)) {\n recordSpanException(span, e);\n }\n\n span.end();\n\n throw e;\n }\n });\n}\n","import fs from \"fs/promises\";\nimport { pathExists, readFile } from \"./fileSystem\";\nimport path from \"path\";\n\ntype Result =\n | {\n success: true;\n alreadyExisted: boolean;\n }\n | {\n success: false;\n error: string;\n };\n\nexport async function createFileFromTemplate(params: {\n templatePath: string;\n replacements: Record<string, string>;\n outputPath: string;\n override?: boolean;\n}): Promise<Result> {\n let template = await readFile(params.templatePath);\n\n if ((await pathExists(params.outputPath)) && !params.override) {\n return {\n success: true,\n alreadyExisted: true,\n };\n }\n\n try {\n const output = replaceAll(template, params.replacements);\n\n const directoryName = path.dirname(params.outputPath);\n await fs.mkdir(directoryName, { recursive: true });\n await fs.writeFile(params.outputPath, output);\n\n return {\n success: true,\n alreadyExisted: false,\n };\n } catch (e) {\n if (e instanceof Error) {\n return {\n success: false,\n error: e.message,\n };\n }\n return {\n success: false,\n error: JSON.stringify(e),\n };\n }\n}\n\n// find strings that match ${varName} and replace with the value from a Record<string, string> where { varName: \"value\" }\nexport function replaceAll(input: string, replacements: Record<string, string>) {\n let output = input;\n for (const [key, value] of Object.entries(replacements)) {\n output = output.replace(new RegExp(`\\\\$\\\\{${key}\\\\}`, \"g\"), value);\n }\n return output;\n}\n","import { Command } from \"commander\";\nimport { z } from \"zod\";\nimport {\n CommonCommandOptions,\n commonOptions,\n handleTelemetry,\n wrapCommandAction,\n} from \"../cli/common.js\";\nimport { deleteAuthConfigProfile, readAuthConfigProfile } from \"../utilities/configFiles.js\";\nimport { printInitialBanner } from \"../utilities/initialBanner.js\";\nimport { logger } from \"../utilities/logger.js\";\n\nconst LogoutCommandOptions = CommonCommandOptions;\n\ntype LogoutCommandOptions = z.infer<typeof LogoutCommandOptions>;\n\nexport function configureLogoutCommand(program: Command) {\n return commonOptions(program.command(\"logout\").description(\"Logout of Trigger.dev\")).action(\n async (options) => {\n await handleTelemetry(async () => {\n await printInitialBanner(false);\n await logoutCommand(options);\n });\n }\n );\n}\n\nexport async function logoutCommand(options: unknown) {\n return await wrapCommandAction(\"logoutCommand\", LogoutCommandOptions, options, async (opts) => {\n return await logout(opts);\n });\n}\n\nexport async function logout(options: LogoutCommandOptions) {\n const config = readAuthConfigProfile(options.profile);\n\n if (!config?.accessToken) {\n logger.info(`You are already logged out [${options.profile}]`);\n return;\n }\n\n deleteAuthConfigProfile(options.profile);\n\n logger.info(`Logged out of Trigger.dev [${options.profile}]`);\n}\n","import { Command } from \"commander\";\nimport {\n deleteAuthConfigProfile,\n readAuthConfigFile,\n readAuthConfigProfile,\n writeAuthConfigProfile,\n} from \"../utilities/configFiles.js\";\nimport { logger } from \"../utilities/logger.js\";\nimport {\n CommonCommandOptions,\n commonOptions,\n handleTelemetry,\n wrapCommandAction,\n} from \"../cli/common.js\";\nimport { printInitialBanner } from \"../utilities/initialBanner.js\";\nimport { z } from \"zod\";\nimport { chalkGrey } from \"../utilities/cliOutput.js\";\nimport { log, outro, text } from \"@clack/prompts\";\n\nconst ListProfilesOptions = CommonCommandOptions;\n\ntype ListProfilesOptions = z.infer<typeof ListProfilesOptions>;\n\nexport function configureListProfilesCommand(program: Command) {\n return program\n .command(\"list-profiles\")\n .description(\"List all of your CLI profiles\")\n .option(\n \"-l, --log-level <level>\",\n \"The CLI log level to use (debug, info, log, warn, error, none). This does not effect the log level of your trigger.dev tasks.\",\n \"log\"\n )\n .option(\"--skip-telemetry\", \"Opt-out of sending telemetry\")\n .action(async (options) => {\n await handleTelemetry(async () => {\n await printInitialBanner(true);\n await listProfilesCommand(options);\n });\n });\n}\n\nexport async function listProfilesCommand(options: unknown) {\n return await wrapCommandAction(\"listProfiles\", ListProfilesOptions, options, async (opts) => {\n return await listProfiles(opts);\n });\n}\n\nexport async function listProfiles(options: ListProfilesOptions) {\n const authConfig = readAuthConfigFile();\n\n if (!authConfig) {\n logger.info(\"No profiles found\");\n return;\n }\n\n const profiles = Object.keys(authConfig);\n\n log.message(\"Profiles:\");\n\n for (const profile of profiles) {\n const profileConfig = authConfig[profile];\n\n log.info(`${profile}${profileConfig?.apiUrl ? ` - ${chalkGrey(profileConfig.apiUrl)}` : \"\"}`);\n }\n\n outro(\"Retrieve account info by running whoami --profile <profile>\");\n}\n","#!/usr/bin/env node\n\nimport { program } from \"./cli/index.js\";\nimport { logger } from \"./utilities/logger.js\";\n\nconst main = async () => {\n await program.parseAsync();\n};\n\nmain().catch((err) => {\n if (err instanceof Error) {\n logger.error(err);\n } else {\n logger.error(\"An unknown error has occurred. Please open an issue on github with the below:\");\n logger.error(err);\n }\n process.exit(1);\n});\n"],"mappings":"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","names":["path","XDGAppPaths_","options","_a","path","XDG_","os","path","posix","v","OSPaths_","os","path","path","path","original","require_retry","Command","intro","log","outro","trace","flattenAttributes","recordSpanException","build","execa","readFileSync","readFile","writeFile","join","relative","setTimeout","z","text","chalk","text","url","path","join","_","z","path","path","path","path","fs","z","path","join","build","chalk","path","path","log","path","text","chalk","join","join","path","version","intro","log","outro","recordSpanException","process","Buffer","path","fileURLToPath","fs","process","fs","fs","fs","fs","process","fs","promisify","process","execFile","process","process","promisify","execFile","execFileAsync","promisify","execFile","execFileAsync","execFileAsync","promisify","execFile","defaultBrowser","process","path","fileURLToPath","process","fs","defaultBrowser","Buffer","resolve","resolve","retry","z","outro","recordSpanException","tracer","apiClient","recordSpanException","program","outro","apiClient","z","program","intro","apiClient","outro","log","recordSpanException","esbuildDecorators","build","dependencies","chalk","relative","chalk","relative","join","findUp","path","findUp","recordSpanException","flattenAttributes","join","version","childProcess","dependencies","path","fileURLToPath","__filename","__dirname","intro","log","outro","join","resolve","program","path","intro","resolve","log","mismatches","version","isDowngrade","outro","join","resolvedEnvVars","z","program","path","trace","intro","recordSpanException","flattenAttributes","apiClient","log","version","outro","parsedError","errorMessages","join","writeFile","setTimeout","childProcess","text","execa","readFileSync","build","esbuildDecorators","dependencies","resolvedEnvVars","readFile","resolve","relative","detectDependencyVersion","ZodMessageHandler","ZodMessageSender","context","createHash","fs","readFileSync","basename","dirname","join","z","text","dirname","resolve","path","apiClient","dirname","resolvedEnvVars","resolve","taskRunProcess","findUp","pathExists","esbuildDecorators","z","program","path","authorization","ZodMessageSender","ZodMessageHandler","join","readFileSync","context","esbuildDecorators","build","createHash","basename","fs","dirname","dependencies","sourceMapPath","detectDependencyVersion","findUp","pathExists","intro","isCancel","log","outro","select","context","trace","flattenAttributes","recordSpanException","chalk","ExecaError","execa","writeFile","join","relative","resolve","z","fs","path","fs","z","program","path","trace","context","intro","outro","apiClient","flattenAttributes","log","installPackages","chalk","join","isCancel","resolve","select","relative","recordSpanException","writeFile","execa","ExecaError","program","log","outro","program","Command"]}
|