@shopify/shop-minis-cli 0.0.43 → 0.0.45

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 (58) hide show
  1. package/build/commands/config.d.ts +4 -0
  2. package/build/commands/config.js +19 -0
  3. package/build/commands/config.js.map +1 -1
  4. package/build/commands/dev/index.d.ts +2 -0
  5. package/build/commands/dev/index.js +8 -2
  6. package/build/commands/dev/index.js.map +1 -1
  7. package/build/commands/dev/utils/android.d.ts +6 -4
  8. package/build/commands/dev/utils/android.js +29 -29
  9. package/build/commands/dev/utils/android.js.map +1 -1
  10. package/build/commands/dev/utils/binaries.d.ts +2 -59
  11. package/build/commands/dev/utils/binaries.js +7 -84
  12. package/build/commands/dev/utils/binaries.js.map +1 -1
  13. package/build/commands/dev/utils/build-type.d.ts +2 -0
  14. package/build/commands/dev/utils/build-type.js +14 -0
  15. package/build/commands/dev/utils/build-type.js.map +1 -0
  16. package/build/commands/dev/utils/deeplink.d.ts +2 -2
  17. package/build/commands/dev/utils/deeplink.js +5 -5
  18. package/build/commands/dev/utils/deeplink.js.map +1 -1
  19. package/build/commands/dev/utils/interactive-terminal.d.ts +3 -1
  20. package/build/commands/dev/utils/interactive-terminal.js +37 -78
  21. package/build/commands/dev/utils/interactive-terminal.js.map +1 -1
  22. package/build/commands/dev/utils/metro/metro-server.d.ts +1 -1
  23. package/build/commands/dev/utils/metro/metro-server.js +1 -1
  24. package/build/commands/dev/utils/metro/metro-server.js.map +1 -1
  25. package/build/commands/dev/utils/network.d.ts +8 -8
  26. package/build/commands/dev/utils/network.js +69 -23
  27. package/build/commands/dev/utils/network.js.map +1 -1
  28. package/build/commands/dev/utils/patch-package.d.ts +4 -0
  29. package/build/commands/dev/utils/patch-package.js +72 -0
  30. package/build/commands/dev/utils/patch-package.js.map +1 -0
  31. package/build/commands/dev/utils/platform.d.ts +18 -0
  32. package/build/commands/dev/utils/platform.js +41 -0
  33. package/build/commands/dev/utils/platform.js.map +1 -0
  34. package/build/commands/dev/utils/simulator.d.ts +5 -2
  35. package/build/commands/dev/utils/simulator.js +27 -13
  36. package/build/commands/dev/utils/simulator.js.map +1 -1
  37. package/build/commands/dev/utils/start-app.d.ts +23 -0
  38. package/build/commands/dev/utils/start-app.js +85 -0
  39. package/build/commands/dev/utils/start-app.js.map +1 -0
  40. package/build/commands/dev/utils/types.d.ts +24 -1
  41. package/build/commands/dev/utils/types.js +6 -1
  42. package/build/commands/dev/utils/types.js.map +1 -1
  43. package/build/commands/dev/utils/version.d.ts +64 -0
  44. package/build/commands/dev/utils/version.js +101 -0
  45. package/build/commands/dev/utils/version.js.map +1 -0
  46. package/build/commands/types/autogenerated/shop-minis-admin-api/graphql.d.ts +266 -30
  47. package/build/commands/types/autogenerated/shop-minis-admin-api/graphql.js +68 -10
  48. package/build/commands/types/autogenerated/shop-minis-admin-api/graphql.js.map +1 -1
  49. package/build/index.js +2 -1
  50. package/build/index.js.map +1 -1
  51. package/jest.config.ts +2 -2
  52. package/package.json +3 -1
  53. package/templates/__template_common/.eslintrc.js +29 -0
  54. package/templates/__template_common/index.tsx +0 -2
  55. package/templates/__template_common/package.json +5 -36
  56. package/templates/__template_common/src/manifest.json +1 -27
  57. package/templates/__template_common/.eslintrc.json +0 -15
  58. package/templates/__template_common/patches/react-native+0.68.5.patch +0 -173
@@ -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
@@ -1 +1 @@
1
- {"version":3,"file":"network.js","sourceRoot":"","sources":["../../../../src/commands/dev/utils/network.ts"],"names":[],"mappings":"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"}
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