@shopify/oxygen-cli 4.5.10-unstable.202411201546.0 → 4.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +13 -0
- package/README.md +1 -0
- package/dist/commands/oxygen/deploy.d.ts +1 -0
- package/dist/commands/oxygen/deploy.js +6 -0
- package/dist/commands/oxygen/deploy.js.map +1 -1
- package/dist/deploy/metadata.d.ts +1 -0
- package/dist/deploy/metadata.js +2 -0
- package/dist/deploy/metadata.js.map +1 -1
- package/dist/deploy/types.d.ts +1 -0
- package/dist/deploy/types.js.map +1 -1
- package/oclif.manifest.json +10 -1
- package/package.json +4 -4
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
# @shopify/oxygen-cli
|
|
2
2
|
|
|
3
|
+
## 4.6.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- f3861c4: Add capturing for Hydrogen version number metadata
|
|
8
|
+
|
|
9
|
+
### Patch Changes
|
|
10
|
+
|
|
11
|
+
- 1f56a94: Update @types/node from 22.9.1 to 22.9.3
|
|
12
|
+
- 9d95eb5: Update oclif from 4.15.28 to 4.15.29
|
|
13
|
+
- 757f205: Update typescript from 5.6.3 to 5.7.2
|
|
14
|
+
- 56cd046: Update vitest from 2.1.5 to 2.1.6
|
|
15
|
+
|
|
3
16
|
## 4.5.9
|
|
4
17
|
|
|
5
18
|
### Patch Changes
|
package/README.md
CHANGED
|
@@ -53,6 +53,7 @@ oxygen:deploy [options]
|
|
|
53
53
|
- `--metadataUrl`: URL linking to the workflow/pipeline run in the CI platform from which the deployment is performed.
|
|
54
54
|
- `--metadataUser`: User that initiated the deployment.
|
|
55
55
|
- `--metadataVersion`: A version identifier for the deployment.
|
|
56
|
+
- `--metadataHydrogenVersion`: A Hydrogen version identifier for the deployment.
|
|
56
57
|
- `--disableBugsnag`: Disable Bugsnag error reporting.
|
|
57
58
|
- `--generateAuthBypassToken`: Generate an auth bypass token used to perform end-to-end testing against the deployment.
|
|
58
59
|
- `--authBypassTokenDuration`: Specify the duration (in hours) up to 12 hours for the authentication bypass token. Defaults to `2`.
|
|
@@ -18,6 +18,7 @@ declare class Deploy extends Command {
|
|
|
18
18
|
workerFolder: _oclif_core_lib_interfaces_parser_js.OptionFlag<string, _oclif_core_lib_interfaces_parser_js.CustomOptions>;
|
|
19
19
|
workerOnly: _oclif_core_lib_interfaces_parser_js.BooleanFlag<boolean>;
|
|
20
20
|
metadataDescription: _oclif_core_lib_interfaces_parser_js.OptionFlag<string | undefined, _oclif_core_lib_interfaces_parser_js.CustomOptions>;
|
|
21
|
+
metadataHydrogenVersion: _oclif_core_lib_interfaces_parser_js.OptionFlag<string | undefined, _oclif_core_lib_interfaces_parser_js.CustomOptions>;
|
|
21
22
|
metadataUrl: _oclif_core_lib_interfaces_parser_js.OptionFlag<string | undefined, _oclif_core_lib_interfaces_parser_js.CustomOptions>;
|
|
22
23
|
metadataUser: _oclif_core_lib_interfaces_parser_js.OptionFlag<string | undefined, _oclif_core_lib_interfaces_parser_js.CustomOptions>;
|
|
23
24
|
metadataVersion: _oclif_core_lib_interfaces_parser_js.OptionFlag<string | undefined, _oclif_core_lib_interfaces_parser_js.CustomOptions>;
|
|
@@ -92,6 +92,11 @@ class Deploy extends Command {
|
|
|
92
92
|
required: false,
|
|
93
93
|
env: "OXYGEN_METADATA_DESCRIPTION"
|
|
94
94
|
}),
|
|
95
|
+
metadataHydrogenVersion: Flags.string({
|
|
96
|
+
description: "The Hydrogen version of the deployment from package.json",
|
|
97
|
+
required: false,
|
|
98
|
+
env: "OXYGEN_METADATA_HYDROGEN_VERSION"
|
|
99
|
+
}),
|
|
95
100
|
metadataUrl: Flags.string({
|
|
96
101
|
description: "URL that links to the deployment. Will be saved and displayed in the Shopify admin",
|
|
97
102
|
required: false,
|
|
@@ -158,6 +163,7 @@ class Deploy extends Command {
|
|
|
158
163
|
verificationMaxDuration: flags.verificationMaxDuration,
|
|
159
164
|
metadata: {
|
|
160
165
|
description: flags.metadataDescription,
|
|
166
|
+
hydrogenVersion: flags.metadataHydrogenVersion,
|
|
161
167
|
url: flags.metadataUrl,
|
|
162
168
|
user: flags.metadataUser,
|
|
163
169
|
version: flags.metadataVersion
|
|
@@ -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 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 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"]}
|
package/dist/deploy/metadata.js
CHANGED
|
@@ -37,6 +37,7 @@ async function getMetadata(config, logger) {
|
|
|
37
37
|
config.metadata.description ?? metadata.commitMessage
|
|
38
38
|
),
|
|
39
39
|
commitSha: config.metadata.version ?? metadata.commitSha,
|
|
40
|
+
hydrogenVersion: config.metadata.hydrogenVersion,
|
|
40
41
|
url: config.metadata.url ?? metadata.url
|
|
41
42
|
};
|
|
42
43
|
}
|
|
@@ -117,6 +118,7 @@ function createLabels(metadata) {
|
|
|
117
118
|
commitDate: "commit-date",
|
|
118
119
|
commitMessage: "description",
|
|
119
120
|
commitSha: "version",
|
|
121
|
+
hydrogenVersion: "hydrogen-version",
|
|
120
122
|
url: "url"
|
|
121
123
|
};
|
|
122
124
|
for (const [key, value] of Object.entries(keyMapping)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/deploy/metadata.ts"],"names":["keyMapping"],"mappings":";;;;;
|
|
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"]}
|
package/dist/deploy/types.d.ts
CHANGED
package/dist/deploy/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/deploy/types.ts"],"names":["FileType"],"mappings":"
|
|
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"]}
|
package/oclif.manifest.json
CHANGED
|
@@ -121,6 +121,15 @@
|
|
|
121
121
|
"multiple": false,
|
|
122
122
|
"type": "option"
|
|
123
123
|
},
|
|
124
|
+
"metadataHydrogenVersion": {
|
|
125
|
+
"description": "The Hydrogen version of the deployment from package.json",
|
|
126
|
+
"env": "OXYGEN_METADATA_HYDROGEN_VERSION",
|
|
127
|
+
"name": "metadataHydrogenVersion",
|
|
128
|
+
"required": false,
|
|
129
|
+
"hasDynamicHelp": false,
|
|
130
|
+
"multiple": false,
|
|
131
|
+
"type": "option"
|
|
132
|
+
},
|
|
124
133
|
"metadataUrl": {
|
|
125
134
|
"description": "URL that links to the deployment. Will be saved and displayed in the Shopify admin",
|
|
126
135
|
"env": "OXYGEN_METADATA_URL",
|
|
@@ -194,5 +203,5 @@
|
|
|
194
203
|
]
|
|
195
204
|
}
|
|
196
205
|
},
|
|
197
|
-
"version": "4.
|
|
206
|
+
"version": "4.6.0"
|
|
198
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.
|
|
8
|
+
"version": "4.6.0",
|
|
9
9
|
"type": "module",
|
|
10
10
|
"scripts": {
|
|
11
11
|
"build": "tsup --sourcemap --clean --config ./tsup.config.ts && oclif manifest",
|
|
@@ -51,15 +51,15 @@
|
|
|
51
51
|
"@shopify/eslint-plugin": "^46.0.0",
|
|
52
52
|
"@shopify/prettier-config": "^1.1.2",
|
|
53
53
|
"@types/async": "^3.2.24",
|
|
54
|
-
"@types/node": "^22.9.
|
|
54
|
+
"@types/node": "^22.9.3",
|
|
55
55
|
"eslint": "^8.57.1",
|
|
56
56
|
"eslint-plugin-prettier": "^5.2.1",
|
|
57
57
|
"node-fetch": "^3.3.2",
|
|
58
58
|
"oclif": "^4",
|
|
59
59
|
"tsup": "^8.3.5",
|
|
60
|
-
"typescript": "^5.
|
|
60
|
+
"typescript": "^5.7.2",
|
|
61
61
|
"vite": "^5.4.11",
|
|
62
|
-
"vitest": "^2.1.
|
|
62
|
+
"vitest": "^2.1.6"
|
|
63
63
|
},
|
|
64
64
|
"prettier": "@shopify/prettier-config",
|
|
65
65
|
"oclif": {
|