@shopify/oxygen-cli 3.1.8-unstable.202401031601.0 → 3.1.8

Sign up to get free protection for your applications and to get access to all the features.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,28 @@
1
1
  # @shopify/oxygen-cli
2
2
 
3
+ ## 3.1.8
4
+
5
+ ### Patch Changes
6
+
7
+ - 4263ffe: Update eslint-plugin-prettier from 5.1.0 to 5.1.2
8
+ - d137b8a: Update @types/node from 20.10.5 to 20.10.6
9
+ - d7b785f: Update vitest from 1.1.0 to 1.1.3
10
+ - 2c0ee45: Update @types/node from 20.10.6 to 20.10.7
11
+ - db3d9cd: Update vite from 4.5.1 to 5.0.11
12
+ - 8306b94: Update oclif from 4.1.0 to 4.1.4
13
+ - f9e3a1f: Update @types/node from 20.10.7 to 20.10.8
14
+ - 28f5b8a: Update oclif from 4.1.4 to 4.2.0
15
+ - 77a6c23: Update eslint-plugin-prettier from 5.1.2 to 5.1.3
16
+ - d611681: Update oclif from 4.2.0 to 4.3.1
17
+ - 3517bdd: Update @types/node from 20.10.8 to 20.11.0
18
+ - 94ebb47: Update oclif from 4.3.1 to 4.3.4
19
+ - 90b7384: Update @types/node from 20.11.0 to 20.11.2
20
+ - 2ea5b53: Update vitest from 1.1.3 to 1.2.0
21
+ - f64701b: Update @types/node from 20.11.2 to 20.11.4
22
+ - a2f407b: Update @types/node from 20.11.4 to 20.11.5
23
+ - d5832f9: truncate special characters in commit title correctly
24
+ - 325d4a8: Fix spelling error in error message, remove non-existing variable from README
25
+
3
26
  ## 3.1.7
4
27
 
5
28
  ### Patch Changes
package/README.md CHANGED
@@ -46,7 +46,7 @@ oxygen:deploy [options]
46
46
  - -d, --verificationMaxDuration: The maximum duration (in seconds) that the deployment verification is allowed to run before it is considered failed. Accepts values between 10 and 300.
47
47
  - --publicDeployment: set the deployment to be publicly accessible.
48
48
  - --metadataDescription <metadataDescription>: A brief description of the deployment, typically the commit message associated with the changes being deployed.
49
- - --metadataUrl <metadataUrl>: URL that links to the deployment.
49
+ - --metadataUrl <metadataUrl>: URL linking to the workflow/pipeline run in the CI platform from which the deployment is performed.
50
50
  - --metadataUser <metadataUser>: User that initiated the deployment.
51
51
  - --metadataVersion <metadataVersion>: A version identifier for the deployment.
52
52
  - --disableBugsnag: Disable Bugsnag error reporting.
@@ -89,7 +89,7 @@ The following environment variables are relevant, depending on your environment:
89
89
 
90
90
  |- | Bitbucket | CircleCI | Github | Gitlab |
91
91
  |- | --------- | --------| ------ | ------ |
92
- | User | BITBUCKET_COMMIT_AUTHOR | CIRCLE_USERNAME | GITHUB_ACTOR | GITLAB_USER_LOGIN |
92
+ | User | N/A | CIRCLE_USERNAME | GITHUB_ACTOR | GITLAB_USER_LOGIN |
93
93
  | Version | BITBUCKET_COMMIT | CIRCLE_SHA1 | GITHUB_SHA | CI_COMMIT_SHA |
94
94
  | URL | `https://bitbucket.org/${envs.BITBUCKET_WORKSPACE}/${envs.BITBUCKET_REPO_SLUG}/pipelines/results/${envs.BITBUCKET_BUILD_NUMBER}` | CIRCLE_BUILD_URL | `${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}/actions/runs/${GITHUB_RUN_ID}` | CI_PIPELINE_URL |
95
95
 
@@ -38,14 +38,19 @@ async function getMetadata(config, logger) {
38
38
  };
39
39
  }
40
40
  function createCommitTitle(commitMessage) {
41
- const title = commitMessage.split("\n")[0]?.trim() || "";
42
- if (title.length <= maxLabelLength)
43
- return title;
44
- const lastSpaceIndex = title.lastIndexOf(" ", maxLabelLength - 3);
45
- return `${title.substring(
46
- 0,
47
- lastSpaceIndex > -1 ? lastSpaceIndex : maxLabelLength - 3
48
- )}...`;
41
+ let title = commitMessage.split(/\r?\n/)[0]?.trim() || "";
42
+ let jsonTitle = JSON.stringify(title);
43
+ let isTruncated = false;
44
+ while (jsonTitle.length > maxLabelLength) {
45
+ const lastSpaceIndex = title.lastIndexOf(" ", maxLabelLength - 3);
46
+ title = `${title.substring(
47
+ 0,
48
+ lastSpaceIndex > -1 ? lastSpaceIndex : maxLabelLength - 3
49
+ )}`.trimEnd();
50
+ isTruncated = true;
51
+ jsonTitle = JSON.stringify(title);
52
+ }
53
+ return isTruncated ? `${title}...` : title;
49
54
  }
50
55
  function getEnvironmentInput(config, metadata) {
51
56
  const tag = config.environmentTag || metadata.branch;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/deploy/metadata.ts"],"names":["keyMapping"],"mappings":"AAAA,SAAQ,kBAA6B;AACrC,SAAQ,0BAAyB;AACjC,SAAgB,kBAAiB;AAEjC,SAAQ,sBAAqB;AAS7B,eAAsB,YACpB,QACA,QACmB;AACnB,QAAM,SAAS,WAAW;AAC1B,MAAI,WAAqB,CAAC;AAE1B,MAAI;AACF,UAAM,YAAY,MAAM,mBAAmB,OAAO,QAAQ;AAC1D,UAAM,UAAU,kBAAkB,KAAK,UAAU,IAAI,KAAK,CAAC,GAAG,CAAC;AAE/D,eAAW;AAAA,MACT,OAAO,UAAU;AAAA,MACjB;AAAA,MACA,YAAY,UAAU;AAAA,MACtB,WAAW,UAAU;AAAA,MACrB,eAAe,kBAAkB,UAAU,OAAO;AAAA,IACpD;AAAA,EACF,SAAS,OAAO;AACd;AAAA,MACE;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAEA,MAAI,OAAO,QAAQ,OAAO,SAAS,WAAW;AAC5C,eAAW;AAAA,MACT,GAAG;AAAA,MACH,GAAG,OAAO;AAAA,IACZ;AAAA,EACF;AAEA,SAAO;AAAA,IACL,MAAM,OAAO,OAAO,OAAO,OAAO;AAAA,IAClC,GAAG;AAAA,IACH,OAAO,OAAO,SAAS,QAAQ,SAAS;AAAA,IACxC,eAAe,OAAO,SAAS,eAAe,SAAS;AAAA,IACvD,WAAW,OAAO,SAAS,WAAW,SAAS;AAAA,IAC/C,KAAK,OAAO,SAAS,OAAO,SAAS;AAAA,EACvC;AACF;AAEA,SAAS,kBAAkB,eAA+B;AACxD,QAAM,QAAQ,cAAc,MAAM,IAAI,EAAE,CAAC,GAAG,KAAK,KAAK;AACtD,MAAI,MAAM,UAAU;AAAgB,WAAO;AAE3C,QAAM,iBAAiB,MAAM,YAAY,KAAK,iBAAiB,CAAC;AAChE,SAAO,GAAG,MAAM;AAAA,IACd;AAAA,IACA,iBAAiB,KAAK,iBAAiB,iBAAiB;AAAA,EAC1D,CAAC;AACH;AAEO,SAAS,oBACd,QACA,UAC8B;AAC9B,QAAM,MAAM,OAAO,kBAAkB,SAAS;AAC9C,SAAO,MAAM,EAAC,IAAG,IAAI;AACvB;AAEO,SAAS,aAAa,UAA8B;AACzD,QAAM,SAAmB,CAAC;AAE1B,QAAM,aAAa,CAAC,UAAkB,eAAuB;AAC3D,UAAM,aAAa,KAAK,UAAU,UAAU;AAC5C,QAAI,WAAW,SAAS,gBAAgB;AACtC,YAAM,IAAI;AAAA,QACR,YAAY,QAAQ,yCAAyC,cAAc;AAAA,MAC7E;AAAA,IACF;AACA,UAAM,QAAQ,GAAG,QAAQ,IAAI,UAAU;AACvC,WAAO,KAAK,KAAK;AAAA,EACnB;AAEA,MAAI,SAAS,SAAS,WAAW;AAC/B,UAAMA,cAAa;AAAA,MACjB,SAAS;AAAA,MACT,KAAK;AAAA,IACP;AAEA,eAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQA,WAAU,GAAG;AACrD,YAAM,cAAc;AACpB,UAAI,SAAS,WAAW,GAAG;AACzB,eAAO;AAAA,UACL,GAAG,SAAS,IAAI,IAAI,KAAK,IAAI,KAAK,UAAU,SAAS,WAAW,CAAC,CAAC;AAAA,QACpE;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,QAAM,aAAa;AAAA,IACjB,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,YAAY;AAAA,IACZ,eAAe;AAAA,IACf,WAAW;AAAA,IACX,KAAK;AAAA,EACP;AAEA,aAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,UAAU,GAAG;AACrD,UAAM,cAAc;AACpB,QAAI,SAAS,WAAW,GAAG;AACzB,iBAAW,OAAO,SAAS,WAAW,CAAE;AAAA,IAC1C;AAAA,EACF;AAEA,SAAO;AACT","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\ntype Metadata = CIMetadata & {\n commitDate?: string;\n name?: string;\n};\n\nexport async function getMetadata(\n config: DeploymentConfig,\n logger: Logger,\n): Promise<Metadata> {\n const ciInfo = ciPlatform();\n let metadata: Metadata = {};\n\n try {\n const gitCommit = await getLatestGitCommit(config.rootPath);\n const branch = (/HEAD -> ([^,]*)/.exec(gitCommit.refs) || [])[1];\n\n metadata = {\n actor: gitCommit.author_name,\n branch,\n commitDate: gitCommit.date,\n commitSha: gitCommit.hash,\n commitMessage: createCommitTitle(gitCommit.message),\n };\n } catch (error) {\n outputWarn(\n 'Could not retrieve Git history, commit message will be unavailable.',\n logger,\n );\n }\n\n if (ciInfo.isCI && ciInfo.name !== 'unknown') {\n metadata = {\n ...metadata,\n ...ciInfo.metadata,\n };\n }\n\n return {\n name: ciInfo.isCI ? ciInfo.name : 'none',\n ...metadata,\n actor: config.metadata.user ?? metadata.actor,\n commitMessage: config.metadata.description ?? metadata.commitMessage,\n commitSha: config.metadata.version ?? metadata.commitSha,\n url: config.metadata.url ?? metadata.url,\n };\n}\n\nfunction createCommitTitle(commitMessage: string): string {\n const title = commitMessage.split('\\n')[0]?.trim() || '';\n if (title.length <= maxLabelLength) return title;\n\n const lastSpaceIndex = title.lastIndexOf(' ', maxLabelLength - 3);\n return `${title.substring(\n 0,\n lastSpaceIndex > -1 ? lastSpaceIndex : maxLabelLength - 3,\n )}...`;\n}\n\nexport function getEnvironmentInput(\n config: DeploymentConfig,\n metadata: CIMetadata,\n): EnvironmentInput | undefined {\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 !== '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 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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","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\ntype Metadata = CIMetadata & {\n commitDate?: string;\n name?: string;\n};\n\nexport async function getMetadata(\n config: DeploymentConfig,\n logger: Logger,\n): Promise<Metadata> {\n const ciInfo = ciPlatform();\n let metadata: Metadata = {};\n\n try {\n const gitCommit = await getLatestGitCommit(config.rootPath);\n const branch = (/HEAD -> ([^,]*)/.exec(gitCommit.refs) || [])[1];\n\n metadata = {\n actor: gitCommit.author_name,\n branch,\n commitDate: gitCommit.date,\n commitSha: gitCommit.hash,\n commitMessage: createCommitTitle(gitCommit.message),\n };\n } catch (error) {\n outputWarn(\n 'Could not retrieve Git history, commit message will be unavailable.',\n logger,\n );\n }\n\n if (ciInfo.isCI && ciInfo.name !== 'unknown') {\n metadata = {\n ...metadata,\n ...ciInfo.metadata,\n };\n }\n\n return {\n name: ciInfo.isCI ? ciInfo.name : 'none',\n ...metadata,\n actor: config.metadata.user ?? metadata.actor,\n commitMessage: config.metadata.description ?? metadata.commitMessage,\n commitSha: config.metadata.version ?? metadata.commitSha,\n url: config.metadata.url ?? metadata.url,\n };\n}\n\nfunction createCommitTitle(commitMessage: string): string {\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 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 !== '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 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"]}
@@ -17,7 +17,9 @@ async function verifyDeploymentCompleted(options, deploymentId) {
17
17
  const elapsedTime = (Date.now() - startTime) / 1e3;
18
18
  if (elapsedTime + delay / 1e3 > timeoutInSeconds) {
19
19
  hooks?.onDeploymentCompletedVerificationError?.();
20
- throw new Error(`Deployment not completed after ${timeoutInSeconds}`);
20
+ throw new Error(
21
+ `Deployment not completed after ${timeoutInSeconds} seconds.`
22
+ );
21
23
  }
22
24
  await new Promise((resolve) => setTimeout(resolve, delay));
23
25
  return check();
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/deploy/verify-deployment-completed.ts"],"names":[],"mappings":"AAAA,SAAQ,sBAAqB;AAC7B;AAAA,EAEE;AAAA,EACA;AAAA,OACK;AAEP,SAAQ,cAAa;AAErB;AAAA,EAGE;AAAA,OACK;AACP;AAAA,EACE;AAAA,EAGA;AAAA,OACK;AASP,eAAsB,0BACpB,SACA,cACgD;AAChD,QAAM,EAAC,QAAQ,QAAQ,kBAAkB,MAAK,IAAI;AAClD,QAAM,YAAY;AAAA,IAChB;AAAA,EACF;AAEA,SAAO,yCAAyC;AAChD,aAAW,qCAAqC,MAAM;AAEtD,MAAI,WAAW;AACf,QAAM,YAAY,KAAK,IAAI;AAE3B,QAAM,iBAAiB,YAAY;AACjC,UAAM,QAAQ;AACd,UAAM,eAAe,KAAK,IAAI,IAAI,aAAa;AAC/C,QAAI,cAAc,QAAQ,MAAO,kBAAkB;AACjD,aAAO,yCAAyC;AAChD,YAAM,IAAI,MAAM,kCAAkC,gBAAgB,EAAE;AAAA,IACtE;AACA;AACA,UAAM,IAAI,QAAQ,CAAC,YAAY,WAAW,SAAS,KAAK,CAAC;AACzD,WAAO,MAAM;AAAA,EACf;AAEA,QAAM,QAAQ,YAA4D;AACxE,UAAM,WACJ,MAAM,eAAe;AAAA,MACnB,OAAO;AAAA,MACP,KAAK;AAAA,MACL,KAAK,GAAG,OAAO,aAAa;AAAA,MAC5B,OAAO,OAAO,gBAAgB;AAAA,MAC9B;AAAA,MACA,cAAc;AAAA,QACZ,CAAC,OAAO,qBAAqB,GAAG,OAAO,gBAAgB;AAAA,MACzD;AAAA,IACF,CAAC;AAEH,UAAM,OAAO,SAAS;AACtB,QAAI,KAAK,WAAW,OAAO,UAAU;AACnC,sBAAgB,+CAA+C,MAAM;AACrE,aAAO,wBAAwB;AAC/B,aAAO;AAAA,IACT;AAEA,QAAI,KAAK,WAAW,OAAO,UAAU,KAAK,WAAW,OAAO,WAAW;AACrE,aAAO,qBAAqB,IAAI;AAChC,YAAM,IAAI;AAAA,QACR,KAAK,QACD,cAAc,KAAK,OAAO,kBAAkB,CAAC,YAC3C,KAAK,KACP,KACA,cAAc,KAAK,OAAO,kBAAkB,CAAC;AAAA,MACnD;AAAA,IACF;AAEA,WAAO,eAAe;AAAA,EACxB;AAEA,SAAO,MAAM;AACf","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(`Deployment not completed after ${timeoutInSeconds}`);\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.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 : `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":"AAAA,SAAQ,sBAAqB;AAC7B;AAAA,EAEE;AAAA,EACA;AAAA,OACK;AAEP,SAAQ,cAAa;AAErB;AAAA,EAGE;AAAA,OACK;AACP;AAAA,EACE;AAAA,EAGA;AAAA,OACK;AASP,eAAsB,0BACpB,SACA,cACgD;AAChD,QAAM,EAAC,QAAQ,QAAQ,kBAAkB,MAAK,IAAI;AAClD,QAAM,YAAY;AAAA,IAChB;AAAA,EACF;AAEA,SAAO,yCAAyC;AAChD,aAAW,qCAAqC,MAAM;AAEtD,MAAI,WAAW;AACf,QAAM,YAAY,KAAK,IAAI;AAE3B,QAAM,iBAAiB,YAAY;AACjC,UAAM,QAAQ;AACd,UAAM,eAAe,KAAK,IAAI,IAAI,aAAa;AAC/C,QAAI,cAAc,QAAQ,MAAO,kBAAkB;AACjD,aAAO,yCAAyC;AAChD,YAAM,IAAI;AAAA,QACR,kCAAkC,gBAAgB;AAAA,MACpD;AAAA,IACF;AACA;AACA,UAAM,IAAI,QAAQ,CAAC,YAAY,WAAW,SAAS,KAAK,CAAC;AACzD,WAAO,MAAM;AAAA,EACf;AAEA,QAAM,QAAQ,YAA4D;AACxE,UAAM,WACJ,MAAM,eAAe;AAAA,MACnB,OAAO;AAAA,MACP,KAAK;AAAA,MACL,KAAK,GAAG,OAAO,aAAa;AAAA,MAC5B,OAAO,OAAO,gBAAgB;AAAA,MAC9B;AAAA,MACA,cAAc;AAAA,QACZ,CAAC,OAAO,qBAAqB,GAAG,OAAO,gBAAgB;AAAA,MACzD;AAAA,IACF,CAAC;AAEH,UAAM,OAAO,SAAS;AACtB,QAAI,KAAK,WAAW,OAAO,UAAU;AACnC,sBAAgB,+CAA+C,MAAM;AACrE,aAAO,wBAAwB;AAC/B,aAAO;AAAA,IACT;AAEA,QAAI,KAAK,WAAW,OAAO,UAAU,KAAK,WAAW,OAAO,WAAW;AACrE,aAAO,qBAAqB,IAAI;AAChC,YAAM,IAAI;AAAA,QACR,KAAK,QACD,cAAc,KAAK,OAAO,kBAAkB,CAAC,YAC3C,KAAK,KACP,KACA,cAAc,KAAK,OAAO,kBAAkB,CAAC;AAAA,MACnD;AAAA,IACF;AAEA,WAAO,eAAe;AAAA,EACxB;AAEA,SAAO,MAAM;AACf","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.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 : `Deployment ${data.status.toLocaleLowerCase()}`,\n );\n }\n\n return handleInterval();\n };\n\n return check();\n}\n"]}
@@ -174,5 +174,5 @@
174
174
  ]
175
175
  }
176
176
  },
177
- "version": "3.1.8-unstable.202401031601.0"
177
+ "version": "3.1.8"
178
178
  }
package/package.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "@shopify:registry": "https://registry.npmjs.org"
6
6
  },
7
7
  "license": "MIT",
8
- "version": "3.1.8-unstable.202401031601.0",
8
+ "version": "3.1.8",
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": "^44.0.0",
52
52
  "@shopify/prettier-config": "^1.1.2",
53
53
  "@types/async": "^3.2.24",
54
- "@types/node": "^20.10.5",
54
+ "@types/node": "^20.11.5",
55
55
  "eslint": "^8.55.0",
56
- "eslint-plugin-prettier": "^5.1.0",
56
+ "eslint-plugin-prettier": "^5.1.3",
57
57
  "node-fetch": "^3.3.2",
58
58
  "oclif": "^4",
59
59
  "tsup": "^8.0.1",
60
60
  "typescript": "^5.3.3",
61
- "vite": "^4.4.10",
62
- "vitest": "^1.1.0"
61
+ "vite": "^5.0.11",
62
+ "vitest": "^1.2.0"
63
63
  },
64
64
  "prettier": "@shopify/prettier-config",
65
65
  "oclif": {