@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,62 +1,5 @@
1
- import { Platform } from './types.js';
2
- /**
3
- * Returns the file extension used for each platform.
4
- * android: .apk
5
- * ios: .zip (we intentionally compress .app files before uploading them to the cloud storage)
6
- */
7
- export declare function getBinaryFileExtensionForPlatform(platform: Platform): ".zip" | ".apk";
8
- /**
9
- * @example
10
- * platform android
11
- * version 2.76.0
12
- * returns "2-76-0.apk"
13
- *
14
- * platform ios
15
- * version 2.55.0+4
16
- * returns "2-55-0+4.zip"
17
- */
18
- export declare function versionToBinaryFileName(version: string, platform: Platform): string;
19
- /**
20
- * @example
21
- * binaryFileName "2-76-0.apk"
22
- * returns "2.76.0"
23
- *
24
- * binaryFileName "2-16-0+3.zip"
25
- * returns "2.16.0+3"
26
- */
27
- export declare function binaryFileNameToVersion(binaryFileName: string): string;
28
- /**
29
- * @example
30
- * filenames ["2-76-0+3.apk", "2-76-0+3.zip", "2-77-0.apk", "2-77-0.zip", "2-77-0+1.apk", "2-77-0+1.zip"]
31
- * returns "2.77.0+1"
32
- */
33
- export declare function getLatestVersionFromFilesList(filenames: string[]): string | null;
1
+ import { BinaryMetadata } from './types.js';
34
2
  /**
35
3
  * Returns a boolean indicating if the binary for the given version and platform is already downloaded in the system
36
4
  */
37
- export declare function isVersionAvailableLocally(platform: Platform, version: string): Promise<boolean>;
38
- /**
39
- * Gets the biggest version in the downloads folder for the given platform.
40
- */
41
- export declare function getLatestDownloadedVersion(platform: Platform): Promise<string | null>;
42
- /**
43
- * Compares the current version against the latest available version.
44
- *
45
- * Does nothing if the current version is already the latest.
46
- * Otherwise prompts the user to download the new version.
47
- */
48
- export declare function maybePromptBinaryUpgrade(platform: Platform, { currentVersion, onProgress, onDownloadStart, }?: {
49
- /**
50
- * The version that's currently being used.
51
- * Defaults to the bigger version in the downloads folder.
52
- */
53
- currentVersion?: string;
54
- /**
55
- * Download progress callback
56
- */
57
- onProgress?: (progress: number) => void;
58
- /**
59
- * Callback executed if the user agrees to update, before starting the download.
60
- */
61
- onDownloadStart?: (version: string) => void;
62
- }): Promise<string | null>;
5
+ export declare function isVersionAvailableLocally(version: BinaryMetadata): Promise<boolean>;
@@ -1,94 +1,17 @@
1
1
  import fs from 'fs-extra';
2
- import { compareBuild as semverCompare, valid as isValidSemver } from 'semver';
3
- import _ from 'lodash';
4
- import prompts from 'prompts';
5
2
  import { PATHS } from '../../config.js';
6
- import { downloadBinary, getLatestRemoteVersion } from './network.js';
7
- /**
8
- * Returns the file extension used for each platform.
9
- * android: .apk
10
- * ios: .zip (we intentionally compress .app files before uploading them to the cloud storage)
11
- */
12
- export function getBinaryFileExtensionForPlatform(platform) {
13
- return platform === 'ios' ? '.zip' : '.apk';
14
- }
15
- /**
16
- * @example
17
- * platform android
18
- * version 2.76.0
19
- * returns "2-76-0.apk"
20
- *
21
- * platform ios
22
- * version 2.55.0+4
23
- * returns "2-55-0+4.zip"
24
- */
25
- export function versionToBinaryFileName(version, platform) {
26
- return (version.replace(/\./g, '-') + getBinaryFileExtensionForPlatform(platform));
27
- }
28
- /**
29
- * @example
30
- * binaryFileName "2-76-0.apk"
31
- * returns "2.76.0"
32
- *
33
- * binaryFileName "2-16-0+3.zip"
34
- * returns "2.16.0+3"
35
- */
36
- export function binaryFileNameToVersion(binaryFileName) {
37
- return binaryFileName.split('.')[0].replace(/-/g, '.');
38
- }
39
- /**
40
- * @example
41
- * filenames ["2-76-0+3.apk", "2-76-0+3.zip", "2-77-0.apk", "2-77-0.zip", "2-77-0+1.apk", "2-77-0+1.zip"]
42
- * returns "2.77.0+1"
43
- */
44
- export function getLatestVersionFromFilesList(filenames) {
45
- const localVersions = _.uniq(filenames
46
- .map(binaryFileNameToVersion)
47
- .filter(version => isValidSemver(version)));
48
- localVersions.sort(semverCompare);
49
- const last = localVersions.slice(-1)[0];
50
- return last ?? null;
51
- }
3
+ import { metadataToBinaryFileName } from './version.js';
52
4
  /**
53
5
  * Returns a boolean indicating if the binary for the given version and platform is already downloaded in the system
54
6
  */
55
- export async function isVersionAvailableLocally(platform, version) {
7
+ export async function isVersionAvailableLocally(version) {
56
8
  const localBinariesList = await fs.readdir(PATHS.CACHE_DIR);
57
- const fileName = versionToBinaryFileName(version, platform);
58
- return localBinariesList.includes(fileName);
59
- }
60
- /**
61
- * Gets the biggest version in the downloads folder for the given platform.
62
- */
63
- export async function getLatestDownloadedVersion(platform) {
64
- const localBinariesList = await fs.readdir(PATHS.CACHE_DIR);
65
- const localBinariesForPlatform = localBinariesList.filter(name => name.endsWith(getBinaryFileExtensionForPlatform(platform)));
66
- return getLatestVersionFromFilesList(localBinariesForPlatform);
67
- }
68
- /**
69
- * Compares the current version against the latest available version.
70
- *
71
- * Does nothing if the current version is already the latest.
72
- * Otherwise prompts the user to download the new version.
73
- */
74
- export async function maybePromptBinaryUpgrade(platform, { currentVersion, onProgress, onDownloadStart, } = {}) {
75
- const _currentVersion = currentVersion || (await getLatestDownloadedVersion(platform));
76
- const latestVersion = await getLatestRemoteVersion(platform);
77
- if (latestVersion === _currentVersion) {
78
- // returns early if user is already on latest version
79
- return null;
9
+ try {
10
+ const fileName = metadataToBinaryFileName(version);
11
+ return localBinariesList.includes(fileName);
80
12
  }
81
- const { shouldUpdate } = await prompts({
82
- type: 'confirm',
83
- initial: true,
84
- name: 'shouldUpdate',
85
- message: "There's a new version of Shop available. Do you want to upgrade?",
86
- });
87
- if (shouldUpdate) {
88
- onDownloadStart?.(latestVersion);
89
- await downloadBinary(platform, { version: latestVersion, onProgress });
90
- return latestVersion;
13
+ catch {
14
+ return false;
91
15
  }
92
- return null;
93
16
  }
94
17
  //# sourceMappingURL=binaries.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"binaries.js","sourceRoot":"","sources":["../../../../src/commands/dev/utils/binaries.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"binaries.js","sourceRoot":"","sources":["../../../../src/commands/dev/utils/binaries.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,UAAU,CAAA;AAEzB,OAAO,EAAC,KAAK,EAAC,MAAM,iBAAiB,CAAA;AAGrC,OAAO,EAAC,wBAAwB,EAAC,MAAM,cAAc,CAAA;AAErD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAAC,OAAuB;IACrE,MAAM,iBAAiB,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;IAC3D,IAAI;QACF,MAAM,QAAQ,GAAG,wBAAwB,CAAC,OAAO,CAAC,CAAA;QAElD,OAAO,iBAAiB,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;KAC5C;IAAC,MAAM;QACN,OAAO,KAAK,CAAA;KACb;AACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { BuildType } from './types.js';
2
+ export declare function getBuildTypeForBinaryBuildType(type: string): BuildType;
@@ -0,0 +1,14 @@
1
+ import { BuildType } from './types.js';
2
+ export function getBuildTypeForBinaryBuildType(type) {
3
+ switch (type) {
4
+ case 'release':
5
+ return BuildType.Release;
6
+ case 'nightly':
7
+ return BuildType.Nightly;
8
+ case 'snapshot':
9
+ return BuildType.Snapshot;
10
+ default:
11
+ throw new Error(`Invalid build type: ${type}`);
12
+ }
13
+ }
14
+ //# sourceMappingURL=build-type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-type.js","sourceRoot":"","sources":["../../../../src/commands/dev/utils/build-type.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,YAAY,CAAA;AAEpC,MAAM,UAAU,8BAA8B,CAAC,IAAY;IACzD,QAAQ,IAAI,EAAE;QACZ,KAAK,SAAS;YACZ,OAAO,SAAS,CAAC,OAAO,CAAA;QAC1B,KAAK,SAAS;YACZ,OAAO,SAAS,CAAC,OAAO,CAAA;QAC1B,KAAK,UAAU;YACb,OAAO,SAAS,CAAC,QAAQ,CAAA;QAC3B;YACE,MAAM,IAAI,KAAK,CAAC,uBAAuB,IAAI,EAAE,CAAC,CAAA;KACjD;AACH,CAAC"}
@@ -1,3 +1,3 @@
1
1
  import type { DevCommandOptions } from '../index.js';
2
- export declare function getBundleUrl({ host }: DevCommandOptions): Promise<string>;
3
- export declare function getDeeplink(miniHandle: string, options: DevCommandOptions, universalLink?: boolean): Promise<string>;
2
+ export declare function getBundleUrl({ host }: DevCommandOptions): string;
3
+ export declare function getDeeplink(miniHandle: string, options: DevCommandOptions, universalLink?: boolean): string;
@@ -1,9 +1,9 @@
1
1
  import { createRequire } from 'node:module';
2
- export async function getBundleUrl({ host }) {
2
+ export function getBundleUrl({ host }) {
3
3
  return `http://${host}:8082/index.bundle`;
4
4
  }
5
- async function getDeeplinkParams(miniHandle, options) {
6
- const bundleUrl = await getBundleUrl(options);
5
+ function getDeeplinkParams(miniHandle, options) {
6
+ const bundleUrl = getBundleUrl(options);
7
7
  const params = {
8
8
  handle: miniHandle,
9
9
  bundleUrl: encodeURIComponent(bundleUrl),
@@ -45,8 +45,8 @@ function getDevelopmentEntryPointParams() {
45
45
  return '';
46
46
  }
47
47
  }
48
- export async function getDeeplink(miniHandle, options, universalLink = false) {
49
- const deeplinkParams = await getDeeplinkParams(miniHandle, options);
48
+ export function getDeeplink(miniHandle, options, universalLink = false) {
49
+ const deeplinkParams = getDeeplinkParams(miniHandle, options);
50
50
  const developmentParams = getDevelopmentEntryPointParams();
51
51
  if (universalLink) {
52
52
  return `https://shop.app/mini/remote/${deeplinkParams}${developmentParams}`;
@@ -1 +1 @@
1
- {"version":3,"file":"deeplink.js","sourceRoot":"","sources":["../../../../src/commands/dev/utils/deeplink.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAC,MAAM,aAAa,CAAA;AAIzC,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,EAAC,IAAI,EAAoB;IAC1D,OAAO,UAAU,IAAI,oBAAoB,CAAA;AAC3C,CAAC;AAED,KAAK,UAAU,iBAAiB,CAC9B,UAAkB,EAClB,OAA0B;IAE1B,MAAM,SAAS,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,CAAA;IAE7C,MAAM,MAAM,GAAG;QACb,MAAM,EAAE,UAAU;QAClB,SAAS,EAAE,kBAAkB,CAAC,SAAS,CAAC;QACxC,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,qCAAqC;QAC5D,QAAQ,EAAE,EAAE;QACZ,iBAAiB,EAAE,IAAI;KACxB,CAAA;IAED,MAAM,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;IAEhD,OAAO,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;AAC1D,CAAC;AAED,MAAM,0BAA0B,GAAG;IACjC,YAAY;IACZ,SAAS;IACT,oBAAoB;CACrB,CAAA;AACD;;;;;GAKG;AACH,SAAS,8BAA8B;IACrC,IAAI;QACF,MAAM,YAAY,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QACnD,MAAM,yBAAyB,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,0BAA0B,CAAA;QAC5E,OAAO,YAAY,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC,CAAA;QAE1E,MAAM,eAAe,GAA2B,YAAY,CAC1D,yBAAyB,CAC1B,CAAA;QAED,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,MAAM,CAC5D,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CACf,0BAA0B,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,CAC7D,CAAA;QACD,MAAM,iBAAiB,GAAG,IAAI,eAAe,CAAC,eAAe,CAAC,CAAC,QAAQ,EAAE,CAAA;QAEzE,OAAO,iBAAiB,CAAC,CAAC,CAAC,IAAI,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;KACxD;IAAC,OAAO,GAAQ,EAAE;QACjB,IAAI,GAAG,EAAE,IAAI,KAAK,kBAAkB,IAAI,GAAG,EAAE,IAAI,KAAK,QAAQ,EAAE;YAC9D,OAAO,CAAC,GAAG,CACT,gEAAgE,CACjE,CAAA;YACD,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;YAChB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;SAClB;QACD,sFAAsF;QACtF,OAAO,EAAE,CAAA;KACV;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,UAAkB,EAClB,OAA0B,EAC1B,aAAa,GAAG,KAAK;IAErB,MAAM,cAAc,GAAG,MAAM,iBAAiB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;IACnE,MAAM,iBAAiB,GAAG,8BAA8B,EAAE,CAAA;IAE1D,IAAI,aAAa,EAAE;QACjB,OAAO,gCAAgC,cAAc,GAAG,iBAAiB,EAAE,CAAA;KAC5E;SAAM;QACL,OAAO,wBAAwB,cAAc,GAAG,iBAAiB,EAAE,CAAA;KACpE;AACH,CAAC"}
1
+ {"version":3,"file":"deeplink.js","sourceRoot":"","sources":["../../../../src/commands/dev/utils/deeplink.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAC,MAAM,aAAa,CAAA;AAIzC,MAAM,UAAU,YAAY,CAAC,EAAC,IAAI,EAAoB;IACpD,OAAO,UAAU,IAAI,oBAAoB,CAAA;AAC3C,CAAC;AAED,SAAS,iBAAiB,CAAC,UAAkB,EAAE,OAA0B;IACvE,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,CAAA;IAEvC,MAAM,MAAM,GAAG;QACb,MAAM,EAAE,UAAU;QAClB,SAAS,EAAE,kBAAkB,CAAC,SAAS,CAAC;QACxC,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,qCAAqC;QAC5D,QAAQ,EAAE,EAAE;QACZ,iBAAiB,EAAE,IAAI;KACxB,CAAA;IAED,MAAM,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;IAEhD,OAAO,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;AAC1D,CAAC;AAED,MAAM,0BAA0B,GAAG;IACjC,YAAY;IACZ,SAAS;IACT,oBAAoB;CACrB,CAAA;AACD;;;;;GAKG;AACH,SAAS,8BAA8B;IACrC,IAAI;QACF,MAAM,YAAY,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QACnD,MAAM,yBAAyB,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,0BAA0B,CAAA;QAC5E,OAAO,YAAY,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC,CAAA;QAE1E,MAAM,eAAe,GAA2B,YAAY,CAC1D,yBAAyB,CAC1B,CAAA;QAED,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,MAAM,CAC5D,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CACf,0BAA0B,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,CAC7D,CAAA;QACD,MAAM,iBAAiB,GAAG,IAAI,eAAe,CAAC,eAAe,CAAC,CAAC,QAAQ,EAAE,CAAA;QAEzE,OAAO,iBAAiB,CAAC,CAAC,CAAC,IAAI,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;KACxD;IAAC,OAAO,GAAQ,EAAE;QACjB,IAAI,GAAG,EAAE,IAAI,KAAK,kBAAkB,IAAI,GAAG,EAAE,IAAI,KAAK,QAAQ,EAAE;YAC9D,OAAO,CAAC,GAAG,CACT,gEAAgE,CACjE,CAAA;YACD,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;YAChB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;SAClB;QACD,sFAAsF;QACtF,OAAO,EAAE,CAAA;KACV;AACH,CAAC;AAED,MAAM,UAAU,WAAW,CACzB,UAAkB,EAClB,OAA0B,EAC1B,aAAa,GAAG,KAAK;IAErB,MAAM,cAAc,GAAG,iBAAiB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;IAC7D,MAAM,iBAAiB,GAAG,8BAA8B,EAAE,CAAA;IAE1D,IAAI,aAAa,EAAE;QACjB,OAAO,gCAAgC,cAAc,GAAG,iBAAiB,EAAE,CAAA;KAC5E;SAAM;QACL,OAAO,wBAAwB,cAAc,GAAG,iBAAiB,EAAE,CAAA;KACpE;AACH,CAAC"}
@@ -18,6 +18,8 @@ export declare class InteractiveTerminal {
18
18
  loadingEnd(endState?: 'succeed' | 'fail' | 'warn' | 'info', logMessage?: string): void;
19
19
  handleKeyPress: (key: string) => Promise<void>;
20
20
  showSetupAndroidHomeInstructions(): Promise<void>;
21
- startAndroidApp(deviceId: string): Promise<void>;
22
21
  printDeeplinkQRCode(): Promise<void>;
22
+ private startApp;
23
+ private get deeplink();
24
+ private get loadingHandlers();
23
25
  }
@@ -1,14 +1,15 @@
1
- import ora from 'ora';
2
1
  import chalk from 'chalk';
3
2
  import open from 'open';
4
- import { getMiniManifest } from '../../utils/minis-manifest.js';
3
+ import ora from 'ora';
5
4
  import { DEV_PANEL_BASE_URL } from '../../../dev-panel/middleware.js';
6
- import { deeplinkToEmulator, maybeLaunchEmulator, installShopInEmulator, connectDevelopmentServer, getInstalledShopVersion as getInstalledShopVersionAndroid, androidHomeExists, promptForAndroidDevices, } from './android.js';
7
- import { deeplinkToSimulator, getInstalledShopVersion as getInstalledShopVersionIOS, installShopInSimulator, bootSimulator, promptForSimulator, } from './simulator.js';
8
- import { printQRCode } from './qr-code.js';
5
+ import { getMiniManifest } from '../../utils/minis-manifest.js';
6
+ import { androidHomeExists } from '../../config.js';
7
+ import { maybeLaunchEmulator, promptForAndroidDevices } from './android.js';
9
8
  import { getBundleUrl, getDeeplink } from './deeplink.js';
10
- import { maybePromptBinaryUpgrade } from './binaries.js';
11
- import { downloadBinary } from './network.js';
9
+ import { printQRCode } from './qr-code.js';
10
+ import { bootSimulator, promptForSimulator } from './simulator.js';
11
+ import { startApp } from './start-app.js';
12
+ import { Platform } from './platform.js';
12
13
  const { stdin } = process;
13
14
  function clearTerminal() {
14
15
  process.stdout.write('\x1B[2J\x1B[3J\x1B[H');
@@ -115,10 +116,10 @@ export class InteractiveTerminal {
115
116
  this.loadingEnd('fail', `Couldn't launch emulator ${device.name}`);
116
117
  break;
117
118
  }
118
- await this.startAndroidApp(emulatorId);
119
+ await this.startApp(Platform.Android, emulatorId);
119
120
  }
120
121
  else {
121
- await this.startAndroidApp(device.name);
122
+ await this.startApp(Platform.Android, device.name);
122
123
  }
123
124
  }
124
125
  else {
@@ -135,37 +136,7 @@ export class InteractiveTerminal {
135
136
  if (simulator) {
136
137
  this.loadingStart('Launching simulator');
137
138
  await bootSimulator(simulator.udid);
138
- const installedShopVersion = await getInstalledShopVersionIOS(simulator.udid);
139
- if (installedShopVersion) {
140
- this.loadingEnd();
141
- // We assume that the version being used in the simulator matches the biggest version in the downloads folder
142
- // because version returned by the simulator does not include build numbers.
143
- const upgradedVersion = await maybePromptBinaryUpgrade('ios', {
144
- onDownloadStart: () => {
145
- this.loadingStart('Downloading Shop (0%)');
146
- },
147
- onProgress: progress => {
148
- this._loading.text = `Downloading Shop (${progress}%)`;
149
- },
150
- });
151
- if (upgradedVersion) {
152
- this.loadingStart('Installing Shop');
153
- await installShopInSimulator(simulator.udid, upgradedVersion);
154
- }
155
- }
156
- else {
157
- this.loadingStart('Downloading Shop (0%)');
158
- const downloadedVersion = await downloadBinary('ios', {
159
- onProgress: progress => {
160
- this._loading.text = `Downloading Shop (${progress}%)`;
161
- },
162
- });
163
- this.loadingStart('Installing Shop\n ↪ You can skip onboarding, or log in with your existing Shop account (optional).');
164
- await installShopInSimulator(simulator.udid, downloadedVersion);
165
- }
166
- this.loadingStart('Opening Shop');
167
- await deeplinkToSimulator(simulator.udid, await getDeeplink(this.miniHandle, this.options));
168
- this.loadingEnd();
139
+ await this.startApp(Platform.IOS, simulator.udid);
169
140
  }
170
141
  else {
171
142
  console.log('\nNo simulator was selected\n');
@@ -178,10 +149,10 @@ export class InteractiveTerminal {
178
149
  }
179
150
  case 'd': {
180
151
  // TODO: Should we send these as params? or should the dev panel website already know how to fetch them without the need of query params?
181
- // Advantadge would be that people could just type the base url in the browser whenever they want to open the dev panel. That's impossible with the query params being required
152
+ // Advantage would be that people could just type the base url in the browser whenever they want to open the dev panel. That's impossible with the query params being required
182
153
  const paramsObj = {
183
- bundleUrl: await getBundleUrl(this.options),
184
- deepLink: await getDeeplink(this.miniHandle, this.options, true),
154
+ bundleUrl: getBundleUrl(this.options),
155
+ deepLink: getDeeplink(this.miniHandle, this.options, true),
185
156
  };
186
157
  const searchParams = `?${new URLSearchParams(paramsObj).toString()}`;
187
158
  open(`${DEV_PANEL_BASE_URL}${searchParams}`);
@@ -203,44 +174,32 @@ export class InteractiveTerminal {
203
174
  console.log(`See ${chalk.blue.underline.bold('https://developer.android.com/studio/command-line/variables')}`);
204
175
  await this.waitForAnyKeyAndPrintInstructions();
205
176
  }
206
- async startAndroidApp(deviceId) {
207
- const installedShopVersion = await getInstalledShopVersionAndroid(deviceId);
208
- if (installedShopVersion) {
209
- this.loadingEnd();
210
- // We assume that the version being used in the emulator matches the biggest version in the downloads folder
211
- // because version returned by the emulator does not include build numbers.
212
- const upgradedVersion = await maybePromptBinaryUpgrade('android', {
213
- onDownloadStart: () => {
214
- this.loadingStart('Downloading Shop (0%)');
215
- },
216
- onProgress: progress => {
217
- this._loading.text = `Downloading Shop (${progress}%)`;
218
- },
219
- });
220
- if (upgradedVersion) {
221
- this.loadingStart('Installing Shop');
222
- await installShopInEmulator(deviceId, upgradedVersion);
223
- }
224
- }
225
- else {
226
- this.loadingStart('Downloading Shop (0%)');
227
- const downloadedVersion = await downloadBinary('android', {
228
- onProgress: progress => {
229
- this._loading.text = `Downloading Shop (${progress}%)`;
230
- },
231
- });
232
- this.loadingStart('Installing Shop\n ↪ You can skip onboarding, or log in with your existing Shop account (optional).');
233
- await installShopInEmulator(deviceId, downloadedVersion);
234
- }
235
- this.loadingStart('Opening Shop');
236
- await connectDevelopmentServer(deviceId);
237
- await deeplinkToEmulator(deviceId, await getDeeplink(this.miniHandle, this.options));
238
- this.loadingEnd();
239
- }
240
177
  async printDeeplinkQRCode() {
241
178
  console.log('\n');
242
- await printQRCode(await getDeeplink(this.miniHandle, this.options, true));
179
+ await printQRCode(getDeeplink(this.miniHandle, this.options, true));
243
180
  console.log('Scan the QR code to open Shop Mini on your device (requires the Shop app to be installed)\n');
244
181
  }
182
+ async startApp(platform, deviceId) {
183
+ await startApp({
184
+ platform,
185
+ deviceId,
186
+ deeplink: this.deeplink,
187
+ type: this.options.buildType,
188
+ }, this.loadingHandlers);
189
+ }
190
+ get deeplink() {
191
+ return getDeeplink(this.miniHandle, this.options);
192
+ }
193
+ get loadingHandlers() {
194
+ return {
195
+ onLoadingStart: this.loadingStart.bind(this),
196
+ onLoadingEnd: this.loadingEnd.bind(this),
197
+ onLoadingUpdate: (text) => {
198
+ if (this._loading) {
199
+ this._loading.text = text;
200
+ }
201
+ },
202
+ };
203
+ }
245
204
  }
246
205
  //# sourceMappingURL=interactive-terminal.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"interactive-terminal.js","sourceRoot":"","sources":["../../../../src/commands/dev/utils/interactive-terminal.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"interactive-terminal.js","sourceRoot":"","sources":["../../../../src/commands/dev/utils/interactive-terminal.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
1
  import type { DevCommandOptions } from '../../index.js';
2
- export declare function runMetro(options?: DevCommandOptions): Promise<void>;
2
+ export declare function runMetro(options?: Pick<DevCommandOptions, 'host' | 'resetCache'>): Promise<void>;
@@ -7,7 +7,7 @@ export async function runMetro(options = DEFAULT_OPTIONS) {
7
7
  const { host, ...metroOptions } = options;
8
8
  const metroServerConfig = {
9
9
  ...(await getMetroConfig()),
10
- metroOptions,
10
+ ...metroOptions,
11
11
  };
12
12
  await Metro.runServer(metroServerConfig, { host });
13
13
  if (host !== 'localhost') {
@@ -1 +1 @@
1
- {"version":3,"file":"metro-server.js","sourceRoot":"","sources":["../../../../../src/commands/dev/utils/metro/metro-server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAIzB,OAAO,EAAC,cAAc,EAAC,MAAM,mBAAmB,CAAA;AAEhD,MAAM,eAAe,GAAG;IACtB,UAAU,EAAE,KAAK;CACT,CAAA;AAEV,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,UAA6B,eAAe;IACzE,MAAM,EAAC,IAAI,EAAE,GAAG,YAAY,EAAC,GAAG,OAAO,CAAA;IACvC,MAAM,iBAAiB,GAAG;QACxB,GAAG,CAAC,MAAM,cAAc,EAAE,CAAC;QAC3B,YAAY;KACb,CAAA;IAED,MAAM,KAAK,CAAC,SAAS,CAAC,iBAAiB,EAAE,EAAC,IAAI,EAAC,CAAC,CAAA;IAEhD,IAAI,IAAI,KAAK,WAAW,EAAE;QACxB,MAAM,KAAK,CAAC,SAAS,CAAC,iBAAiB,EAAE,EAAC,IAAI,EAAE,WAAW,EAAC,CAAC,CAAA;KAC9D;AACH,CAAC"}
1
+ {"version":3,"file":"metro-server.js","sourceRoot":"","sources":["../../../../../src/commands/dev/utils/metro/metro-server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAKzB,OAAO,EAAC,cAAc,EAAC,MAAM,mBAAmB,CAAA;AAEhD,MAAM,eAAe,GAAG;IACtB,UAAU,EAAE,KAAK;CACT,CAAA;AAEV,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,UAA0D,eAAe;IAEzE,MAAM,EAAC,IAAI,EAAE,GAAG,YAAY,EAAC,GAAG,OAAO,CAAA;IACvC,MAAM,iBAAiB,GAAY;QACjC,GAAG,CAAC,MAAM,cAAc,EAAE,CAAC;QAC3B,GAAG,YAAY;KAChB,CAAA;IAED,MAAM,KAAK,CAAC,SAAS,CAAC,iBAAiB,EAAE,EAAC,IAAI,EAAC,CAAC,CAAA;IAEhD,IAAI,IAAI,KAAK,WAAW,EAAE;QACxB,MAAM,KAAK,CAAC,SAAS,CAAC,iBAAiB,EAAE,EAAC,IAAI,EAAE,WAAW,EAAC,CAAC,CAAA;KAC9D;AACH,CAAC"}
@@ -1,20 +1,20 @@
1
- import { Platform } from './types.js';
1
+ import { Platform } from './platform.js';
2
+ import { BinaryMetadata, BuildType } from './types.js';
3
+ export declare const CDN_ADDRESS = "http://34.160.57.53/";
4
+ export declare const GOOGLE_CLOUD_BUCKET_NAME = "minis_cli_app_builds";
5
+ export declare const metadataToBucketPath: (metadata: BinaryMetadata) => string;
2
6
  /**
3
7
  * Downloads a binary from the remote storage
4
8
  * @returns Promise that resolves to the downloaded version
5
9
  */
6
- export declare function downloadBinary(platform: Platform, { onProgress, version, }?: {
10
+ export declare function downloadBinary(versionToDownload: BinaryMetadata, { onProgress, }?: {
7
11
  /**
8
12
  * Download progress callback
9
13
  */
10
14
  onProgress?: (progress: number) => void;
11
- /**
12
- * Version to download. Defaults to latest version available
13
- */
14
- version?: string;
15
- }): Promise<string>;
15
+ }): Promise<BinaryMetadata>;
16
16
  /**
17
17
  * Returns the latest version that's present in the remote storage of binaries
18
18
  * TODO: this won't handle a bucket that has more than 50 files.
19
19
  */
20
- export declare function getLatestRemoteVersion(platform: Platform): Promise<string>;
20
+ export declare function getLatestRemoteVersion(platform: Platform, type: BuildType): Promise<BinaryMetadata | null>;
@@ -1,38 +1,39 @@
1
1
  import http from 'http';
2
+ import { basename } from 'node:path';
2
3
  import { Storage } from '@google-cloud/storage';
3
4
  import fs from 'fs-extra';
5
+ import { compare, parse } from 'semver';
4
6
  import { PATHS } from '../../config.js';
5
- import { getBinaryFileExtensionForPlatform, getLatestVersionFromFilesList, isVersionAvailableLocally, versionToBinaryFileName, } from './binaries.js';
7
+ import { isVersionAvailableLocally } from './binaries.js';
8
+ import { getLatestVersionFromFilesList, metadataToBinaryFileName, } from './version.js';
6
9
  // TODO: set up domain and ssl certificate for cdn
7
- // https://console.cloud.google.com/net-services/cdn/backendBucket/details/minis-binaries-backend-bucket?project=arrive-167720
8
- // https://console.cloud.google.com/storage/browser/minis_cli_binaries
9
- const CDN_ADDRESS = 'http://35.244.235.176/';
10
- const GOOGLE_CLOUD_BUCKET_NAME = 'minis_cli_binaries';
10
+ // https://console.cloud.google.com/net-services/cdn/backendBucket/details/minis-app-builds-backend-bucket?project=arrive-167720
11
+ // https://console.cloud.google.com/storage/browser/minis_cli_app_builds
12
+ export const CDN_ADDRESS = 'http://34.160.57.53/';
13
+ export const GOOGLE_CLOUD_BUCKET_NAME = 'minis_cli_app_builds';
11
14
  const bucket = new Storage().bucket(GOOGLE_CLOUD_BUCKET_NAME);
15
+ export const metadataToBucketPath = (metadata) => `${metadata.version}/${metadataToBinaryFileName(metadata)}`;
12
16
  /**
13
17
  * Downloads a binary from the remote storage
14
18
  * @returns Promise that resolves to the downloaded version
15
19
  */
16
- export async function downloadBinary(platform, { onProgress, version, } = {}) {
17
- const versionToDownload = version || (await getLatestRemoteVersion(platform));
18
- const isVersionAlreadyDownloaded = await isVersionAvailableLocally(platform, versionToDownload);
20
+ export async function downloadBinary(versionToDownload, { onProgress, } = {}) {
21
+ const isVersionAlreadyDownloaded = await isVersionAvailableLocally(versionToDownload);
19
22
  if (isVersionAlreadyDownloaded) {
20
23
  onProgress?.(100);
21
24
  return versionToDownload;
22
25
  }
23
- const fileName = versionToBinaryFileName(versionToDownload, platform);
24
- const bucketResponse = await bucket.getFiles({
25
- prefix: fileName,
26
- });
27
- const remoteFile = bucketResponse[0][0];
28
- const fileSize = parseInt(remoteFile.metadata.size, 10);
26
+ const localFileName = metadataToBinaryFileName(versionToDownload);
27
+ const remoteBucketPath = metadataToBucketPath(versionToDownload);
28
+ const [metadata] = await bucket.file(remoteBucketPath).getMetadata();
29
+ const fileSize = parseInt(metadata.size, 10);
29
30
  return new Promise((resolve, reject) => {
30
- const writeStream = fs.createWriteStream(`${PATHS.CACHE_DIR}/${fileName}`);
31
+ const writeStream = fs.createWriteStream(`${PATHS.CACHE_DIR}/${localFileName}`);
31
32
  const progressInterval = setInterval(() => {
32
33
  const progress = Math.round((writeStream.bytesWritten / fileSize) * 100);
33
34
  onProgress?.(progress);
34
35
  }, 200);
35
- http.get(`${CDN_ADDRESS}${fileName}`, cdnResponse => {
36
+ http.get(`${CDN_ADDRESS}${remoteBucketPath}`, cdnResponse => {
36
37
  cdnResponse.pipe(writeStream);
37
38
  writeStream.on('finish', () => {
38
39
  writeStream.close();
@@ -51,12 +52,57 @@ export async function downloadBinary(platform, { onProgress, version, } = {}) {
51
52
  * Returns the latest version that's present in the remote storage of binaries
52
53
  * TODO: this won't handle a bucket that has more than 50 files.
53
54
  */
54
- export async function getLatestRemoteVersion(platform) {
55
- const filesResponse = await bucket.getFiles();
56
- const filesMetadata = filesResponse[0];
57
- const fileNames = filesMetadata
58
- .map(file => file.name)
59
- .filter(name => name.endsWith(getBinaryFileExtensionForPlatform(platform)));
60
- return getLatestVersionFromFilesList(fileNames);
55
+ export async function getLatestRemoteVersion(platform, type) {
56
+ const versions = await getRemoteVersions();
57
+ // newest first
58
+ const sortedVersions = versions.sort(compare).reverse();
59
+ // iterate over versions, in case newest version(s) don't contain builds for the given platform/type
60
+ for (const version of sortedVersions) {
61
+ const prefix = `${version}/`;
62
+ const [filesMetadata] = await bucket.getFiles({
63
+ prefix,
64
+ });
65
+ const fileNames = filesMetadata
66
+ .map(file => file.name)
67
+ // extract filename from GCS bucket path
68
+ .map(path => basename(path));
69
+ const latestVersion = getLatestVersionFromFilesList(fileNames, platform, type);
70
+ if (latestVersion != null) {
71
+ return latestVersion;
72
+ }
73
+ }
74
+ return null;
75
+ }
76
+ /**
77
+ * Returns a list of all the versions that are present in the remote bucket,
78
+ * regardless of platform or build type
79
+ */
80
+ async function getRemoteVersions() {
81
+ // GCS doesn't have a concept of 'folders', so we just list prefixes (which are the version numbers)
82
+ // and remove the trailing delimiter ('/')
83
+ let query = {
84
+ delimiter: '/',
85
+ // intentionally set to false to keep `apiResponse`
86
+ // see: https://github.com/googleapis/google-cloud-node/issues/2594
87
+ autoPaginate: false,
88
+ };
89
+ const prefixes = [];
90
+ // loop to handle pagination
91
+ do {
92
+ const [_files, nextQuery, apiResponse] = await bucket.getFiles(query);
93
+ const newPrefixes = apiResponse.prefixes ?? [];
94
+ prefixes.push(...newPrefixes);
95
+ query = nextQuery;
96
+ } while (query != null);
97
+ return (prefixes
98
+ // remove trailing delimiter
99
+ .map(prefix => prefix.replace(/\/$/, ''))
100
+ // validate that we only have 'x.y.z', not 'x.y.z-rc.1' or 'x.y.z+123'
101
+ .filter(prefix => {
102
+ const parsed = parse(prefix);
103
+ return (parsed != null &&
104
+ parsed.build.length === 0 &&
105
+ parsed.prerelease.length === 0);
106
+ }));
61
107
  }
62
108
  //# sourceMappingURL=network.js.map