@shopify/oxygen-cli 4.1.2-unstable.202402211541.0 → 4.2.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 +6 -1
- package/dist/deploy/graphql/deployment-verification-details.d.ts +1 -1
- package/dist/deploy/graphql/deployment-verification-details.js.map +1 -1
- package/dist/deploy/verify-deployment-completed.js +4 -0
- package/dist/deploy/verify-deployment-completed.js.map +1 -1
- package/oclif.manifest.json +1 -1
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
# @shopify/oxygen-cli
|
|
2
2
|
|
|
3
|
-
## 4.
|
|
3
|
+
## 4.2.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- fbc1bef: Gracefully handle empty deployment verification details response
|
|
4
8
|
|
|
5
9
|
### Patch Changes
|
|
6
10
|
|
|
@@ -21,6 +25,7 @@
|
|
|
21
25
|
- 4c4c3d0: Update dotenv from 16.4.4 to 16.4.5
|
|
22
26
|
- 2e06e73: Update oclif from 4.4.16 to 4.4.17
|
|
23
27
|
- 60b88bc: Update vite from 5.1.3 to 5.1.4
|
|
28
|
+
- 73dfee3: Update @types/node from 20.11.19 to 20.11.20
|
|
24
29
|
|
|
25
30
|
## 4.1.0
|
|
26
31
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
declare const DeploymentVerificationDetailsQuery = "\n query DeploymentVerificationDetails($deploymentId: ID!) {\n deploymentVerificationDetails(id: $deploymentId) {\n url\n status\n error\n }\n }\n";
|
|
2
2
|
interface DeploymentVerificationDetailsQueryData {
|
|
3
|
-
deploymentVerificationDetails: DeploymentVerificationDetailsResponse;
|
|
3
|
+
deploymentVerificationDetails: DeploymentVerificationDetailsResponse | null;
|
|
4
4
|
}
|
|
5
5
|
interface DeploymentVerificationDetailsResponse {
|
|
6
6
|
url: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/deploy/graphql/deployment-verification-details.ts"],"names":["Status"],"mappings":"AAAO,MAAM,qCAAqC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAoB3C,IAAK,SAAL,kBAAKA,YAAL;AACL,EAAAA,QAAA,aAAU;AACV,EAAAA,QAAA,cAAW;AACX,EAAAA,QAAA,YAAS;AACT,EAAAA,QAAA,eAAY;AAJF,SAAAA;AAAA,GAAA","sourcesContent":["export const DeploymentVerificationDetailsQuery = `\n query DeploymentVerificationDetails($deploymentId: ID!) {\n deploymentVerificationDetails(id: $deploymentId) {\n url\n status\n error\n }\n }\n`;\n\nexport interface DeploymentVerificationDetailsQueryData {\n deploymentVerificationDetails: DeploymentVerificationDetailsResponse;\n}\n\nexport interface DeploymentVerificationDetailsResponse {\n url: string;\n status: string;\n error?: string;\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,qCAAqC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAoB3C,IAAK,SAAL,kBAAKA,YAAL;AACL,EAAAA,QAAA,aAAU;AACV,EAAAA,QAAA,cAAW;AACX,EAAAA,QAAA,YAAS;AACT,EAAAA,QAAA,eAAY;AAJF,SAAAA;AAAA,GAAA","sourcesContent":["export const DeploymentVerificationDetailsQuery = `\n query DeploymentVerificationDetails($deploymentId: ID!) {\n deploymentVerificationDetails(id: $deploymentId) {\n url\n status\n error\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}\n\nexport enum Status {\n Pending = 'PENDING',\n Deployed = 'DEPLOYED',\n Failed = 'FAILED',\n Cancelled = 'CANCELLED',\n}\n"]}
|
|
@@ -36,6 +36,10 @@ async function verifyDeploymentCompleted(options, deploymentId) {
|
|
|
36
36
|
}
|
|
37
37
|
});
|
|
38
38
|
const data = response.deploymentVerificationDetails;
|
|
39
|
+
if (data == null) {
|
|
40
|
+
hooks?.onDeploymentCompletedVerificationError?.();
|
|
41
|
+
throw new DeploymentCompletedVerificationError("Deployment not found");
|
|
42
|
+
}
|
|
39
43
|
if (data.status === Status.Deployed) {
|
|
40
44
|
outputCompleted("Deployment to Oxygen completed successfully", logger);
|
|
41
45
|
hooks?.onDeploymentCompleted?.();
|
|
@@ -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;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"]}
|
|
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,QAAQ,MAAM;AAChB,aAAO,yCAAyC;AAChD,YAAM,IAAI,qCAAqC,sBAAsB;AAAA,IACvE;AAEA,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 == 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 : `Deployment ${data.status.toLocaleLowerCase()}`,\n );\n }\n\n return handleInterval();\n };\n\n return check();\n}\n"]}
|
package/oclif.manifest.json
CHANGED
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.2.0",
|
|
9
9
|
"type": "module",
|
|
10
10
|
"scripts": {
|
|
11
11
|
"build": "tsup --sourcemap --clean --config ./tsup.config.ts && oclif manifest",
|
|
@@ -53,7 +53,7 @@
|
|
|
53
53
|
"@shopify/eslint-plugin": "^44.0.0",
|
|
54
54
|
"@shopify/prettier-config": "^1.1.2",
|
|
55
55
|
"@types/async": "^3.2.24",
|
|
56
|
-
"@types/node": "^20.11.
|
|
56
|
+
"@types/node": "^20.11.20",
|
|
57
57
|
"eslint": "^8.55.0",
|
|
58
58
|
"eslint-plugin-prettier": "^5.1.3",
|
|
59
59
|
"node-fetch": "^3.3.2",
|