@shopify/oxygen-cli 4.6.9-unstable.202502031546.0 → 4.6.10-unstable.202502051606.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (33) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/commands/oxygen/deploy.js.map +1 -1
  3. package/dist/deploy/build-cancel.js.map +1 -1
  4. package/dist/deploy/build-initiate.js.map +1 -1
  5. package/dist/deploy/build-project.js.map +1 -1
  6. package/dist/deploy/deployment-cancel.js.map +1 -1
  7. package/dist/deploy/deployment-complete.js.map +1 -1
  8. package/dist/deploy/deployment-initiate.js.map +1 -1
  9. package/dist/deploy/get-upload-files.js.map +1 -1
  10. package/dist/deploy/graphql/build-cancel.js.map +1 -1
  11. package/dist/deploy/graphql/build-initiate.js.map +1 -1
  12. package/dist/deploy/graphql/deployment-cancel.js.map +1 -1
  13. package/dist/deploy/graphql/deployment-complete.js.map +1 -1
  14. package/dist/deploy/graphql/deployment-initiate.js.map +1 -1
  15. package/dist/deploy/graphql/deployment-verification-details.js.map +1 -1
  16. package/dist/deploy/index.js.map +1 -1
  17. package/dist/deploy/metadata.js +2 -2
  18. package/dist/deploy/metadata.js.map +1 -1
  19. package/dist/deploy/types.js.map +1 -1
  20. package/dist/deploy/upload-files.js.map +1 -1
  21. package/dist/deploy/verify-deployment-completed.js.map +1 -1
  22. package/dist/deploy/verify-deployment.js.map +1 -1
  23. package/dist/index.js.map +1 -1
  24. package/dist/oxygen-cli.js.map +1 -1
  25. package/dist/utils/bugsnag.js +1 -1
  26. package/dist/utils/bugsnag.js.map +1 -1
  27. package/dist/utils/metrics-exporter.js.map +1 -1
  28. package/dist/utils/test-helper.js.map +1 -1
  29. package/dist/utils/utils.d.ts +1 -1
  30. package/dist/utils/utils.js +2 -2
  31. package/dist/utils/utils.js.map +1 -1
  32. package/oclif.manifest.json +1 -1
  33. package/package.json +2 -2
package/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # @shopify/oxygen-cli
2
2
 
3
+ ## 4.6.9
4
+
5
+ ### Patch Changes
6
+
7
+ - 89c3e63: Update vite from 6.0.11 to 6.1.0
8
+
3
9
  ## 4.6.8
4
10
 
5
11
  ### Patch Changes
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/commands/oxygen/deploy.ts"],"names":[],"mappings":"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","file":"deploy.js","sourcesContent":["import {Command, Flags} from '@oclif/core';\nimport {consoleError} from '@shopify/cli-kit/node/output';\nimport {normalizePath} from '@shopify/cli-kit/node/path';\nimport {readAndParseDotEnv} from '@shopify/cli-kit/node/dot-env';\n\nimport {getBugsnag, initializeBugsnag} from '../../utils/bugsnag.js';\nimport {createDeploy} from '../../deploy/index.js';\nimport {\n deployDefaults,\n getBuildCommandFromLockFile,\n parseToken,\n verifyConfig,\n} from '../../utils/utils.js';\nimport type {\n DeploymentConfig,\n EnvironmentVariable,\n} from '../../deploy/types.js';\nimport {VerificationError} from '../../deploy/types.js';\n\nexport class Deploy extends Command {\n static description = 'Creates a deployment to Oxygen';\n static hidden = false;\n static flags = {\n assetsFolder: Flags.string({\n char: 'a',\n description: 'Assets folder',\n default: String(deployDefaults.assetsDirDefault),\n required: false,\n }),\n buildCommand: Flags.string({\n char: 'b',\n description: 'Build command',\n required: false,\n default: String(deployDefaults.buildCommandDefault!),\n parse: (input): Promise<string> => {\n this.hasCustomBuildCommand = true;\n return Promise.resolve(input);\n },\n }),\n disableBugsnag: Flags.boolean({\n description: 'Disable Bugsnag error reporting',\n required: false,\n default: false,\n }),\n environmentTag: Flags.string({\n char: 'e',\n description: 'Tag of the environment to deploy to',\n required: false,\n }),\n verificationMaxDuration: Flags.integer({\n char: 'd',\n description:\n 'the maximum duration (in seconds) that the deployment verification step is allowed to run before it is considered failed.',\n min: 10,\n max: 300,\n required: false,\n default: deployDefaults.verificationMaxDurationDefault as number,\n }),\n path: Flags.string({\n char: 'p',\n description: 'Root path',\n default: './',\n required: false,\n }),\n defaultEnvironment: Flags.boolean({\n env: 'OXYGEN_DEFAULT_ENVIRONMENT',\n description: 'Deploys to the default environment of the app',\n required: false,\n default: false,\n }),\n skipBuild: Flags.boolean({\n char: 's',\n description: 'Skip running build command',\n required: false,\n default: false,\n }),\n skipVerification: Flags.boolean({\n char: 'v',\n description: 'Skip running deployment verification step',\n required: false,\n default: false,\n }),\n token: Flags.string({\n char: 't',\n description: 'Oxygen deployment token',\n env: 'OXYGEN_DEPLOYMENT_TOKEN',\n required: true,\n }),\n workerFolder: Flags.string({\n char: 'w',\n description: 'Worker folder',\n default: String(deployDefaults.workerDirDefault),\n required: false,\n }),\n workerOnly: Flags.boolean({\n char: 'o',\n description: 'Worker only deployment',\n default: false,\n required: false,\n }),\n metadataDescription: Flags.string({\n description:\n 'Description of the deployment. Will be saved and displayed in the Shopify admin',\n required: false,\n env: 'OXYGEN_METADATA_DESCRIPTION',\n }),\n metadataHydrogenVersion: Flags.string({\n description: 'The Hydrogen version of the deployment from package.json',\n required: false,\n env: 'OXYGEN_METADATA_HYDROGEN_VERSION',\n }),\n metadataUrl: Flags.string({\n description:\n 'URL that links to the deployment. Will be saved and displayed in the Shopify admin',\n required: false,\n env: 'OXYGEN_METADATA_URL',\n }),\n metadataUser: Flags.string({\n description:\n 'User that initiated the deployment. Will be saved and displayed in the Shopify admin',\n required: false,\n env: 'OXYGEN_METADATA_USER',\n }),\n metadataVersion: Flags.string({\n description:\n 'A version identifier for the deployment. Will be saved and displayed in the Shopify admin',\n required: false,\n env: 'OXYGEN_METADATA_VERSION',\n }),\n generateAuthBypassToken: Flags.boolean({\n description:\n 'Generate an auth bypass token used to perform end-to-end testing against the deployment.',\n required: false,\n default: false,\n }),\n authBypassTokenDuration: Flags.string({\n description:\n 'Specify the duration (in hours) up to 12 hours for the authentication bypass token. Defaults to `2`.',\n required: false,\n dependsOn: ['generateAuthBypassToken'],\n }),\n environmentFile: Flags.string({\n description:\n 'Path to an environment file to override existing environment variables for the deployment.',\n required: false,\n }),\n };\n\n static hasCustomBuildCommand = false;\n\n async run() {\n try {\n const {flags} = await this.parse(Deploy);\n const rootPath = normalizePath(flags.path);\n\n let overriddenEnvironmentVariables: EnvironmentVariable[] | undefined;\n\n if (flags.environmentFile) {\n const file = await readAndParseDotEnv(flags.environmentFile);\n\n overriddenEnvironmentVariables = Object.entries(file.variables).map(\n ([key, value]) => ({\n isSecret: true,\n key,\n value,\n }),\n );\n }\n\n initializeBugsnag(flags.disableBugsnag);\n const Bugsnag = getBugsnag();\n\n const deploymentUrl =\n // eslint-disable-next-line no-process-env\n process.env.UNSAFE_OXYGEN_DEPLOYMENT_URL ||\n 'https://oxygen.shopifyapps.com';\n Bugsnag?.addMetadata('flags', {\n flags: {...flags, token: '***'},\n deploymentUrl,\n });\n\n const config: DeploymentConfig = {\n assetsDir: normalizePath(flags.assetsFolder),\n bugsnag: !flags.disableBugsnag,\n buildCommand: flags.buildCommand!,\n deploymentToken: parseToken(flags.token!),\n environmentTag: flags.environmentTag,\n deploymentUrl,\n verificationMaxDuration: flags.verificationMaxDuration,\n metadata: {\n description: flags.metadataDescription,\n hydrogenVersion: flags.metadataHydrogenVersion,\n url: flags.metadataUrl,\n user: flags.metadataUser,\n version: flags.metadataVersion,\n },\n defaultEnvironment: flags.defaultEnvironment,\n rootPath,\n skipBuild: flags.skipBuild,\n skipVerification: flags.skipVerification,\n workerDir: normalizePath(flags.workerFolder),\n workerOnly: flags.workerOnly,\n generateAuthBypassToken: flags.generateAuthBypassToken,\n authBypassTokenDuration: flags.authBypassTokenDuration,\n overriddenEnvironmentVariables,\n };\n\n await verifyConfig({config});\n if (!Deploy.hasCustomBuildCommand && !config.skipBuild) {\n config.buildCommand = getBuildCommandFromLockFile(config);\n }\n await createDeploy({config});\n } catch (error) {\n const Bugsnag = getBugsnag();\n if (Bugsnag && (error instanceof Error || typeof error === 'string')) {\n Bugsnag.notify(error);\n }\n\n if (!(error instanceof Error)) {\n consoleError(error as string);\n } else if (!(error instanceof VerificationError)) {\n consoleError(error.message);\n }\n\n this.exit(1);\n }\n }\n}\n"]}
1
+ {"version":3,"sources":["../../../src/commands/oxygen/deploy.ts"],"names":[],"mappings":"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","file":"deploy.js","sourcesContent":["import {Command, Flags} from '@oclif/core';\nimport {consoleError} from '@shopify/cli-kit/node/output';\nimport {normalizePath} from '@shopify/cli-kit/node/path';\nimport {readAndParseDotEnv} from '@shopify/cli-kit/node/dot-env';\n\nimport {getBugsnag, initializeBugsnag} from '../../utils/bugsnag.js';\nimport {createDeploy} from '../../deploy/index.js';\nimport {\n deployDefaults,\n getBuildCommandFromLockFile,\n parseToken,\n verifyConfig,\n} from '../../utils/utils.js';\nimport type {\n DeploymentConfig,\n EnvironmentVariable,\n} from '../../deploy/types.js';\nimport {VerificationError} from '../../deploy/types.js';\n\nexport class Deploy extends Command {\n static description = 'Creates a deployment to Oxygen';\n static hidden = false;\n static flags = {\n assetsFolder: Flags.string({\n char: 'a',\n description: 'Assets folder',\n default: String(deployDefaults.assetsDirDefault),\n required: false,\n }),\n buildCommand: Flags.string({\n char: 'b',\n description: 'Build command',\n required: false,\n default: String(deployDefaults.buildCommandDefault!),\n parse: (input): Promise<string> => {\n this.hasCustomBuildCommand = true;\n return Promise.resolve(input);\n },\n }),\n disableBugsnag: Flags.boolean({\n description: 'Disable Bugsnag error reporting',\n required: false,\n default: false,\n }),\n environmentTag: Flags.string({\n char: 'e',\n description: 'Tag of the environment to deploy to',\n required: false,\n }),\n verificationMaxDuration: Flags.integer({\n char: 'd',\n description:\n 'the maximum duration (in seconds) that the deployment verification step is allowed to run before it is considered failed.',\n min: 10,\n max: 300,\n required: false,\n default: deployDefaults.verificationMaxDurationDefault as number,\n }),\n path: Flags.string({\n char: 'p',\n description: 'Root path',\n default: './',\n required: false,\n }),\n defaultEnvironment: Flags.boolean({\n env: 'OXYGEN_DEFAULT_ENVIRONMENT',\n description: 'Deploys to the default environment of the app',\n required: false,\n default: false,\n }),\n skipBuild: Flags.boolean({\n char: 's',\n description: 'Skip running build command',\n required: false,\n default: false,\n }),\n skipVerification: Flags.boolean({\n char: 'v',\n description: 'Skip running deployment verification step',\n required: false,\n default: false,\n }),\n token: Flags.string({\n char: 't',\n description: 'Oxygen deployment token',\n env: 'OXYGEN_DEPLOYMENT_TOKEN',\n required: true,\n }),\n workerFolder: Flags.string({\n char: 'w',\n description: 'Worker folder',\n default: String(deployDefaults.workerDirDefault),\n required: false,\n }),\n workerOnly: Flags.boolean({\n char: 'o',\n description: 'Worker only deployment',\n default: false,\n required: false,\n }),\n metadataDescription: Flags.string({\n description:\n 'Description of the deployment. Will be saved and displayed in the Shopify admin',\n required: false,\n env: 'OXYGEN_METADATA_DESCRIPTION',\n }),\n metadataHydrogenVersion: Flags.string({\n description: 'The Hydrogen version of the deployment from package.json',\n required: false,\n env: 'OXYGEN_METADATA_HYDROGEN_VERSION',\n }),\n metadataUrl: Flags.string({\n description:\n 'URL that links to the deployment. Will be saved and displayed in the Shopify admin',\n required: false,\n env: 'OXYGEN_METADATA_URL',\n }),\n metadataUser: Flags.string({\n description:\n 'User that initiated the deployment. Will be saved and displayed in the Shopify admin',\n required: false,\n env: 'OXYGEN_METADATA_USER',\n }),\n metadataVersion: Flags.string({\n description:\n 'A version identifier for the deployment. Will be saved and displayed in the Shopify admin',\n required: false,\n env: 'OXYGEN_METADATA_VERSION',\n }),\n generateAuthBypassToken: Flags.boolean({\n description:\n 'Generate an auth bypass token used to perform end-to-end testing against the deployment.',\n required: false,\n default: false,\n }),\n authBypassTokenDuration: Flags.string({\n description:\n 'Specify the duration (in hours) up to 12 hours for the authentication bypass token. Defaults to `2`.',\n required: false,\n dependsOn: ['generateAuthBypassToken'],\n }),\n environmentFile: Flags.string({\n description:\n 'Path to an environment file to override existing environment variables for the deployment.',\n required: false,\n }),\n };\n\n static hasCustomBuildCommand = false;\n\n async run() {\n try {\n const {flags} = await this.parse(Deploy);\n const rootPath = normalizePath(flags.path);\n\n let overriddenEnvironmentVariables: EnvironmentVariable[] | undefined;\n\n if (flags.environmentFile) {\n const file = await readAndParseDotEnv(flags.environmentFile);\n\n overriddenEnvironmentVariables = Object.entries(file.variables).map(\n ([key, value]) => ({\n isSecret: true,\n key,\n value,\n }),\n );\n }\n\n initializeBugsnag(flags.disableBugsnag);\n const Bugsnag = getBugsnag();\n\n const deploymentUrl =\n // eslint-disable-next-line no-process-env\n process.env.UNSAFE_OXYGEN_DEPLOYMENT_URL ||\n 'https://oxygen.shopifyapps.com';\n Bugsnag?.addMetadata('flags', {\n flags: {...flags, token: '***'},\n deploymentUrl,\n });\n\n const config: DeploymentConfig = {\n assetsDir: normalizePath(flags.assetsFolder),\n bugsnag: !flags.disableBugsnag,\n buildCommand: flags.buildCommand!,\n deploymentToken: parseToken(flags.token!),\n environmentTag: flags.environmentTag,\n deploymentUrl,\n verificationMaxDuration: flags.verificationMaxDuration,\n metadata: {\n description: flags.metadataDescription,\n hydrogenVersion: flags.metadataHydrogenVersion,\n url: flags.metadataUrl,\n user: flags.metadataUser,\n version: flags.metadataVersion,\n },\n defaultEnvironment: flags.defaultEnvironment,\n rootPath,\n skipBuild: flags.skipBuild,\n skipVerification: flags.skipVerification,\n workerDir: normalizePath(flags.workerFolder),\n workerOnly: flags.workerOnly,\n generateAuthBypassToken: flags.generateAuthBypassToken,\n authBypassTokenDuration: flags.authBypassTokenDuration,\n overriddenEnvironmentVariables,\n };\n\n await verifyConfig({config});\n if (!Deploy.hasCustomBuildCommand && !config.skipBuild) {\n config.buildCommand = getBuildCommandFromLockFile(config);\n }\n await createDeploy({config});\n } catch (error) {\n const Bugsnag = getBugsnag();\n if (Bugsnag && (error instanceof Error || typeof error === 'string')) {\n Bugsnag.notify(error);\n }\n\n if (!(error instanceof Error)) {\n consoleError(error as string);\n } else if (!(error instanceof VerificationError)) {\n consoleError(error.message);\n }\n\n this.exit(1);\n }\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/deploy/build-cancel.ts"],"names":[],"mappings":";;;;;;AAoBA,eAAsB,YACpB,OAC8B,EAAA;AAC9B,EAAA,MAAM,EAAC,MAAA,EAAQ,OAAS,EAAA,MAAA,EAAQ,QAAU,GAAA,OAAA,CAAA;AAE1C,EAAA,MAAM,SAAY,GAAA;AAAA,IAChB,OAAA;AAAA,IACA,MAAA;AAAA,GACF,CAAA;AAEA,EAAI,IAAA;AACF,IAAM,MAAA,QAAA,GAAiC,MAAM,cAAe,CAAA;AAAA,MAC1D,KAAO,EAAA,gBAAA;AAAA,MACP,GAAK,EAAA,QAAA;AAAA,MACL,GAAA,EAAK,CAAG,EAAA,MAAA,CAAO,aAAa,CAAA,qBAAA,CAAA;AAAA,MAC5B,KAAA,EAAO,OAAO,eAAgB,CAAA,WAAA;AAAA,MAC9B,YAAc,EAAA;AAAA,QACZ,CAAC,MAAA,CAAO,qBAAqB,GAAG,OAAO,eAAgB,CAAA,SAAA;AAAA,OACzD;AAAA,MACA,SAAA;AAAA,KACD,CAAA,CAAA;AAED,IAAA,IAAI,QAAS,CAAA,WAAA,CAAY,UAAW,CAAA,MAAA,IAAU,CAAG,EAAA;AAC/C,MAAA,MAAM,IAAI,UAAA;AAAA,QACR,2BAA2B,QAAS,CAAA,WAAA,CAAY,UAAW,CAAA,CAAC,GAAG,OAAO,CAAA,CAAA;AAAA,OACxE,CAAA;AAAA,KACF;AACA,IAAW,UAAA,CAAA,CAAA,cAAA,EAAiB,OAAO,CAAA,WAAA,CAAA,EAAe,MAAM,CAAA,CAAA;AAExD,IAAA,OAAO,QAAS,CAAA,WAAA,CAAA;AAAA,WACT,KAAO,EAAA;AACd,IAAA,YAAA,CAAa,KAAK,CAAA,CAAA;AAElB,IAAM,MAAA,KAAA,CAAA;AAAA,GACR;AACF","file":"build-cancel.js","sourcesContent":["import {graphqlRequest} from '@shopify/cli-kit/node/api/graphql';\nimport {AbortError} from '@shopify/cli-kit/node/error';\nimport {Logger, outputInfo} from '@shopify/cli-kit/node/output';\n\nimport {errorHandler, Header} from '../utils/utils.js';\n\nimport type {DeploymentConfig} from './types.js';\nimport {\n BuildCancelQuery,\n BuildCancelQueryData,\n BuildCancelResponse,\n} from './graphql/build-cancel.js';\n\ninterface BuildCancelOptions {\n config: DeploymentConfig;\n buildId: string;\n reason: string;\n logger: Logger;\n}\n\nexport async function buildCancel(\n options: BuildCancelOptions,\n): Promise<BuildCancelResponse> {\n const {config, buildId, reason, logger} = options;\n\n const variables = {\n buildId,\n reason,\n };\n\n try {\n const response: BuildCancelQueryData = await graphqlRequest({\n query: BuildCancelQuery,\n api: 'Oxygen',\n url: `${config.deploymentUrl}/api/v2/admin/graphql`,\n token: config.deploymentToken.accessToken,\n addedHeaders: {\n [Header.OxygenNamespaceHandle]: config.deploymentToken.namespace,\n },\n variables,\n });\n\n if (response.buildCancel.userErrors.length >= 1) {\n throw new AbortError(\n `Failed to cancel build: ${response.buildCancel.userErrors[0]?.message}`,\n );\n }\n outputInfo(`Build with id ${buildId} cancelled.`, logger);\n\n return response.buildCancel;\n } catch (error) {\n errorHandler(error);\n\n throw error;\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/deploy/build-cancel.ts"],"names":[],"mappings":";;;;;;AAoBA,eAAsB,YACpB,OAC8B,EAAA;AAC9B,EAAA,MAAM,EAAC,MAAA,EAAQ,OAAS,EAAA,MAAA,EAAQ,QAAU,GAAA,OAAA;AAE1C,EAAA,MAAM,SAAY,GAAA;AAAA,IAChB,OAAA;AAAA,IACA;AAAA,GACF;AAEA,EAAI,IAAA;AACF,IAAM,MAAA,QAAA,GAAiC,MAAM,cAAe,CAAA;AAAA,MAC1D,KAAO,EAAA,gBAAA;AAAA,MACP,GAAK,EAAA,QAAA;AAAA,MACL,GAAA,EAAK,CAAG,EAAA,MAAA,CAAO,aAAa,CAAA,qBAAA,CAAA;AAAA,MAC5B,KAAA,EAAO,OAAO,eAAgB,CAAA,WAAA;AAAA,MAC9B,YAAc,EAAA;AAAA,QACZ,CAAC,MAAA,CAAO,qBAAqB,GAAG,OAAO,eAAgB,CAAA;AAAA,OACzD;AAAA,MACA;AAAA,KACD,CAAA;AAED,IAAA,IAAI,QAAS,CAAA,WAAA,CAAY,UAAW,CAAA,MAAA,IAAU,CAAG,EAAA;AAC/C,MAAA,MAAM,IAAI,UAAA;AAAA,QACR,2BAA2B,QAAS,CAAA,WAAA,CAAY,UAAW,CAAA,CAAC,GAAG,OAAO,CAAA;AAAA,OACxE;AAAA;AAEF,IAAW,UAAA,CAAA,CAAA,cAAA,EAAiB,OAAO,CAAA,WAAA,CAAA,EAAe,MAAM,CAAA;AAExD,IAAA,OAAO,QAAS,CAAA,WAAA;AAAA,WACT,KAAO,EAAA;AACd,IAAA,YAAA,CAAa,KAAK,CAAA;AAElB,IAAM,MAAA,KAAA;AAAA;AAEV","file":"build-cancel.js","sourcesContent":["import {graphqlRequest} from '@shopify/cli-kit/node/api/graphql';\nimport {AbortError} from '@shopify/cli-kit/node/error';\nimport {Logger, outputInfo} from '@shopify/cli-kit/node/output';\n\nimport {errorHandler, Header} from '../utils/utils.js';\n\nimport type {DeploymentConfig} from './types.js';\nimport {\n BuildCancelQuery,\n BuildCancelQueryData,\n BuildCancelResponse,\n} from './graphql/build-cancel.js';\n\ninterface BuildCancelOptions {\n config: DeploymentConfig;\n buildId: string;\n reason: string;\n logger: Logger;\n}\n\nexport async function buildCancel(\n options: BuildCancelOptions,\n): Promise<BuildCancelResponse> {\n const {config, buildId, reason, logger} = options;\n\n const variables = {\n buildId,\n reason,\n };\n\n try {\n const response: BuildCancelQueryData = await graphqlRequest({\n query: BuildCancelQuery,\n api: 'Oxygen',\n url: `${config.deploymentUrl}/api/v2/admin/graphql`,\n token: config.deploymentToken.accessToken,\n addedHeaders: {\n [Header.OxygenNamespaceHandle]: config.deploymentToken.namespace,\n },\n variables,\n });\n\n if (response.buildCancel.userErrors.length >= 1) {\n throw new AbortError(\n `Failed to cancel build: ${response.buildCancel.userErrors[0]?.message}`,\n );\n }\n outputInfo(`Build with id ${buildId} cancelled.`, logger);\n\n return response.buildCancel;\n } catch (error) {\n errorHandler(error);\n\n throw error;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/deploy/build-initiate.ts"],"names":[],"mappings":";;;;;;AAoBA,eAAsB,cACpB,OACgC,EAAA;AAChC,EAAA,MAAM,EAAC,MAAQ,EAAA,MAAA,EAAQ,aAAa,MAAS,GAAA,IAAM,GAAA,OAAA,CAAA;AAEnD,EAAA,MAAM,SAAY,GAAA;AAAA,IAChB,WAAA;AAAA,IACA,MAAA;AAAA,GACF,CAAA;AAEA,EAAI,IAAA;AACF,IAAM,MAAA,QAAA,GAAmC,MAAM,cAAe,CAAA;AAAA,MAC5D,KAAO,EAAA,kBAAA;AAAA,MACP,GAAK,EAAA,QAAA;AAAA,MACL,GAAA,EAAK,CAAG,EAAA,MAAA,CAAO,aAAa,CAAA,qBAAA,CAAA;AAAA,MAC5B,KAAA,EAAO,OAAO,eAAgB,CAAA,WAAA;AAAA,MAC9B,SAAA;AAAA,MACA,YAAc,EAAA;AAAA,QACZ,CAAC,MAAA,CAAO,qBAAqB,GAAG,OAAO,eAAgB,CAAA,SAAA;AAAA,OACzD;AAAA,KACD,CAAA,CAAA;AAED,IAAA,IAAI,QAAS,CAAA,aAAA,CAAc,UAAW,CAAA,MAAA,IAAU,CAAG,EAAA;AACjD,MAAA,MAAM,IAAI,UAAA;AAAA,QACR,2BAA2B,QAAS,CAAA,aAAA,CAAc,UAAW,CAAA,CAAC,GAAG,OAAO,CAAA,CAAA;AAAA,OAC1E,CAAA;AAAA,KACF;AACA,IAAA,eAAA;AAAA,MACE,CAAwC,qCAAA,EAAA,QAAA,CAAS,aAAc,CAAA,KAAA,CAAM,EAAE,CAAA,CAAA,CAAA;AAAA,MACvE,MAAA;AAAA,KACF,CAAA;AAEA,IAAA,OAAO,QAAS,CAAA,aAAA,CAAA;AAAA,WACT,KAAO,EAAA;AACd,IAAA,YAAA,CAAa,KAAK,CAAA,CAAA;AAElB,IAAM,MAAA,KAAA,CAAA;AAAA,GACR;AACF","file":"build-initiate.js","sourcesContent":["import {graphqlRequest} from '@shopify/cli-kit/node/api/graphql';\nimport {AbortError} from '@shopify/cli-kit/node/error';\nimport {Logger, outputCompleted} from '@shopify/cli-kit/node/output';\n\nimport {errorHandler, Header} from '../utils/utils.js';\n\nimport {EnvironmentInput, DeploymentConfig} from './types.js';\nimport {\n BuildInitiateQuery,\n BuildInitiateQueryData,\n BuildInitiateResponse,\n} from './graphql/build-initiate.js';\n\ninterface BuildInitiateOptions {\n config: DeploymentConfig;\n logger: Logger;\n environment?: EnvironmentInput;\n labels?: string[];\n}\n\nexport async function buildInitiate(\n options: BuildInitiateOptions,\n): Promise<BuildInitiateResponse> {\n const {config, logger, environment, labels = []} = options;\n\n const variables = {\n environment,\n labels,\n };\n\n try {\n const response: BuildInitiateQueryData = await graphqlRequest({\n query: BuildInitiateQuery,\n api: 'Oxygen',\n url: `${config.deploymentUrl}/api/v2/admin/graphql`,\n token: config.deploymentToken.accessToken,\n variables,\n addedHeaders: {\n [Header.OxygenNamespaceHandle]: config.deploymentToken.namespace,\n },\n });\n\n if (response.buildInitiate.userErrors.length >= 1) {\n throw new AbortError(\n `Failed to create build. ${response.buildInitiate.userErrors[0]?.message}`,\n );\n }\n outputCompleted(\n `Build initiated successfully with id ${response.buildInitiate.build.id}.`,\n logger,\n );\n\n return response.buildInitiate;\n } catch (error) {\n errorHandler(error);\n\n throw error;\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/deploy/build-initiate.ts"],"names":[],"mappings":";;;;;;AAoBA,eAAsB,cACpB,OACgC,EAAA;AAChC,EAAA,MAAM,EAAC,MAAQ,EAAA,MAAA,EAAQ,aAAa,MAAS,GAAA,IAAM,GAAA,OAAA;AAEnD,EAAA,MAAM,SAAY,GAAA;AAAA,IAChB,WAAA;AAAA,IACA;AAAA,GACF;AAEA,EAAI,IAAA;AACF,IAAM,MAAA,QAAA,GAAmC,MAAM,cAAe,CAAA;AAAA,MAC5D,KAAO,EAAA,kBAAA;AAAA,MACP,GAAK,EAAA,QAAA;AAAA,MACL,GAAA,EAAK,CAAG,EAAA,MAAA,CAAO,aAAa,CAAA,qBAAA,CAAA;AAAA,MAC5B,KAAA,EAAO,OAAO,eAAgB,CAAA,WAAA;AAAA,MAC9B,SAAA;AAAA,MACA,YAAc,EAAA;AAAA,QACZ,CAAC,MAAA,CAAO,qBAAqB,GAAG,OAAO,eAAgB,CAAA;AAAA;AACzD,KACD,CAAA;AAED,IAAA,IAAI,QAAS,CAAA,aAAA,CAAc,UAAW,CAAA,MAAA,IAAU,CAAG,EAAA;AACjD,MAAA,MAAM,IAAI,UAAA;AAAA,QACR,2BAA2B,QAAS,CAAA,aAAA,CAAc,UAAW,CAAA,CAAC,GAAG,OAAO,CAAA;AAAA,OAC1E;AAAA;AAEF,IAAA,eAAA;AAAA,MACE,CAAwC,qCAAA,EAAA,QAAA,CAAS,aAAc,CAAA,KAAA,CAAM,EAAE,CAAA,CAAA,CAAA;AAAA,MACvE;AAAA,KACF;AAEA,IAAA,OAAO,QAAS,CAAA,aAAA;AAAA,WACT,KAAO,EAAA;AACd,IAAA,YAAA,CAAa,KAAK,CAAA;AAElB,IAAM,MAAA,KAAA;AAAA;AAEV","file":"build-initiate.js","sourcesContent":["import {graphqlRequest} from '@shopify/cli-kit/node/api/graphql';\nimport {AbortError} from '@shopify/cli-kit/node/error';\nimport {Logger, outputCompleted} from '@shopify/cli-kit/node/output';\n\nimport {errorHandler, Header} from '../utils/utils.js';\n\nimport {EnvironmentInput, DeploymentConfig} from './types.js';\nimport {\n BuildInitiateQuery,\n BuildInitiateQueryData,\n BuildInitiateResponse,\n} from './graphql/build-initiate.js';\n\ninterface BuildInitiateOptions {\n config: DeploymentConfig;\n logger: Logger;\n environment?: EnvironmentInput;\n labels?: string[];\n}\n\nexport async function buildInitiate(\n options: BuildInitiateOptions,\n): Promise<BuildInitiateResponse> {\n const {config, logger, environment, labels = []} = options;\n\n const variables = {\n environment,\n labels,\n };\n\n try {\n const response: BuildInitiateQueryData = await graphqlRequest({\n query: BuildInitiateQuery,\n api: 'Oxygen',\n url: `${config.deploymentUrl}/api/v2/admin/graphql`,\n token: config.deploymentToken.accessToken,\n variables,\n addedHeaders: {\n [Header.OxygenNamespaceHandle]: config.deploymentToken.namespace,\n },\n });\n\n if (response.buildInitiate.userErrors.length >= 1) {\n throw new AbortError(\n `Failed to create build. ${response.buildInitiate.userErrors[0]?.message}`,\n );\n }\n outputCompleted(\n `Build initiated successfully with id ${response.buildInitiate.build.id}.`,\n logger,\n );\n\n return response.buildInitiate;\n } catch (error) {\n errorHandler(error);\n\n throw error;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/deploy/build-project.ts"],"names":[],"mappings":";;;;;AAeA,eAAsB,aAAa,OAA8B,EAAA;AAC/D,EAAA,MAAM,EAAC,MAAA,EAAQ,SAAW,EAAA,KAAA,EAAS,GAAA,OAAA,CAAA;AACnC,EAAA,MAAM,UAAU,UAAW,EAAA,CAAA;AAE3B,EAAA,IAAI,OAAO,aAAe,EAAA;AACxB,IAAM,MAAA,SAAA,GAAY,YAAY,GAAI,EAAA,CAAA;AAClC,IAAA,OAAO,KACJ,CAAA,aAAA,CAAc,SAAS,CAAA,CACvB,KAAK,MAAM;AACV,MAAA,OAAA,CAAQ,eAAiB,EAAA,GAAA;AAAA,QACvB,UAAW,CAAA,SAAA;AAAA,QACX,WAAA,CAAY,KAAQ,GAAA,SAAA;AAAA,OACtB,CAAA;AAAA,KACD,CAAA,CACA,KAAM,CAAA,CAAC,KAAU,KAAA;AAChB,MAAA,MAAM,IAAI,KAAA,CAAM,CAAqC,kCAAA,EAAA,KAAK,CAAE,CAAA,CAAA,CAAA;AAAA,KAC7D,CAAA,CAAA;AAAA,GACL;AAEA,EAAA,MAAM,uBAAuB,SACzB,GAAA,EAAC,uBAAyB,EAAA,SAAA,KAC1B,EAAC,CAAA;AACL,EAAI,IAAA;AACF,IAAA,MAAM,IAAI,OAAA,CAAQ,CAAC,OAAA,EAAS,MAAW,KAAA;AACrC,MAAA,IAAI,MAAS,GAAA,EAAA,CAAA;AACb,MAAM,MAAA,YAAA,GAAe,IAAI,WAAY,EAAA,CAAA;AAErC,MAAa,YAAA,CAAA,EAAA,CAAG,MAAQ,EAAA,CAAC,KAAU,KAAA;AACjC,QAAU,MAAA,IAAA,KAAA,CAAA;AACV,QAAQ,OAAA,CAAA,MAAA,CAAO,MAAM,KAAK,CAAA,CAAA;AAAA,OAC3B,CAAA,CAAA;AAED,MAAM,MAAA,SAAA,GAAY,YAAY,GAAI,EAAA,CAAA;AAClC,MAAA,MAAM,YAAe,GAAA,KAAA,CAAM,MAAO,CAAA,YAAA,EAAe,EAAI,EAAA;AAAA,QACnD,KAAO,EAAA,CAAC,SAAW,EAAA,MAAA,EAAQ,MAAM,CAAA;AAAA,QACjC,GAAK,EAAA;AAAA;AAAA,UAEH,GAAG,OAAQ,CAAA,GAAA;AAAA,UACX,GAAG,oBAAA;AAAA,SACL;AAAA,QACA,KAAK,MAAO,CAAA,QAAA;AAAA,QACZ,KAAO,EAAA,IAAA;AAAA,OACR,CAAA,CAAA;AAED,MAAC,YAAA,CAAa,MAA4B,EAAA,IAAA,CAAK,YAAY,CAAA,CAAA;AAC3D,MAAC,YAAA,CAAa,MAA4B,EAAA,IAAA,CAAK,YAAY,CAAA,CAAA;AAE3D,MAAa,YAAA,CAAA,EAAA,CAAG,OAAS,EAAA,CAAC,IAAS,KAAA;AACjC,QAAA,IAAI,SAAS,CAAG,EAAA;AACd,UAAA,OAAA,CAAQ,eAAiB,EAAA,GAAA;AAAA,YACvB,UAAW,CAAA,SAAA;AAAA,YACX,WAAA,CAAY,KAAQ,GAAA,SAAA;AAAA,WACtB,CAAA;AAAA,SACF;AACA,QAAA,OAAA,EAAS,YAAY,cAAgB,EAAA;AAAA,UACnC,SAAS,MAAO,CAAA,YAAA;AAAA,UAChB,MAAA;AAAA,UACA,IAAA;AAAA,SACD,CAAA,CAAA;AACD,QAAA,IAAI,SAAS,CAAG,EAAA;AACd,UAAA,MAAA,CAAO,IAAI,CAAA,CAAA;AACX,UAAA,OAAA;AAAA,SACF;AACA,QAAA,OAAA,CAAQ,IAAI,CAAA,CAAA;AAAA,OACb,CAAA,CAAA;AAAA,KACF,CAAA,CAAA;AAAA,WACM,KAAO,EAAA;AACd,IAAA,MAAM,IAAI,KAAA,CAAM,CAAiC,8BAAA,EAAA,KAAK,CAAE,CAAA,CAAA,CAAA;AAAA,GAC1D;AACF","file":"build-project.js","sourcesContent":["import {spawn} from 'child_process';\nimport {PassThrough, Readable} from 'stream';\n\nimport {getBugsnag} from '../utils/bugsnag.js';\nimport {MetricsExporter, MetricName} from '../utils/metrics-exporter.js';\n\nimport {DeploymentConfig, DeploymentHooks} from './types.js';\n\ninterface BuildProjectOptions {\n config: DeploymentConfig;\n assetPath?: string;\n hooks?: DeploymentHooks;\n metricsExporter?: MetricsExporter;\n}\n\nexport async function buildProject(options: BuildProjectOptions) {\n const {config, assetPath, hooks} = options;\n const Bugsnag = getBugsnag();\n\n if (hooks?.buildFunction) {\n const startTime = performance.now();\n return hooks\n .buildFunction(assetPath)\n .then(() => {\n options.metricsExporter?.add(\n MetricName.BuildTime,\n performance.now() - startTime,\n );\n })\n .catch((error) => {\n throw new Error(`Build function failed with error: ${error}`);\n });\n }\n\n const assetPathEnvironment = assetPath\n ? {HYDROGEN_ASSET_BASE_URL: assetPath}\n : {};\n try {\n await new Promise((resolve, reject) => {\n let stderr = '';\n const stderrStream = new PassThrough();\n\n stderrStream.on('data', (chunk) => {\n stderr += chunk;\n process.stderr.write(chunk);\n });\n\n const startTime = performance.now();\n const buildCommand = spawn(config.buildCommand!, [], {\n stdio: ['inherit', 'pipe', 'pipe'],\n env: {\n // eslint-disable-next-line no-process-env\n ...process.env,\n ...assetPathEnvironment,\n },\n cwd: config.rootPath,\n shell: true,\n });\n\n (buildCommand.stderr as Readable | null)?.pipe(stderrStream);\n (buildCommand.stdout as Readable | null)?.pipe(stderrStream);\n\n buildCommand.on('close', (code) => {\n if (code === 0) {\n options.metricsExporter?.add(\n MetricName.BuildTime,\n performance.now() - startTime,\n );\n }\n Bugsnag?.addMetadata('buildCommand', {\n command: config.buildCommand,\n stderr,\n code,\n });\n if (code !== 0) {\n reject(code);\n return;\n }\n resolve(code);\n });\n });\n } catch (error) {\n throw new Error(`Build failed with error code: ${error}`);\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/deploy/build-project.ts"],"names":[],"mappings":";;;;;AAeA,eAAsB,aAAa,OAA8B,EAAA;AAC/D,EAAA,MAAM,EAAC,MAAA,EAAQ,SAAW,EAAA,KAAA,EAAS,GAAA,OAAA;AACnC,EAAA,MAAM,UAAU,UAAW,EAAA;AAE3B,EAAA,IAAI,OAAO,aAAe,EAAA;AACxB,IAAM,MAAA,SAAA,GAAY,YAAY,GAAI,EAAA;AAClC,IAAA,OAAO,KACJ,CAAA,aAAA,CAAc,SAAS,CAAA,CACvB,KAAK,MAAM;AACV,MAAA,OAAA,CAAQ,eAAiB,EAAA,GAAA;AAAA,QACvB,UAAW,CAAA,SAAA;AAAA,QACX,WAAA,CAAY,KAAQ,GAAA;AAAA,OACtB;AAAA,KACD,CAAA,CACA,KAAM,CAAA,CAAC,KAAU,KAAA;AAChB,MAAA,MAAM,IAAI,KAAA,CAAM,CAAqC,kCAAA,EAAA,KAAK,CAAE,CAAA,CAAA;AAAA,KAC7D,CAAA;AAAA;AAGL,EAAA,MAAM,uBAAuB,SACzB,GAAA,EAAC,uBAAyB,EAAA,SAAA,KAC1B,EAAC;AACL,EAAI,IAAA;AACF,IAAA,MAAM,IAAI,OAAA,CAAQ,CAAC,OAAA,EAAS,MAAW,KAAA;AACrC,MAAA,IAAI,MAAS,GAAA,EAAA;AACb,MAAM,MAAA,YAAA,GAAe,IAAI,WAAY,EAAA;AAErC,MAAa,YAAA,CAAA,EAAA,CAAG,MAAQ,EAAA,CAAC,KAAU,KAAA;AACjC,QAAU,MAAA,IAAA,KAAA;AACV,QAAQ,OAAA,CAAA,MAAA,CAAO,MAAM,KAAK,CAAA;AAAA,OAC3B,CAAA;AAED,MAAM,MAAA,SAAA,GAAY,YAAY,GAAI,EAAA;AAClC,MAAA,MAAM,YAAe,GAAA,KAAA,CAAM,MAAO,CAAA,YAAA,EAAe,EAAI,EAAA;AAAA,QACnD,KAAO,EAAA,CAAC,SAAW,EAAA,MAAA,EAAQ,MAAM,CAAA;AAAA,QACjC,GAAK,EAAA;AAAA;AAAA,UAEH,GAAG,OAAQ,CAAA,GAAA;AAAA,UACX,GAAG;AAAA,SACL;AAAA,QACA,KAAK,MAAO,CAAA,QAAA;AAAA,QACZ,KAAO,EAAA;AAAA,OACR,CAAA;AAED,MAAC,YAAA,CAAa,MAA4B,EAAA,IAAA,CAAK,YAAY,CAAA;AAC3D,MAAC,YAAA,CAAa,MAA4B,EAAA,IAAA,CAAK,YAAY,CAAA;AAE3D,MAAa,YAAA,CAAA,EAAA,CAAG,OAAS,EAAA,CAAC,IAAS,KAAA;AACjC,QAAA,IAAI,SAAS,CAAG,EAAA;AACd,UAAA,OAAA,CAAQ,eAAiB,EAAA,GAAA;AAAA,YACvB,UAAW,CAAA,SAAA;AAAA,YACX,WAAA,CAAY,KAAQ,GAAA;AAAA,WACtB;AAAA;AAEF,QAAA,OAAA,EAAS,YAAY,cAAgB,EAAA;AAAA,UACnC,SAAS,MAAO,CAAA,YAAA;AAAA,UAChB,MAAA;AAAA,UACA;AAAA,SACD,CAAA;AACD,QAAA,IAAI,SAAS,CAAG,EAAA;AACd,UAAA,MAAA,CAAO,IAAI,CAAA;AACX,UAAA;AAAA;AAEF,QAAA,OAAA,CAAQ,IAAI,CAAA;AAAA,OACb,CAAA;AAAA,KACF,CAAA;AAAA,WACM,KAAO,EAAA;AACd,IAAA,MAAM,IAAI,KAAA,CAAM,CAAiC,8BAAA,EAAA,KAAK,CAAE,CAAA,CAAA;AAAA;AAE5D","file":"build-project.js","sourcesContent":["import {spawn} from 'child_process';\nimport {PassThrough, Readable} from 'stream';\n\nimport {getBugsnag} from '../utils/bugsnag.js';\nimport {MetricsExporter, MetricName} from '../utils/metrics-exporter.js';\n\nimport {DeploymentConfig, DeploymentHooks} from './types.js';\n\ninterface BuildProjectOptions {\n config: DeploymentConfig;\n assetPath?: string;\n hooks?: DeploymentHooks;\n metricsExporter?: MetricsExporter;\n}\n\nexport async function buildProject(options: BuildProjectOptions) {\n const {config, assetPath, hooks} = options;\n const Bugsnag = getBugsnag();\n\n if (hooks?.buildFunction) {\n const startTime = performance.now();\n return hooks\n .buildFunction(assetPath)\n .then(() => {\n options.metricsExporter?.add(\n MetricName.BuildTime,\n performance.now() - startTime,\n );\n })\n .catch((error) => {\n throw new Error(`Build function failed with error: ${error}`);\n });\n }\n\n const assetPathEnvironment = assetPath\n ? {HYDROGEN_ASSET_BASE_URL: assetPath}\n : {};\n try {\n await new Promise((resolve, reject) => {\n let stderr = '';\n const stderrStream = new PassThrough();\n\n stderrStream.on('data', (chunk) => {\n stderr += chunk;\n process.stderr.write(chunk);\n });\n\n const startTime = performance.now();\n const buildCommand = spawn(config.buildCommand!, [], {\n stdio: ['inherit', 'pipe', 'pipe'],\n env: {\n // eslint-disable-next-line no-process-env\n ...process.env,\n ...assetPathEnvironment,\n },\n cwd: config.rootPath,\n shell: true,\n });\n\n (buildCommand.stderr as Readable | null)?.pipe(stderrStream);\n (buildCommand.stdout as Readable | null)?.pipe(stderrStream);\n\n buildCommand.on('close', (code) => {\n if (code === 0) {\n options.metricsExporter?.add(\n MetricName.BuildTime,\n performance.now() - startTime,\n );\n }\n Bugsnag?.addMetadata('buildCommand', {\n command: config.buildCommand,\n stderr,\n code,\n });\n if (code !== 0) {\n reject(code);\n return;\n }\n resolve(code);\n });\n });\n } catch (error) {\n throw new Error(`Build failed with error code: ${error}`);\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/deploy/deployment-cancel.ts"],"names":[],"mappings":";;;;;;AAoBA,eAAsB,iBACpB,OACmC,EAAA;AACnC,EAAA,MAAM,EAAC,MAAA,EAAQ,YAAc,EAAA,MAAA,EAAQ,QAAU,GAAA,OAAA,CAAA;AAE/C,EAAA,MAAM,SAAY,GAAA;AAAA,IAChB,YAAA;AAAA,IACA,MAAA;AAAA,GACF,CAAA;AAEA,EAAI,IAAA;AACF,IAAM,MAAA,QAAA,GAAsC,MAAM,cAAe,CAAA;AAAA,MAC/D,KAAO,EAAA,qBAAA;AAAA,MACP,GAAK,EAAA,QAAA;AAAA,MACL,GAAA,EAAK,CAAG,EAAA,MAAA,CAAO,aAAa,CAAA,qBAAA,CAAA;AAAA,MAC5B,KAAA,EAAO,OAAO,eAAgB,CAAA,WAAA;AAAA,MAC9B,SAAA;AAAA,MACA,YAAc,EAAA;AAAA,QACZ,CAAC,MAAA,CAAO,qBAAqB,GAAG,OAAO,eAAgB,CAAA,SAAA;AAAA,OACzD;AAAA,KACD,CAAA,CAAA;AAED,IAAA,IAAI,QAAS,CAAA,gBAAA,CAAiB,UAAW,CAAA,MAAA,IAAU,CAAG,EAAA;AACpD,MAAA,MAAM,IAAI,UAAA;AAAA,QACR,QAAS,CAAA,gBAAA,CAAiB,UAAW,CAAA,CAAC,GAAG,OAAW,IAAA,EAAA;AAAA,OACtD,CAAA;AAAA,KACF;AACA,IAAW,UAAA,CAAA,CAAA,mBAAA,EAAsB,YAAY,CAAA,WAAA,CAAA,EAAe,MAAM,CAAA,CAAA;AAElE,IAAA,OAAO,QAAS,CAAA,gBAAA,CAAA;AAAA,WACT,KAAO,EAAA;AACd,IAAA,YAAA,CAAa,KAAK,CAAA,CAAA;AAElB,IAAM,MAAA,KAAA,CAAA;AAAA,GACR;AACF","file":"deployment-cancel.js","sourcesContent":["import {graphqlRequest} from '@shopify/cli-kit/node/api/graphql';\nimport {AbortError} from '@shopify/cli-kit/node/error';\nimport {Logger, outputInfo} from '@shopify/cli-kit/node/output';\n\nimport {errorHandler, Header} from '../utils/utils.js';\n\nimport type {DeploymentConfig} from './types.js';\nimport {\n DeploymentCancelQuery,\n DeploymentCancelQueryData,\n DeploymentCancelResponse,\n} from './graphql/deployment-cancel.js';\n\ninterface DeploymentCancelOptions {\n config: DeploymentConfig;\n deploymentId: string;\n reason: string;\n logger: Logger;\n}\n\nexport async function deploymentCancel(\n options: DeploymentCancelOptions,\n): Promise<DeploymentCancelResponse> {\n const {config, deploymentId, reason, logger} = options;\n\n const variables = {\n deploymentId,\n reason,\n };\n\n try {\n const response: DeploymentCancelQueryData = await graphqlRequest({\n query: DeploymentCancelQuery,\n api: 'Oxygen',\n url: `${config.deploymentUrl}/api/v2/admin/graphql`,\n token: config.deploymentToken.accessToken,\n variables,\n addedHeaders: {\n [Header.OxygenNamespaceHandle]: config.deploymentToken.namespace,\n },\n });\n\n if (response.deploymentCancel.userErrors.length >= 1) {\n throw new AbortError(\n response.deploymentCancel.userErrors[0]?.message || '',\n );\n }\n outputInfo(`Deployment with id ${deploymentId} cancelled.`, logger);\n\n return response.deploymentCancel;\n } catch (error) {\n errorHandler(error);\n\n throw error;\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/deploy/deployment-cancel.ts"],"names":[],"mappings":";;;;;;AAoBA,eAAsB,iBACpB,OACmC,EAAA;AACnC,EAAA,MAAM,EAAC,MAAA,EAAQ,YAAc,EAAA,MAAA,EAAQ,QAAU,GAAA,OAAA;AAE/C,EAAA,MAAM,SAAY,GAAA;AAAA,IAChB,YAAA;AAAA,IACA;AAAA,GACF;AAEA,EAAI,IAAA;AACF,IAAM,MAAA,QAAA,GAAsC,MAAM,cAAe,CAAA;AAAA,MAC/D,KAAO,EAAA,qBAAA;AAAA,MACP,GAAK,EAAA,QAAA;AAAA,MACL,GAAA,EAAK,CAAG,EAAA,MAAA,CAAO,aAAa,CAAA,qBAAA,CAAA;AAAA,MAC5B,KAAA,EAAO,OAAO,eAAgB,CAAA,WAAA;AAAA,MAC9B,SAAA;AAAA,MACA,YAAc,EAAA;AAAA,QACZ,CAAC,MAAA,CAAO,qBAAqB,GAAG,OAAO,eAAgB,CAAA;AAAA;AACzD,KACD,CAAA;AAED,IAAA,IAAI,QAAS,CAAA,gBAAA,CAAiB,UAAW,CAAA,MAAA,IAAU,CAAG,EAAA;AACpD,MAAA,MAAM,IAAI,UAAA;AAAA,QACR,QAAS,CAAA,gBAAA,CAAiB,UAAW,CAAA,CAAC,GAAG,OAAW,IAAA;AAAA,OACtD;AAAA;AAEF,IAAW,UAAA,CAAA,CAAA,mBAAA,EAAsB,YAAY,CAAA,WAAA,CAAA,EAAe,MAAM,CAAA;AAElE,IAAA,OAAO,QAAS,CAAA,gBAAA;AAAA,WACT,KAAO,EAAA;AACd,IAAA,YAAA,CAAa,KAAK,CAAA;AAElB,IAAM,MAAA,KAAA;AAAA;AAEV","file":"deployment-cancel.js","sourcesContent":["import {graphqlRequest} from '@shopify/cli-kit/node/api/graphql';\nimport {AbortError} from '@shopify/cli-kit/node/error';\nimport {Logger, outputInfo} from '@shopify/cli-kit/node/output';\n\nimport {errorHandler, Header} from '../utils/utils.js';\n\nimport type {DeploymentConfig} from './types.js';\nimport {\n DeploymentCancelQuery,\n DeploymentCancelQueryData,\n DeploymentCancelResponse,\n} from './graphql/deployment-cancel.js';\n\ninterface DeploymentCancelOptions {\n config: DeploymentConfig;\n deploymentId: string;\n reason: string;\n logger: Logger;\n}\n\nexport async function deploymentCancel(\n options: DeploymentCancelOptions,\n): Promise<DeploymentCancelResponse> {\n const {config, deploymentId, reason, logger} = options;\n\n const variables = {\n deploymentId,\n reason,\n };\n\n try {\n const response: DeploymentCancelQueryData = await graphqlRequest({\n query: DeploymentCancelQuery,\n api: 'Oxygen',\n url: `${config.deploymentUrl}/api/v2/admin/graphql`,\n token: config.deploymentToken.accessToken,\n variables,\n addedHeaders: {\n [Header.OxygenNamespaceHandle]: config.deploymentToken.namespace,\n },\n });\n\n if (response.deploymentCancel.userErrors.length >= 1) {\n throw new AbortError(\n response.deploymentCancel.userErrors[0]?.message || '',\n );\n }\n outputInfo(`Deployment with id ${deploymentId} cancelled.`, logger);\n\n return response.deploymentCancel;\n } catch (error) {\n errorHandler(error);\n\n throw error;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/deploy/deployment-complete.ts"],"names":[],"mappings":";;;;;AAiBA,eAAsB,kBAAA,CACpB,QACA,YACqC,EAAA;AACrC,EAAA,MAAM,SAA8C,GAAA;AAAA,IAClD,YAAA;AAAA,IACA,yBAAyB,MAAO,CAAA,uBAAA;AAAA,GAClC,CAAA;AAEA,EAAA,IAAI,OAAO,uBAAyB,EAAA;AAClC,IAAA,SAAA,CAAU,uBAA0B,GAAA,4BAAA;AAAA,MAClC,MAAO,CAAA,uBAAA;AAAA,KACT,CAAA;AAAA,GACF,MAAA,IAAW,OAAO,uBAAyB,EAAA;AACzC,IAAA,MAAM,IAAI,UAAA;AAAA,MACR,2EAAA;AAAA,KACF,CAAA;AAAA,GACF;AAEA,EAAA,IAAI,OAAO,8BAAgC,EAAA;AACzC,IAAA,SAAA,CAAU,uBAAuB,MAAO,CAAA,8BAAA,CAAA;AAAA,GAC1C;AAEA,EAAI,IAAA;AACF,IAAM,MAAA,QAAA,GAAwC,MAAM,cAAe,CAAA;AAAA,MACjE,KAAO,EAAA,uBAAA;AAAA,MACP,GAAK,EAAA,QAAA;AAAA,MACL,GAAA,EAAK,CAAG,EAAA,MAAA,CAAO,aAAa,CAAA,qBAAA,CAAA;AAAA,MAC5B,KAAA,EAAO,OAAO,eAAgB,CAAA,WAAA;AAAA,MAC9B,SAAA;AAAA,MACA,YAAc,EAAA;AAAA,QACZ,CAAC,MAAA,CAAO,qBAAqB,GAAG,OAAO,eAAgB,CAAA,SAAA;AAAA,OACzD;AAAA,KACD,CAAA,CAAA;AAED,IAAA,IAAI,QAAS,CAAA,kBAAA,CAAmB,UAAW,CAAA,MAAA,IAAU,CAAG,EAAA;AACtD,MAAA,MAAM,IAAI,UAAA;AAAA,QACR,kCAAkC,QAAS,CAAA,kBAAA,CAAmB,UAAW,CAAA,CAAC,GAAG,OAAO,CAAA,CAAA;AAAA,OACtF,CAAA;AAAA,KACF;AAEA,IAAA,OAAO,QAAS,CAAA,kBAAA,CAAA;AAAA,WACT,KAAO,EAAA;AACd,IAAA,YAAA,CAAa,KAAK,CAAA,CAAA;AAElB,IAAM,MAAA,KAAA,CAAA;AAAA,GACR;AACF","file":"deployment-complete.js","sourcesContent":["import {graphqlRequest} from '@shopify/cli-kit/node/api/graphql';\nimport {AbortError} from '@shopify/cli-kit/node/error';\n\nimport {\n authBypassTokenDurationParse,\n errorHandler,\n Header,\n} from '../utils/utils.js';\n\nimport {\n DeploymentCompleteQuery,\n DeploymentCompleteQueryVariables,\n DeploymentCompleteQueryData,\n DeploymentCompleteResponse,\n} from './graphql/deployment-complete.js';\nimport type {DeploymentConfig} from './types.js';\n\nexport async function deploymentComplete(\n config: DeploymentConfig,\n deploymentId: string,\n): Promise<DeploymentCompleteResponse> {\n const variables: DeploymentCompleteQueryVariables = {\n deploymentId,\n generateAuthBypassToken: config.generateAuthBypassToken,\n };\n\n if (config.generateAuthBypassToken) {\n variables.authBypassTokenDuration = authBypassTokenDurationParse(\n config.authBypassTokenDuration,\n );\n } else if (config.authBypassTokenDuration) {\n throw new AbortError(\n 'authBypassTokenDuration is set but generateAuthBypassToken is not enabled',\n );\n }\n\n if (config.overriddenEnvironmentVariables) {\n variables.environmentVariables = config.overriddenEnvironmentVariables;\n }\n\n try {\n const response: DeploymentCompleteQueryData = await graphqlRequest({\n query: DeploymentCompleteQuery,\n api: 'Oxygen',\n url: `${config.deploymentUrl}/api/v2/admin/graphql`,\n token: config.deploymentToken.accessToken,\n variables,\n addedHeaders: {\n [Header.OxygenNamespaceHandle]: config.deploymentToken.namespace,\n },\n });\n\n if (response.deploymentComplete.userErrors.length >= 1) {\n throw new AbortError(\n `Failed to complete deployment: ${response.deploymentComplete.userErrors[0]?.message}`,\n );\n }\n\n return response.deploymentComplete;\n } catch (error) {\n errorHandler(error);\n\n throw error;\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/deploy/deployment-complete.ts"],"names":[],"mappings":";;;;;AAiBA,eAAsB,kBAAA,CACpB,QACA,YACqC,EAAA;AACrC,EAAA,MAAM,SAA8C,GAAA;AAAA,IAClD,YAAA;AAAA,IACA,yBAAyB,MAAO,CAAA;AAAA,GAClC;AAEA,EAAA,IAAI,OAAO,uBAAyB,EAAA;AAClC,IAAA,SAAA,CAAU,uBAA0B,GAAA,4BAAA;AAAA,MAClC,MAAO,CAAA;AAAA,KACT;AAAA,GACF,MAAA,IAAW,OAAO,uBAAyB,EAAA;AACzC,IAAA,MAAM,IAAI,UAAA;AAAA,MACR;AAAA,KACF;AAAA;AAGF,EAAA,IAAI,OAAO,8BAAgC,EAAA;AACzC,IAAA,SAAA,CAAU,uBAAuB,MAAO,CAAA,8BAAA;AAAA;AAG1C,EAAI,IAAA;AACF,IAAM,MAAA,QAAA,GAAwC,MAAM,cAAe,CAAA;AAAA,MACjE,KAAO,EAAA,uBAAA;AAAA,MACP,GAAK,EAAA,QAAA;AAAA,MACL,GAAA,EAAK,CAAG,EAAA,MAAA,CAAO,aAAa,CAAA,qBAAA,CAAA;AAAA,MAC5B,KAAA,EAAO,OAAO,eAAgB,CAAA,WAAA;AAAA,MAC9B,SAAA;AAAA,MACA,YAAc,EAAA;AAAA,QACZ,CAAC,MAAA,CAAO,qBAAqB,GAAG,OAAO,eAAgB,CAAA;AAAA;AACzD,KACD,CAAA;AAED,IAAA,IAAI,QAAS,CAAA,kBAAA,CAAmB,UAAW,CAAA,MAAA,IAAU,CAAG,EAAA;AACtD,MAAA,MAAM,IAAI,UAAA;AAAA,QACR,kCAAkC,QAAS,CAAA,kBAAA,CAAmB,UAAW,CAAA,CAAC,GAAG,OAAO,CAAA;AAAA,OACtF;AAAA;AAGF,IAAA,OAAO,QAAS,CAAA,kBAAA;AAAA,WACT,KAAO,EAAA;AACd,IAAA,YAAA,CAAa,KAAK,CAAA;AAElB,IAAM,MAAA,KAAA;AAAA;AAEV","file":"deployment-complete.js","sourcesContent":["import {graphqlRequest} from '@shopify/cli-kit/node/api/graphql';\nimport {AbortError} from '@shopify/cli-kit/node/error';\n\nimport {\n authBypassTokenDurationParse,\n errorHandler,\n Header,\n} from '../utils/utils.js';\n\nimport {\n DeploymentCompleteQuery,\n DeploymentCompleteQueryVariables,\n DeploymentCompleteQueryData,\n DeploymentCompleteResponse,\n} from './graphql/deployment-complete.js';\nimport type {DeploymentConfig} from './types.js';\n\nexport async function deploymentComplete(\n config: DeploymentConfig,\n deploymentId: string,\n): Promise<DeploymentCompleteResponse> {\n const variables: DeploymentCompleteQueryVariables = {\n deploymentId,\n generateAuthBypassToken: config.generateAuthBypassToken,\n };\n\n if (config.generateAuthBypassToken) {\n variables.authBypassTokenDuration = authBypassTokenDurationParse(\n config.authBypassTokenDuration,\n );\n } else if (config.authBypassTokenDuration) {\n throw new AbortError(\n 'authBypassTokenDuration is set but generateAuthBypassToken is not enabled',\n );\n }\n\n if (config.overriddenEnvironmentVariables) {\n variables.environmentVariables = config.overriddenEnvironmentVariables;\n }\n\n try {\n const response: DeploymentCompleteQueryData = await graphqlRequest({\n query: DeploymentCompleteQuery,\n api: 'Oxygen',\n url: `${config.deploymentUrl}/api/v2/admin/graphql`,\n token: config.deploymentToken.accessToken,\n variables,\n addedHeaders: {\n [Header.OxygenNamespaceHandle]: config.deploymentToken.namespace,\n },\n });\n\n if (response.deploymentComplete.userErrors.length >= 1) {\n throw new AbortError(\n `Failed to complete deployment: ${response.deploymentComplete.userErrors[0]?.message}`,\n );\n }\n\n return response.deploymentComplete;\n } catch (error) {\n errorHandler(error);\n\n throw error;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/deploy/deployment-initiate.ts"],"names":[],"mappings":";;;;;;AAqCA,eAAsB,mBACpB,OACqC,EAAA;AACrC,EAAA,MAAM,EAAC,MAAA,EAAQ,KAAO,EAAA,MAAA,EAAU,GAAA,OAAA,CAAA;AAEhC,EAAA,MAAM,SAAY,GAAA;AAAA,IAChB,SAAS,KAAM,CAAA,OAAA;AAAA,IACf,aAAa,KAAM,CAAA,WAAA;AAAA,IACnB,OAAO,KAAM,CAAA,QAAA;AAAA,IACb,QAAQ,KAAM,CAAA,MAAA;AAAA,GAChB,CAAA;AAEA,EAAI,IAAA;AACF,IAAM,MAAA,QAAA,GAAwC,MAAM,cAAe,CAAA;AAAA,MACjE,KAAO,EAAA,uBAAA;AAAA,MACP,GAAK,EAAA,QAAA;AAAA,MACL,GAAA,EAAK,CAAG,EAAA,MAAA,CAAO,aAAa,CAAA,qBAAA,CAAA;AAAA,MAC5B,KAAA,EAAO,OAAO,eAAgB,CAAA,WAAA;AAAA,MAC9B,SAAA;AAAA,MACA,YAAc,EAAA;AAAA,QACZ,CAAC,MAAA,CAAO,qBAAqB,GAAG,OAAO,eAAgB,CAAA,SAAA;AAAA,OACzD;AAAA,KACD,CAAA,CAAA;AAED,IAAA,IAAI,QAAS,CAAA,kBAAA,CAAmB,UAAW,CAAA,MAAA,IAAU,CAAG,EAAA;AACtD,MAAA,MAAM,IAAI,UAAA;AAAA,QACR,gCAAgC,QAAS,CAAA,kBAAA,CAAmB,UAAW,CAAA,CAAC,GAAG,OAAO,CAAA,CAAA;AAAA,OACpF,CAAA;AAAA,KACF;AAEA,IAAA,eAAA;AAAA,MACE,CAAyB,sBAAA,EAAA,QAAA,CAAS,kBAAmB,CAAA,iBAAA,CAAkB,MAAM,CAAA,iBAAA,CAAA;AAAA,MAC7E,MAAA;AAAA,KACF,CAAA;AACA,IAAA,OAAO,QAAS,CAAA,kBAAA,CAAA;AAAA,WACT,KAAO,EAAA;AACd,IAAA,YAAA,CAAa,KAAK,CAAA,CAAA;AAElB,IAAM,MAAA,KAAA,CAAA;AAAA,GACR;AACF","file":"deployment-initiate.js","sourcesContent":["import {graphqlRequest} from '@shopify/cli-kit/node/api/graphql';\nimport {AbortError} from '@shopify/cli-kit/node/error';\nimport {Logger, outputCompleted} from '@shopify/cli-kit/node/output';\n\nimport {errorHandler, Header} from '../utils/utils.js';\n\nimport {\n DeploymentConfig,\n DeploymentManifestFile,\n EnvironmentInput,\n} from './types.js';\nimport {\n DeploymentInitiateQuery,\n DeploymentInitiateQueryData,\n DeploymentInitiateResponse,\n} from './graphql/deployment-initiate.js';\n\ntype DeploymentInitiateInput =\n | {\n buildId: string;\n environment?: never;\n labels?: string[];\n manifest: DeploymentManifestFile[];\n }\n | {\n environment?: EnvironmentInput;\n buildId?: never;\n labels?: string[];\n manifest: DeploymentManifestFile[];\n };\n\ninterface DeploymentInitiateOptions {\n config: DeploymentConfig;\n input: DeploymentInitiateInput;\n logger: Logger;\n}\n\nexport async function deploymentInitiate(\n options: DeploymentInitiateOptions,\n): Promise<DeploymentInitiateResponse> {\n const {config, input, logger} = options;\n\n const variables = {\n buildId: input.buildId,\n environment: input.environment,\n files: input.manifest,\n labels: input.labels,\n };\n\n try {\n const response: DeploymentInitiateQueryData = await graphqlRequest({\n query: DeploymentInitiateQuery,\n api: 'Oxygen',\n url: `${config.deploymentUrl}/api/v2/admin/graphql`,\n token: config.deploymentToken.accessToken,\n variables,\n addedHeaders: {\n [Header.OxygenNamespaceHandle]: config.deploymentToken.namespace,\n },\n });\n\n if (response.deploymentInitiate.userErrors.length >= 1) {\n throw new AbortError(\n `Failed to create deployment. ${response.deploymentInitiate.userErrors[0]?.message}`,\n );\n }\n\n outputCompleted(\n `Deployment initiated, ${response.deploymentInitiate.deploymentTargets.length} files to upload.`,\n logger,\n );\n return response.deploymentInitiate;\n } catch (error) {\n errorHandler(error);\n\n throw error;\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/deploy/deployment-initiate.ts"],"names":[],"mappings":";;;;;;AAqCA,eAAsB,mBACpB,OACqC,EAAA;AACrC,EAAA,MAAM,EAAC,MAAA,EAAQ,KAAO,EAAA,MAAA,EAAU,GAAA,OAAA;AAEhC,EAAA,MAAM,SAAY,GAAA;AAAA,IAChB,SAAS,KAAM,CAAA,OAAA;AAAA,IACf,aAAa,KAAM,CAAA,WAAA;AAAA,IACnB,OAAO,KAAM,CAAA,QAAA;AAAA,IACb,QAAQ,KAAM,CAAA;AAAA,GAChB;AAEA,EAAI,IAAA;AACF,IAAM,MAAA,QAAA,GAAwC,MAAM,cAAe,CAAA;AAAA,MACjE,KAAO,EAAA,uBAAA;AAAA,MACP,GAAK,EAAA,QAAA;AAAA,MACL,GAAA,EAAK,CAAG,EAAA,MAAA,CAAO,aAAa,CAAA,qBAAA,CAAA;AAAA,MAC5B,KAAA,EAAO,OAAO,eAAgB,CAAA,WAAA;AAAA,MAC9B,SAAA;AAAA,MACA,YAAc,EAAA;AAAA,QACZ,CAAC,MAAA,CAAO,qBAAqB,GAAG,OAAO,eAAgB,CAAA;AAAA;AACzD,KACD,CAAA;AAED,IAAA,IAAI,QAAS,CAAA,kBAAA,CAAmB,UAAW,CAAA,MAAA,IAAU,CAAG,EAAA;AACtD,MAAA,MAAM,IAAI,UAAA;AAAA,QACR,gCAAgC,QAAS,CAAA,kBAAA,CAAmB,UAAW,CAAA,CAAC,GAAG,OAAO,CAAA;AAAA,OACpF;AAAA;AAGF,IAAA,eAAA;AAAA,MACE,CAAyB,sBAAA,EAAA,QAAA,CAAS,kBAAmB,CAAA,iBAAA,CAAkB,MAAM,CAAA,iBAAA,CAAA;AAAA,MAC7E;AAAA,KACF;AACA,IAAA,OAAO,QAAS,CAAA,kBAAA;AAAA,WACT,KAAO,EAAA;AACd,IAAA,YAAA,CAAa,KAAK,CAAA;AAElB,IAAM,MAAA,KAAA;AAAA;AAEV","file":"deployment-initiate.js","sourcesContent":["import {graphqlRequest} from '@shopify/cli-kit/node/api/graphql';\nimport {AbortError} from '@shopify/cli-kit/node/error';\nimport {Logger, outputCompleted} from '@shopify/cli-kit/node/output';\n\nimport {errorHandler, Header} from '../utils/utils.js';\n\nimport {\n DeploymentConfig,\n DeploymentManifestFile,\n EnvironmentInput,\n} from './types.js';\nimport {\n DeploymentInitiateQuery,\n DeploymentInitiateQueryData,\n DeploymentInitiateResponse,\n} from './graphql/deployment-initiate.js';\n\ntype DeploymentInitiateInput =\n | {\n buildId: string;\n environment?: never;\n labels?: string[];\n manifest: DeploymentManifestFile[];\n }\n | {\n environment?: EnvironmentInput;\n buildId?: never;\n labels?: string[];\n manifest: DeploymentManifestFile[];\n };\n\ninterface DeploymentInitiateOptions {\n config: DeploymentConfig;\n input: DeploymentInitiateInput;\n logger: Logger;\n}\n\nexport async function deploymentInitiate(\n options: DeploymentInitiateOptions,\n): Promise<DeploymentInitiateResponse> {\n const {config, input, logger} = options;\n\n const variables = {\n buildId: input.buildId,\n environment: input.environment,\n files: input.manifest,\n labels: input.labels,\n };\n\n try {\n const response: DeploymentInitiateQueryData = await graphqlRequest({\n query: DeploymentInitiateQuery,\n api: 'Oxygen',\n url: `${config.deploymentUrl}/api/v2/admin/graphql`,\n token: config.deploymentToken.accessToken,\n variables,\n addedHeaders: {\n [Header.OxygenNamespaceHandle]: config.deploymentToken.namespace,\n },\n });\n\n if (response.deploymentInitiate.userErrors.length >= 1) {\n throw new AbortError(\n `Failed to create deployment. ${response.deploymentInitiate.userErrors[0]?.message}`,\n );\n }\n\n outputCompleted(\n `Deployment initiated, ${response.deploymentInitiate.deploymentTargets.length} files to upload.`,\n logger,\n );\n return response.deploymentInitiate;\n } catch (error) {\n errorHandler(error);\n\n throw error;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/deploy/get-upload-files.ts"],"names":[],"mappings":"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","file":"get-upload-files.js","sourcesContent":["import {glob, fileSizeSync, readFileSync} from '@shopify/cli-kit/node/fs';\nimport {fileHash} from '@shopify/cli-kit/node/crypto';\nimport {joinPath, relativePath} from '@shopify/cli-kit/node/path';\nimport {lookupMimeType} from '@shopify/cli-kit/node/mimes';\n\nimport {MetricsExporter, MetricName} from '../utils/metrics-exporter.js';\n\nimport {DeploymentConfig, DeploymentManifestFile, FileType} from './types.js';\n\nexport async function getUploadFiles(\n config: DeploymentConfig,\n metricsExporter?: MetricsExporter,\n): Promise<DeploymentManifestFile[]> {\n const workerPath = joinPath(config.rootPath!, config.workerDir!);\n const workerFiles = await glob(`${workerPath}/**`);\n let manifest = createManifestEntries({\n files: workerFiles,\n basePath: workerPath,\n type: FileType.Worker,\n filter: workerFileFilter,\n });\n\n if (!config.workerOnly) {\n const assetPath = joinPath(config.rootPath!, config.assetsDir!);\n const assetFiles = await glob(`${assetPath}/**`);\n manifest = [\n ...manifest,\n ...createManifestEntries({\n files: assetFiles,\n basePath: assetPath,\n type: FileType.Asset,\n filter: assetFileFilter,\n }),\n ];\n }\n metricsExporter?.add(MetricName.NumFilesRequested, manifest.length);\n const totalSize =\n manifest.reduce((total, file) => total + file.fileSize, 0) / 1024;\n metricsExporter?.add(MetricName.TotalSizeRequested, totalSize);\n\n return manifest;\n}\n\nfunction createHash(file: string): string {\n const buff = readFileSync(file);\n return fileHash(buff);\n}\n\ninterface CreateManifestEntriesParams {\n files: string[];\n basePath: string;\n type: FileType;\n filter?: (arg0: string) => boolean;\n}\n\nfunction createManifestEntries(\n params: CreateManifestEntriesParams,\n): DeploymentManifestFile[] {\n const {files, basePath, type, filter} = params;\n const manifest: DeploymentManifestFile[] = [];\n files.forEach((file: string) => {\n const filePath = relativePath(basePath, file);\n if (filter && !filter(filePath)) {\n return;\n }\n\n manifest.push({\n filePath,\n fileSize: fileSizeSync(file),\n mimeType: lookupMimeType(file)!,\n fileType: type,\n fileHash: createHash(file),\n });\n });\n return manifest;\n}\n\nfunction workerFileFilter(fileName: string): boolean {\n const allowedWorkerAssets = ['oxygen.json'];\n const allowedExtensions = ['.js.map', '.mjs.map', '.map', '.js', '.mjs'];\n const allowedFilenames = ['index'];\n const regexString = `^(${allowedFilenames.join(\n '|',\n )})(${allowedExtensions.join('|')})$`;\n const regex = new RegExp(regexString);\n return (\n regex.test(fileName.toLowerCase()) || allowedWorkerAssets.includes(fileName)\n );\n}\n\nfunction assetFileFilter(fileName: string): boolean {\n const disallowedExtensions = ['.map'];\n const regexString = `(${disallowedExtensions.join('|')})$`;\n const regex = new RegExp(regexString);\n return !regex.test(fileName.toLowerCase());\n}\n"]}
1
+ {"version":3,"sources":["../../src/deploy/get-upload-files.ts"],"names":[],"mappings":"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","file":"get-upload-files.js","sourcesContent":["import {glob, fileSizeSync, readFileSync} from '@shopify/cli-kit/node/fs';\nimport {fileHash} from '@shopify/cli-kit/node/crypto';\nimport {joinPath, relativePath} from '@shopify/cli-kit/node/path';\nimport {lookupMimeType} from '@shopify/cli-kit/node/mimes';\n\nimport {MetricsExporter, MetricName} from '../utils/metrics-exporter.js';\n\nimport {DeploymentConfig, DeploymentManifestFile, FileType} from './types.js';\n\nexport async function getUploadFiles(\n config: DeploymentConfig,\n metricsExporter?: MetricsExporter,\n): Promise<DeploymentManifestFile[]> {\n const workerPath = joinPath(config.rootPath!, config.workerDir!);\n const workerFiles = await glob(`${workerPath}/**`);\n let manifest = createManifestEntries({\n files: workerFiles,\n basePath: workerPath,\n type: FileType.Worker,\n filter: workerFileFilter,\n });\n\n if (!config.workerOnly) {\n const assetPath = joinPath(config.rootPath!, config.assetsDir!);\n const assetFiles = await glob(`${assetPath}/**`);\n manifest = [\n ...manifest,\n ...createManifestEntries({\n files: assetFiles,\n basePath: assetPath,\n type: FileType.Asset,\n filter: assetFileFilter,\n }),\n ];\n }\n metricsExporter?.add(MetricName.NumFilesRequested, manifest.length);\n const totalSize =\n manifest.reduce((total, file) => total + file.fileSize, 0) / 1024;\n metricsExporter?.add(MetricName.TotalSizeRequested, totalSize);\n\n return manifest;\n}\n\nfunction createHash(file: string): string {\n const buff = readFileSync(file);\n return fileHash(buff);\n}\n\ninterface CreateManifestEntriesParams {\n files: string[];\n basePath: string;\n type: FileType;\n filter?: (arg0: string) => boolean;\n}\n\nfunction createManifestEntries(\n params: CreateManifestEntriesParams,\n): DeploymentManifestFile[] {\n const {files, basePath, type, filter} = params;\n const manifest: DeploymentManifestFile[] = [];\n files.forEach((file: string) => {\n const filePath = relativePath(basePath, file);\n if (filter && !filter(filePath)) {\n return;\n }\n\n manifest.push({\n filePath,\n fileSize: fileSizeSync(file),\n mimeType: lookupMimeType(file)!,\n fileType: type,\n fileHash: createHash(file),\n });\n });\n return manifest;\n}\n\nfunction workerFileFilter(fileName: string): boolean {\n const allowedWorkerAssets = ['oxygen.json'];\n const allowedExtensions = ['.js.map', '.mjs.map', '.map', '.js', '.mjs'];\n const allowedFilenames = ['index'];\n const regexString = `^(${allowedFilenames.join(\n '|',\n )})(${allowedExtensions.join('|')})$`;\n const regex = new RegExp(regexString);\n return (\n regex.test(fileName.toLowerCase()) || allowedWorkerAssets.includes(fileName)\n );\n}\n\nfunction assetFileFilter(fileName: string): boolean {\n const disallowedExtensions = ['.map'];\n const regexString = `(${disallowedExtensions.join('|')})$`;\n const regex = new RegExp(regexString);\n return !regex.test(fileName.toLowerCase());\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/deploy/graphql/build-cancel.ts"],"names":[],"mappings":"AAEO,MAAM,gBAAmB,GAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA","file":"build-cancel.js","sourcesContent":["import {OxygenError} from '../types.js';\n\nexport const BuildCancelQuery = `\n mutation BuildCancel($buildId: ID!, $reason: String!) {\n buildCancel(id: $buildId, reason: $reason) {\n build {\n id\n }\n userErrors {\n message\n }\n }\n }\n`;\n\nexport interface BuildCancelQueryData {\n buildCancel: BuildCancelResponse;\n}\n\nexport interface BuildCancelResponse {\n build: {\n id: string;\n };\n userErrors: OxygenError[];\n}\n"]}
1
+ {"version":3,"sources":["../../../src/deploy/graphql/build-cancel.ts"],"names":[],"mappings":"AAEO,MAAM,gBAAmB,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA","file":"build-cancel.js","sourcesContent":["import {OxygenError} from '../types.js';\n\nexport const BuildCancelQuery = `\n mutation BuildCancel($buildId: ID!, $reason: String!) {\n buildCancel(id: $buildId, reason: $reason) {\n build {\n id\n }\n userErrors {\n message\n }\n }\n }\n`;\n\nexport interface BuildCancelQueryData {\n buildCancel: BuildCancelResponse;\n}\n\nexport interface BuildCancelResponse {\n build: {\n id: string;\n };\n userErrors: OxygenError[];\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/deploy/graphql/build-initiate.ts"],"names":[],"mappings":"AAEO,MAAM,kBAAqB,GAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA","file":"build-initiate.js","sourcesContent":["import {OxygenError} from '../types.js';\n\nexport const BuildInitiateQuery = `\n mutation BuildInitiate($environment: EnvironmentSelectorInput, $labels: [String!]) {\n buildInitiate(environment: $environment, labels: $labels) {\n build {\n id\n assetPath\n }\n userErrors {\n message\n }\n }\n }\n`;\n\nexport interface BuildInitiateQueryData {\n buildInitiate: BuildInitiateResponse;\n}\n\nexport interface BuildInitiateResponse {\n build: {\n id: string;\n assetPath: string;\n };\n userErrors: OxygenError[];\n}\n"]}
1
+ {"version":3,"sources":["../../../src/deploy/graphql/build-initiate.ts"],"names":[],"mappings":"AAEO,MAAM,kBAAqB,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA","file":"build-initiate.js","sourcesContent":["import {OxygenError} from '../types.js';\n\nexport const BuildInitiateQuery = `\n mutation BuildInitiate($environment: EnvironmentSelectorInput, $labels: [String!]) {\n buildInitiate(environment: $environment, labels: $labels) {\n build {\n id\n assetPath\n }\n userErrors {\n message\n }\n }\n }\n`;\n\nexport interface BuildInitiateQueryData {\n buildInitiate: BuildInitiateResponse;\n}\n\nexport interface BuildInitiateResponse {\n build: {\n id: string;\n assetPath: string;\n };\n userErrors: OxygenError[];\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/deploy/graphql/deployment-cancel.ts"],"names":[],"mappings":"AAEO,MAAM,qBAAwB,GAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA","file":"deployment-cancel.js","sourcesContent":["import {OxygenError} from '../types.js';\n\nexport const DeploymentCancelQuery = `\nmutation DeploymentCancel($deploymentId: ID!, $reason: String!) {\n deploymentCancel(id: $deploymentId, reason: $reason) {\n deployment {\n id\n }\n userErrors {\n message\n }\n }\n}\n`;\n\nexport interface DeploymentCancelQueryData {\n deploymentCancel: DeploymentCancelResponse;\n}\n\nexport interface DeploymentCancelResponse {\n deployment: {\n id: string;\n };\n userErrors: OxygenError[];\n}\n"]}
1
+ {"version":3,"sources":["../../../src/deploy/graphql/deployment-cancel.ts"],"names":[],"mappings":"AAEO,MAAM,qBAAwB,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA","file":"deployment-cancel.js","sourcesContent":["import {OxygenError} from '../types.js';\n\nexport const DeploymentCancelQuery = `\nmutation DeploymentCancel($deploymentId: ID!, $reason: String!) {\n deploymentCancel(id: $deploymentId, reason: $reason) {\n deployment {\n id\n }\n userErrors {\n message\n }\n }\n}\n`;\n\nexport interface DeploymentCancelQueryData {\n deploymentCancel: DeploymentCancelResponse;\n}\n\nexport interface DeploymentCancelResponse {\n deployment: {\n id: string;\n };\n userErrors: OxygenError[];\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/deploy/graphql/deployment-complete.ts"],"names":[],"mappings":"AAIO,MAAM,uBAA0B,GAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA","file":"deployment-complete.js","sourcesContent":["import {Variables} from 'graphql-request';\n\nimport {OxygenError} from '../types.js';\n\nexport const DeploymentCompleteQuery = `\n mutation DeploymentComplete($deploymentId: ID!, $generateAuthBypassToken: Boolean, $authBypassTokenDuration: Int, $environmentVariables: [EnvironmentVariableInput!]) {\n deploymentComplete(id: $deploymentId, generateAuthBypassToken: $generateAuthBypassToken, authBypassTokenDuration: $authBypassTokenDuration, environmentVariables: $environmentVariables) {\n deployment {\n id\n url\n }\n authBypassToken\n userErrors {\n message\n }\n }\n }\n`;\n\nexport interface DeploymentCompleteQueryData {\n deploymentComplete: DeploymentCompleteResponse;\n}\n\ninterface EnvironmentVariable {\n isSecret: boolean;\n key: string;\n value: string;\n}\n\nexport interface DeploymentCompleteQueryVariables extends Variables {\n deploymentId: string;\n generateAuthBypassToken: boolean;\n authBypassTokenDuration?: number;\n environmentVariables?: EnvironmentVariable[];\n}\n\nexport interface DeploymentCompleteResponse {\n deployment: Deployment;\n authBypassToken: string | null;\n userErrors: OxygenError[];\n}\n\ninterface Deployment {\n id: string;\n url: string;\n}\n"]}
1
+ {"version":3,"sources":["../../../src/deploy/graphql/deployment-complete.ts"],"names":[],"mappings":"AAIO,MAAM,uBAA0B,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA","file":"deployment-complete.js","sourcesContent":["import {Variables} from 'graphql-request';\n\nimport {OxygenError} from '../types.js';\n\nexport const DeploymentCompleteQuery = `\n mutation DeploymentComplete($deploymentId: ID!, $generateAuthBypassToken: Boolean, $authBypassTokenDuration: Int, $environmentVariables: [EnvironmentVariableInput!]) {\n deploymentComplete(id: $deploymentId, generateAuthBypassToken: $generateAuthBypassToken, authBypassTokenDuration: $authBypassTokenDuration, environmentVariables: $environmentVariables) {\n deployment {\n id\n url\n }\n authBypassToken\n userErrors {\n message\n }\n }\n }\n`;\n\nexport interface DeploymentCompleteQueryData {\n deploymentComplete: DeploymentCompleteResponse;\n}\n\ninterface EnvironmentVariable {\n isSecret: boolean;\n key: string;\n value: string;\n}\n\nexport interface DeploymentCompleteQueryVariables extends Variables {\n deploymentId: string;\n generateAuthBypassToken: boolean;\n authBypassTokenDuration?: number;\n environmentVariables?: EnvironmentVariable[];\n}\n\nexport interface DeploymentCompleteResponse {\n deployment: Deployment;\n authBypassToken: string | null;\n userErrors: OxygenError[];\n}\n\ninterface Deployment {\n id: string;\n url: string;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/deploy/graphql/deployment-initiate.ts"],"names":[],"mappings":"AAEO,MAAM,uBAA0B,GAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA","file":"deployment-initiate.js","sourcesContent":["import {OxygenError} from '../types.js';\n\nexport const DeploymentInitiateQuery = `\n mutation DeploymentInitiate($buildId: ID, $environment: EnvironmentSelectorInput, $labels: [String!], $files: [FileInput!]!) {\n deploymentInitiate(buildId: $buildId, environment: $environment, labels: $labels, files: $files) {\n deployment {\n id\n }\n deploymentTargets {\n filePath\n fileSize\n uploadUrl\n fileType\n parameters {\n name\n value\n }\n }\n deploymentConfiguration {\n timeoutInSeconds\n }\n userErrors {\n message\n }\n }\n }\n`;\n\nexport interface DeploymentInitiateQueryData {\n deploymentInitiate: DeploymentInitiateResponse;\n}\n\nexport interface DeploymentInitiateResponse {\n deployment: Deployment;\n deploymentTargets: DeploymentTargetResponse[];\n deploymentConfiguration: DeploymentConfigurationResponse;\n userErrors: OxygenError[];\n}\n\nexport interface DeploymentTargetResponse {\n filePath: string;\n fileSize: number;\n uploadUrl: string;\n fileType: string;\n parameters: DeploymentInitiateParameters[] | null;\n}\n\nexport interface DeploymentConfigurationResponse {\n timeoutInSeconds: number;\n}\n\ninterface Deployment {\n id: string;\n}\n\ninterface DeploymentInitiateParameters {\n name: string;\n value: string;\n}\n"]}
1
+ {"version":3,"sources":["../../../src/deploy/graphql/deployment-initiate.ts"],"names":[],"mappings":"AAEO,MAAM,uBAA0B,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA","file":"deployment-initiate.js","sourcesContent":["import {OxygenError} from '../types.js';\n\nexport const DeploymentInitiateQuery = `\n mutation DeploymentInitiate($buildId: ID, $environment: EnvironmentSelectorInput, $labels: [String!], $files: [FileInput!]!) {\n deploymentInitiate(buildId: $buildId, environment: $environment, labels: $labels, files: $files) {\n deployment {\n id\n }\n deploymentTargets {\n filePath\n fileSize\n uploadUrl\n fileType\n parameters {\n name\n value\n }\n }\n deploymentConfiguration {\n timeoutInSeconds\n }\n userErrors {\n message\n }\n }\n }\n`;\n\nexport interface DeploymentInitiateQueryData {\n deploymentInitiate: DeploymentInitiateResponse;\n}\n\nexport interface DeploymentInitiateResponse {\n deployment: Deployment;\n deploymentTargets: DeploymentTargetResponse[];\n deploymentConfiguration: DeploymentConfigurationResponse;\n userErrors: OxygenError[];\n}\n\nexport interface DeploymentTargetResponse {\n filePath: string;\n fileSize: number;\n uploadUrl: string;\n fileType: string;\n parameters: DeploymentInitiateParameters[] | null;\n}\n\nexport interface DeploymentConfigurationResponse {\n timeoutInSeconds: number;\n}\n\ninterface Deployment {\n id: string;\n}\n\ninterface DeploymentInitiateParameters {\n name: string;\n value: string;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/deploy/graphql/deployment-verification-details.ts"],"names":["Status"],"mappings":"AAAO,MAAM,kCAAqC,GAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAAA;AAsBtC,IAAA,MAAA,qBAAAA,OAAL,KAAA;AACL,EAAAA,QAAA,SAAU,CAAA,GAAA,SAAA,CAAA;AACV,EAAAA,QAAA,UAAW,CAAA,GAAA,UAAA,CAAA;AACX,EAAAA,QAAA,QAAS,CAAA,GAAA,QAAA,CAAA;AACT,EAAAA,QAAA,WAAY,CAAA,GAAA,WAAA,CAAA;AAJF,EAAAA,OAAAA,OAAAA,CAAAA;AAAA,CAAA,EAAA,MAAA,IAAA,EAAA","file":"deployment-verification-details.js","sourcesContent":["export const DeploymentVerificationDetailsQuery = `\n query DeploymentVerificationDetails($deploymentId: ID!) {\n deploymentVerificationDetails(id: $deploymentId) {\n url\n status\n error\n startupTime\n }\n }\n`;\n\nexport interface DeploymentVerificationDetailsQueryData {\n deploymentVerificationDetails: DeploymentVerificationDetailsResponse | null;\n}\n\nexport interface DeploymentVerificationDetailsResponse {\n url: string;\n status: string;\n error?: string;\n startupTime?: number;\n}\n\nexport enum Status {\n Pending = 'PENDING',\n Deployed = 'DEPLOYED',\n Failed = 'FAILED',\n Cancelled = 'CANCELLED',\n}\n"]}
1
+ {"version":3,"sources":["../../../src/deploy/graphql/deployment-verification-details.ts"],"names":["Status"],"mappings":"AAAO,MAAM,kCAAqC,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAsBtC,IAAA,MAAA,qBAAAA,OAAL,KAAA;AACL,EAAAA,QAAA,SAAU,CAAA,GAAA,SAAA;AACV,EAAAA,QAAA,UAAW,CAAA,GAAA,UAAA;AACX,EAAAA,QAAA,QAAS,CAAA,GAAA,QAAA;AACT,EAAAA,QAAA,WAAY,CAAA,GAAA,WAAA;AAJF,EAAAA,OAAAA,OAAAA;AAAA,CAAA,EAAA,MAAA,IAAA,EAAA","file":"deployment-verification-details.js","sourcesContent":["export const DeploymentVerificationDetailsQuery = `\n query DeploymentVerificationDetails($deploymentId: ID!) {\n deploymentVerificationDetails(id: $deploymentId) {\n url\n status\n error\n startupTime\n }\n }\n`;\n\nexport interface DeploymentVerificationDetailsQueryData {\n deploymentVerificationDetails: DeploymentVerificationDetailsResponse | null;\n}\n\nexport interface DeploymentVerificationDetailsResponse {\n url: string;\n status: string;\n error?: string;\n startupTime?: number;\n}\n\nexport enum Status {\n Pending = 'PENDING',\n Deployed = 'DEPLOYED',\n Failed = 'FAILED',\n Cancelled = 'CANCELLED',\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/deploy/index.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import {Logger, outputSuccess, outputWarn} from '@shopify/cli-kit/node/output';\n\nimport {stderrLogger, verifyConfig} from '../utils/utils.js';\nimport {\n getBugsnag,\n initializeBugsnag,\n sanitizeError,\n} from '../utils/bugsnag.js';\nimport {MetricsExporter, MetricName} from '../utils/metrics-exporter.js';\n\nimport {buildInitiate} from './build-initiate.js';\nimport {buildCancel} from './build-cancel.js';\nimport {getUploadFiles} from './get-upload-files.js';\nimport {deploymentInitiate} from './deployment-initiate.js';\nimport {deploymentComplete} from './deployment-complete.js';\nimport {verifyDeployment} from './verify-deployment.js';\nimport {deploymentCancel} from './deployment-cancel.js';\nimport {uploadFiles} from './upload-files.js';\nimport {verifyDeploymentCompleted} from './verify-deployment-completed.js';\nimport {\n Build,\n DeploymentCompletedVerificationError,\n DeploymentConfig,\n DeploymentHooks,\n VerificationError,\n} from './types.js';\nimport {buildProject} from './build-project.js';\nimport {createLabels, getMetadata, getEnvironmentInput} from './metadata.js';\n\ninterface CreateDeployOptions {\n config: DeploymentConfig;\n hooks?: DeploymentHooks;\n logger?: Logger;\n}\n\ninterface CompletedDeployment {\n url: string;\n authBypassToken?: string;\n}\n\nexport async function createDeploy(\n options: CreateDeployOptions,\n): Promise<CompletedDeployment | undefined> {\n const cliStartTime = performance.now();\n initializeBugsnag(!options.config.bugsnag);\n const Bugsnag = getBugsnag();\n Bugsnag?.addMetadata('config', {\n ...options.config,\n deploymentToken: {...options.config.deploymentToken, accessToken: '***'},\n rootPath: '***',\n });\n\n const {config, hooks} = options;\n const logger = options.logger ?? stderrLogger;\n const build = {} as Build;\n let buildCompleted;\n let deployment;\n let metricsExporter;\n\n try {\n const metadata = await getMetadata(config, logger);\n const labels = createLabels(metadata);\n const environment = getEnvironmentInput(config, metadata);\n Bugsnag?.addMetadata('metadata', {\n environment,\n labels,\n metadata,\n });\n metricsExporter = new MetricsExporter({\n ciProvider: metadata.name || 'unknown',\n rootPath: config.rootPath!,\n });\n\n if (!config.workerOnly && !config.skipBuild) {\n const buildInitiateResponse = await buildInitiate({\n config,\n environment,\n labels,\n logger,\n });\n build.id = buildInitiateResponse.build.id;\n build.assetPath = buildInitiateResponse.build.assetPath;\n }\n\n if (!config.skipBuild) {\n await buildProject({\n config,\n assetPath: build.assetPath,\n hooks,\n metricsExporter,\n });\n await verifyConfig({config, performedBuild: true});\n }\n buildCompleted = true;\n\n const manifest = await getUploadFiles(config, metricsExporter);\n Bugsnag?.addMetadata('manifest', manifest);\n const deploymentInitiateInput = build.id\n ? {buildId: build.id, manifest}\n : {environment, manifest, labels};\n\n deployment = await deploymentInitiate({\n config,\n input: deploymentInitiateInput,\n logger,\n });\n\n await uploadFiles({\n config,\n targets: deployment.deploymentTargets,\n hooks,\n logger,\n metricsExporter,\n });\n\n const deploymentCompleteRequestStartTime = performance.now();\n\n const deploymentCompleteOp = await deploymentComplete(\n config,\n deployment.deployment.id,\n );\n metricsExporter.add(MetricName.TotalTime, performance.now() - cliStartTime);\n\n await verifyDeploymentCompleted(\n {\n config,\n hooks,\n logger,\n timeoutInSeconds: deployment.deploymentConfiguration.timeoutInSeconds,\n },\n deployment.deployment.id,\n );\n\n metricsExporter.add(\n MetricName.DeploymentCompletedTime,\n performance.now() - deploymentCompleteRequestStartTime,\n );\n\n if (!config.skipVerification) {\n await verifyDeployment({\n config,\n url: deploymentCompleteOp.deployment.url,\n logger,\n hooks,\n });\n\n metricsExporter.add(\n MetricName.DeploymentRoutableTime,\n performance.now() - deploymentCompleteRequestStartTime,\n );\n }\n\n const completedDeployment: CompletedDeployment = {\n url: deploymentCompleteOp.deployment.url,\n };\n\n let successMessage = `\\nThe deployment can be reached at the ${completedDeployment.url} preview URL`;\n\n if (deploymentCompleteOp.authBypassToken) {\n completedDeployment.authBypassToken =\n deploymentCompleteOp.authBypassToken;\n\n successMessage += `. The auth bypass token for the deployment is ${completedDeployment.authBypassToken}`;\n }\n\n outputSuccess(successMessage, logger);\n\n return completedDeployment;\n } catch (error) {\n if (\n config.bugsnag &&\n Bugsnag &&\n (error instanceof Error || typeof error === 'string')\n ) {\n Bugsnag.notify(sanitizeError(error, config.rootPath));\n }\n\n if (!(error instanceof Error)) {\n // eslint-disable-next-line no-console\n console.error('Unknown error', error);\n return Promise.reject(new Error('Unknown error'));\n }\n\n if (\n error instanceof VerificationError ||\n error instanceof DeploymentCompletedVerificationError\n ) {\n outputWarn(error.message, logger);\n } else if (build.id && !buildCompleted) {\n outputWarn(\n `Build failed with: ${error.message}, cancelling build.`,\n logger,\n );\n\n await buildCancel({\n config,\n buildId: build.id!,\n reason: error.message,\n logger,\n }).catch((err) => {\n if (err instanceof Error) {\n outputWarn(`Failed to cancel build: ${err.message}`, logger);\n }\n });\n } else if (deployment?.deployment.id) {\n outputWarn(\n `Deployment failed with: ${error.message}, cancelling deployment.`,\n logger,\n );\n await deploymentCancel({\n config,\n deploymentId: deployment.deployment.id,\n reason: error.message,\n logger,\n }).catch((err) => {\n if (err instanceof Error) {\n outputWarn(`Failed to cancel deployment: ${err.message}`, logger);\n }\n });\n }\n return Promise.reject(error);\n } finally {\n metricsExporter?.export();\n }\n}\n\nexport type {DeploymentConfig, DeploymentHooks, CompletedDeployment};\nexport {parseToken} from '../utils/utils.js';\nexport type {DeploymentVerificationDetailsResponse} from './graphql/deployment-verification-details.js';\n"]}
1
+ {"version":3,"sources":["../../src/deploy/index.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import {Logger, outputSuccess, outputWarn} from '@shopify/cli-kit/node/output';\n\nimport {stderrLogger, verifyConfig} from '../utils/utils.js';\nimport {\n getBugsnag,\n initializeBugsnag,\n sanitizeError,\n} from '../utils/bugsnag.js';\nimport {MetricsExporter, MetricName} from '../utils/metrics-exporter.js';\n\nimport {buildInitiate} from './build-initiate.js';\nimport {buildCancel} from './build-cancel.js';\nimport {getUploadFiles} from './get-upload-files.js';\nimport {deploymentInitiate} from './deployment-initiate.js';\nimport {deploymentComplete} from './deployment-complete.js';\nimport {verifyDeployment} from './verify-deployment.js';\nimport {deploymentCancel} from './deployment-cancel.js';\nimport {uploadFiles} from './upload-files.js';\nimport {verifyDeploymentCompleted} from './verify-deployment-completed.js';\nimport {\n Build,\n DeploymentCompletedVerificationError,\n DeploymentConfig,\n DeploymentHooks,\n VerificationError,\n} from './types.js';\nimport {buildProject} from './build-project.js';\nimport {createLabels, getMetadata, getEnvironmentInput} from './metadata.js';\n\ninterface CreateDeployOptions {\n config: DeploymentConfig;\n hooks?: DeploymentHooks;\n logger?: Logger;\n}\n\ninterface CompletedDeployment {\n url: string;\n authBypassToken?: string;\n}\n\nexport async function createDeploy(\n options: CreateDeployOptions,\n): Promise<CompletedDeployment | undefined> {\n const cliStartTime = performance.now();\n initializeBugsnag(!options.config.bugsnag);\n const Bugsnag = getBugsnag();\n Bugsnag?.addMetadata('config', {\n ...options.config,\n deploymentToken: {...options.config.deploymentToken, accessToken: '***'},\n rootPath: '***',\n });\n\n const {config, hooks} = options;\n const logger = options.logger ?? stderrLogger;\n const build = {} as Build;\n let buildCompleted;\n let deployment;\n let metricsExporter;\n\n try {\n const metadata = await getMetadata(config, logger);\n const labels = createLabels(metadata);\n const environment = getEnvironmentInput(config, metadata);\n Bugsnag?.addMetadata('metadata', {\n environment,\n labels,\n metadata,\n });\n metricsExporter = new MetricsExporter({\n ciProvider: metadata.name || 'unknown',\n rootPath: config.rootPath!,\n });\n\n if (!config.workerOnly && !config.skipBuild) {\n const buildInitiateResponse = await buildInitiate({\n config,\n environment,\n labels,\n logger,\n });\n build.id = buildInitiateResponse.build.id;\n build.assetPath = buildInitiateResponse.build.assetPath;\n }\n\n if (!config.skipBuild) {\n await buildProject({\n config,\n assetPath: build.assetPath,\n hooks,\n metricsExporter,\n });\n await verifyConfig({config, performedBuild: true});\n }\n buildCompleted = true;\n\n const manifest = await getUploadFiles(config, metricsExporter);\n Bugsnag?.addMetadata('manifest', manifest);\n const deploymentInitiateInput = build.id\n ? {buildId: build.id, manifest}\n : {environment, manifest, labels};\n\n deployment = await deploymentInitiate({\n config,\n input: deploymentInitiateInput,\n logger,\n });\n\n await uploadFiles({\n config,\n targets: deployment.deploymentTargets,\n hooks,\n logger,\n metricsExporter,\n });\n\n const deploymentCompleteRequestStartTime = performance.now();\n\n const deploymentCompleteOp = await deploymentComplete(\n config,\n deployment.deployment.id,\n );\n metricsExporter.add(MetricName.TotalTime, performance.now() - cliStartTime);\n\n await verifyDeploymentCompleted(\n {\n config,\n hooks,\n logger,\n timeoutInSeconds: deployment.deploymentConfiguration.timeoutInSeconds,\n },\n deployment.deployment.id,\n );\n\n metricsExporter.add(\n MetricName.DeploymentCompletedTime,\n performance.now() - deploymentCompleteRequestStartTime,\n );\n\n if (!config.skipVerification) {\n await verifyDeployment({\n config,\n url: deploymentCompleteOp.deployment.url,\n logger,\n hooks,\n });\n\n metricsExporter.add(\n MetricName.DeploymentRoutableTime,\n performance.now() - deploymentCompleteRequestStartTime,\n );\n }\n\n const completedDeployment: CompletedDeployment = {\n url: deploymentCompleteOp.deployment.url,\n };\n\n let successMessage = `\\nThe deployment can be reached at the ${completedDeployment.url} preview URL`;\n\n if (deploymentCompleteOp.authBypassToken) {\n completedDeployment.authBypassToken =\n deploymentCompleteOp.authBypassToken;\n\n successMessage += `. The auth bypass token for the deployment is ${completedDeployment.authBypassToken}`;\n }\n\n outputSuccess(successMessage, logger);\n\n return completedDeployment;\n } catch (error) {\n if (\n config.bugsnag &&\n Bugsnag &&\n (error instanceof Error || typeof error === 'string')\n ) {\n Bugsnag.notify(sanitizeError(error, config.rootPath));\n }\n\n if (!(error instanceof Error)) {\n // eslint-disable-next-line no-console\n console.error('Unknown error', error);\n return Promise.reject(new Error('Unknown error'));\n }\n\n if (\n error instanceof VerificationError ||\n error instanceof DeploymentCompletedVerificationError\n ) {\n outputWarn(error.message, logger);\n } else if (build.id && !buildCompleted) {\n outputWarn(\n `Build failed with: ${error.message}, cancelling build.`,\n logger,\n );\n\n await buildCancel({\n config,\n buildId: build.id!,\n reason: error.message,\n logger,\n }).catch((err) => {\n if (err instanceof Error) {\n outputWarn(`Failed to cancel build: ${err.message}`, logger);\n }\n });\n } else if (deployment?.deployment.id) {\n outputWarn(\n `Deployment failed with: ${error.message}, cancelling deployment.`,\n logger,\n );\n await deploymentCancel({\n config,\n deploymentId: deployment.deployment.id,\n reason: error.message,\n logger,\n }).catch((err) => {\n if (err instanceof Error) {\n outputWarn(`Failed to cancel deployment: ${err.message}`, logger);\n }\n });\n }\n return Promise.reject(error);\n } finally {\n metricsExporter?.export();\n }\n}\n\nexport type {DeploymentConfig, DeploymentHooks, CompletedDeployment};\nexport {parseToken} from '../utils/utils.js';\nexport type {DeploymentVerificationDetailsResponse} from './graphql/deployment-verification-details.js';\n"]}
@@ -78,10 +78,10 @@ function createCommitTitle(commitMessage) {
78
78
  }
79
79
  function getEnvironmentInput(config, metadata) {
80
80
  if (config.defaultEnvironment) {
81
- return void 0;
81
+ return undefined;
82
82
  }
83
83
  const tag = config.environmentTag || metadata.branch;
84
- return tag ? { tag } : void 0;
84
+ return tag ? { tag } : undefined;
85
85
  }
86
86
  function createLabels(metadata) {
87
87
  const labels = [];
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/deploy/metadata.ts"],"names":["keyMapping"],"mappings":"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","file":"metadata.js","sourcesContent":["import {ciPlatform, CIMetadata} from '@shopify/cli-kit/node/context/local';\nimport {getLatestGitCommit} from '@shopify/cli-kit/node/git';\nimport {Logger, outputWarn} from '@shopify/cli-kit/node/output';\n\nimport {maxLabelLength} from '../utils/utils.js';\n\nimport {DeploymentConfig, EnvironmentInput} from './types.js';\n\nexport type Metadata = CIMetadata & {\n commitDate?: string;\n hydrogenVersion?: string;\n name?: string;\n};\n\nexport async function getMetadata(\n config: DeploymentConfig,\n logger: Logger,\n): Promise<Metadata> {\n const ciInfo = ciPlatform();\n const metadata: Metadata = ciInfo.metadata ?? {};\n\n try {\n const gitCommit = await latestCommit(config.rootPath);\n\n // Only update actor, commitDate, and commitMessage if we don't already have\n // the data from CI.\n if (!metadata.actor) {\n metadata.actor = gitCommit.author_name;\n }\n if (!metadata.commitDate) {\n metadata.commitDate = gitCommit.date;\n }\n if (!metadata.commitMessage) {\n metadata.commitMessage = gitCommit.message;\n }\n\n // Always update the following keys with the Git information if it's\n // available since we may modify what the values are.\n if (gitCommit.branch) {\n metadata.branch = gitCommit.branch;\n }\n if (gitCommit.hash) {\n metadata.commitSha = gitCommit.hash;\n }\n } catch (error) {\n outputWarn(\n 'Could not retrieve Git history, commit message will be unavailable.',\n logger,\n );\n }\n\n return {\n name: ciInfo.isCI ? ciInfo.name : 'none',\n ...metadata,\n actor: config.metadata.user ?? metadata.actor,\n commitMessage: createCommitTitle(\n config.metadata.description ?? metadata.commitMessage,\n ),\n commitSha: config.metadata.version ?? metadata.commitSha,\n hydrogenVersion: config.metadata.hydrogenVersion,\n url: config.metadata.url ?? metadata.url,\n };\n}\n\nasync function latestCommit(path?: string) {\n const gitCommit = await getLatestGitCommit(path);\n const branch = (/HEAD -> ([^,]*)/.exec(gitCommit.refs) || [])[1];\n\n // If this variable is set it means we are in a GitHub action using the\n // pull_request trigger which creates a merge commit and we'll need to\n // manually extract the commit details.\n // eslint-disable-next-line no-process-env\n const headRef = process.env.GITHUB_HEAD_REF;\n\n if (!headRef) {\n return {\n ...gitCommit,\n branch,\n };\n }\n\n const match = /Merge ([\\w\\d]+) into [\\w\\d]+/.exec(gitCommit.message);\n\n return {\n ...gitCommit,\n branch: headRef,\n hash: match ? match[1] : gitCommit.hash,\n };\n}\n\nfunction createCommitTitle(commitMessage?: string): string | undefined {\n if (!commitMessage) {\n return;\n }\n\n let title = commitMessage.split(/\\r?\\n/)[0]?.trim() || '';\n let jsonTitle = JSON.stringify(title);\n let isTruncated = false;\n\n while (jsonTitle.length > maxLabelLength) {\n const lastSpaceIndex = title.lastIndexOf(' ', maxLabelLength - 3);\n title = `${title.substring(\n 0,\n lastSpaceIndex > -1 ? lastSpaceIndex : maxLabelLength - 3,\n )}`.trimEnd();\n isTruncated = true;\n jsonTitle = JSON.stringify(title);\n }\n\n return isTruncated ? `${title}...` : title;\n}\n\nexport function getEnvironmentInput(\n config: DeploymentConfig,\n metadata: CIMetadata,\n): EnvironmentInput | undefined {\n if (config.defaultEnvironment) {\n return undefined;\n }\n\n const tag = config.environmentTag || metadata.branch;\n return tag ? {tag} : undefined;\n}\n\nexport function createLabels(metadata: Metadata): string[] {\n const labels: string[] = [];\n\n const checkLabel = (labelKey: string, labelValue: string) => {\n const jsonString = JSON.stringify(labelValue);\n if (jsonString.length > maxLabelLength) {\n throw new Error(\n `Provided ${labelKey} metadata exceeds maximum length (max ${maxLabelLength} characters).`,\n );\n }\n const label = `${labelKey}=${jsonString}`;\n labels.push(label);\n };\n\n if (metadata.name !== 'none') {\n labels.push(`ci-platform=${JSON.stringify(metadata.name)}`);\n }\n\n if (metadata.name !== 'unknown') {\n const keyMapping = {\n attempt: 'attempt',\n run: 'runId',\n };\n\n for (const [key, value] of Object.entries(keyMapping)) {\n const metadataKey = key as keyof Metadata;\n if (metadata[metadataKey]) {\n labels.push(\n `${metadata.name}-${value}=${JSON.stringify(metadata[metadataKey])}`,\n );\n }\n }\n }\n\n const keyMapping = {\n actor: 'user',\n branch: 'branch',\n commitDate: 'commit-date',\n commitMessage: 'description',\n commitSha: 'version',\n hydrogenVersion: 'hydrogen-version',\n url: 'url',\n };\n\n for (const [key, value] of Object.entries(keyMapping)) {\n const metadataKey = key as keyof Metadata;\n if (metadata[metadataKey]) {\n checkLabel(value, metadata[metadataKey]!);\n }\n }\n\n return labels;\n}\n"]}
1
+ {"version":3,"sources":["../../src/deploy/metadata.ts"],"names":["keyMapping"],"mappings":"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","file":"metadata.js","sourcesContent":["import {ciPlatform, CIMetadata} from '@shopify/cli-kit/node/context/local';\nimport {getLatestGitCommit} from '@shopify/cli-kit/node/git';\nimport {Logger, outputWarn} from '@shopify/cli-kit/node/output';\n\nimport {maxLabelLength} from '../utils/utils.js';\n\nimport {DeploymentConfig, EnvironmentInput} from './types.js';\n\nexport type Metadata = CIMetadata & {\n commitDate?: string;\n hydrogenVersion?: string;\n name?: string;\n};\n\nexport async function getMetadata(\n config: DeploymentConfig,\n logger: Logger,\n): Promise<Metadata> {\n const ciInfo = ciPlatform();\n const metadata: Metadata = ciInfo.metadata ?? {};\n\n try {\n const gitCommit = await latestCommit(config.rootPath);\n\n // Only update actor, commitDate, and commitMessage if we don't already have\n // the data from CI.\n if (!metadata.actor) {\n metadata.actor = gitCommit.author_name;\n }\n if (!metadata.commitDate) {\n metadata.commitDate = gitCommit.date;\n }\n if (!metadata.commitMessage) {\n metadata.commitMessage = gitCommit.message;\n }\n\n // Always update the following keys with the Git information if it's\n // available since we may modify what the values are.\n if (gitCommit.branch) {\n metadata.branch = gitCommit.branch;\n }\n if (gitCommit.hash) {\n metadata.commitSha = gitCommit.hash;\n }\n } catch (error) {\n outputWarn(\n 'Could not retrieve Git history, commit message will be unavailable.',\n logger,\n );\n }\n\n return {\n name: ciInfo.isCI ? ciInfo.name : 'none',\n ...metadata,\n actor: config.metadata.user ?? metadata.actor,\n commitMessage: createCommitTitle(\n config.metadata.description ?? metadata.commitMessage,\n ),\n commitSha: config.metadata.version ?? metadata.commitSha,\n hydrogenVersion: config.metadata.hydrogenVersion,\n url: config.metadata.url ?? metadata.url,\n };\n}\n\nasync function latestCommit(path?: string) {\n const gitCommit = await getLatestGitCommit(path);\n const branch = (/HEAD -> ([^,]*)/.exec(gitCommit.refs) || [])[1];\n\n // If this variable is set it means we are in a GitHub action using the\n // pull_request trigger which creates a merge commit and we'll need to\n // manually extract the commit details.\n // eslint-disable-next-line no-process-env\n const headRef = process.env.GITHUB_HEAD_REF;\n\n if (!headRef) {\n return {\n ...gitCommit,\n branch,\n };\n }\n\n const match = /Merge ([\\w\\d]+) into [\\w\\d]+/.exec(gitCommit.message);\n\n return {\n ...gitCommit,\n branch: headRef,\n hash: match ? match[1] : gitCommit.hash,\n };\n}\n\nfunction createCommitTitle(commitMessage?: string): string | undefined {\n if (!commitMessage) {\n return;\n }\n\n let title = commitMessage.split(/\\r?\\n/)[0]?.trim() || '';\n let jsonTitle = JSON.stringify(title);\n let isTruncated = false;\n\n while (jsonTitle.length > maxLabelLength) {\n const lastSpaceIndex = title.lastIndexOf(' ', maxLabelLength - 3);\n title = `${title.substring(\n 0,\n lastSpaceIndex > -1 ? lastSpaceIndex : maxLabelLength - 3,\n )}`.trimEnd();\n isTruncated = true;\n jsonTitle = JSON.stringify(title);\n }\n\n return isTruncated ? `${title}...` : title;\n}\n\nexport function getEnvironmentInput(\n config: DeploymentConfig,\n metadata: CIMetadata,\n): EnvironmentInput | undefined {\n if (config.defaultEnvironment) {\n return undefined;\n }\n\n const tag = config.environmentTag || metadata.branch;\n return tag ? {tag} : undefined;\n}\n\nexport function createLabels(metadata: Metadata): string[] {\n const labels: string[] = [];\n\n const checkLabel = (labelKey: string, labelValue: string) => {\n const jsonString = JSON.stringify(labelValue);\n if (jsonString.length > maxLabelLength) {\n throw new Error(\n `Provided ${labelKey} metadata exceeds maximum length (max ${maxLabelLength} characters).`,\n );\n }\n const label = `${labelKey}=${jsonString}`;\n labels.push(label);\n };\n\n if (metadata.name !== 'none') {\n labels.push(`ci-platform=${JSON.stringify(metadata.name)}`);\n }\n\n if (metadata.name !== 'unknown') {\n const keyMapping = {\n attempt: 'attempt',\n run: 'runId',\n };\n\n for (const [key, value] of Object.entries(keyMapping)) {\n const metadataKey = key as keyof Metadata;\n if (metadata[metadataKey]) {\n labels.push(\n `${metadata.name}-${value}=${JSON.stringify(metadata[metadataKey])}`,\n );\n }\n }\n }\n\n const keyMapping = {\n actor: 'user',\n branch: 'branch',\n commitDate: 'commit-date',\n commitMessage: 'description',\n commitSha: 'version',\n hydrogenVersion: 'hydrogen-version',\n url: 'url',\n };\n\n for (const [key, value] of Object.entries(keyMapping)) {\n const metadataKey = key as keyof Metadata;\n if (metadata[metadataKey]) {\n checkLabel(value, metadata[metadataKey]!);\n }\n }\n\n return labels;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/deploy/types.ts"],"names":["FileType"],"mappings":"AAkFY,IAAA,QAAA,qBAAAA,SAAL,KAAA;AACL,EAAAA,UAAA,QAAS,CAAA,GAAA,QAAA,CAAA;AACT,EAAAA,UAAA,OAAQ,CAAA,GAAA,OAAA,CAAA;AAFE,EAAAA,OAAAA,SAAAA,CAAAA;AAAA,CAAA,EAAA,QAAA,IAAA,EAAA,EAAA;AASL,MAAM,0BAA0B,KAAM,CAAA;AAAC,CAAA;AAEvC,MAAM,6CAA6C,KAAM,CAAA;AAAC","file":"types.js","sourcesContent":["import {DeploymentVerificationDetailsResponse} from './graphql/deployment-verification-details.js';\n\nexport interface Build {\n id: string;\n assetPath: string;\n}\n\nexport interface ClientError extends Error {\n statusCode: number;\n}\n\nexport interface DeploymentHooks {\n buildFunction?: (urlPath?: string) => Promise<void>;\n onDeploymentCompletedVerificationStart?: () => void;\n onDeploymentCompletedVerificationError?: () => void;\n onDeploymentFailed?: (\n responseData: DeploymentVerificationDetailsResponse,\n ) => void;\n onDeploymentCompleted?: () => void;\n onVerificationStart?: () => void;\n onVerificationComplete?: () => void;\n onVerificationError?: (error: Error) => void;\n onUploadFilesStart?: () => void;\n onUploadFilesError?: (error: Error) => void;\n onUploadFilesComplete?: () => void;\n}\n\nexport interface DeploymentConfig {\n assetsDir?: string;\n bugsnag: boolean;\n buildCommand?: string;\n deploymentToken: DeploymentToken;\n deploymentUrl: string;\n environmentTag?: string;\n metadata: {\n description?: string;\n hydrogenVersion?: string;\n user?: string;\n version?: string;\n url?: string;\n };\n defaultEnvironment: boolean;\n rootPath?: string;\n skipBuild: boolean;\n skipVerification: boolean;\n verificationMaxDuration: number;\n workerDir?: string;\n workerOnly: boolean;\n generateAuthBypassToken: boolean;\n authBypassTokenDuration?: string;\n overriddenEnvironmentVariables?: EnvironmentVariable[];\n}\n\nexport interface EnvironmentVariable {\n isSecret: boolean;\n key: string;\n value: string;\n}\n\nexport interface DeploymentToken {\n accessToken: string;\n allowedResource: string;\n appId: string;\n client: string;\n expiresAt: string;\n namespace: string;\n namespaceId: string;\n}\n\nexport interface DeploymentManifestFile {\n filePath: string;\n fileSize: number;\n mimeType: string;\n fileHash: string;\n fileType: string;\n}\n\nexport interface EnvironmentInput {\n handle?: string;\n tag?: string;\n}\n\nexport enum FileType {\n Worker = 'WORKER',\n Asset = 'ASSET',\n}\n\nexport interface OxygenError {\n message: string;\n}\n\nexport class VerificationError extends Error {}\n\nexport class DeploymentCompletedVerificationError extends Error {}\n"]}
1
+ {"version":3,"sources":["../../src/deploy/types.ts"],"names":["FileType"],"mappings":"AAkFY,IAAA,QAAA,qBAAAA,SAAL,KAAA;AACL,EAAAA,UAAA,QAAS,CAAA,GAAA,QAAA;AACT,EAAAA,UAAA,OAAQ,CAAA,GAAA,OAAA;AAFE,EAAAA,OAAAA,SAAAA;AAAA,CAAA,EAAA,QAAA,IAAA,EAAA;AASL,MAAM,0BAA0B,KAAM,CAAA;AAAC;AAEvC,MAAM,6CAA6C,KAAM,CAAA;AAAC","file":"types.js","sourcesContent":["import {DeploymentVerificationDetailsResponse} from './graphql/deployment-verification-details.js';\n\nexport interface Build {\n id: string;\n assetPath: string;\n}\n\nexport interface ClientError extends Error {\n statusCode: number;\n}\n\nexport interface DeploymentHooks {\n buildFunction?: (urlPath?: string) => Promise<void>;\n onDeploymentCompletedVerificationStart?: () => void;\n onDeploymentCompletedVerificationError?: () => void;\n onDeploymentFailed?: (\n responseData: DeploymentVerificationDetailsResponse,\n ) => void;\n onDeploymentCompleted?: () => void;\n onVerificationStart?: () => void;\n onVerificationComplete?: () => void;\n onVerificationError?: (error: Error) => void;\n onUploadFilesStart?: () => void;\n onUploadFilesError?: (error: Error) => void;\n onUploadFilesComplete?: () => void;\n}\n\nexport interface DeploymentConfig {\n assetsDir?: string;\n bugsnag: boolean;\n buildCommand?: string;\n deploymentToken: DeploymentToken;\n deploymentUrl: string;\n environmentTag?: string;\n metadata: {\n description?: string;\n hydrogenVersion?: string;\n user?: string;\n version?: string;\n url?: string;\n };\n defaultEnvironment: boolean;\n rootPath?: string;\n skipBuild: boolean;\n skipVerification: boolean;\n verificationMaxDuration: number;\n workerDir?: string;\n workerOnly: boolean;\n generateAuthBypassToken: boolean;\n authBypassTokenDuration?: string;\n overriddenEnvironmentVariables?: EnvironmentVariable[];\n}\n\nexport interface EnvironmentVariable {\n isSecret: boolean;\n key: string;\n value: string;\n}\n\nexport interface DeploymentToken {\n accessToken: string;\n allowedResource: string;\n appId: string;\n client: string;\n expiresAt: string;\n namespace: string;\n namespaceId: string;\n}\n\nexport interface DeploymentManifestFile {\n filePath: string;\n fileSize: number;\n mimeType: string;\n fileHash: string;\n fileType: string;\n}\n\nexport interface EnvironmentInput {\n handle?: string;\n tag?: string;\n}\n\nexport enum FileType {\n Worker = 'WORKER',\n Asset = 'ASSET',\n}\n\nexport interface OxygenError {\n message: string;\n}\n\nexport class VerificationError extends Error {}\n\nexport class DeploymentCompletedVerificationError extends Error {}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/deploy/upload-files.ts"],"names":[],"mappings":"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","file":"upload-files.js","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\nimport {Agent} from 'https';\n\nimport {fetch, formData} from '@shopify/cli-kit/node/http';\nimport {createFileReadStream} from '@shopify/cli-kit/node/fs';\nimport {\n Logger,\n outputCompleted,\n outputInfo,\n} from '@shopify/cli-kit/node/output';\nimport {joinPath} from '@shopify/cli-kit/node/path';\nimport {mapLimit} from 'async';\n\nimport {deployDefaults} from '../utils/utils.js';\nimport {MetricsExporter, MetricName} from '../utils/metrics-exporter.js';\n\nimport {DeploymentConfig, DeploymentHooks} from './types.js';\nimport {DeploymentTargetResponse} from './graphql/deployment-initiate.js';\n\ninterface InitiateResumableResponse {\n target: DeploymentTargetResponse;\n sessionUri: string;\n location: string;\n}\n\ninterface ResumableUploadStatus {\n complete: boolean;\n lastReceivedByte: number;\n}\n\ninterface UploadFilesOptions {\n config: DeploymentConfig;\n hooks?: DeploymentHooks;\n logger: Logger;\n metricsExporter?: MetricsExporter;\n targets: DeploymentTargetResponse[];\n}\n\nexport async function uploadFiles(options: UploadFilesOptions): Promise<void> {\n const {config, logger, targets, hooks} = options;\n outputInfo(`Uploading ${targets.length} files...`, logger);\n\n const totalUploadSize =\n targets.reduce((total, target) => total + target.fileSize, 0) / 1024;\n options.metricsExporter?.add(MetricName.TotalSizeUploaded, totalUploadSize);\n options.metricsExporter?.add(MetricName.NumFilesUploaded, targets.length);\n\n const agent = new Agent({keepAlive: true});\n hooks?.onUploadFilesStart?.();\n const startTime = performance.now();\n return mapLimit(targets, 6, async (target: DeploymentTargetResponse) => {\n await uploadFile(config, target, agent);\n })\n .then(() => {\n const endTime = performance.now();\n hooks?.onUploadFilesComplete?.();\n options.metricsExporter?.add(MetricName.UploadTime, endTime - startTime);\n outputCompleted(`Files uploaded successfully`, logger);\n })\n .catch((err) => {\n hooks?.onUploadFilesError?.(err);\n throw err;\n })\n .finally(() => {\n agent.destroy();\n });\n}\n\nasync function uploadFile(\n config: DeploymentConfig,\n target: DeploymentTargetResponse,\n agent: Agent,\n) {\n const localFolderPath =\n target.fileType === 'WORKER'\n ? joinPath(config.rootPath!, config.workerDir!)\n : joinPath(config.rootPath!, config.assetsDir!);\n\n if (target.parameters !== null && target.parameters.length > 0) {\n // If parameters exist perform a form upload\n const form = formData();\n target.parameters.forEach((param) => {\n form.append(param.name, param.value);\n });\n form.append(\n 'file',\n createFileReadStream(joinPath(localFolderPath, target.filePath)),\n );\n await formUpload(form, target, agent);\n } else {\n // If no parameters exist perform a resumable upload\n const initData = await initiateResumableUpload(target, agent);\n await performResumableUpload(\n joinPath(localFolderPath, target.filePath),\n initData,\n agent,\n );\n }\n}\n\nasync function formUpload(\n form: ReturnType<typeof formData>,\n target: DeploymentTargetResponse,\n agent: Agent,\n attemptNumber = 0,\n) {\n try {\n const timeoutDuration = 120000;\n const controller = new AbortController();\n const timeout = setTimeout(() => {\n controller.abort();\n }, timeoutDuration);\n\n const response = await fetch(target.uploadUrl, {\n method: 'POST',\n body: form,\n signal: controller.signal,\n headers: {\n Connection: 'keep-alive',\n },\n agent,\n });\n clearTimeout(timeout);\n\n if (!response.ok) {\n throw new Error(`${response.status}`);\n }\n } catch (err) {\n if (isErrorCode(err, 'ENOENT')) {\n throw new Error(`File not found: ${target.filePath}`);\n }\n\n if (attemptNumber < Number(deployDefaults.maxUploadAttempts)) {\n await formUpload(form, target, agent, attemptNumber + 1);\n } else {\n if (err instanceof Error && err.name === 'AbortError') {\n throw new Error(`Request timeout whilst uploading ${target.filePath}`);\n }\n throw new Error(`Failed to upload file ${target.filePath}`);\n }\n }\n}\n\nasync function initiateResumableUpload(\n target: DeploymentTargetResponse,\n agent: Agent,\n): Promise<InitiateResumableResponse> {\n return fetch(target.uploadUrl, {\n method: 'POST',\n headers: {\n 'x-goog-resumable': 'start',\n 'X-Goog-Content-Length-Range': `0,${target.fileSize}`,\n 'User-Agent': 'oxygen-cli',\n },\n agent,\n })\n .then((res) => {\n return {\n sessionUri: res.headers.get('x-guploader-uploadid')!,\n location: res.headers.get('location')!,\n target,\n };\n })\n .catch((err) => {\n throw new Error(\n `Failed to initiate resumable upload for file ${target.filePath} (status code ${err.statusCode})`,\n );\n });\n}\n\nasync function performResumableUpload(\n localFilePath: string,\n initData: InitiateResumableResponse,\n agent: Agent,\n startByte = 0,\n attemptNumber = 0,\n) {\n await uploadResumable(\n initData.location,\n localFilePath,\n startByte,\n agent,\n ).catch(async (err) => {\n if (isErrorCode(err, 'ENOENT')) {\n throw new Error(`File not found: ${initData.target.filePath}`);\n }\n\n if (\n err &&\n attemptNumber >= Number(deployDefaults.maxResumabeUploadAttempts)\n ) {\n throw new Error(\n `Failed to upload file ${initData.target.filePath} after ${deployDefaults.maxResumabeUploadAttempts} attempts`,\n );\n }\n const status = await resumableUploadStatus(\n initData.location,\n initData.target.fileSize,\n agent,\n );\n if (!status.complete) {\n const nextAttemptStartByte = status.lastReceivedByte;\n const attempt = attemptNumber + 1;\n await performResumableUpload(\n localFilePath,\n initData,\n agent,\n nextAttemptStartByte,\n attempt,\n );\n }\n });\n}\n\nasync function uploadResumable(\n location: string,\n filePath: string,\n lastReceivedByte: number,\n agent: Agent,\n): Promise<number> {\n const file = createFileReadStream(filePath, {start: lastReceivedByte});\n return fetch(location, {\n method: 'PUT',\n body: file,\n agent,\n }).then((res) => {\n return res.status;\n });\n}\n\nasync function resumableUploadStatus(\n location: string,\n fileSize: number,\n agent: Agent,\n): Promise<ResumableUploadStatus> {\n const getLastByte = (range: string | null): number => {\n if (!range || range.split('-').length !== 2) return 0;\n const rangeParts = range.split('-');\n return parseInt(rangeParts[1]!, 10);\n };\n\n return fetch(location, {\n method: 'PUT',\n headers: {\n 'Content-Length': '0',\n 'Content-Range': `bytes */${fileSize}`,\n },\n agent,\n })\n .then((res) => {\n return {\n complete: res.status === 200,\n lastReceivedByte: getLastByte(res.headers.get('range')),\n };\n })\n .catch((err) => {\n // eslint-disable-next-line no-console\n console.error(err);\n return {\n complete: false,\n lastReceivedByte: 0,\n };\n });\n}\n\nfunction isErrorCode(err: unknown, code: string): boolean {\n return err instanceof Error && 'code' in err && err.code === code;\n}\n"]}
1
+ {"version":3,"sources":["../../src/deploy/upload-files.ts"],"names":[],"mappings":"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","file":"upload-files.js","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\nimport {Agent} from 'https';\n\nimport {fetch, formData} from '@shopify/cli-kit/node/http';\nimport {createFileReadStream} from '@shopify/cli-kit/node/fs';\nimport {\n Logger,\n outputCompleted,\n outputInfo,\n} from '@shopify/cli-kit/node/output';\nimport {joinPath} from '@shopify/cli-kit/node/path';\nimport {mapLimit} from 'async';\n\nimport {deployDefaults} from '../utils/utils.js';\nimport {MetricsExporter, MetricName} from '../utils/metrics-exporter.js';\n\nimport {DeploymentConfig, DeploymentHooks} from './types.js';\nimport {DeploymentTargetResponse} from './graphql/deployment-initiate.js';\n\ninterface InitiateResumableResponse {\n target: DeploymentTargetResponse;\n sessionUri: string;\n location: string;\n}\n\ninterface ResumableUploadStatus {\n complete: boolean;\n lastReceivedByte: number;\n}\n\ninterface UploadFilesOptions {\n config: DeploymentConfig;\n hooks?: DeploymentHooks;\n logger: Logger;\n metricsExporter?: MetricsExporter;\n targets: DeploymentTargetResponse[];\n}\n\nexport async function uploadFiles(options: UploadFilesOptions): Promise<void> {\n const {config, logger, targets, hooks} = options;\n outputInfo(`Uploading ${targets.length} files...`, logger);\n\n const totalUploadSize =\n targets.reduce((total, target) => total + target.fileSize, 0) / 1024;\n options.metricsExporter?.add(MetricName.TotalSizeUploaded, totalUploadSize);\n options.metricsExporter?.add(MetricName.NumFilesUploaded, targets.length);\n\n const agent = new Agent({keepAlive: true});\n hooks?.onUploadFilesStart?.();\n const startTime = performance.now();\n return mapLimit(targets, 6, async (target: DeploymentTargetResponse) => {\n await uploadFile(config, target, agent);\n })\n .then(() => {\n const endTime = performance.now();\n hooks?.onUploadFilesComplete?.();\n options.metricsExporter?.add(MetricName.UploadTime, endTime - startTime);\n outputCompleted(`Files uploaded successfully`, logger);\n })\n .catch((err) => {\n hooks?.onUploadFilesError?.(err);\n throw err;\n })\n .finally(() => {\n agent.destroy();\n });\n}\n\nasync function uploadFile(\n config: DeploymentConfig,\n target: DeploymentTargetResponse,\n agent: Agent,\n) {\n const localFolderPath =\n target.fileType === 'WORKER'\n ? joinPath(config.rootPath!, config.workerDir!)\n : joinPath(config.rootPath!, config.assetsDir!);\n\n if (target.parameters !== null && target.parameters.length > 0) {\n // If parameters exist perform a form upload\n const form = formData();\n target.parameters.forEach((param) => {\n form.append(param.name, param.value);\n });\n form.append(\n 'file',\n createFileReadStream(joinPath(localFolderPath, target.filePath)),\n );\n await formUpload(form, target, agent);\n } else {\n // If no parameters exist perform a resumable upload\n const initData = await initiateResumableUpload(target, agent);\n await performResumableUpload(\n joinPath(localFolderPath, target.filePath),\n initData,\n agent,\n );\n }\n}\n\nasync function formUpload(\n form: ReturnType<typeof formData>,\n target: DeploymentTargetResponse,\n agent: Agent,\n attemptNumber = 0,\n) {\n try {\n const timeoutDuration = 120000;\n const controller = new AbortController();\n const timeout = setTimeout(() => {\n controller.abort();\n }, timeoutDuration);\n\n const response = await fetch(target.uploadUrl, {\n method: 'POST',\n body: form,\n signal: controller.signal,\n headers: {\n Connection: 'keep-alive',\n },\n agent,\n });\n clearTimeout(timeout);\n\n if (!response.ok) {\n throw new Error(`${response.status}`);\n }\n } catch (err) {\n if (isErrorCode(err, 'ENOENT')) {\n throw new Error(`File not found: ${target.filePath}`);\n }\n\n if (attemptNumber < Number(deployDefaults.maxUploadAttempts)) {\n await formUpload(form, target, agent, attemptNumber + 1);\n } else {\n if (err instanceof Error && err.name === 'AbortError') {\n throw new Error(`Request timeout whilst uploading ${target.filePath}`);\n }\n throw new Error(`Failed to upload file ${target.filePath}`);\n }\n }\n}\n\nasync function initiateResumableUpload(\n target: DeploymentTargetResponse,\n agent: Agent,\n): Promise<InitiateResumableResponse> {\n return fetch(target.uploadUrl, {\n method: 'POST',\n headers: {\n 'x-goog-resumable': 'start',\n 'X-Goog-Content-Length-Range': `0,${target.fileSize}`,\n 'User-Agent': 'oxygen-cli',\n },\n agent,\n })\n .then((res) => {\n return {\n sessionUri: res.headers.get('x-guploader-uploadid')!,\n location: res.headers.get('location')!,\n target,\n };\n })\n .catch((err) => {\n throw new Error(\n `Failed to initiate resumable upload for file ${target.filePath} (status code ${err.statusCode})`,\n );\n });\n}\n\nasync function performResumableUpload(\n localFilePath: string,\n initData: InitiateResumableResponse,\n agent: Agent,\n startByte = 0,\n attemptNumber = 0,\n) {\n await uploadResumable(\n initData.location,\n localFilePath,\n startByte,\n agent,\n ).catch(async (err) => {\n if (isErrorCode(err, 'ENOENT')) {\n throw new Error(`File not found: ${initData.target.filePath}`);\n }\n\n if (\n err &&\n attemptNumber >= Number(deployDefaults.maxResumabeUploadAttempts)\n ) {\n throw new Error(\n `Failed to upload file ${initData.target.filePath} after ${deployDefaults.maxResumabeUploadAttempts} attempts`,\n );\n }\n const status = await resumableUploadStatus(\n initData.location,\n initData.target.fileSize,\n agent,\n );\n if (!status.complete) {\n const nextAttemptStartByte = status.lastReceivedByte;\n const attempt = attemptNumber + 1;\n await performResumableUpload(\n localFilePath,\n initData,\n agent,\n nextAttemptStartByte,\n attempt,\n );\n }\n });\n}\n\nasync function uploadResumable(\n location: string,\n filePath: string,\n lastReceivedByte: number,\n agent: Agent,\n): Promise<number> {\n const file = createFileReadStream(filePath, {start: lastReceivedByte});\n return fetch(location, {\n method: 'PUT',\n body: file,\n agent,\n }).then((res) => {\n return res.status;\n });\n}\n\nasync function resumableUploadStatus(\n location: string,\n fileSize: number,\n agent: Agent,\n): Promise<ResumableUploadStatus> {\n const getLastByte = (range: string | null): number => {\n if (!range || range.split('-').length !== 2) return 0;\n const rangeParts = range.split('-');\n return parseInt(rangeParts[1]!, 10);\n };\n\n return fetch(location, {\n method: 'PUT',\n headers: {\n 'Content-Length': '0',\n 'Content-Range': `bytes */${fileSize}`,\n },\n agent,\n })\n .then((res) => {\n return {\n complete: res.status === 200,\n lastReceivedByte: getLastByte(res.headers.get('range')),\n };\n })\n .catch((err) => {\n // eslint-disable-next-line no-console\n console.error(err);\n return {\n complete: false,\n lastReceivedByte: 0,\n };\n });\n}\n\nfunction isErrorCode(err: unknown, code: string): boolean {\n return err instanceof Error && 'code' in err && err.code === code;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/deploy/verify-deployment-completed.ts"],"names":[],"mappings":"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","file":"verify-deployment-completed.js","sourcesContent":["import {graphqlRequest} from '@shopify/cli-kit/node/api/graphql';\nimport {\n Logger,\n outputCompleted,\n outputInfo,\n} from '@shopify/cli-kit/node/output';\n\nimport {Header} from '../utils/utils.js';\n\nimport {\n DeploymentConfig,\n DeploymentHooks,\n DeploymentCompletedVerificationError,\n} from './types.js';\nimport {\n DeploymentVerificationDetailsQuery,\n DeploymentVerificationDetailsQueryData,\n DeploymentVerificationDetailsResponse,\n Status,\n} from './graphql/deployment-verification-details.js';\n\ninterface DeploymentVerificationDetailsOptions {\n config: DeploymentConfig;\n hooks?: DeploymentHooks;\n timeoutInSeconds: number;\n logger: Logger;\n}\n\nexport async function verifyDeploymentCompleted(\n options: DeploymentVerificationDetailsOptions,\n deploymentId: string,\n): Promise<DeploymentVerificationDetailsResponse> {\n const {config, logger, timeoutInSeconds, hooks} = options;\n const variables = {\n deploymentId,\n };\n\n hooks?.onDeploymentCompletedVerificationStart?.();\n outputInfo('Verifying deployment completed...', logger);\n\n let attempts = 0;\n const startTime = Date.now();\n\n const handleInterval = async () => {\n const delay = 3000;\n const elapsedTime = (Date.now() - startTime) / 1000;\n if (elapsedTime + delay / 1000 > timeoutInSeconds) {\n hooks?.onDeploymentCompletedVerificationError?.();\n throw new Error(\n `Deployment not completed after ${timeoutInSeconds} seconds.`,\n );\n }\n attempts++;\n await new Promise((resolve) => setTimeout(resolve, delay));\n return check();\n };\n\n const check = async (): Promise<DeploymentVerificationDetailsResponse> => {\n const response: DeploymentVerificationDetailsQueryData =\n await graphqlRequest({\n query: DeploymentVerificationDetailsQuery,\n api: 'Oxygen',\n url: `${config.deploymentUrl}/api/v2/admin/graphql`,\n token: config.deploymentToken.accessToken,\n variables,\n addedHeaders: {\n [Header.OxygenNamespaceHandle]: config.deploymentToken.namespace,\n },\n });\n\n const data = response.deploymentVerificationDetails;\n if (data == null) {\n hooks?.onDeploymentCompletedVerificationError?.();\n throw new DeploymentCompletedVerificationError('Deployment not found');\n }\n\n if (data.status === Status.Deployed) {\n outputCompleted('Deployment to Oxygen completed successfully', logger);\n hooks?.onDeploymentCompleted?.();\n return data;\n }\n\n if (data.status === Status.Failed || data.status === Status.Cancelled) {\n hooks?.onDeploymentFailed?.(data);\n throw new DeploymentCompletedVerificationError(\n data.error\n ? `Deployment ${data.status.toLocaleLowerCase()}, error: ${\n data.error\n }${\n data.startupTime && data.error.includes('exceeded CPU time limit')\n ? ` (Startup time: ${data.startupTime}ms exceeded CPU time limit)`\n : ''\n }`\n : `Deployment ${data.status.toLocaleLowerCase()}`,\n );\n }\n\n return handleInterval();\n };\n\n return check();\n}\n"]}
1
+ {"version":3,"sources":["../../src/deploy/verify-deployment-completed.ts"],"names":[],"mappings":";;;;;;AA4BA,eAAsB,yBAAA,CACpB,SACA,YACgD,EAAA;AAChD,EAAA,MAAM,EAAC,MAAA,EAAQ,MAAQ,EAAA,gBAAA,EAAkB,OAAS,GAAA,OAAA;AAClD,EAAA,MAAM,SAAY,GAAA;AAAA,IAChB;AAAA,GACF;AAEA,EAAA,KAAA,EAAO,sCAAyC,IAAA;AAChD,EAAA,UAAA,CAAW,qCAAqC,MAAM,CAAA;AAGtD,EAAM,MAAA,SAAA,GAAY,KAAK,GAAI,EAAA;AAE3B,EAAA,MAAM,iBAAiB,YAAY;AACjC,IAAA,MAAM,KAAQ,GAAA,GAAA;AACd,IAAA,MAAM,WAAe,GAAA,CAAA,IAAA,CAAK,GAAI,EAAA,GAAI,SAAa,IAAA,GAAA;AAC/C,IAAI,IAAA,WAAA,GAAc,KAAQ,GAAA,GAAA,GAAO,gBAAkB,EAAA;AACjD,MAAA,KAAA,EAAO,sCAAyC,IAAA;AAChD,MAAA,MAAM,IAAI,KAAA;AAAA,QACR,kCAAkC,gBAAgB,CAAA,SAAA;AAAA,OACpD;AAAA;AAGF,IAAA,MAAM,IAAI,OAAQ,CAAA,CAAC,YAAY,UAAW,CAAA,OAAA,EAAS,KAAK,CAAC,CAAA;AACzD,IAAA,OAAO,KAAM,EAAA;AAAA,GACf;AAEA,EAAA,MAAM,QAAQ,YAA4D;AACxE,IAAM,MAAA,QAAA,GACJ,MAAM,cAAe,CAAA;AAAA,MACnB,KAAO,EAAA,kCAAA;AAAA,MACP,GAAK,EAAA,QAAA;AAAA,MACL,GAAA,EAAK,CAAG,EAAA,MAAA,CAAO,aAAa,CAAA,qBAAA,CAAA;AAAA,MAC5B,KAAA,EAAO,OAAO,eAAgB,CAAA,WAAA;AAAA,MAC9B,SAAA;AAAA,MACA,YAAc,EAAA;AAAA,QACZ,CAAC,MAAA,CAAO,qBAAqB,GAAG,OAAO,eAAgB,CAAA;AAAA;AACzD,KACD,CAAA;AAEH,IAAA,MAAM,OAAO,QAAS,CAAA,6BAAA;AACtB,IAAA,IAAI,QAAQ,IAAM,EAAA;AAChB,MAAA,KAAA,EAAO,sCAAyC,IAAA;AAChD,MAAM,MAAA,IAAI,qCAAqC,sBAAsB,CAAA;AAAA;AAGvE,IAAI,IAAA,IAAA,CAAK,MAAW,KAAA,MAAA,CAAO,QAAU,EAAA;AACnC,MAAA,eAAA,CAAgB,+CAA+C,MAAM,CAAA;AACrE,MAAA,KAAA,EAAO,qBAAwB,IAAA;AAC/B,MAAO,OAAA,IAAA;AAAA;AAGT,IAAA,IAAI,KAAK,MAAW,KAAA,MAAA,CAAO,UAAU,IAAK,CAAA,MAAA,KAAW,OAAO,SAAW,EAAA;AACrE,MAAA,KAAA,EAAO,qBAAqB,IAAI,CAAA;AAChC,MAAA,MAAM,IAAI,oCAAA;AAAA,QACR,IAAK,CAAA,KAAA,GACD,CAAc,WAAA,EAAA,IAAA,CAAK,MAAO,CAAA,iBAAA,EAAmB,CAAA,SAAA,EAC3C,IAAK,CAAA,KACP,CACE,EAAA,IAAA,CAAK,WAAe,IAAA,IAAA,CAAK,KAAM,CAAA,QAAA,CAAS,yBAAyB,CAAA,GAC7D,CAAmB,gBAAA,EAAA,IAAA,CAAK,WAAW,CAAA,2BAAA,CAAA,GACnC,EACN,CAAA,CAAA,GACA,CAAc,WAAA,EAAA,IAAA,CAAK,MAAO,CAAA,iBAAA,EAAmB,CAAA;AAAA,OACnD;AAAA;AAGF,IAAA,OAAO,cAAe,EAAA;AAAA,GACxB;AAEA,EAAA,OAAO,KAAM,EAAA;AACf","file":"verify-deployment-completed.js","sourcesContent":["import {graphqlRequest} from '@shopify/cli-kit/node/api/graphql';\nimport {\n Logger,\n outputCompleted,\n outputInfo,\n} from '@shopify/cli-kit/node/output';\n\nimport {Header} from '../utils/utils.js';\n\nimport {\n DeploymentConfig,\n DeploymentHooks,\n DeploymentCompletedVerificationError,\n} from './types.js';\nimport {\n DeploymentVerificationDetailsQuery,\n DeploymentVerificationDetailsQueryData,\n DeploymentVerificationDetailsResponse,\n Status,\n} from './graphql/deployment-verification-details.js';\n\ninterface DeploymentVerificationDetailsOptions {\n config: DeploymentConfig;\n hooks?: DeploymentHooks;\n timeoutInSeconds: number;\n logger: Logger;\n}\n\nexport async function verifyDeploymentCompleted(\n options: DeploymentVerificationDetailsOptions,\n deploymentId: string,\n): Promise<DeploymentVerificationDetailsResponse> {\n const {config, logger, timeoutInSeconds, hooks} = options;\n const variables = {\n deploymentId,\n };\n\n hooks?.onDeploymentCompletedVerificationStart?.();\n outputInfo('Verifying deployment completed...', logger);\n\n let attempts = 0;\n const startTime = Date.now();\n\n const handleInterval = async () => {\n const delay = 3000;\n const elapsedTime = (Date.now() - startTime) / 1000;\n if (elapsedTime + delay / 1000 > timeoutInSeconds) {\n hooks?.onDeploymentCompletedVerificationError?.();\n throw new Error(\n `Deployment not completed after ${timeoutInSeconds} seconds.`,\n );\n }\n attempts++;\n await new Promise((resolve) => setTimeout(resolve, delay));\n return check();\n };\n\n const check = async (): Promise<DeploymentVerificationDetailsResponse> => {\n const response: DeploymentVerificationDetailsQueryData =\n await graphqlRequest({\n query: DeploymentVerificationDetailsQuery,\n api: 'Oxygen',\n url: `${config.deploymentUrl}/api/v2/admin/graphql`,\n token: config.deploymentToken.accessToken,\n variables,\n addedHeaders: {\n [Header.OxygenNamespaceHandle]: config.deploymentToken.namespace,\n },\n });\n\n const data = response.deploymentVerificationDetails;\n if (data == null) {\n hooks?.onDeploymentCompletedVerificationError?.();\n throw new DeploymentCompletedVerificationError('Deployment not found');\n }\n\n if (data.status === Status.Deployed) {\n outputCompleted('Deployment to Oxygen completed successfully', logger);\n hooks?.onDeploymentCompleted?.();\n return data;\n }\n\n if (data.status === Status.Failed || data.status === Status.Cancelled) {\n hooks?.onDeploymentFailed?.(data);\n throw new DeploymentCompletedVerificationError(\n data.error\n ? `Deployment ${data.status.toLocaleLowerCase()}, error: ${\n data.error\n }${\n data.startupTime && data.error.includes('exceeded CPU time limit')\n ? ` (Startup time: ${data.startupTime}ms exceeded CPU time limit)`\n : ''\n }`\n : `Deployment ${data.status.toLocaleLowerCase()}`,\n );\n }\n\n return handleInterval();\n };\n\n return check();\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/deploy/verify-deployment.ts"],"names":[],"mappings":";;;;AAYA,eAAsB,iBACpB,OACe,EAAA;AACf,EAAA,MAAM,EAAC,MAAA,EAAQ,GAAK,EAAA,MAAA,EAAQ,OAAS,GAAA,OAAA,CAAA;AACrC,EAAA,KAAA,EAAO,mBAAsB,IAAA,CAAA;AAC7B,EAAA,UAAA,CAAW,8CAA8C,MAAM,CAAA,CAAA;AAE/D,EAAA,IAAI,QAAW,GAAA,CAAA,CAAA;AACf,EAAA,IAAI,KAAQ,GAAA,CAAA,CAAA;AACZ,EAAA,IAAI,uBAA0B,GAAA,KAAA,CAAA;AAC9B,EAAM,MAAA,SAAA,GAAY,KAAK,GAAI,EAAA,CAAA;AAE3B,EAAA,MAAM,iBAAiB,YAAY;AACjC,IAAA,IAAI,WAAW,EAAI,EAAA;AACjB,MAAQ,KAAA,GAAA,GAAA,CAAA;AAAA,KACV,MAAA,IAAW,QAAW,GAAA,CAAA,KAAM,CAAG,EAAA;AAC7B,MAAS,KAAA,IAAA,GAAA,CAAA;AAAA,KACX;AACA,IAAA,MAAM,WAAe,GAAA,CAAA,IAAA,CAAK,GAAI,EAAA,GAAI,SAAa,IAAA,GAAA,CAAA;AAC/C,IAAA,IAAI,WAAc,GAAA,KAAA,GAAQ,GAAO,GAAA,MAAA,CAAO,uBAAyB,EAAA;AAC/D,MAAA,MAAM,QAAQ,IAAI,iBAAA;AAAA,QAChB,iDAAA;AAAA,OACF,CAAA;AACA,MAAA,IAAI,CAAC,uBAAyB,EAAA;AAC5B,QAA0B,uBAAA,GAAA,IAAA,CAAA;AAC1B,QAAA,KAAA,EAAO,sBAAsB,KAAK,CAAA,CAAA;AAAA,OACpC;AACA,MAAM,MAAA,KAAA,CAAA;AAAA,KACR;AACA,IAAA,QAAA,EAAA,CAAA;AACA,IAAA,MAAM,IAAI,OAAQ,CAAA,CAAC,YAAY,UAAW,CAAA,OAAA,EAAS,KAAK,CAAC,CAAA,CAAA;AACzD,IAAA,MAAM,KAAM,EAAA,CAAA;AAAA,GACd,CAAA;AAEA,EAAA,MAAM,QAAQ,YAAY;AACxB,IAAI,IAAA;AACF,MAAA,MAAM,QAAW,GAAA,MAAM,KAAM,CAAA,CAAA,EAAG,GAAG,CAAuB,mBAAA,CAAA,EAAA;AAAA,QACxD,MAAQ,EAAA,MAAA;AAAA,OACT,CAAA,CAAA;AACD,MAAI,IAAA,QAAA,CAAS,WAAW,GAAK,EAAA;AAC3B,QAAA,UAAA,CAAW,wCAAwC,MAAM,CAAA,CAAA;AACzD,QAAA,KAAA,EAAO,sBAAyB,IAAA,CAAA;AAChC,QAAA,OAAO,QAAQ,OAAQ,EAAA,CAAA;AAAA,OACzB;AACA,MAAA,MAAM,cAAe,EAAA,CAAA;AAAA,KACf,CAAA,MAAA;AACN,MAAA,MAAM,cAAe,EAAA,CAAA;AAAA,KACvB;AAAA,GACF,CAAA;AAEA,EAAA,MAAM,KAAM,EAAA,CAAA;AACd","file":"verify-deployment.js","sourcesContent":["import {fetch} from '@shopify/cli-kit/node/http';\nimport {Logger, outputInfo} from '@shopify/cli-kit/node/output';\n\nimport {DeploymentConfig, DeploymentHooks, VerificationError} from './types.js';\n\ninterface VerificationOptions {\n config: DeploymentConfig;\n hooks?: DeploymentHooks;\n logger: Logger;\n url: string;\n}\n\nexport async function verifyDeployment(\n options: VerificationOptions,\n): Promise<void> {\n const {config, url, logger, hooks} = options;\n hooks?.onVerificationStart?.();\n outputInfo('Verifying worker deployment is routable...', logger);\n\n let attempts = 0;\n let delay = 0;\n let calledVerificationError = false;\n const startTime = Date.now();\n\n const handleInterval = async () => {\n if (attempts < 10) {\n delay = 500;\n } else if (attempts % 5 === 0) {\n delay += 5000;\n }\n const elapsedTime = (Date.now() - startTime) / 1000;\n if (elapsedTime + delay / 1000 > config.verificationMaxDuration) {\n const error = new VerificationError(\n 'Unable to verify that the worker is accessible.',\n );\n if (!calledVerificationError) {\n calledVerificationError = true;\n hooks?.onVerificationError?.(error);\n }\n throw error;\n }\n attempts++;\n await new Promise((resolve) => setTimeout(resolve, delay));\n await check();\n };\n\n const check = async () => {\n try {\n const response = await fetch(`${url}/.oxygen/deployment`, {\n method: 'HEAD',\n });\n if (response.status === 200) {\n outputInfo('Deployment verification check passed', logger);\n hooks?.onVerificationComplete?.();\n return Promise.resolve();\n }\n await handleInterval();\n } catch {\n await handleInterval();\n }\n };\n\n await check();\n}\n"]}
1
+ {"version":3,"sources":["../../src/deploy/verify-deployment.ts"],"names":[],"mappings":";;;;AAYA,eAAsB,iBACpB,OACe,EAAA;AACf,EAAA,MAAM,EAAC,MAAA,EAAQ,GAAK,EAAA,MAAA,EAAQ,OAAS,GAAA,OAAA;AACrC,EAAA,KAAA,EAAO,mBAAsB,IAAA;AAC7B,EAAA,UAAA,CAAW,8CAA8C,MAAM,CAAA;AAE/D,EAAA,IAAI,QAAW,GAAA,CAAA;AACf,EAAA,IAAI,KAAQ,GAAA,CAAA;AACZ,EAAA,IAAI,uBAA0B,GAAA,KAAA;AAC9B,EAAM,MAAA,SAAA,GAAY,KAAK,GAAI,EAAA;AAE3B,EAAA,MAAM,iBAAiB,YAAY;AACjC,IAAA,IAAI,WAAW,EAAI,EAAA;AACjB,MAAQ,KAAA,GAAA,GAAA;AAAA,KACV,MAAA,IAAW,QAAW,GAAA,CAAA,KAAM,CAAG,EAAA;AAC7B,MAAS,KAAA,IAAA,GAAA;AAAA;AAEX,IAAA,MAAM,WAAe,GAAA,CAAA,IAAA,CAAK,GAAI,EAAA,GAAI,SAAa,IAAA,GAAA;AAC/C,IAAA,IAAI,WAAc,GAAA,KAAA,GAAQ,GAAO,GAAA,MAAA,CAAO,uBAAyB,EAAA;AAC/D,MAAA,MAAM,QAAQ,IAAI,iBAAA;AAAA,QAChB;AAAA,OACF;AACA,MAAA,IAAI,CAAC,uBAAyB,EAAA;AAC5B,QAA0B,uBAAA,GAAA,IAAA;AAC1B,QAAA,KAAA,EAAO,sBAAsB,KAAK,CAAA;AAAA;AAEpC,MAAM,MAAA,KAAA;AAAA;AAER,IAAA,QAAA,EAAA;AACA,IAAA,MAAM,IAAI,OAAQ,CAAA,CAAC,YAAY,UAAW,CAAA,OAAA,EAAS,KAAK,CAAC,CAAA;AACzD,IAAA,MAAM,KAAM,EAAA;AAAA,GACd;AAEA,EAAA,MAAM,QAAQ,YAAY;AACxB,IAAI,IAAA;AACF,MAAA,MAAM,QAAW,GAAA,MAAM,KAAM,CAAA,CAAA,EAAG,GAAG,CAAuB,mBAAA,CAAA,EAAA;AAAA,QACxD,MAAQ,EAAA;AAAA,OACT,CAAA;AACD,MAAI,IAAA,QAAA,CAAS,WAAW,GAAK,EAAA;AAC3B,QAAA,UAAA,CAAW,wCAAwC,MAAM,CAAA;AACzD,QAAA,KAAA,EAAO,sBAAyB,IAAA;AAChC,QAAA,OAAO,QAAQ,OAAQ,EAAA;AAAA;AAEzB,MAAA,MAAM,cAAe,EAAA;AAAA,KACf,CAAA,MAAA;AACN,MAAA,MAAM,cAAe,EAAA;AAAA;AACvB,GACF;AAEA,EAAA,MAAM,KAAM,EAAA;AACd","file":"verify-deployment.js","sourcesContent":["import {fetch} from '@shopify/cli-kit/node/http';\nimport {Logger, outputInfo} from '@shopify/cli-kit/node/output';\n\nimport {DeploymentConfig, DeploymentHooks, VerificationError} from './types.js';\n\ninterface VerificationOptions {\n config: DeploymentConfig;\n hooks?: DeploymentHooks;\n logger: Logger;\n url: string;\n}\n\nexport async function verifyDeployment(\n options: VerificationOptions,\n): Promise<void> {\n const {config, url, logger, hooks} = options;\n hooks?.onVerificationStart?.();\n outputInfo('Verifying worker deployment is routable...', logger);\n\n let attempts = 0;\n let delay = 0;\n let calledVerificationError = false;\n const startTime = Date.now();\n\n const handleInterval = async () => {\n if (attempts < 10) {\n delay = 500;\n } else if (attempts % 5 === 0) {\n delay += 5000;\n }\n const elapsedTime = (Date.now() - startTime) / 1000;\n if (elapsedTime + delay / 1000 > config.verificationMaxDuration) {\n const error = new VerificationError(\n 'Unable to verify that the worker is accessible.',\n );\n if (!calledVerificationError) {\n calledVerificationError = true;\n hooks?.onVerificationError?.(error);\n }\n throw error;\n }\n attempts++;\n await new Promise((resolve) => setTimeout(resolve, delay));\n await check();\n };\n\n const check = async () => {\n try {\n const response = await fetch(`${url}/.oxygen/deployment`, {\n method: 'HEAD',\n });\n if (response.status === 200) {\n outputInfo('Deployment verification check passed', logger);\n hooks?.onVerificationComplete?.();\n return Promise.resolve();\n }\n await handleInterval();\n } catch {\n await handleInterval();\n }\n };\n\n await check();\n}\n"]}
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"names":[],"mappings":";;AAEA,eAAe,YAAe,GAAA;AAC5B,EAAA,MAAM,MAAO,CAAA;AAAA,IACX,WAAW,MAAY,CAAA,IAAA,CAAA,GAAA;AAAA,IACvB,WAAa,EAAA,KAAA;AAAA,GACd,CAAA,CAAA;AACH,CAAA;AAEA,IAAO,aAAQ,GAAA","file":"index.js","sourcesContent":["import {runCLI} from '@shopify/cli-kit/node/cli';\n\nasync function runOxygenCLI() {\n await runCLI({\n moduleURL: import.meta.url,\n development: false,\n });\n}\n\nexport default runOxygenCLI;\n"]}
1
+ {"version":3,"sources":["../src/index.ts"],"names":[],"mappings":";;AAEA,eAAe,YAAe,GAAA;AAC5B,EAAA,MAAM,MAAO,CAAA;AAAA,IACX,WAAW,MAAY,CAAA,IAAA,CAAA,GAAA;AAAA,IACvB,WAAa,EAAA;AAAA,GACd,CAAA;AACH;AAEA,IAAO,aAAQ,GAAA","file":"index.js","sourcesContent":["import {runCLI} from '@shopify/cli-kit/node/cli';\n\nasync function runOxygenCLI() {\n await runCLI({\n moduleURL: import.meta.url,\n development: false,\n });\n}\n\nexport default runOxygenCLI;\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/oxygen-cli.ts"],"names":[],"mappings":";;;AAIA,OAAA,CAAQ,mBAAmB,SAAS,CAAA,CAAA;AAEpC,MAAO,EAAA","file":"oxygen-cli.js","sourcesContent":["#!/usr/bin/env node\n\nimport runCLI from './index.js';\n\nprocess.removeAllListeners('warning');\n\nrunCLI();\n"]}
1
+ {"version":3,"sources":["../src/oxygen-cli.ts"],"names":[],"mappings":";;;AAIA,OAAA,CAAQ,mBAAmB,SAAS,CAAA;AAEpC,MAAO,EAAA","file":"oxygen-cli.js","sourcesContent":["#!/usr/bin/env node\n\nimport runCLI from './index.js';\n\nprocess.removeAllListeners('warning');\n\nrunCLI();\n"]}
@@ -34,7 +34,7 @@ function sanitizeError(error, rootPath) {
34
34
  const cleanError = Object.create(Object.getPrototypeOf(error));
35
35
  Object.assign(cleanError, error, {
36
36
  message: replaceRootPath(error.message),
37
- stack: error.stack ? replaceRootPath(error.stack) : void 0
37
+ stack: error.stack ? replaceRootPath(error.stack) : undefined
38
38
  });
39
39
  return cleanError;
40
40
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utils/bugsnag.ts"],"names":[],"mappings":";;;AAKA,IAAI,aAAA,CAAA;AAEJ,SAAS,aAAa,cAAyB,EAAA;AAC7C,EAAA,IAAI,cAAgB,EAAA;AAClB,IAAA,OAAA;AAAA,GACF,MAAA,IAAY,QAAgB,OAAS,EAAA;AACnC,IAAO,OAAA,OAAA,CAAA;AAAA,GACT;AAEA,EAAA,MAAM,cAAc,eAAgB,EAAA,CAAA;AAEpC,EAAA,MAAM,oBAA2C,GAAA;AAAA,IAC/C,MAAQ,EAAA,kCAAA;AAAA,IACR,gBAAkB,EAAA,IAAA;AAAA,IAClB,YAAY,WAAY,CAAA,OAAA;AAAA,IACxB,MAAQ,EAAA,IAAA;AAAA,GACV,CAAA;AAEA,EAAQ,OAAA,OAAA,CAAgB,MAAM,oBAAoB,CAAA,CAAA;AACpD,CAAA;AAEO,SAAS,kBAAkB,cAAyB,EAAA;AACzD,EAAA,aAAA,GAAgB,aAAa,cAAc,CAAA,CAAA;AAC7C,CAAA;AAEO,SAAS,UAAa,GAAA;AAC3B,EAAO,OAAA,aAAA,CAAA;AACT,CAAA;AAEO,SAAS,aAAA,CACd,OACA,QACgB,EAAA;AAChB,EAAA,IAAI,CAAC,QAAU,EAAA;AACb,IAAO,OAAA,KAAA,CAAA;AAAA,GACT;AAEA,EAAM,MAAA,eAAA,GAAkB,CAAC,OAAoB,KAAA;AAC3C,IAAA,OAAO,QAAQ,OAAQ,CAAA,IAAI,OAAO,QAAU,EAAA,GAAG,GAAG,KAAK,CAAA,CAAA;AAAA,GACzD,CAAA;AAEA,EAAA,IAAI,iBAAiB,KAAO,EAAA;AAC1B,IAAA,MAAM,aAAa,MAAO,CAAA,MAAA,CAAO,MAAO,CAAA,cAAA,CAAe,KAAK,CAAC,CAAA,CAAA;AAC7D,IAAO,MAAA,CAAA,MAAA,CAAO,YAAY,KAAO,EAAA;AAAA,MAC/B,OAAA,EAAS,eAAgB,CAAA,KAAA,CAAM,OAAO,CAAA;AAAA,MACtC,OAAO,KAAM,CAAA,KAAA,GAAQ,eAAgB,CAAA,KAAA,CAAM,KAAK,CAAI,GAAA,KAAA,CAAA;AAAA,KACrD,CAAA,CAAA;AAED,IAAO,OAAA,UAAA,CAAA;AAAA,GACT;AAEA,EAAA,OAAO,gBAAgB,KAAK,CAAA,CAAA;AAC9B","file":"bugsnag.js","sourcesContent":["import Bugsnag from '@bugsnag/node';\nimport * as BugsnagCore from '@bugsnag/core';\n\nimport {loadPackageJson} from './utils.js';\n\nlet BugsnagClient: BugsnagCore.Client | undefined;\n\nfunction setupBugsnag(disableBugsnag: boolean) {\n if (disableBugsnag) {\n return;\n } else if ((Bugsnag as any)._client) {\n return Bugsnag;\n }\n\n const packageJson = loadPackageJson();\n\n const bugsnagServerOptions: BugsnagCore.Config = {\n apiKey: '21fd37fe87ead4b9c5a8eed90752b455',\n autoDetectErrors: true,\n appVersion: packageJson.version,\n logger: null,\n };\n\n return (Bugsnag as any).start(bugsnagServerOptions);\n}\n\nexport function initializeBugsnag(disableBugsnag: boolean) {\n BugsnagClient = setupBugsnag(disableBugsnag);\n}\n\nexport function getBugsnag() {\n return BugsnagClient;\n}\n\nexport function sanitizeError(\n error: Error | string,\n rootPath?: string,\n): Error | string {\n if (!rootPath) {\n return error;\n }\n\n const replaceRootPath = (message: string) => {\n return message.replace(new RegExp(rootPath, 'g'), '***');\n };\n\n if (error instanceof Error) {\n const cleanError = Object.create(Object.getPrototypeOf(error));\n Object.assign(cleanError, error, {\n message: replaceRootPath(error.message),\n stack: error.stack ? replaceRootPath(error.stack) : undefined,\n });\n\n return cleanError;\n }\n\n return replaceRootPath(error);\n}\n"]}
1
+ {"version":3,"sources":["../../src/utils/bugsnag.ts"],"names":[],"mappings":";;;AAKA,IAAI,aAAA;AAEJ,SAAS,aAAa,cAAyB,EAAA;AAC7C,EAAA,IAAI,cAAgB,EAAA;AAClB,IAAA;AAAA,GACF,MAAA,IAAY,QAAgB,OAAS,EAAA;AACnC,IAAO,OAAA,OAAA;AAAA;AAGT,EAAA,MAAM,cAAc,eAAgB,EAAA;AAEpC,EAAA,MAAM,oBAA2C,GAAA;AAAA,IAC/C,MAAQ,EAAA,kCAAA;AAAA,IACR,gBAAkB,EAAA,IAAA;AAAA,IAClB,YAAY,WAAY,CAAA,OAAA;AAAA,IACxB,MAAQ,EAAA;AAAA,GACV;AAEA,EAAQ,OAAA,OAAA,CAAgB,MAAM,oBAAoB,CAAA;AACpD;AAEO,SAAS,kBAAkB,cAAyB,EAAA;AACzD,EAAA,aAAA,GAAgB,aAAa,cAAc,CAAA;AAC7C;AAEO,SAAS,UAAa,GAAA;AAC3B,EAAO,OAAA,aAAA;AACT;AAEO,SAAS,aAAA,CACd,OACA,QACgB,EAAA;AAChB,EAAA,IAAI,CAAC,QAAU,EAAA;AACb,IAAO,OAAA,KAAA;AAAA;AAGT,EAAM,MAAA,eAAA,GAAkB,CAAC,OAAoB,KAAA;AAC3C,IAAA,OAAO,QAAQ,OAAQ,CAAA,IAAI,OAAO,QAAU,EAAA,GAAG,GAAG,KAAK,CAAA;AAAA,GACzD;AAEA,EAAA,IAAI,iBAAiB,KAAO,EAAA;AAC1B,IAAA,MAAM,aAAa,MAAO,CAAA,MAAA,CAAO,MAAO,CAAA,cAAA,CAAe,KAAK,CAAC,CAAA;AAC7D,IAAO,MAAA,CAAA,MAAA,CAAO,YAAY,KAAO,EAAA;AAAA,MAC/B,OAAA,EAAS,eAAgB,CAAA,KAAA,CAAM,OAAO,CAAA;AAAA,MACtC,OAAO,KAAM,CAAA,KAAA,GAAQ,eAAgB,CAAA,KAAA,CAAM,KAAK,CAAI,GAAA;AAAA,KACrD,CAAA;AAED,IAAO,OAAA,UAAA;AAAA;AAGT,EAAA,OAAO,gBAAgB,KAAK,CAAA;AAC9B","file":"bugsnag.js","sourcesContent":["import Bugsnag from '@bugsnag/node';\nimport * as BugsnagCore from '@bugsnag/core';\n\nimport {loadPackageJson} from './utils.js';\n\nlet BugsnagClient: BugsnagCore.Client | undefined;\n\nfunction setupBugsnag(disableBugsnag: boolean) {\n if (disableBugsnag) {\n return;\n } else if ((Bugsnag as any)._client) {\n return Bugsnag;\n }\n\n const packageJson = loadPackageJson();\n\n const bugsnagServerOptions: BugsnagCore.Config = {\n apiKey: '21fd37fe87ead4b9c5a8eed90752b455',\n autoDetectErrors: true,\n appVersion: packageJson.version,\n logger: null,\n };\n\n return (Bugsnag as any).start(bugsnagServerOptions);\n}\n\nexport function initializeBugsnag(disableBugsnag: boolean) {\n BugsnagClient = setupBugsnag(disableBugsnag);\n}\n\nexport function getBugsnag() {\n return BugsnagClient;\n}\n\nexport function sanitizeError(\n error: Error | string,\n rootPath?: string,\n): Error | string {\n if (!rootPath) {\n return error;\n }\n\n const replaceRootPath = (message: string) => {\n return message.replace(new RegExp(rootPath, 'g'), '***');\n };\n\n if (error instanceof Error) {\n const cleanError = Object.create(Object.getPrototypeOf(error));\n Object.assign(cleanError, error, {\n message: replaceRootPath(error.message),\n stack: error.stack ? replaceRootPath(error.stack) : undefined,\n });\n\n return cleanError;\n }\n\n return replaceRootPath(error);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utils/metrics-exporter.ts"],"names":["MetricName"],"mappings":"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","file":"metrics-exporter.js","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\nimport {fetch} from '@shopify/cli-kit/node/http';\n\nimport {getBugsnag} from './bugsnag.js';\nimport {loadPackageJson} from './utils.js';\n\ninterface GodogEvent {\n name: string;\n type: string;\n value: number;\n tags: string[];\n}\n\ntype MetricCollection = Record<\n string,\n [{value: number; tags: Record<string, string>}]\n>;\n\ninterface MetricsExporterOptions {\n ciProvider: string;\n rootPath: string;\n}\n\nexport enum MetricName {\n BuildTime = 'build_time',\n NumFilesRequested = 'num_files_requested',\n NumFilesUploaded = 'num_files_uploaded',\n TotalSizeUploaded = 'total_size_uploaded',\n TotalSizeRequested = 'total_size_requested',\n TotalTime = 'total_time',\n UploadTime = 'upload_time',\n DeploymentCompletedTime = 'deployment_completed_time',\n DeploymentRoutableTime = 'deployment_routable_time',\n}\n\nexport class MetricsExporter {\n private metrics: MetricCollection = {};\n private readonly metricPrefix: string = 'oxygen.cli';\n private readonly defaultTags: Record<string, string>;\n private readonly exportUrl: string;\n\n constructor(options: MetricsExporterOptions) {\n const {version: cliVersion} = loadPackageJson();\n const {version: hydrogenVersion} = loadPackageJson(\n `${options.rootPath}/node_modules/@shopify/hydrogen`,\n );\n this.defaultTags = {\n ci_provider: options.ciProvider,\n cli_version: `oxygen-cli@${cliVersion || 'unknown'}`,\n hydrogen_version: hydrogenVersion || 'unknown',\n };\n this.exportUrl = 'https://metrics.myshopify.dev';\n }\n\n add(\n name: MetricName,\n value: number,\n tags: Record<string, string> = {},\n ): void {\n const metric = {\n value,\n tags,\n };\n\n if (this.metrics[name]) {\n this.metrics[name]!.push(metric);\n } else {\n this.metrics[name] = [metric];\n }\n }\n\n formatTags(tags: Record<string, string>): string[] {\n return Object.entries(tags).map(([key, value]) => `${key}:${value}`);\n }\n\n async export(): Promise<void> {\n const metricsToExport: GodogEvent[] = Object.entries(this.metrics)\n .map(([metricName, values]) => {\n const name = `${this.metricPrefix}.${metricName}`;\n\n return values.map(({value, tags}) => {\n return {\n name,\n type: 'gauge',\n value,\n tags: this.formatTags({...tags, ...this.defaultTags}),\n };\n });\n })\n .flat();\n\n try {\n await fetch(this.exportUrl, {\n method: 'POST',\n body: JSON.stringify({events: metricsToExport}),\n });\n } catch (error) {\n const Bugsnag = getBugsnag();\n if (Bugsnag && (error instanceof Error || typeof error === 'string')) {\n Bugsnag.notify(error);\n }\n }\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/utils/metrics-exporter.ts"],"names":["MetricName"],"mappings":"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","file":"metrics-exporter.js","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\nimport {fetch} from '@shopify/cli-kit/node/http';\n\nimport {getBugsnag} from './bugsnag.js';\nimport {loadPackageJson} from './utils.js';\n\ninterface GodogEvent {\n name: string;\n type: string;\n value: number;\n tags: string[];\n}\n\ntype MetricCollection = Record<\n string,\n [{value: number; tags: Record<string, string>}]\n>;\n\ninterface MetricsExporterOptions {\n ciProvider: string;\n rootPath: string;\n}\n\nexport enum MetricName {\n BuildTime = 'build_time',\n NumFilesRequested = 'num_files_requested',\n NumFilesUploaded = 'num_files_uploaded',\n TotalSizeUploaded = 'total_size_uploaded',\n TotalSizeRequested = 'total_size_requested',\n TotalTime = 'total_time',\n UploadTime = 'upload_time',\n DeploymentCompletedTime = 'deployment_completed_time',\n DeploymentRoutableTime = 'deployment_routable_time',\n}\n\nexport class MetricsExporter {\n private metrics: MetricCollection = {};\n private readonly metricPrefix: string = 'oxygen.cli';\n private readonly defaultTags: Record<string, string>;\n private readonly exportUrl: string;\n\n constructor(options: MetricsExporterOptions) {\n const {version: cliVersion} = loadPackageJson();\n const {version: hydrogenVersion} = loadPackageJson(\n `${options.rootPath}/node_modules/@shopify/hydrogen`,\n );\n this.defaultTags = {\n ci_provider: options.ciProvider,\n cli_version: `oxygen-cli@${cliVersion || 'unknown'}`,\n hydrogen_version: hydrogenVersion || 'unknown',\n };\n this.exportUrl = 'https://metrics.myshopify.dev';\n }\n\n add(\n name: MetricName,\n value: number,\n tags: Record<string, string> = {},\n ): void {\n const metric = {\n value,\n tags,\n };\n\n if (this.metrics[name]) {\n this.metrics[name]!.push(metric);\n } else {\n this.metrics[name] = [metric];\n }\n }\n\n formatTags(tags: Record<string, string>): string[] {\n return Object.entries(tags).map(([key, value]) => `${key}:${value}`);\n }\n\n async export(): Promise<void> {\n const metricsToExport: GodogEvent[] = Object.entries(this.metrics)\n .map(([metricName, values]) => {\n const name = `${this.metricPrefix}.${metricName}`;\n\n return values.map(({value, tags}) => {\n return {\n name,\n type: 'gauge',\n value,\n tags: this.formatTags({...tags, ...this.defaultTags}),\n };\n });\n })\n .flat();\n\n try {\n await fetch(this.exportUrl, {\n method: 'POST',\n body: JSON.stringify({events: metricsToExport}),\n });\n } catch (error) {\n const Bugsnag = getBugsnag();\n if (Bugsnag && (error instanceof Error || typeof error === 'string')) {\n Bugsnag.notify(error);\n }\n }\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utils/test-helper.ts"],"names":[],"mappings":";;AAIO,MAAM,SAAY,GAAA;AAAA,EACvB,WAAa,EAAA,YAAA;AAAA,EACb,eAAiB,EAAA,8BAAA;AAAA,EACjB,KAAO,EAAA,wBAAA;AAAA,EACP,MAAQ,EAAA,2BAAA;AAAA,EACR,SAAW,EAAA,0BAAA;AAAA,EACX,SAAW,EAAA,iBAAA;AAAA,EACX,WAAa,EAAA,8BAAA;AACf,EAAA;AAEO,SAAS,iBAAiB,UAAsC,EAAA;AACrE,EAAO,OAAA;AAAA,IACL,SAAW,EAAA,UAAA;AAAA,IACX,OAAS,EAAA,KAAA;AAAA,IACT,YAAA,EAAc,MAAO,CAAA,cAAA,CAAe,mBAAoB,CAAA;AAAA,IACxD,kBAAoB,EAAA,KAAA;AAAA,IACpB,eAAiB,EAAA,SAAA;AAAA,IACjB,cAAgB,EAAA,aAAA;AAAA,IAChB,aAAe,EAAA,wBAAA;AAAA,IACf,uBAAyB,EAAA,GAAA;AAAA,IACzB,UAAU,EAAC;AAAA,IACX,QAAU,EAAA,UAAA;AAAA,IACV,SAAW,EAAA,KAAA;AAAA,IACX,gBAAkB,EAAA,KAAA;AAAA,IAClB,SAAW,EAAA,UAAA;AAAA,IACX,UAAY,EAAA,KAAA;AAAA,IACZ,uBAAyB,EAAA,KAAA;AAAA,GAC3B,CAAA;AACF","file":"test-helper.js","sourcesContent":["import type {DeploymentConfig} from '../deploy/types.js';\n\nimport {deployDefaults} from './utils.js';\n\nexport const testToken = {\n accessToken: 'some_token',\n allowedResource: 'gid://oxygen-hub/Namespace/1',\n appId: 'gid://oxygen-hub/App/1',\n client: 'gid://oxygen-hub/Client/1',\n expiresAt: '2023-04-08T09:38:50.368Z',\n namespace: 'fresh-namespace',\n namespaceId: 'gid://oxygen-hub/Namespace/1',\n};\n\nexport function createTestConfig(rootFolder: string): DeploymentConfig {\n return {\n assetsDir: '/assets/',\n bugsnag: false,\n buildCommand: String(deployDefaults.buildCommandDefault!),\n defaultEnvironment: false,\n deploymentToken: testToken,\n environmentTag: 'environment',\n deploymentUrl: 'https://localhost:3000',\n verificationMaxDuration: 300,\n metadata: {},\n rootPath: rootFolder,\n skipBuild: false,\n skipVerification: false,\n workerDir: '/worker/',\n workerOnly: false,\n generateAuthBypassToken: false,\n };\n}\n"]}
1
+ {"version":3,"sources":["../../src/utils/test-helper.ts"],"names":[],"mappings":";;AAIO,MAAM,SAAY,GAAA;AAAA,EACvB,WAAa,EAAA,YAAA;AAAA,EACb,eAAiB,EAAA,8BAAA;AAAA,EACjB,KAAO,EAAA,wBAAA;AAAA,EACP,MAAQ,EAAA,2BAAA;AAAA,EACR,SAAW,EAAA,0BAAA;AAAA,EACX,SAAW,EAAA,iBAAA;AAAA,EACX,WAAa,EAAA;AACf;AAEO,SAAS,iBAAiB,UAAsC,EAAA;AACrE,EAAO,OAAA;AAAA,IACL,SAAW,EAAA,UAAA;AAAA,IACX,OAAS,EAAA,KAAA;AAAA,IACT,YAAA,EAAc,MAAO,CAAA,cAAA,CAAe,mBAAoB,CAAA;AAAA,IACxD,kBAAoB,EAAA,KAAA;AAAA,IACpB,eAAiB,EAAA,SAAA;AAAA,IACjB,cAAgB,EAAA,aAAA;AAAA,IAChB,aAAe,EAAA,wBAAA;AAAA,IACf,uBAAyB,EAAA,GAAA;AAAA,IACzB,UAAU,EAAC;AAAA,IACX,QAAU,EAAA,UAAA;AAAA,IACV,SAAW,EAAA,KAAA;AAAA,IACX,gBAAkB,EAAA,KAAA;AAAA,IAClB,SAAW,EAAA,UAAA;AAAA,IACX,UAAY,EAAA,KAAA;AAAA,IACZ,uBAAyB,EAAA;AAAA,GAC3B;AACF","file":"test-helper.js","sourcesContent":["import type {DeploymentConfig} from '../deploy/types.js';\n\nimport {deployDefaults} from './utils.js';\n\nexport const testToken = {\n accessToken: 'some_token',\n allowedResource: 'gid://oxygen-hub/Namespace/1',\n appId: 'gid://oxygen-hub/App/1',\n client: 'gid://oxygen-hub/Client/1',\n expiresAt: '2023-04-08T09:38:50.368Z',\n namespace: 'fresh-namespace',\n namespaceId: 'gid://oxygen-hub/Namespace/1',\n};\n\nexport function createTestConfig(rootFolder: string): DeploymentConfig {\n return {\n assetsDir: '/assets/',\n bugsnag: false,\n buildCommand: String(deployDefaults.buildCommandDefault!),\n defaultEnvironment: false,\n deploymentToken: testToken,\n environmentTag: 'environment',\n deploymentUrl: 'https://localhost:3000',\n verificationMaxDuration: 300,\n metadata: {},\n rootPath: rootFolder,\n skipBuild: false,\n skipVerification: false,\n workerDir: '/worker/',\n workerOnly: false,\n generateAuthBypassToken: false,\n };\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { DeploymentConfig, ClientError, DeploymentToken } from '../deploy/types.js';
1
+ import { DeploymentToken, DeploymentConfig, ClientError } from '../deploy/types.js';
2
2
  import '../deploy/graphql/deployment-verification-details.js';
3
3
 
4
4
  declare const deployDefaults: Record<string, string | number>;
@@ -103,7 +103,7 @@ function parseToken(inputToken) {
103
103
  }
104
104
  function authBypassTokenDurationParse(authBypassTokenDurationFlag) {
105
105
  if (!authBypassTokenDurationFlag) {
106
- return void 0;
106
+ return undefined;
107
107
  }
108
108
  const duration = Number(authBypassTokenDurationFlag);
109
109
  if (isNaN(duration)) {
@@ -158,7 +158,7 @@ function convertKeysToCamelCase(obj) {
158
158
  /([-_][a-z])/gi,
159
159
  ($1) => $1.toUpperCase().replace("-", "").replace("_", "")
160
160
  );
161
- if (obj[key] === void 0) {
161
+ if (obj[key] === undefined) {
162
162
  throw new Error(`Invalid token: ${key} is undefined`);
163
163
  }
164
164
  result[camelCaseKey] = convertKeysToCamelCase(obj[key]);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utils/utils.ts"],"names":["Header","path"],"mappings":"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","file":"utils.js","sourcesContent":["import fs from 'fs';\nimport path, {dirname} from 'path';\nimport {fileURLToPath} from 'url';\n\nimport {fileExists, fileExistsSync} from '@shopify/cli-kit/node/fs';\nimport {outputInfo, outputWarn} from '@shopify/cli-kit/node/output';\nimport {joinPath} from '@shopify/cli-kit/node/path';\nimport {AbortError} from '@shopify/cli-kit/node/error';\n\nimport {\n ClientError,\n DeploymentConfig,\n DeploymentToken,\n} from '../deploy/types.js';\n\nexport const deployDefaults: Record<string, string | number> = {\n assetsDirDefault: 'dist/client/',\n buildCommandDefault: 'npm build',\n verificationDurationDefault: 180,\n maxUploadAttempts: 3,\n maxResumabeUploadAttempts: 9,\n workerDirDefault: 'dist/worker/',\n};\n\nexport function errorHandler(error: any) {\n if (isClientError(error)) {\n if (error.statusCode === 401) {\n throw new AbortError(\n 'You are not authorized to perform this action. Please check your deployment token.',\n );\n }\n\n if (error.statusCode === 429) {\n throw new AbortError(\n \"You've made too many requests. Please try again later\",\n );\n }\n }\n\n if (error instanceof AbortError && error.message.includes('503')) {\n throw new AbortError(\n 'The server is currently unavailable. Please try again later.',\n );\n }\n}\n\nexport function getBuildCommandFromLockFile(config: DeploymentConfig): string {\n const lockFileBuildCommands = new Map([\n ['package-lock.json', 'npm run build'],\n ['pnpm-lock.yaml', 'pnpm run build'],\n ['yarn.lock', 'yarn build'],\n ]);\n\n const foundLockFiles = [];\n\n for (const [lockFileName, buildCommand] of lockFileBuildCommands) {\n if (fileExistsSync(joinPath(config.rootPath!, lockFileName))) {\n foundLockFiles.push({lockFileName, buildCommand});\n }\n }\n\n if (foundLockFiles.length > 1) {\n const lockFilesList = foundLockFiles\n .map(({lockFileName}) => lockFileName)\n .join(', ');\n outputWarn(\n `Warning: Multiple lock files found: (${lockFilesList}).`,\n stderrLogger,\n );\n }\n\n if (foundLockFiles.length > 0) {\n const {lockFileName, buildCommand} = foundLockFiles[0] as {\n lockFileName: string;\n buildCommand: string;\n };\n\n const infoMsg = foundLockFiles.length > 1 ? '' : `Found: ${lockFileName}. `;\n\n outputInfo(\n `${infoMsg}Assuming \"${buildCommand}\" as build command. Use the buildCommand flag to override.`,\n stderrLogger,\n );\n return buildCommand;\n }\n\n return String(deployDefaults.buildCommandDefault);\n}\n\nexport enum Header {\n OxygenNamespaceHandle = 'X-Oxygen-Namespace-Handle',\n}\n\nexport function isClientError(error: unknown): error is ClientError {\n return typeof error === 'object' && error !== null && 'statusCode' in error;\n}\n\nexport function loadPackageJson(projectFolder?: string) {\n let jsonPath;\n if (projectFolder) {\n jsonPath = path.join(projectFolder, 'package.json');\n } else {\n const __filename = fileURLToPath(import.meta.url);\n const __dirname = dirname(__filename);\n jsonPath = path.join(__dirname, '../../package.json');\n }\n\n if (!fs.existsSync(jsonPath)) {\n return {};\n }\n const packageJsonData = fs.readFileSync(jsonPath, 'utf8');\n return JSON.parse(packageJsonData);\n}\n\nexport function stderrLogger(log: string): void {\n process.stderr.write(`${log}\\n`);\n}\n\nexport const maxLabelLength = 375;\n\nexport function parseToken(inputToken: string): DeploymentToken {\n try {\n const decodedToken = Buffer.from(inputToken, 'base64').toString('utf-8');\n const rawToken = JSON.parse(decodedToken);\n return convertKeysToCamelCase(rawToken) as DeploymentToken;\n } catch (error) {\n throw new Error(\n `Error processing deployment token. Please check your token and try again.`,\n );\n }\n}\n\nexport function authBypassTokenDurationParse(\n authBypassTokenDurationFlag?: string,\n): number | undefined {\n if (!authBypassTokenDurationFlag) {\n return undefined;\n }\n const duration = Number(authBypassTokenDurationFlag);\n if (isNaN(duration)) {\n throw new AbortError(\n \"Invalid duration format. Please specify the duration in hours (e.g., '10').\",\n );\n }\n if (duration > 12 || duration < 1) {\n throw new AbortError(\n 'Invalid duration length. Please specify the duration (in hours) between 1 to 12 hours.',\n );\n }\n return duration;\n}\n\ninterface VerifyConfigParams {\n config: DeploymentConfig;\n performedBuild?: boolean;\n}\n\nexport async function verifyConfig({\n config,\n performedBuild = false,\n}: VerifyConfigParams) {\n const {rootPath, workerDir, assetsDir, skipBuild, workerOnly} = config;\n const checkPaths: Record<string, string> = {\n root: rootPath!,\n };\n\n if (skipBuild || performedBuild) {\n checkPaths.worker = joinPath(rootPath!, workerDir!);\n if (!workerOnly) {\n checkPaths.assets = joinPath(rootPath!, assetsDir!);\n }\n }\n\n for (const pathType of Object.keys(checkPaths)) {\n await checkPath(checkPaths[pathType]!, pathType);\n }\n\n const addressRegex =\n /^https:\\/\\/(?:[\\w-]+\\.)*[\\w-]+|^https:\\/\\/\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}/;\n if (!addressRegex.test(config.deploymentUrl)) {\n throw new Error(`Invalid deployment service URL: ${config.deploymentUrl}`);\n }\n}\n\nasync function checkPath(path: string, pathType: string) {\n if (!(await fileExists(path))) {\n if (pathType === 'assets') {\n outputWarn(\n `Use the \"workerOnly\" flag to perform a worker-only deployment.`,\n stderrLogger,\n );\n }\n throw new Error(`Path not found: ${path}`);\n }\n}\n\ninterface TokenType {\n [x: string]: string | TokenType;\n}\n\nfunction convertKeysToCamelCase(\n obj: TokenType | string,\n): DeploymentToken | string {\n if (typeof obj === 'object') {\n return Object.keys(obj).reduce((result: any, key: string) => {\n const camelCaseKey = key.replace(/([-_][a-z])/gi, ($1) =>\n $1.toUpperCase().replace('-', '').replace('_', ''),\n );\n if (obj[key] === undefined) {\n throw new Error(`Invalid token: ${key} is undefined`);\n }\n result[camelCaseKey] = convertKeysToCamelCase(obj[key] as TokenType);\n return result;\n }, {} as DeploymentToken);\n }\n return obj;\n}\n"]}
1
+ {"version":3,"sources":["../../src/utils/utils.ts"],"names":["Header","path"],"mappings":"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","file":"utils.js","sourcesContent":["import fs from 'fs';\nimport path, {dirname} from 'path';\nimport {fileURLToPath} from 'url';\n\nimport {fileExists, fileExistsSync} from '@shopify/cli-kit/node/fs';\nimport {outputInfo, outputWarn} from '@shopify/cli-kit/node/output';\nimport {joinPath} from '@shopify/cli-kit/node/path';\nimport {AbortError} from '@shopify/cli-kit/node/error';\n\nimport {\n ClientError,\n DeploymentConfig,\n DeploymentToken,\n} from '../deploy/types.js';\n\nexport const deployDefaults: Record<string, string | number> = {\n assetsDirDefault: 'dist/client/',\n buildCommandDefault: 'npm build',\n verificationDurationDefault: 180,\n maxUploadAttempts: 3,\n maxResumabeUploadAttempts: 9,\n workerDirDefault: 'dist/worker/',\n};\n\nexport function errorHandler(error: any) {\n if (isClientError(error)) {\n if (error.statusCode === 401) {\n throw new AbortError(\n 'You are not authorized to perform this action. Please check your deployment token.',\n );\n }\n\n if (error.statusCode === 429) {\n throw new AbortError(\n \"You've made too many requests. Please try again later\",\n );\n }\n }\n\n if (error instanceof AbortError && error.message.includes('503')) {\n throw new AbortError(\n 'The server is currently unavailable. Please try again later.',\n );\n }\n}\n\nexport function getBuildCommandFromLockFile(config: DeploymentConfig): string {\n const lockFileBuildCommands = new Map([\n ['package-lock.json', 'npm run build'],\n ['pnpm-lock.yaml', 'pnpm run build'],\n ['yarn.lock', 'yarn build'],\n ]);\n\n const foundLockFiles = [];\n\n for (const [lockFileName, buildCommand] of lockFileBuildCommands) {\n if (fileExistsSync(joinPath(config.rootPath!, lockFileName))) {\n foundLockFiles.push({lockFileName, buildCommand});\n }\n }\n\n if (foundLockFiles.length > 1) {\n const lockFilesList = foundLockFiles\n .map(({lockFileName}) => lockFileName)\n .join(', ');\n outputWarn(\n `Warning: Multiple lock files found: (${lockFilesList}).`,\n stderrLogger,\n );\n }\n\n if (foundLockFiles.length > 0) {\n const {lockFileName, buildCommand} = foundLockFiles[0] as {\n lockFileName: string;\n buildCommand: string;\n };\n\n const infoMsg = foundLockFiles.length > 1 ? '' : `Found: ${lockFileName}. `;\n\n outputInfo(\n `${infoMsg}Assuming \"${buildCommand}\" as build command. Use the buildCommand flag to override.`,\n stderrLogger,\n );\n return buildCommand;\n }\n\n return String(deployDefaults.buildCommandDefault);\n}\n\nexport enum Header {\n OxygenNamespaceHandle = 'X-Oxygen-Namespace-Handle',\n}\n\nexport function isClientError(error: unknown): error is ClientError {\n return typeof error === 'object' && error !== null && 'statusCode' in error;\n}\n\nexport function loadPackageJson(projectFolder?: string) {\n let jsonPath;\n if (projectFolder) {\n jsonPath = path.join(projectFolder, 'package.json');\n } else {\n const __filename = fileURLToPath(import.meta.url);\n const __dirname = dirname(__filename);\n jsonPath = path.join(__dirname, '../../package.json');\n }\n\n if (!fs.existsSync(jsonPath)) {\n return {};\n }\n const packageJsonData = fs.readFileSync(jsonPath, 'utf8');\n return JSON.parse(packageJsonData);\n}\n\nexport function stderrLogger(log: string): void {\n process.stderr.write(`${log}\\n`);\n}\n\nexport const maxLabelLength = 375;\n\nexport function parseToken(inputToken: string): DeploymentToken {\n try {\n const decodedToken = Buffer.from(inputToken, 'base64').toString('utf-8');\n const rawToken = JSON.parse(decodedToken);\n return convertKeysToCamelCase(rawToken) as DeploymentToken;\n } catch (error) {\n throw new Error(\n `Error processing deployment token. Please check your token and try again.`,\n );\n }\n}\n\nexport function authBypassTokenDurationParse(\n authBypassTokenDurationFlag?: string,\n): number | undefined {\n if (!authBypassTokenDurationFlag) {\n return undefined;\n }\n const duration = Number(authBypassTokenDurationFlag);\n if (isNaN(duration)) {\n throw new AbortError(\n \"Invalid duration format. Please specify the duration in hours (e.g., '10').\",\n );\n }\n if (duration > 12 || duration < 1) {\n throw new AbortError(\n 'Invalid duration length. Please specify the duration (in hours) between 1 to 12 hours.',\n );\n }\n return duration;\n}\n\ninterface VerifyConfigParams {\n config: DeploymentConfig;\n performedBuild?: boolean;\n}\n\nexport async function verifyConfig({\n config,\n performedBuild = false,\n}: VerifyConfigParams) {\n const {rootPath, workerDir, assetsDir, skipBuild, workerOnly} = config;\n const checkPaths: Record<string, string> = {\n root: rootPath!,\n };\n\n if (skipBuild || performedBuild) {\n checkPaths.worker = joinPath(rootPath!, workerDir!);\n if (!workerOnly) {\n checkPaths.assets = joinPath(rootPath!, assetsDir!);\n }\n }\n\n for (const pathType of Object.keys(checkPaths)) {\n await checkPath(checkPaths[pathType]!, pathType);\n }\n\n const addressRegex =\n /^https:\\/\\/(?:[\\w-]+\\.)*[\\w-]+|^https:\\/\\/\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}/;\n if (!addressRegex.test(config.deploymentUrl)) {\n throw new Error(`Invalid deployment service URL: ${config.deploymentUrl}`);\n }\n}\n\nasync function checkPath(path: string, pathType: string) {\n if (!(await fileExists(path))) {\n if (pathType === 'assets') {\n outputWarn(\n `Use the \"workerOnly\" flag to perform a worker-only deployment.`,\n stderrLogger,\n );\n }\n throw new Error(`Path not found: ${path}`);\n }\n}\n\ninterface TokenType {\n [x: string]: string | TokenType;\n}\n\nfunction convertKeysToCamelCase(\n obj: TokenType | string,\n): DeploymentToken | string {\n if (typeof obj === 'object') {\n return Object.keys(obj).reduce((result: any, key: string) => {\n const camelCaseKey = key.replace(/([-_][a-z])/gi, ($1) =>\n $1.toUpperCase().replace('-', '').replace('_', ''),\n );\n if (obj[key] === undefined) {\n throw new Error(`Invalid token: ${key} is undefined`);\n }\n result[camelCaseKey] = convertKeysToCamelCase(obj[key] as TokenType);\n return result;\n }, {} as DeploymentToken);\n }\n return obj;\n}\n"]}
@@ -203,5 +203,5 @@
203
203
  ]
204
204
  }
205
205
  },
206
- "version": "4.6.9-unstable.202502031546.0"
206
+ "version": "4.6.10-unstable.202502051606.0"
207
207
  }
package/package.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "@shopify:registry": "https://registry.npmjs.org"
6
6
  },
7
7
  "license": "MIT",
8
- "version": "4.6.9-unstable.202502031546.0",
8
+ "version": "4.6.10-unstable.202502051606.0",
9
9
  "type": "module",
10
10
  "scripts": {
11
11
  "build": "tsup --sourcemap --clean --config ./tsup.config.ts && oclif manifest",
@@ -58,7 +58,7 @@
58
58
  "oclif": "^4",
59
59
  "tsup": "^8.3.6",
60
60
  "typescript": "^5.7.3",
61
- "vite": "^6.0.11",
61
+ "vite": "^6.1.0",
62
62
  "vitest": "^2.1.8"
63
63
  },
64
64
  "prettier": "@shopify/prettier-config",