@shopify/shop-minis-cli 0.0.42 → 0.0.44

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.
Files changed (106) hide show
  1. package/build/commands/cancel-submission/cancel-submission.js +3 -2
  2. package/build/commands/cancel-submission/cancel-submission.js.map +1 -1
  3. package/build/commands/check-submission/index.js +39 -6
  4. package/build/commands/check-submission/index.js.map +1 -1
  5. package/build/commands/check-submission/types.d.ts +1 -1
  6. package/build/commands/config.d.ts +5 -0
  7. package/build/commands/config.js +20 -0
  8. package/build/commands/config.js.map +1 -1
  9. package/build/commands/data/cancel-submission.d.ts +22 -0
  10. package/build/commands/data/cancel-submission.js +26 -0
  11. package/build/commands/data/cancel-submission.js.map +1 -0
  12. package/build/commands/data/client.d.ts +7 -0
  13. package/build/commands/data/client.js +8 -0
  14. package/build/commands/data/client.js.map +1 -0
  15. package/build/commands/data/create-submission.d.ts +20 -0
  16. package/build/commands/data/create-submission.js +27 -0
  17. package/build/commands/data/create-submission.js.map +1 -0
  18. package/build/commands/data/create-upload.d.ts +21 -0
  19. package/build/commands/data/create-upload.js +40 -0
  20. package/build/commands/data/create-upload.js.map +1 -0
  21. package/build/commands/data/get-submissions.d.ts +27 -0
  22. package/build/commands/data/get-submissions.js +33 -0
  23. package/build/commands/data/get-submissions.js.map +1 -0
  24. package/build/commands/dev/index.d.ts +2 -0
  25. package/build/commands/dev/index.js +8 -2
  26. package/build/commands/dev/index.js.map +1 -1
  27. package/build/commands/dev/utils/android.d.ts +6 -4
  28. package/build/commands/dev/utils/android.js +29 -29
  29. package/build/commands/dev/utils/android.js.map +1 -1
  30. package/build/commands/dev/utils/binaries.d.ts +2 -59
  31. package/build/commands/dev/utils/binaries.js +7 -84
  32. package/build/commands/dev/utils/binaries.js.map +1 -1
  33. package/build/commands/dev/utils/build-type.d.ts +2 -0
  34. package/build/commands/dev/utils/build-type.js +14 -0
  35. package/build/commands/dev/utils/build-type.js.map +1 -0
  36. package/build/commands/dev/utils/deeplink.d.ts +2 -2
  37. package/build/commands/dev/utils/deeplink.js +5 -5
  38. package/build/commands/dev/utils/deeplink.js.map +1 -1
  39. package/build/commands/dev/utils/interactive-terminal.d.ts +3 -1
  40. package/build/commands/dev/utils/interactive-terminal.js +37 -78
  41. package/build/commands/dev/utils/interactive-terminal.js.map +1 -1
  42. package/build/commands/dev/utils/metro/metro-server.d.ts +1 -1
  43. package/build/commands/dev/utils/metro/metro-server.js +1 -1
  44. package/build/commands/dev/utils/metro/metro-server.js.map +1 -1
  45. package/build/commands/dev/utils/network.d.ts +8 -8
  46. package/build/commands/dev/utils/network.js +69 -23
  47. package/build/commands/dev/utils/network.js.map +1 -1
  48. package/build/commands/dev/utils/patch-package.d.ts +4 -0
  49. package/build/commands/dev/utils/patch-package.js +72 -0
  50. package/build/commands/dev/utils/patch-package.js.map +1 -0
  51. package/build/commands/dev/utils/platform.d.ts +18 -0
  52. package/build/commands/dev/utils/platform.js +41 -0
  53. package/build/commands/dev/utils/platform.js.map +1 -0
  54. package/build/commands/dev/utils/simulator.d.ts +5 -2
  55. package/build/commands/dev/utils/simulator.js +27 -13
  56. package/build/commands/dev/utils/simulator.js.map +1 -1
  57. package/build/commands/dev/utils/start-app.d.ts +23 -0
  58. package/build/commands/dev/utils/start-app.js +85 -0
  59. package/build/commands/dev/utils/start-app.js.map +1 -0
  60. package/build/commands/dev/utils/types.d.ts +24 -1
  61. package/build/commands/dev/utils/types.js +6 -1
  62. package/build/commands/dev/utils/types.js.map +1 -1
  63. package/build/commands/dev/utils/version.d.ts +64 -0
  64. package/build/commands/dev/utils/version.js +101 -0
  65. package/build/commands/dev/utils/version.js.map +1 -0
  66. package/build/commands/submit/errors.d.ts +1 -1
  67. package/build/commands/submit/errors.js +1 -1
  68. package/build/commands/submit/errors.js.map +1 -1
  69. package/build/commands/submit/submit.js +2 -1
  70. package/build/commands/submit/submit.js.map +1 -1
  71. package/build/commands/submit/tasks.d.ts +0 -1
  72. package/build/commands/submit/tasks.js +4 -48
  73. package/build/commands/submit/tasks.js.map +1 -1
  74. package/build/commands/types/autogenerated/shop-minis-admin-api/gql.d.ts +9 -9
  75. package/build/commands/types/autogenerated/shop-minis-admin-api/gql.js +2 -2
  76. package/build/commands/types/autogenerated/shop-minis-admin-api/gql.js.map +1 -1
  77. package/build/commands/types/autogenerated/shop-minis-admin-api/graphql.d.ts +301 -65
  78. package/build/commands/types/autogenerated/shop-minis-admin-api/graphql.js +155 -97
  79. package/build/commands/types/autogenerated/shop-minis-admin-api/graphql.js.map +1 -1
  80. package/build/commands/utils/common-tasks.d.ts +1 -0
  81. package/build/commands/utils/common-tasks.js +49 -0
  82. package/build/commands/utils/common-tasks.js.map +1 -0
  83. package/build/index.js +2 -1
  84. package/build/index.js.map +1 -1
  85. package/jest.config.ts +2 -2
  86. package/package.json +3 -1
  87. package/templates/__template_common/.eslintrc.js +29 -0
  88. package/templates/__template_common/index.tsx +0 -2
  89. package/templates/__template_common/package.json +4 -33
  90. package/templates/__template_common/patches/react-native+0.71.4.patch +78 -0
  91. package/templates/__template_common/src/manifest.json +1 -27
  92. package/templates/__template_hello_world/src/components/ComponentLink.ts +4 -0
  93. package/templates/__template_hello_world/src/components/ComponentListItem.tsx +1 -0
  94. package/templates/__template_hello_world/src/components/FeaturedComponents.tsx +2 -0
  95. package/templates/__template_hello_world/src/components/quiz/QuizSlide.tsx +6 -3
  96. package/templates/__template_hello_world/src/components/quiz/TextFieldSlide.tsx +88 -7
  97. package/templates/__template_hello_world/src/routes.tsx +6 -0
  98. package/templates/__template_hello_world/src/screens/AccordionScreen.tsx +73 -0
  99. package/templates/__template_hello_world/src/screens/InputScreen.tsx +4 -10
  100. package/templates/__template_hello_world/src/types.ts +1 -0
  101. package/templates/__template_hello_world/src/utils/mockQuizData.ts +19 -0
  102. package/build/commands/utils/graphql.d.ts +0 -92
  103. package/build/commands/utils/graphql.js +0 -123
  104. package/build/commands/utils/graphql.js.map +0 -1
  105. package/templates/__template_common/.eslintrc.json +0 -15
  106. package/templates/__template_common/patches/react-native+0.68.5.patch +0 -173
@@ -1 +1 @@
1
- {"version":3,"file":"network.js","sourceRoot":"","sources":["../../../../src/commands/dev/utils/network.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAA;AAEvB,OAAO,EAAC,OAAO,EAAC,MAAM,uBAAuB,CAAA;AAC7C,OAAO,EAAE,MAAM,UAAU,CAAA;AAEzB,OAAO,EAAC,KAAK,EAAC,MAAM,iBAAiB,CAAA;AAErC,OAAO,EACL,iCAAiC,EACjC,6BAA6B,EAC7B,yBAAyB,EACzB,uBAAuB,GACxB,MAAM,eAAe,CAAA;AAGtB,kDAAkD;AAClD,8HAA8H;AAC9H,sEAAsE;AACtE,MAAM,WAAW,GAAG,wBAAwB,CAAA;AAE5C,MAAM,wBAAwB,GAAG,oBAAoB,CAAA;AACrD,MAAM,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC,MAAM,CAAC,wBAAwB,CAAC,CAAA;AAE7D;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,QAAkB,EAClB,EACE,UAAU,EACV,OAAO,MAUL,EAAE;IAEN,MAAM,iBAAiB,GAAG,OAAO,IAAI,CAAC,MAAM,sBAAsB,CAAC,QAAQ,CAAC,CAAC,CAAA;IAE7E,MAAM,0BAA0B,GAAG,MAAM,yBAAyB,CAChE,QAAQ,EACR,iBAAiB,CAClB,CAAA;IACD,IAAI,0BAA0B,EAAE;QAC9B,UAAU,EAAE,CAAC,GAAG,CAAC,CAAA;QACjB,OAAO,iBAAiB,CAAA;KACzB;IAED,MAAM,QAAQ,GAAG,uBAAuB,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAA;IAErE,MAAM,cAAc,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC;QAC3C,MAAM,EAAE,QAAQ;KACjB,CAAC,CAAA;IACF,MAAM,UAAU,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACvC,MAAM,QAAQ,GAAG,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;IAEvD,OAAO,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC7C,MAAM,WAAW,GAAG,EAAE,CAAC,iBAAiB,CAAC,GAAG,KAAK,CAAC,SAAS,IAAI,QAAQ,EAAE,CAAC,CAAA;QAE1E,MAAM,gBAAgB,GAAG,WAAW,CAAC,GAAG,EAAE;YACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,YAAY,GAAG,QAAQ,CAAC,GAAG,GAAG,CAAC,CAAA;YACxE,UAAU,EAAE,CAAC,QAAQ,CAAC,CAAA;QACxB,CAAC,EAAE,GAAG,CAAC,CAAA;QAEP,IAAI,CAAC,GAAG,CAAC,GAAG,WAAW,GAAG,QAAQ,EAAE,EAAE,WAAW,CAAC,EAAE;YAClD,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;YAE7B,WAAW,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;gBAC5B,WAAW,CAAC,KAAK,EAAE,CAAA;gBACnB,UAAU,EAAE,CAAC,GAAG,CAAC,CAAA;gBACjB,OAAO,CAAC,iBAAiB,CAAC,CAAA;gBAC1B,aAAa,CAAC,gBAAgB,CAAC,CAAA;YACjC,CAAC,CAAC,CAAA;YAEF,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE;gBAC5B,MAAM,CAAC,GAAG,CAAC,CAAA;gBACX,aAAa,CAAC,gBAAgB,CAAC,CAAA;YACjC,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,QAAkB;IAC7D,MAAM,aAAa,GAAG,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAA;IAE7C,MAAM,aAAa,GAAG,aAAa,CAAC,CAAC,CAAC,CAAA;IACtC,MAAM,SAAS,GAAG,aAAa;SAC5B,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;SACtB,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,iCAAiC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;IAE7E,OAAO,6BAA6B,CAAC,SAAS,CAAE,CAAA;AAClD,CAAC"}
1
+ {"version":3,"file":"network.js","sourceRoot":"","sources":["../../../../src/commands/dev/utils/network.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Applies patches to Minis dependencies (only if they have not been applied yet)
3
+ */
4
+ export declare function maybeApplyPatches(): void;
@@ -0,0 +1,72 @@
1
+ import { createRequire } from 'node:module';
2
+ import path from 'node:path';
3
+ import { outputDebug } from '@shopify/cli-kit/node/output';
4
+ import fs from 'fs-extra';
5
+ const { applyPatch: patchPackageApplyPatch } = createRequire(import.meta.url)('patch-package/dist/applyPatches');
6
+ const { getPackageDetailsFromPatchFilename } = createRequire(import.meta.url)('patch-package/dist/PackageDetails');
7
+ // We use an empty file to know if a patch was already applied or not. i.e.
8
+ // if node_modules/react-native/.patched-by-minis-cli exists, we assume that a patch was already applied
9
+ // if node_modules/react-native/.patched-by-minis-cli does not exist, we assume that a patch is not applied yet
10
+ const PATCHED_MARK_FILE = '.patched-by-minis-cli';
11
+ const nodeModulesPath = path.join(process.cwd(), 'node_modules');
12
+ const patchesDirectoryPath = path.join(nodeModulesPath, '@shopify', 'shop-minis-runtime', 'patches');
13
+ function getPatchFiles() {
14
+ try {
15
+ return fs.readdirSync(patchesDirectoryPath);
16
+ }
17
+ catch (err) {
18
+ // older versions of shop-minis-runtime (< 0.0.5) do not have the patches folder.
19
+ outputDebug('Patches folder does not exist. Please update @shopify/shop-minis-runtime to ^0.0.5');
20
+ return [];
21
+ }
22
+ }
23
+ /**
24
+ * Applies patches to Minis dependencies (only if they have not been applied yet)
25
+ */
26
+ export function maybeApplyPatches() {
27
+ outputDebug('Applying dependency patches...');
28
+ const patches = getPatchFiles();
29
+ for (const patch of patches) {
30
+ if (isPatchApplied(patch)) {
31
+ outputDebug(`${patch} is already applied`);
32
+ continue;
33
+ }
34
+ outputDebug(`Applying patch ${patch}`);
35
+ const applied = applyPatch(patch);
36
+ if (applied) {
37
+ markPatchAsApplied(patch);
38
+ outputDebug(`Patch ${patch} applied`);
39
+ }
40
+ else {
41
+ outputDebug(`Failed to apply patch ${patch}`);
42
+ }
43
+ }
44
+ }
45
+ function isPatchApplied(patch) {
46
+ const dependencyName = getDependencyNameForPatch(patch);
47
+ return fs.existsSync(path.join(nodeModulesPath, dependencyName, PATCHED_MARK_FILE));
48
+ }
49
+ function applyPatch(patch) {
50
+ const patchFilePath = path.join(patchesDirectoryPath, patch);
51
+ return patchPackageApplyPatch({
52
+ patchFilePath,
53
+ reverse: false,
54
+ patchDir: patchesDirectoryPath,
55
+ packageDetails: getPackageDetailsFromPatchFilename(patch),
56
+ });
57
+ }
58
+ function markPatchAsApplied(patch) {
59
+ const dependencyName = getDependencyNameForPatch(patch);
60
+ fs.createFileSync(path.join(nodeModulesPath, dependencyName, PATCHED_MARK_FILE));
61
+ }
62
+ /**
63
+ * Given a patch file name, returns the name of the actual dependency that's being patched.
64
+ *
65
+ * @example
66
+ * getDependencyNameForPatch('react-native+0.68.5.patch')
67
+ * // returns 'react-native'
68
+ */
69
+ function getDependencyNameForPatch(patch) {
70
+ return patch.split('+')[0];
71
+ }
72
+ //# sourceMappingURL=patch-package.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"patch-package.js","sourceRoot":"","sources":["../../../../src/commands/dev/utils/patch-package.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAC,MAAM,aAAa,CAAA;AACzC,OAAO,IAAI,MAAM,WAAW,CAAA;AAE5B,OAAO,EAAC,WAAW,EAAC,MAAM,8BAA8B,CAAA;AACxD,OAAO,EAAE,MAAM,UAAU,CAAA;AAEzB,MAAM,EAAC,UAAU,EAAE,sBAAsB,EAAC,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CACzE,iCAAiC,CAClC,CAAA;AACD,MAAM,EAAC,kCAAkC,EAAC,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CACzE,mCAAmC,CACpC,CAAA;AAED,2EAA2E;AAC3E,wGAAwG;AACxG,+GAA+G;AAC/G,MAAM,iBAAiB,GAAG,uBAAuB,CAAA;AAEjD,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,CAAA;AAChE,MAAM,oBAAoB,GAAG,IAAI,CAAC,IAAI,CACpC,eAAe,EACf,UAAU,EACV,oBAAoB,EACpB,SAAS,CACV,CAAA;AAED,SAAS,aAAa;IACpB,IAAI;QACF,OAAO,EAAE,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAA;KAC5C;IAAC,OAAO,GAAG,EAAE;QACZ,iFAAiF;QACjF,WAAW,CACT,oFAAoF,CACrF,CAAA;QACD,OAAO,EAAE,CAAA;KACV;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB;IAC/B,WAAW,CAAC,gCAAgC,CAAC,CAAA;IAE7C,MAAM,OAAO,GAAG,aAAa,EAAE,CAAA;IAC/B,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE;QAC3B,IAAI,cAAc,CAAC,KAAK,CAAC,EAAE;YACzB,WAAW,CAAC,GAAG,KAAK,qBAAqB,CAAC,CAAA;YAC1C,SAAQ;SACT;QAED,WAAW,CAAC,kBAAkB,KAAK,EAAE,CAAC,CAAA;QACtC,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,CAAA;QAEjC,IAAI,OAAO,EAAE;YACX,kBAAkB,CAAC,KAAK,CAAC,CAAA;YACzB,WAAW,CAAC,SAAS,KAAK,UAAU,CAAC,CAAA;SACtC;aAAM;YACL,WAAW,CAAC,yBAAyB,KAAK,EAAE,CAAC,CAAA;SAC9C;KACF;AACH,CAAC;AAED,SAAS,cAAc,CAAC,KAAa;IACnC,MAAM,cAAc,GAAG,yBAAyB,CAAC,KAAK,CAAC,CAAA;IACvD,OAAO,EAAE,CAAC,UAAU,CAClB,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,cAAc,EAAE,iBAAiB,CAAC,CAC9D,CAAA;AACH,CAAC;AAED,SAAS,UAAU,CAAC,KAAa;IAC/B,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAA;IAC5D,OAAO,sBAAsB,CAAC;QAC5B,aAAa;QACb,OAAO,EAAE,KAAK;QACd,QAAQ,EAAE,oBAAoB;QAC9B,cAAc,EAAE,kCAAkC,CAAC,KAAK,CAAC;KAC1D,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAa;IACvC,MAAM,cAAc,GAAG,yBAAyB,CAAC,KAAK,CAAC,CAAA;IACvD,EAAE,CAAC,cAAc,CACf,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,cAAc,EAAE,iBAAiB,CAAC,CAC9D,CAAA;AACH,CAAC;AAED;;;;;;GAMG;AACH,SAAS,yBAAyB,CAAC,KAAa;IAC9C,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;AAC5B,CAAC"}
@@ -0,0 +1,18 @@
1
+ export declare enum Platform {
2
+ IOS = "ios",
3
+ Android = "android"
4
+ }
5
+ /**
6
+ * Returns the platform for a given file extension.
7
+ */
8
+ export declare function getPlatformForBinaryFileExtension(extension: string): Platform;
9
+ /**
10
+ * Returns the platform config for a given platform.
11
+ */
12
+ export declare function getPlatformConfig(platform: Platform | PlatformConfig): Readonly<PlatformConfig>;
13
+ interface PlatformConfig {
14
+ platform: Platform;
15
+ name: string;
16
+ extension: string;
17
+ }
18
+ export {};
@@ -0,0 +1,41 @@
1
+ export var Platform;
2
+ (function (Platform) {
3
+ Platform["IOS"] = "ios";
4
+ Platform["Android"] = "android";
5
+ })(Platform || (Platform = {}));
6
+ /**
7
+ * Returns the platform for a given file extension.
8
+ */
9
+ export function getPlatformForBinaryFileExtension(extension) {
10
+ const platform = Object.values(Platform).find(aPlatform => platformConfigs[aPlatform].extension === extension);
11
+ if (platform == null) {
12
+ throw new Error(`Invalid extension: ${extension}`);
13
+ }
14
+ return platform;
15
+ }
16
+ /**
17
+ * Returns the platform config for a given platform.
18
+ */
19
+ export function getPlatformConfig(platform) {
20
+ if (typeof platform === 'object') {
21
+ return platform;
22
+ }
23
+ const config = platformConfigs[platform];
24
+ if (config == null) {
25
+ throw new Error(`Invalid platform: ${platform}`);
26
+ }
27
+ return Object.freeze(config);
28
+ }
29
+ const platformConfigs = {
30
+ ios: {
31
+ platform: Platform.IOS,
32
+ name: 'iOS',
33
+ extension: 'app.zip',
34
+ },
35
+ android: {
36
+ platform: Platform.Android,
37
+ name: 'Android',
38
+ extension: 'apk',
39
+ },
40
+ };
41
+ //# sourceMappingURL=platform.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform.js","sourceRoot":"","sources":["../../../../src/commands/dev/utils/platform.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,QAGX;AAHD,WAAY,QAAQ;IAClB,uBAAW,CAAA;IACX,+BAAmB,CAAA;AACrB,CAAC,EAHW,QAAQ,KAAR,QAAQ,QAGnB;AAED;;GAEG;AACH,MAAM,UAAU,iCAAiC,CAAC,SAAiB;IACjE,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAC3C,SAAS,CAAC,EAAE,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,SAAS,KAAK,SAAS,CAChE,CAAA;IAED,IAAI,QAAQ,IAAI,IAAI,EAAE;QACpB,MAAM,IAAI,KAAK,CAAC,sBAAsB,SAAS,EAAE,CAAC,CAAA;KACnD;IAED,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,QAAmC;IACnE,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;QAChC,OAAO,QAAQ,CAAA;KAChB;IAED,MAAM,MAAM,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAA;IAExC,IAAI,MAAM,IAAI,IAAI,EAAE;QAClB,MAAM,IAAI,KAAK,CAAC,qBAAqB,QAAQ,EAAE,CAAC,CAAA;KACjD;IAED,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;AAC9B,CAAC;AAQD,MAAM,eAAe,GAAqC;IACxD,GAAG,EAAE;QACH,QAAQ,EAAE,QAAQ,CAAC,GAAG;QACtB,IAAI,EAAE,KAAK;QACX,SAAS,EAAE,SAAS;KACrB;IACD,OAAO,EAAE;QACP,QAAQ,EAAE,QAAQ,CAAC,OAAO;QAC1B,IAAI,EAAE,SAAS;QACf,SAAS,EAAE,KAAK;KACjB;CACF,CAAA"}
@@ -12,8 +12,11 @@ interface EnhancedSimCtlListDevice extends SimCtlListDevice {
12
12
  osVersion: string;
13
13
  }
14
14
  export declare function promptForSimulator(): Promise<EnhancedSimCtlListDevice | null | undefined>;
15
- export declare function getInstalledShopVersion(udid: string): Promise<string | null>;
15
+ export declare function getInstalledShopVersion(udid: string): Promise<{
16
+ version: string;
17
+ build: string;
18
+ } | null>;
16
19
  export declare function bootSimulator(udid: string): Promise<void>;
17
- export declare function installShopInSimulator(udid: string, version: string): Promise<void>;
20
+ export declare function installShopInSimulator(udid: string, fileName: string): Promise<void>;
18
21
  export declare function deeplinkToSimulator(udid: string, deeplink: string): Promise<void>;
19
22
  export {};
@@ -1,9 +1,10 @@
1
- import _ from 'lodash';
1
+ import { rm, stat } from 'node:fs/promises';
2
+ import { join } from 'node:path';
2
3
  import chalk from 'chalk';
4
+ import _ from 'lodash';
3
5
  import prompts from 'prompts';
4
- import { execAsync } from '../../utils/exec-async-child-process.js';
5
6
  import { PATHS } from '../../config.js';
6
- import { versionToBinaryFileName } from './binaries.js';
7
+ import { execAsync } from '../../utils/exec-async-child-process.js';
7
8
  async function getSelectableSimulators() {
8
9
  const { stdout } = await execAsync('xcrun simctl list devices --json');
9
10
  const simctlOutput = JSON.parse(stdout.join(''));
@@ -46,9 +47,15 @@ export async function promptForSimulator() {
46
47
  }
47
48
  export async function getInstalledShopVersion(udid) {
48
49
  try {
49
- const { stdout } = await execAsync(`defaults read $(xcrun simctl get_app_container ${udid} com.shopifyinternal.arrive)/Info CFBundleShortVersionString`);
50
- const installedVersion = stdout[0]; // 2.86.0-snapshot+1674205229
51
- return installedVersion.split('-')[0];
50
+ const { stdout: CFBundleShortVersionString } = await execAsync(`defaults read $(xcrun simctl get_app_container ${udid} com.shopifyinternal.arrive)/Info CFBundleShortVersionString`);
51
+ const { stdout: CFBundleVersion } = await execAsync(`defaults read $(xcrun simctl get_app_container ${udid} com.shopifyinternal.arrive)/Info CFBundleVersion`);
52
+ const installedVersion = CFBundleShortVersionString[0]; // 2.86.0-snapshot+1674205229
53
+ const build = CFBundleVersion[0]; // 1674205229
54
+ const version = installedVersion.split('-')[0];
55
+ return {
56
+ version,
57
+ build,
58
+ };
52
59
  }
53
60
  catch {
54
61
  return null;
@@ -65,15 +72,22 @@ export async function bootSimulator(udid) {
65
72
  }
66
73
  await execAsync(`open -a Simulator.app --args -CurrentDeviceUDID ${udid}`);
67
74
  }
68
- export async function installShopInSimulator(udid, version) {
69
- const fileName = versionToBinaryFileName(version, 'ios');
70
- await execAsync(`unzip -o ${PATHS.CACHE_DIR}/${fileName} -d ${PATHS.CACHE_DIR}`);
71
- await execAsync(`rm -rf ${PATHS.CACHE_DIR}/__MACOSX`); // weird directory that gets created after unzipping on macos
72
- const shopAppPath = `${PATHS.CACHE_DIR}/Shop.app`;
73
- await execAsync(`xcrun simctl install ${udid} ${shopAppPath}`);
75
+ export async function installShopInSimulator(udid, fileName) {
76
+ const inputPath = join(PATHS.CACHE_DIR, fileName);
77
+ const outputPath = join(PATHS.CACHE_DIR, 'Shop.app');
78
+ // remove any existing Shop.app
79
+ try {
80
+ await stat(outputPath);
81
+ await rm(outputPath, { recursive: true });
82
+ }
83
+ catch {
84
+ // file doesn't exist, so we can move on
85
+ }
86
+ await execAsync(`unzip -o '${inputPath}' -d '${outputPath}' -x '__MACOSX/*'`);
87
+ await execAsync(`xcrun simctl install ${udid} ${outputPath}`);
74
88
  }
75
89
  export async function deeplinkToSimulator(udid, deeplink) {
76
90
  // TODO: deeplink doesn't seem to be working in iphone SE
77
- await execAsync(`xcrun simctl openurl ${udid} ${deeplink}`);
91
+ await execAsync(`xcrun simctl openurl ${udid} "${deeplink}"`);
78
92
  }
79
93
  //# sourceMappingURL=simulator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"simulator.js","sourceRoot":"","sources":["../../../../src/commands/dev/utils/simulator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"simulator.js","sourceRoot":"","sources":["../../../../src/commands/dev/utils/simulator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import type { InteractiveTerminal } from './interactive-terminal.js';
2
+ import { Platform } from './platform.js';
3
+ import { BuildType, VersionAndBuild } from './types.js';
4
+ interface StartAppParameters {
5
+ deviceId: string;
6
+ platform: Platform;
7
+ deeplink: string;
8
+ type: BuildType;
9
+ }
10
+ export interface StartAppPlatformHooks {
11
+ getInstalledShopVersion: (deviceId: string) => Promise<VersionAndBuild | null>;
12
+ installShop: (deviceId: string, version: string) => Promise<void>;
13
+ openDeeplink: (deviceId: string, deeplink: string) => Promise<void>;
14
+ }
15
+ export interface StartAppLoadingLoggers {
16
+ onLoadingStart?: typeof InteractiveTerminal.prototype.loadingStart;
17
+ onLoadingEnd?: typeof InteractiveTerminal.prototype.loadingEnd;
18
+ onLoadingUpdate?: (message: string) => void;
19
+ }
20
+ export declare const startApp: (parameters: StartAppParameters, loadingLoggers?: StartAppLoadingLoggers) => Promise<void>;
21
+ export declare const startAppWithOptions: ({ deviceId, platform, deeplink, type }: StartAppParameters, { getInstalledShopVersion, installShop, openDeeplink }: StartAppPlatformHooks, { onLoadingStart, onLoadingEnd, onLoadingUpdate }?: StartAppLoadingLoggers) => Promise<void>;
22
+ export declare const promptBinaryUpgrade: () => Promise<boolean>;
23
+ export {};
@@ -0,0 +1,85 @@
1
+ import prompts from 'prompts';
2
+ import { connectDevelopmentServer, deeplinkToEmulator, getInstalledShopVersion as getInstalledShopVersionAndroid, installShopInEmulator, } from './android.js';
3
+ import { downloadBinary, getLatestRemoteVersion } from './network.js';
4
+ import { Platform, getPlatformConfig } from './platform.js';
5
+ import { deeplinkToSimulator, getInstalledShopVersion as getInstalledShopVersionIOS, installShopInSimulator, } from './simulator.js';
6
+ import { metadataToBinaryFileName } from './version.js';
7
+ const StartAppHandlersIOS = {
8
+ getInstalledShopVersion: getInstalledShopVersionIOS,
9
+ installShop: installShopInSimulator,
10
+ openDeeplink: deeplinkToSimulator,
11
+ };
12
+ const StartAppHandlersAndroid = {
13
+ getInstalledShopVersion: getInstalledShopVersionAndroid,
14
+ installShop: installShopInEmulator,
15
+ openDeeplink: async (aDeviceId, deeplink) => {
16
+ await connectDevelopmentServer(aDeviceId);
17
+ await deeplinkToEmulator(aDeviceId, deeplink);
18
+ },
19
+ };
20
+ const handlersForPlatform = (platform) => {
21
+ switch (platform) {
22
+ case Platform.IOS:
23
+ return StartAppHandlersIOS;
24
+ case Platform.Android:
25
+ return StartAppHandlersAndroid;
26
+ }
27
+ };
28
+ export const startApp = async (parameters, loadingLoggers = {}) => {
29
+ const handlers = handlersForPlatform(parameters.platform);
30
+ if (handlers == null) {
31
+ throw new Error(`Unsupported platform: ${parameters.platform}`);
32
+ }
33
+ return startAppWithOptions(parameters, handlers, loadingLoggers);
34
+ };
35
+ export const startAppWithOptions = async ({ deviceId, platform, deeplink, type }, { getInstalledShopVersion, installShop, openDeeplink }, { onLoadingStart, onLoadingEnd, onLoadingUpdate } = {}) => {
36
+ const installedShopVersion = await getInstalledShopVersion(deviceId);
37
+ const latestVersion = await getLatestRemoteVersion(platform, type);
38
+ const platformConfig = getPlatformConfig(platform);
39
+ if (latestVersion == null) {
40
+ onLoadingEnd?.('fail', `No binaries for ${platformConfig.name} can be found on the server!`);
41
+ return;
42
+ }
43
+ const needsUpdate = installedShopVersion == null;
44
+ let wantsUpdate = false;
45
+ if (installedShopVersion) {
46
+ onLoadingEnd?.();
47
+ // the installed version does not tell us which build type it is, but we can fairly
48
+ // safely assume that version + build number is unique across all build types, so we
49
+ // we will just compare the version + build number
50
+ const isLatestVersionInstalled = installedShopVersion.version === latestVersion.version &&
51
+ installedShopVersion.build === latestVersion.build;
52
+ // we don't have the latest binary installed, so prompt to update
53
+ if (!isLatestVersionInstalled) {
54
+ wantsUpdate = await promptBinaryUpgrade();
55
+ }
56
+ }
57
+ if (needsUpdate || wantsUpdate) {
58
+ onLoadingStart?.('Downloading Shop (0%)');
59
+ const downloadedVersion = await downloadBinary(latestVersion, {
60
+ onProgress: progress => {
61
+ onLoadingUpdate?.(`Downloading Shop (${progress}%)`);
62
+ },
63
+ });
64
+ onLoadingStart?.(
65
+ // show a longer message for new installs with instructions to skip onboarding
66
+ installedShopVersion == null
67
+ ? 'Installing Shop\n ↪ You can skip onboarding, or log in with your existing Shop account (optional).'
68
+ : 'Installing Shop');
69
+ await installShop(deviceId, metadataToBinaryFileName(downloadedVersion));
70
+ }
71
+ onLoadingStart?.('Opening Shop');
72
+ await openDeeplink(deviceId, deeplink);
73
+ onLoadingEnd?.();
74
+ };
75
+ export const promptBinaryUpgrade = async () => {
76
+ // prompt to download the latest version
77
+ const { wantsUpdate } = await prompts({
78
+ type: 'confirm',
79
+ initial: true,
80
+ name: 'wantsUpdate',
81
+ message: "There's a new version of Shop available. Do you want to upgrade?",
82
+ });
83
+ return Boolean(wantsUpdate);
84
+ };
85
+ //# sourceMappingURL=start-app.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"start-app.js","sourceRoot":"","sources":["../../../../src/commands/dev/utils/start-app.ts"],"names":[],"mappings":"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"}
@@ -1 +1,24 @@
1
- export type Platform = 'ios' | 'android';
1
+ import { Platform } from './platform.js';
2
+ export interface VersionAndBuild {
3
+ version: string;
4
+ build: string;
5
+ }
6
+ export declare enum BuildType {
7
+ Release = "release",
8
+ Nightly = "nightly",
9
+ Snapshot = "snapshot"
10
+ }
11
+ export interface BinaryMetadata {
12
+ version: string;
13
+ build: string;
14
+ type: BuildType;
15
+ platform: Platform;
16
+ }
17
+ export interface GetFilesApiResponse {
18
+ kind: 'storage#objects';
19
+ prefixes?: string[];
20
+ items?: {
21
+ kind: 'storage#object';
22
+ name: string;
23
+ }[];
24
+ }
@@ -1,2 +1,7 @@
1
- export {};
1
+ export var BuildType;
2
+ (function (BuildType) {
3
+ BuildType["Release"] = "release";
4
+ BuildType["Nightly"] = "nightly";
5
+ BuildType["Snapshot"] = "snapshot";
6
+ })(BuildType || (BuildType = {}));
2
7
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/commands/dev/utils/types.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/commands/dev/utils/types.ts"],"names":[],"mappings":"AAOA,MAAM,CAAN,IAAY,SAIX;AAJD,WAAY,SAAS;IACnB,gCAAmB,CAAA;IACnB,gCAAmB,CAAA;IACnB,kCAAqB,CAAA;AACvB,CAAC,EAJW,SAAS,KAAT,SAAS,QAIpB"}
@@ -0,0 +1,64 @@
1
+ import { Platform } from './platform.js';
2
+ import { BinaryMetadata, BuildType } from './types.js';
3
+ /**
4
+ * @example
5
+ * filenames [
6
+ * "2.76.0+3.release.apk",
7
+ * "2.76.0+3.release.zip",
8
+ * "2.77.0+5.release.apk",
9
+ * "2.77.0+3.release.zip",
10
+ * "2.77.0+10.release.apk",
11
+ * "2.77.0+10.release.zip",
12
+ * ]
13
+ * returns { version: "2.77.0", build: "10", type: "release", platform: "ios" }
14
+ */
15
+ export declare function getLatestVersionFromFilesList(filenames: string[], platform: Platform, type: BuildType): BinaryMetadata | null;
16
+ /**
17
+ * @example
18
+ * platform android
19
+ * version 2.76.0
20
+ * build 24
21
+ * type release
22
+ * returns "2.76.0+24.release.apk"
23
+ *
24
+ * platform ios
25
+ * version 2.55.0
26
+ * build 4
27
+ * type nightly
28
+ * returns "2.55.0+4.nightly.zip"
29
+ */
30
+ export declare function metadataToBinaryFileName(metadata: BinaryMetadata): string;
31
+ /**
32
+ * @example
33
+ * binaryFileName "2.76.0+123.snapshot.apk"
34
+ * returns true
35
+ *
36
+ * binaryFileName "word.exe"
37
+ * returns false
38
+ */
39
+ export declare function isValidBinaryFileName(binaryFileName: string): boolean;
40
+ /**
41
+ * @example
42
+ * binaryFileName "2.76.0+123.snapshot.apk"
43
+ * returns { version: "2.16.0", build: "123", type: "snapshot", platform: "android" }
44
+ *
45
+ * binaryFileName "2.16.0+3.zip"
46
+ * returns { version: "2.16.0", build "3", platform: "ios" }
47
+ */
48
+ export declare function binaryFileNameToMetadata(binaryFileName: string): Readonly<{
49
+ version: string;
50
+ build: string;
51
+ type: BuildType;
52
+ platform: Platform;
53
+ }>;
54
+ /**
55
+ * @example
56
+ *
57
+ * version "2.76.0"
58
+ * build "3"
59
+ * returns "2.76.0+3"
60
+ */
61
+ export declare function convertToSemver({ version, build, }: {
62
+ version: string;
63
+ build: string;
64
+ }): string;
@@ -0,0 +1,101 @@
1
+ import _ from 'lodash';
2
+ import { valid as isValidSemver, compareBuild as semverCompare } from 'semver';
3
+ import escapeStringRegexp from 'escape-string-regexp';
4
+ import { getBuildTypeForBinaryBuildType } from './build-type.js';
5
+ import { Platform, getPlatformConfig, getPlatformForBinaryFileExtension, } from './platform.js';
6
+ import { BuildType } from './types.js';
7
+ /**
8
+ * @example
9
+ * filenames [
10
+ * "2.76.0+3.release.apk",
11
+ * "2.76.0+3.release.zip",
12
+ * "2.77.0+5.release.apk",
13
+ * "2.77.0+3.release.zip",
14
+ * "2.77.0+10.release.apk",
15
+ * "2.77.0+10.release.zip",
16
+ * ]
17
+ * returns { version: "2.77.0", build: "10", type: "release", platform: "ios" }
18
+ */
19
+ export function getLatestVersionFromFilesList(filenames, platform, type) {
20
+ const localVersions = _.uniq(filenames
21
+ .filter(isValidBinaryFileName)
22
+ .map(binaryFileNameToMetadata)
23
+ .filter(metadata => isValidSemver(convertToSemver(metadata)))
24
+ .filter(metadata => metadata.platform === platform)
25
+ .filter(metadata => metadata.type === type)).sort((lhs, rhs) => semverCompare(convertToSemver(lhs), convertToSemver(rhs)));
26
+ return localVersions.slice(-1)[0] ?? null;
27
+ }
28
+ /**
29
+ * @example
30
+ * platform android
31
+ * version 2.76.0
32
+ * build 24
33
+ * type release
34
+ * returns "2.76.0+24.release.apk"
35
+ *
36
+ * platform ios
37
+ * version 2.55.0
38
+ * build 4
39
+ * type nightly
40
+ * returns "2.55.0+4.nightly.zip"
41
+ */
42
+ export function metadataToBinaryFileName(metadata) {
43
+ return `${metadata.version}+${metadata.build}.${metadata.type}.${getPlatformConfig(metadata.platform).extension}`;
44
+ }
45
+ /**
46
+ * @example
47
+ * binaryFileName "2.76.0+123.snapshot.apk"
48
+ * returns true
49
+ *
50
+ * binaryFileName "word.exe"
51
+ * returns false
52
+ */
53
+ export function isValidBinaryFileName(binaryFileName) {
54
+ try {
55
+ binaryFileNameToMetadata(binaryFileName);
56
+ return true;
57
+ }
58
+ catch {
59
+ return false;
60
+ }
61
+ }
62
+ /**
63
+ * @example
64
+ * binaryFileName "2.76.0+123.snapshot.apk"
65
+ * returns { version: "2.16.0", build: "123", type: "snapshot", platform: "android" }
66
+ *
67
+ * binaryFileName "2.16.0+3.zip"
68
+ * returns { version: "2.16.0", build "3", platform: "ios" }
69
+ */
70
+ export function binaryFileNameToMetadata(binaryFileName) {
71
+ const allBuildTypes = Object.values(BuildType)
72
+ .map(escapeStringRegexp)
73
+ .join('|');
74
+ const allExtensions = Object.values(Platform)
75
+ .map(platform => getPlatformConfig(platform).extension)
76
+ .map(escapeStringRegexp)
77
+ .join('|');
78
+ const regexPattern = `(?<version>\\d+\\.\\d+\\.\\d+)(\\+(?<build>\\d+))\\.(?<type>${allBuildTypes})\\.(?<extension>${allExtensions})`;
79
+ const matches = binaryFileName.match(regexPattern);
80
+ if (!matches) {
81
+ throw new Error(`Invalid file name: ${binaryFileName}`);
82
+ }
83
+ const { version, build, type, extension } = matches.groups;
84
+ return Object.freeze({
85
+ version,
86
+ build,
87
+ type: getBuildTypeForBinaryBuildType(type),
88
+ platform: getPlatformForBinaryFileExtension(extension),
89
+ });
90
+ }
91
+ /**
92
+ * @example
93
+ *
94
+ * version "2.76.0"
95
+ * build "3"
96
+ * returns "2.76.0+3"
97
+ */
98
+ export function convertToSemver({ version, build, }) {
99
+ return `${version}+${build}`;
100
+ }
101
+ //# sourceMappingURL=version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../../../src/commands/dev/utils/version.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { AbortError } from '@shopify/cli-kit/node/error';
2
2
  import type { UnwrapArray } from '../types/helpers.js';
3
3
  import { CreateSubmissionMutation, CreateUploadMutation, SubmissionsQuery } from '../types/autogenerated/shop-minis-admin-api/graphql.js';
4
- import { CreateUploadParameters } from '../utils/graphql.js';
4
+ import { CreateUploadParameters } from '../data/create-upload.js';
5
5
  interface UserErrorShape {
6
6
  code: string;
7
7
  message: string;
@@ -1,7 +1,7 @@
1
1
  import { AbortError } from '@shopify/cli-kit/node/error';
2
2
  import { formatPackageManagerCommand, outputDebug, } from '@shopify/cli-kit/node/output';
3
3
  import { getPackageManager } from '../config.js';
4
- import { getPendingSubmission } from '../utils/graphql.js';
4
+ import { getPendingSubmission } from '../data/get-submissions.js';
5
5
  const wrapErrorDefaultOptions = {
6
6
  separator: ': ',
7
7
  };
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/commands/submit/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,6BAA6B,CAAA;AACtD,OAAO,EACL,2BAA2B,EAC3B,WAAW,GACZ,MAAM,8BAA8B,CAAA;AAErC,OAAO,EAAC,iBAAiB,EAAC,MAAM,cAAc,CAAA;AAO9C,OAAO,EAAyB,oBAAoB,EAAC,MAAM,qBAAqB,CAAA;AAYhF,MAAM,uBAAuB,GAAqB;IAChD,SAAS,EAAE,IAAI;CAChB,CAAA;AAED,gEAAgE;AAChE,MAAM,CAAC,MAAM,SAAS,GAAG,CACvB,KAAU,EACV,OAAe,EACf,cAAgC,EAAE,EAClC,EAAE;IACF,MAAM,OAAO,GAAG;QACd,GAAG,uBAAuB;QAC1B,GAAG,WAAW;KACf,CAAA;IAED,MAAM,GAAG,GAAG,IAAI,KAAK,CACnB,GAAG,OAAO,GAAG,OAAO,CAAC,SAAS,GAAG,KAAK,EAAE,OAAO,IAAI,eAAe,EAAE,CACrE,CAAA;IAED,IAAI,KAAK,IAAI,KAAK,EAAE,KAAK,EAAE;QACzB,GAAG,CAAC,KAAK,GAAG,KAAK,EAAE,KAAK,CAAA;KACzB;IAED,OAAO,GAAG,CAAA;AACZ,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,EACtC,IAAI,EACJ,OAAO,EACP,KAAK,GACU,EAAE,EAAE;IACnB,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,GAAG,OAAO,MAAM,IAAI,GAAG,CAAA;IAEhE,OAAO,GAAG,OAAO,MAAM,IAAI,eAAe,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAA;AAC/D,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,wBAAwB,GAAG,CACtC,MAA8B,EAC9B,UAAyE,EACzE,EAAE;IACF,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAM;IAElD,MAAM,aAAa,GAAG,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;QAC/C,QAAQ,SAAS,CAAC,IAAI,EAAE;YACtB,KAAK,kBAAkB;gBACrB,OAAO,0CAA0C,MAAM,CAAC,QAAQ,EAAE,CAAA;YACpE,KAAK,mBAAmB;gBACtB,OAAO,2CAA2C,MAAM,CAAC,QAAQ,EAAE,CAAA;YACrE,KAAK,mBAAmB;gBACtB,OAAO,2CAA2C,MAAM,CAAC,QAAQ,EAAE,CAAA;YACrE;gBACE,OAAO,uBAAuB,CAAC,SAAS,CAAC,CAAA;SAC5C;IACH,CAAC,CAAC,CAAA;IAEF,MAAM,IAAI,UAAU,CAClB,0CAA0C,EAC1C,aAAa,CACd,CAAA;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,sCAAsC,GAAG,KAAK,EACzD,iBAEQ,EACR,EAAE;IACF,WAAW,CACT,qCACE,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,EAC1D,EAAE,CACH,CAAA;IAED,MAAM,YAAY,GAAG,iBAAiB;QACpC,CAAC,CAAC,uCAAuC,iBAAiB,CAAC,SAAS,sBAAsB,iBAAiB,CAAC,WAAW,OAAO;YAC5H,aAAa,iBAAiB,CAAC,SAAS,KAAK,iBAAiB,CAAC,MAAM,EAAE;QACzE,CAAC,CAAC,SAAS,CAAA;IAEb,OAAO,IAAI,UAAU,CAAC,mCAAmC,EAAE,YAAY,EAAE;QACvE;YACE,iCAAiC;YACjC;gBACE,OAAO,EAAE,2BAA2B,CAClC,MAAM,iBAAiB,EAAE,EACzB,mBAAmB,CACpB;aACF;YACD,WAAW;SACZ;QACD;YACE,0FAA0F;SAC3F;KACF,CAAC,CAAA;AACJ,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,4BAA4B,GAAG,KAAK,EAC/C,UAAuE,EACvE,EAAE;IACF,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAM;IAElD,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE;QAClC,IAAI,SAAS,CAAC,IAAI,KAAK,4BAA4B,EAAE;YACnD,MAAM,iBAAiB,GAAG,MAAM,oBAAoB,EAAE,CAAA;YAEtD,MAAM,MAAM,sCAAsC,CAAC,iBAAiB,CAAC,CAAA;SACtE;KACF;IAED,MAAM,aAAa,GAAG,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;QAC/C,QAAQ,SAAS,CAAC,IAAI,EAAE;YACtB,KAAK,gBAAgB;gBACnB,OAAO,0CAA0C,CAAA;YACnD,KAAK,kBAAkB;gBACrB,OAAO,gCAAgC,CAAA;YACzC;gBACE,OAAO,uBAAuB,CAAC,SAAS,CAAC,CAAA;SAC5C;IACH,CAAC,CAAC,CAAA;IAEF,MAAM,IAAI,UAAU,CAClB,8CAA8C,EAC9C,aAAa,CACd,CAAA;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,KAAU,EAAE,EAAE;IACnD,MAAM,SAAS,CAAC,KAAK,EAAE,0CAA0C,EAAE;QACjE,SAAS,EAAE,EAAE;KACd,CAAC,CAAA;AACJ,CAAC,CAAA"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/commands/submit/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,6BAA6B,CAAA;AACtD,OAAO,EACL,2BAA2B,EAC3B,WAAW,GACZ,MAAM,8BAA8B,CAAA;AAErC,OAAO,EAAC,iBAAiB,EAAC,MAAM,cAAc,CAAA;AAQ9C,OAAO,EAAC,oBAAoB,EAAC,MAAM,4BAA4B,CAAA;AAY/D,MAAM,uBAAuB,GAAqB;IAChD,SAAS,EAAE,IAAI;CAChB,CAAA;AAED,gEAAgE;AAChE,MAAM,CAAC,MAAM,SAAS,GAAG,CACvB,KAAU,EACV,OAAe,EACf,cAAgC,EAAE,EAClC,EAAE;IACF,MAAM,OAAO,GAAG;QACd,GAAG,uBAAuB;QAC1B,GAAG,WAAW;KACf,CAAA;IAED,MAAM,GAAG,GAAG,IAAI,KAAK,CACnB,GAAG,OAAO,GAAG,OAAO,CAAC,SAAS,GAAG,KAAK,EAAE,OAAO,IAAI,eAAe,EAAE,CACrE,CAAA;IAED,IAAI,KAAK,IAAI,KAAK,EAAE,KAAK,EAAE;QACzB,GAAG,CAAC,KAAK,GAAG,KAAK,EAAE,KAAK,CAAA;KACzB;IAED,OAAO,GAAG,CAAA;AACZ,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,EACtC,IAAI,EACJ,OAAO,EACP,KAAK,GACU,EAAE,EAAE;IACnB,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,GAAG,OAAO,MAAM,IAAI,GAAG,CAAA;IAEhE,OAAO,GAAG,OAAO,MAAM,IAAI,eAAe,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAA;AAC/D,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,wBAAwB,GAAG,CACtC,MAA8B,EAC9B,UAAyE,EACzE,EAAE;IACF,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAM;IAElD,MAAM,aAAa,GAAG,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;QAC/C,QAAQ,SAAS,CAAC,IAAI,EAAE;YACtB,KAAK,kBAAkB;gBACrB,OAAO,0CAA0C,MAAM,CAAC,QAAQ,EAAE,CAAA;YACpE,KAAK,mBAAmB;gBACtB,OAAO,2CAA2C,MAAM,CAAC,QAAQ,EAAE,CAAA;YACrE,KAAK,mBAAmB;gBACtB,OAAO,2CAA2C,MAAM,CAAC,QAAQ,EAAE,CAAA;YACrE;gBACE,OAAO,uBAAuB,CAAC,SAAS,CAAC,CAAA;SAC5C;IACH,CAAC,CAAC,CAAA;IAEF,MAAM,IAAI,UAAU,CAClB,0CAA0C,EAC1C,aAAa,CACd,CAAA;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,sCAAsC,GAAG,KAAK,EACzD,iBAEQ,EACR,EAAE;IACF,WAAW,CACT,qCACE,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,EAC1D,EAAE,CACH,CAAA;IAED,MAAM,YAAY,GAAG,iBAAiB;QACpC,CAAC,CAAC,uCAAuC,iBAAiB,CAAC,SAAS,sBAAsB,iBAAiB,CAAC,WAAW,OAAO;YAC5H,aAAa,iBAAiB,CAAC,SAAS,KAAK,iBAAiB,CAAC,MAAM,EAAE;QACzE,CAAC,CAAC,SAAS,CAAA;IAEb,OAAO,IAAI,UAAU,CAAC,mCAAmC,EAAE,YAAY,EAAE;QACvE;YACE,iCAAiC;YACjC;gBACE,OAAO,EAAE,2BAA2B,CAClC,MAAM,iBAAiB,EAAE,EACzB,mBAAmB,CACpB;aACF;YACD,WAAW;SACZ;QACD;YACE,0FAA0F;SAC3F;KACF,CAAC,CAAA;AACJ,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,4BAA4B,GAAG,KAAK,EAC/C,UAAuE,EACvE,EAAE;IACF,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAM;IAElD,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE;QAClC,IAAI,SAAS,CAAC,IAAI,KAAK,4BAA4B,EAAE;YACnD,MAAM,iBAAiB,GAAG,MAAM,oBAAoB,EAAE,CAAA;YAEtD,MAAM,MAAM,sCAAsC,CAAC,iBAAiB,CAAC,CAAA;SACtE;KACF;IAED,MAAM,aAAa,GAAG,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;QAC/C,QAAQ,SAAS,CAAC,IAAI,EAAE;YACtB,KAAK,gBAAgB;gBACnB,OAAO,0CAA0C,CAAA;YACnD,KAAK,kBAAkB;gBACrB,OAAO,gCAAgC,CAAA;YACzC;gBACE,OAAO,uBAAuB,CAAC,SAAS,CAAC,CAAA;SAC5C;IACH,CAAC,CAAC,CAAA;IAEF,MAAM,IAAI,UAAU,CAClB,8CAA8C,EAC9C,aAAa,CACd,CAAA;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,KAAU,EAAE,EAAE;IACnD,MAAM,SAAS,CAAC,KAAK,EAAE,0CAA0C,EAAE;QACjE,SAAS,EAAE,EAAE;KACd,CAAC,CAAA;AACJ,CAAC,CAAA"}