@shopify/shop-minis-cli 0.0.35

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 (152) hide show
  1. package/README.md +8 -0
  2. package/build/commands/create-mini/index.d.ts +2 -0
  3. package/build/commands/create-mini/index.js +116 -0
  4. package/build/commands/create-mini/index.js.map +1 -0
  5. package/build/commands/create-mini/utils/template-app.d.ts +1 -0
  6. package/build/commands/create-mini/utils/template-app.js +44 -0
  7. package/build/commands/create-mini/utils/template-app.js.map +1 -0
  8. package/build/commands/dev/index.d.ts +6 -0
  9. package/build/commands/dev/index.js +31 -0
  10. package/build/commands/dev/index.js.map +1 -0
  11. package/build/commands/dev/utils/android.d.ts +16 -0
  12. package/build/commands/dev/utils/android.js +165 -0
  13. package/build/commands/dev/utils/android.js.map +1 -0
  14. package/build/commands/dev/utils/binaries.d.ts +83 -0
  15. package/build/commands/dev/utils/binaries.js +173 -0
  16. package/build/commands/dev/utils/binaries.js.map +1 -0
  17. package/build/commands/dev/utils/binaries.test.d.ts +1 -0
  18. package/build/commands/dev/utils/binaries.test.js +275 -0
  19. package/build/commands/dev/utils/binaries.test.js.map +1 -0
  20. package/build/commands/dev/utils/deeplink.d.ts +3 -0
  21. package/build/commands/dev/utils/deeplink.js +30 -0
  22. package/build/commands/dev/utils/deeplink.js.map +1 -0
  23. package/build/commands/dev/utils/interactive-terminal.d.ts +23 -0
  24. package/build/commands/dev/utils/interactive-terminal.js +252 -0
  25. package/build/commands/dev/utils/interactive-terminal.js.map +1 -0
  26. package/build/commands/dev/utils/metro/metro-config.d.ts +2 -0
  27. package/build/commands/dev/utils/metro/metro-config.js +31 -0
  28. package/build/commands/dev/utils/metro/metro-config.js.map +1 -0
  29. package/build/commands/dev/utils/metro/metro-reporter.d.ts +14 -0
  30. package/build/commands/dev/utils/metro/metro-reporter.js +34 -0
  31. package/build/commands/dev/utils/metro/metro-reporter.js.map +1 -0
  32. package/build/commands/dev/utils/metro/metro-server-middleware.d.ts +6 -0
  33. package/build/commands/dev/utils/metro/metro-server-middleware.js +45 -0
  34. package/build/commands/dev/utils/metro/metro-server-middleware.js.map +1 -0
  35. package/build/commands/dev/utils/metro/metro-server.d.ts +2 -0
  36. package/build/commands/dev/utils/metro/metro-server.js +24 -0
  37. package/build/commands/dev/utils/metro/metro-server.js.map +1 -0
  38. package/build/commands/dev/utils/minis-manifest.d.ts +1 -0
  39. package/build/commands/dev/utils/minis-manifest.js +24 -0
  40. package/build/commands/dev/utils/minis-manifest.js.map +1 -0
  41. package/build/commands/dev/utils/qr-code.d.ts +1 -0
  42. package/build/commands/dev/utils/qr-code.js +12 -0
  43. package/build/commands/dev/utils/qr-code.js.map +1 -0
  44. package/build/commands/dev/utils/simulator.d.ts +19 -0
  45. package/build/commands/dev/utils/simulator.js +89 -0
  46. package/build/commands/dev/utils/simulator.js.map +1 -0
  47. package/build/commands/dev/utils/with-retries.d.ts +4 -0
  48. package/build/commands/dev/utils/with-retries.js +28 -0
  49. package/build/commands/dev/utils/with-retries.js.map +1 -0
  50. package/build/commands/generate-graphql-types/index.d.ts +5 -0
  51. package/build/commands/generate-graphql-types/index.js +90 -0
  52. package/build/commands/generate-graphql-types/index.js.map +1 -0
  53. package/build/commands/utils/exec-async-child-process.d.ts +18 -0
  54. package/build/commands/utils/exec-async-child-process.js +48 -0
  55. package/build/commands/utils/exec-async-child-process.js.map +1 -0
  56. package/build/commands/utils/wrap-with-loading-indicator.d.ts +9 -0
  57. package/build/commands/utils/wrap-with-loading-indicator.js +23 -0
  58. package/build/commands/utils/wrap-with-loading-indicator.js.map +1 -0
  59. package/build/dev-panel/images/bottomsheet.png +0 -0
  60. package/build/dev-panel/images/checkmark.svg +3 -0
  61. package/build/dev-panel/images/chevron.svg +3 -0
  62. package/build/dev-panel/images/copy.svg +4 -0
  63. package/build/dev-panel/images/get-started.svg +3 -0
  64. package/build/dev-panel/images/how-to.svg +3 -0
  65. package/build/dev-panel/images/navigation.png +0 -0
  66. package/build/dev-panel/images/references.svg +3 -0
  67. package/build/dev-panel/images/shop-minis-logo-inverse.svg +5 -0
  68. package/build/dev-panel/images/shop-minis-logo.svg +5 -0
  69. package/build/dev-panel/images/stories.png +0 -0
  70. package/build/dev-panel/images/topics.svg +3 -0
  71. package/build/dev-panel/index.html +302 -0
  72. package/build/dev-panel/middleware.d.ts +4 -0
  73. package/build/dev-panel/middleware.js +11 -0
  74. package/build/dev-panel/middleware.js.map +1 -0
  75. package/build/dev-panel/middleware.ts +6 -0
  76. package/build/dev-panel/styles.css +507 -0
  77. package/build/index.d.ts +2 -0
  78. package/build/index.js +26 -0
  79. package/build/index.js.map +1 -0
  80. package/package.json +83 -0
  81. package/templates/__template_blank/src/custom.d.ts +4 -0
  82. package/templates/__template_blank/src/index.tsx +9 -0
  83. package/templates/__template_blank/src/screens/HomeScreen.tsx +12 -0
  84. package/templates/__template_blank/src/types.ts +5 -0
  85. package/templates/__template_common/.eslintignore +1 -0
  86. package/templates/__template_common/.eslintrc.json +132 -0
  87. package/templates/__template_common/.prettierrc.json +8 -0
  88. package/templates/__template_common/babel.config.js +19 -0
  89. package/templates/__template_common/gitignore +3 -0
  90. package/templates/__template_common/index.tsx +43 -0
  91. package/templates/__template_common/metro.config.js +31 -0
  92. package/templates/__template_common/package.json +68 -0
  93. package/templates/__template_common/patches/react-native+0.68.5.patch +173 -0
  94. package/templates/__template_common/src/manifest.json +29 -0
  95. package/templates/__template_common/tsconfig.json +36 -0
  96. package/templates/__template_hello_world/src/assets/Modal-component-thumbnail.png +0 -0
  97. package/templates/__template_hello_world/src/assets/ProductCard-component-thumbnail.png +0 -0
  98. package/templates/__template_hello_world/src/assets/ProductLink-component-thumbnail.png +0 -0
  99. package/templates/__template_hello_world/src/assets/assets.d.ts +4 -0
  100. package/templates/__template_hello_world/src/assets/figma-logo.svg +14 -0
  101. package/templates/__template_hello_world/src/assets/shop-minis-logo.svg +7 -0
  102. package/templates/__template_hello_world/src/components/ButtonCTA.tsx +31 -0
  103. package/templates/__template_hello_world/src/components/ComponentLink.ts +70 -0
  104. package/templates/__template_hello_world/src/components/ComponentListItem.tsx +38 -0
  105. package/templates/__template_hello_world/src/components/FeaturedComponents.tsx +108 -0
  106. package/templates/__template_hello_world/src/components/Header.tsx +40 -0
  107. package/templates/__template_hello_world/src/data/Test.graphql +33 -0
  108. package/templates/__template_hello_world/src/data/Test.graphql.d.ts +114 -0
  109. package/templates/__template_hello_world/src/data/TestProducts.graphql +34 -0
  110. package/templates/__template_hello_world/src/data/TestProducts.graphql.d.ts +119 -0
  111. package/templates/__template_hello_world/src/index.tsx +9 -0
  112. package/templates/__template_hello_world/src/routes.tsx +107 -0
  113. package/templates/__template_hello_world/src/screens/AvatarScreen.tsx +95 -0
  114. package/templates/__template_hello_world/src/screens/BottomSheetScreen.tsx +711 -0
  115. package/templates/__template_hello_world/src/screens/ButtonsScreen.tsx +90 -0
  116. package/templates/__template_hello_world/src/screens/GridScreen.tsx +74 -0
  117. package/templates/__template_hello_world/src/screens/HomeScreen.tsx +70 -0
  118. package/templates/__template_hello_world/src/screens/IconsScreen.tsx +181 -0
  119. package/templates/__template_hello_world/src/screens/MediaScreen.tsx +130 -0
  120. package/templates/__template_hello_world/src/screens/ModalScreen.tsx +379 -0
  121. package/templates/__template_hello_world/src/screens/ProductCardGridScreen.tsx +68 -0
  122. package/templates/__template_hello_world/src/screens/ProductCardScreen.tsx +62 -0
  123. package/templates/__template_hello_world/src/screens/ProductLinkScreen.tsx +215 -0
  124. package/templates/__template_hello_world/src/screens/ProgressIndicatorScreen.tsx +77 -0
  125. package/templates/__template_hello_world/src/screens/QuantityPickerScreen.tsx +76 -0
  126. package/templates/__template_hello_world/src/screens/SpinnerScreen.tsx +63 -0
  127. package/templates/__template_hello_world/src/screens/TypographyScreen.tsx +274 -0
  128. package/templates/__template_hello_world/src/screens/WebViewScreen.tsx +42 -0
  129. package/templates/__template_hello_world/src/types.ts +25 -0
  130. package/templates/__template_snowboardz/src/assets/assets.d.ts +4 -0
  131. package/templates/__template_snowboardz/src/assets/circle-blue.svg +9 -0
  132. package/templates/__template_snowboardz/src/assets/circle-green.svg +9 -0
  133. package/templates/__template_snowboardz/src/assets/circle-purple.svg +9 -0
  134. package/templates/__template_snowboardz/src/assets/circle-rainbow.svg +34 -0
  135. package/templates/__template_snowboardz/src/assets/circle-red.svg +9 -0
  136. package/templates/__template_snowboardz/src/assets/circle-yellow.svg +9 -0
  137. package/templates/__template_snowboardz/src/assets/skill-level-icon-advanced.svg +3 -0
  138. package/templates/__template_snowboardz/src/assets/skill-level-icon-beginner.svg +3 -0
  139. package/templates/__template_snowboardz/src/assets/skill-level-icon-intermediate.svg +3 -0
  140. package/templates/__template_snowboardz/src/components/ColorButton.tsx +79 -0
  141. package/templates/__template_snowboardz/src/components/ColorPicker.tsx +40 -0
  142. package/templates/__template_snowboardz/src/components/EmptyResult.tsx +52 -0
  143. package/templates/__template_snowboardz/src/components/SkillLevelIcon.tsx +44 -0
  144. package/templates/__template_snowboardz/src/components/SkillLevelPicker.tsx +86 -0
  145. package/templates/__template_snowboardz/src/data/TestProducts.graphql +34 -0
  146. package/templates/__template_snowboardz/src/data/TestProducts.graphql.d.ts +108 -0
  147. package/templates/__template_snowboardz/src/hooks/useSnowboardData.tsx +37 -0
  148. package/templates/__template_snowboardz/src/index.tsx +9 -0
  149. package/templates/__template_snowboardz/src/routes.tsx +17 -0
  150. package/templates/__template_snowboardz/src/screens/HomeScreen.tsx +126 -0
  151. package/templates/__template_snowboardz/src/types.ts +12 -0
  152. package/templates/__template_snowboardz/src/utils.ts +17 -0
@@ -0,0 +1,252 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.InteractiveTerminal = void 0;
7
+ const ora_1 = __importDefault(require("ora"));
8
+ const chalk_1 = __importDefault(require("chalk"));
9
+ const open_1 = __importDefault(require("open"));
10
+ const middleware_1 = require("../../../dev-panel/middleware");
11
+ const android_1 = require("./android");
12
+ const simulator_1 = require("./simulator");
13
+ const qr_code_1 = require("./qr-code");
14
+ const deeplink_1 = require("./deeplink");
15
+ const minis_manifest_1 = require("./minis-manifest");
16
+ const binaries_1 = require("./binaries");
17
+ const { stdin } = process;
18
+ function clearTerminal() {
19
+ process.stdout.write('\x1B[2J\x1B[3J\x1B[H');
20
+ }
21
+ const CTRL_C = '\u0003';
22
+ class InteractiveTerminal {
23
+ miniHandle;
24
+ options;
25
+ _loading;
26
+ constructor(options) {
27
+ this.miniHandle = (0, minis_manifest_1.getMiniManifest)().handle;
28
+ this.options = options;
29
+ }
30
+ startWaitingForCommand = () => {
31
+ if (!stdin.setRawMode) {
32
+ console.warn('Non-interactive terminal, keyboard commands are disabled. Please upgrade to Node 12+');
33
+ return;
34
+ }
35
+ stdin.setRawMode(true);
36
+ stdin.resume();
37
+ stdin.setEncoding('utf8');
38
+ stdin.on('data', this.handleKeyPressWrapped);
39
+ };
40
+ stopWaitingForCommand = () => {
41
+ stdin.removeListener('data', this.handleKeyPressWrapped);
42
+ if (!stdin.setRawMode) {
43
+ console.warn('Non-interactive terminal, keyboard commands are disabled. Please upgrade to Node 12+');
44
+ return;
45
+ }
46
+ stdin.setRawMode(false);
47
+ stdin.resume();
48
+ };
49
+ waitForAnyKeyAndPrintInstructions = async () => {
50
+ console.log('Press any key to continue...');
51
+ this.stopWaitingForCommand();
52
+ if (!stdin.setRawMode) {
53
+ console.warn('Non-interactive terminal, keyboard commands are disabled. Please upgrade to Node 12+');
54
+ return;
55
+ }
56
+ stdin.setRawMode(true);
57
+ stdin.resume();
58
+ return new Promise(resolve => process.stdin.once('data', () => {
59
+ this.logInstructions();
60
+ resolve();
61
+ }));
62
+ };
63
+ logInstructions() {
64
+ console.log(`\n› Press ${chalk_1.default.cyan.bold(`a`)} │ Open on Android device or emulator
65
+ › Press ${chalk_1.default.cyan.bold(`i`)} │ Open in iOS simulator`);
66
+ console.log(`\n› Press ${chalk_1.default.cyan.bold(`q`)} │ Print QR code in terminal. Scan to open your Shop Mini on an iOS device with Shop installed
67
+ › Press ${chalk_1.default.cyan.bold(`d`)} │ Open Developer Dashboard in web browser`);
68
+ console.log(`\n› Press ${chalk_1.default.cyan.bold(`?`)} │ Show all commands
69
+ `);
70
+ console.log(chalk_1.default.dim('Press Ctrl+C to exit.'));
71
+ }
72
+ start() {
73
+ this.logInstructions();
74
+ this.startWaitingForCommand();
75
+ }
76
+ handleKeyPressWrapped = async (key) => {
77
+ try {
78
+ this.stopWaitingForCommand();
79
+ await this.handleKeyPress(key);
80
+ }
81
+ catch (err) {
82
+ console.log(`Error while executing command for key: ${key}`);
83
+ console.log(err);
84
+ }
85
+ finally {
86
+ this.startWaitingForCommand();
87
+ }
88
+ };
89
+ loadingStart(logMessage, options = {}) {
90
+ if (this._loading) {
91
+ this.loadingEnd(options.endPreviousLoadingWithStatus, options.endPreviousLoadingWithMessage);
92
+ }
93
+ this._loading = (0, ora_1.default)({ text: logMessage }).start();
94
+ }
95
+ loadingEnd(endState = 'succeed', logMessage) {
96
+ if (!this._loading) {
97
+ return;
98
+ }
99
+ this._loading[endState](logMessage);
100
+ delete this._loading;
101
+ }
102
+ handleKeyPress = async (key) => {
103
+ switch (key) {
104
+ case '?': {
105
+ this.logInstructions();
106
+ break;
107
+ }
108
+ case 'a': {
109
+ clearTerminal();
110
+ if (!(0, android_1.androidHomeExists)()) {
111
+ this.showSetupAndroidHomeInstructions();
112
+ break;
113
+ }
114
+ const device = await (0, android_1.promptForAndroidDevices)();
115
+ if (device) {
116
+ if (device.type === 'emulator') {
117
+ this.loadingStart('Launching emulator');
118
+ const emulatorId = await (0, android_1.maybeLaunchEmulator)(device.name);
119
+ if (!emulatorId) {
120
+ this.loadingEnd('fail', `Couldn't launch emulator ${device.name}`);
121
+ break;
122
+ }
123
+ await this.startAndroidApp(emulatorId);
124
+ }
125
+ else {
126
+ await this.startAndroidApp(device.name);
127
+ }
128
+ }
129
+ else {
130
+ console.log('\nNo connected devices or emulators were found\n');
131
+ console.log(`See ${chalk_1.default.blue.underline.bold('https://developer.android.com/studio/command-line/adb#Enabling')} for instructions on how to enable USB debugging on your device.`);
132
+ console.log(`Or ${chalk_1.default.blue.underline.bold('https://developer.android.com/studio/run/emulator#get-started')} for instructions on how to create an emulator.`);
133
+ this.waitForAnyKeyAndPrintInstructions();
134
+ }
135
+ break;
136
+ }
137
+ case 'i': {
138
+ clearTerminal();
139
+ const simulator = await (0, simulator_1.promptForSimulator)();
140
+ if (simulator) {
141
+ this.loadingStart('Launching simulator');
142
+ await (0, simulator_1.bootSimulator)(simulator.udid);
143
+ const installedShopVersion = await (0, simulator_1.getInstalledShopVersion)(simulator.udid);
144
+ if (installedShopVersion) {
145
+ this.loadingEnd();
146
+ // We assume that the version being used in the simulator matches the biggest version in the downloads folder
147
+ // because version returned by the simulator does not include build numbers.
148
+ const upgradedVersion = await (0, binaries_1.maybePromptBinaryUpgrade)('ios', {
149
+ onDownloadStart: () => {
150
+ this.loadingStart('Downloading Shop (0%)');
151
+ },
152
+ onProgress: progress => {
153
+ this._loading.text = `Downloading Shop (${progress}%)`;
154
+ },
155
+ });
156
+ if (upgradedVersion) {
157
+ this.loadingStart('Installing Shop');
158
+ await (0, simulator_1.installShopInSimulator)(simulator.udid, upgradedVersion);
159
+ }
160
+ }
161
+ else {
162
+ this.loadingStart('Downloading Shop (0%)');
163
+ const downloadedVersion = await (0, binaries_1.downloadBinary)('ios', {
164
+ onProgress: progress => {
165
+ this._loading.text = `Downloading Shop (${progress}%)`;
166
+ },
167
+ });
168
+ this.loadingStart('Installing Shop\n ↪ You can skip onboarding, or log in with your existing Shop account (optional).');
169
+ await (0, simulator_1.installShopInSimulator)(simulator.udid, downloadedVersion);
170
+ }
171
+ this.loadingStart('Opening Shop');
172
+ await (0, simulator_1.deeplinkToSimulator)(simulator.udid, await (0, deeplink_1.getDeeplink)(this.miniHandle, this.options));
173
+ this.loadingEnd();
174
+ }
175
+ else {
176
+ console.log('\nNo simulator was selected\n');
177
+ }
178
+ break;
179
+ }
180
+ case 'q': {
181
+ await this.printDeeplinkQRCode();
182
+ break;
183
+ }
184
+ case 'd': {
185
+ // 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?
186
+ // 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
187
+ const paramsObj = {
188
+ bundleUrl: await (0, deeplink_1.getBundleUrl)(this.options),
189
+ deepLink: await (0, deeplink_1.getDeeplink)(this.miniHandle, this.options, true),
190
+ };
191
+ const searchParams = `?${new URLSearchParams(paramsObj).toString()}`;
192
+ (0, open_1.default)(`${middleware_1.DEV_PANEL_BASE_URL}${searchParams}`);
193
+ break;
194
+ }
195
+ case CTRL_C: {
196
+ this.stopWaitingForCommand();
197
+ process.exit(0);
198
+ // @ts-ignore
199
+ break;
200
+ }
201
+ default: {
202
+ break;
203
+ }
204
+ }
205
+ };
206
+ async showSetupAndroidHomeInstructions() {
207
+ console.warn(chalk_1.default.red("ANDROID_HOME environment variable is not set. Set Android SDK path to continue. Instructions on how to set it can be found on Android's developer docs."));
208
+ console.log(`See ${chalk_1.default.blue.underline.bold('https://developer.android.com/studio/command-line/variables')}`);
209
+ await this.waitForAnyKeyAndPrintInstructions();
210
+ }
211
+ async startAndroidApp(deviceId) {
212
+ const installedShopVersion = await (0, android_1.getInstalledShopVersion)(deviceId);
213
+ if (installedShopVersion) {
214
+ this.loadingEnd();
215
+ // We assume that the version being used in the emulator matches the biggest version in the downloads folder
216
+ // because version returned by the emulator does not include build numbers.
217
+ const upgradedVersion = await (0, binaries_1.maybePromptBinaryUpgrade)('android', {
218
+ onDownloadStart: () => {
219
+ this.loadingStart('Downloading Shop (0%)');
220
+ },
221
+ onProgress: progress => {
222
+ this._loading.text = `Downloading Shop (${progress}%)`;
223
+ },
224
+ });
225
+ if (upgradedVersion) {
226
+ this.loadingStart('Installing Shop');
227
+ await (0, android_1.installShopInEmulator)(deviceId, upgradedVersion);
228
+ }
229
+ }
230
+ else {
231
+ this.loadingStart('Downloading Shop (0%)');
232
+ const downloadedVersion = await (0, binaries_1.downloadBinary)('android', {
233
+ onProgress: progress => {
234
+ this._loading.text = `Downloading Shop (${progress}%)`;
235
+ },
236
+ });
237
+ this.loadingStart('Installing Shop\n ↪ You can skip onboarding, or log in with your existing Shop account (optional).');
238
+ await (0, android_1.installShopInEmulator)(deviceId, downloadedVersion);
239
+ }
240
+ this.loadingStart('Opening Shop');
241
+ await (0, android_1.connectDevelopmentServer)(deviceId);
242
+ await (0, android_1.deeplinkToEmulator)(deviceId, await (0, deeplink_1.getDeeplink)(this.miniHandle, this.options));
243
+ this.loadingEnd();
244
+ }
245
+ async printDeeplinkQRCode() {
246
+ console.log('\n');
247
+ await (0, qr_code_1.printQRCode)(await (0, deeplink_1.getDeeplink)(this.miniHandle, this.options, true));
248
+ console.log('Scan the QR code to open Shop Mini on your device (requires the Shop app to be installed)\n');
249
+ }
250
+ }
251
+ exports.InteractiveTerminal = InteractiveTerminal;
252
+ //# sourceMappingURL=interactive-terminal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interactive-terminal.js","sourceRoot":"","sources":["../../../../src/commands/dev/utils/interactive-terminal.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import MetroConfig from 'metro-config';
2
+ export declare function getMetroConfig(): Promise<MetroConfig.ConfigT>;
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getMetroConfig = void 0;
7
+ const path_1 = __importDefault(require("path"));
8
+ const cli_plugin_metro_1 = require("@react-native-community/cli-plugin-metro");
9
+ const cli_1 = require("@react-native-community/cli");
10
+ const metro_reporter_1 = require("./metro-reporter");
11
+ const metro_server_middleware_1 = require("./metro-server-middleware");
12
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
13
+ const defaults = require('metro-config/src/defaults/defaults');
14
+ // modified so that metro uses the mini dependency path and not the CLI dependency when using symlinks to run the CLI (yarn link)
15
+ defaults.moduleSystem = `${process.cwd()}/node_modules/metro-runtime/src/polyfills/require.js`;
16
+ async function getMetroConfig() {
17
+ const metroConfig = (await (0, cli_plugin_metro_1.loadMetroConfig)((0, cli_1.loadConfig)()));
18
+ // @ts-ignore - @types/metro is outdated and missing this attribute: https://facebook.github.io/metro/docs/configuration/#emptymodulepath
19
+ // Fix required when using yarn link to run a local version of the CLI in a mini
20
+ metroConfig.resolver.emptyModulePath = path_1.default.join(metroConfig.projectRoot, 'node_modules', 'metro-runtime/src/modules/empty-module.js');
21
+ // @ts-ignore
22
+ // Fix required when using yarn link to run a local version of the CLI in a mini
23
+ metroConfig.transformer.asyncRequireModulePath = path_1.default.join(metroConfig.projectRoot, 'node_modules', 'metro-runtime/src/modules/asyncRequire');
24
+ (0, metro_server_middleware_1.injectMetroServerMiddleware)(metroConfig);
25
+ return {
26
+ ...metroConfig,
27
+ reporter: (0, metro_reporter_1.createMinisMetroReporter)(),
28
+ };
29
+ }
30
+ exports.getMetroConfig = getMetroConfig;
31
+ //# sourceMappingURL=metro-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metro-config.js","sourceRoot":"","sources":["../../../../../src/commands/dev/utils/metro/metro-config.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAuB;AAGvB,+EAAwE;AACxE,qDAAsD;AAEtD,qDAAyD;AACzD,uEAAqE;AAErE,8DAA8D;AAC9D,MAAM,QAAQ,GAAG,OAAO,CAAC,oCAAoC,CAAC,CAAA;AAC9D,iIAAiI;AACjI,QAAQ,CAAC,YAAY,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,sDAAsD,CAAA;AAEvF,KAAK,UAAU,cAAc;IAClC,MAAM,WAAW,GAAG,CAAC,MAAM,IAAA,kCAAe,EACxC,IAAA,gBAAU,GAAE,CACb,CAAmC,CAAA;IAEpC,yIAAyI;IACzI,gFAAgF;IAChF,WAAW,CAAC,QAAQ,CAAC,eAAe,GAAG,cAAI,CAAC,IAAI,CAC9C,WAAW,CAAC,WAAW,EACvB,cAAc,EACd,2CAA2C,CAC5C,CAAA;IAED,aAAa;IACb,gFAAgF;IAChF,WAAW,CAAC,WAAW,CAAC,sBAAsB,GAAG,cAAI,CAAC,IAAI,CACxD,WAAW,CAAC,WAAW,EACvB,cAAc,EACd,wCAAwC,CACzC,CAAA;IAED,IAAA,qDAA2B,EAAC,WAAW,CAAC,CAAA;IAExC,OAAO;QACL,GAAG,WAAW;QACd,QAAQ,EAAE,IAAA,yCAAwB,GAAE;KACrC,CAAA;AACH,CAAC;AA3BD,wCA2BC"}
@@ -0,0 +1,14 @@
1
+ import TerminalReporter, { TerminalReportableEvent } from 'metro/src/lib/TerminalReporter';
2
+ declare const MetroTerminalReporter: typeof TerminalReporter.TerminalReporter;
3
+ /**
4
+ * Custom metro reporter that customises the output to the terminal of minis.
5
+ *
6
+ * Reference:
7
+ * Default reporter: https://github.com/facebook/metro/blob/main/packages/metro/src/lib/TerminalReporter.js
8
+ * Expo example: https://github.com/expo/expo/blob/main/packages/%40expo/cli/src/start/server/metro/MetroTerminalReporter.ts
9
+ */
10
+ declare class MinisMetroReporter extends MetroTerminalReporter {
11
+ _log(event: TerminalReportableEvent): void;
12
+ }
13
+ export declare function createMinisMetroReporter(): MinisMetroReporter;
14
+ export {};
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.createMinisMetroReporter = void 0;
7
+ const TerminalReporter_1 = __importDefault(require("metro/src/lib/TerminalReporter"));
8
+ const metro_core_1 = require("metro-core");
9
+ const MetroTerminalReporter = TerminalReporter_1.default;
10
+ /**
11
+ * Custom metro reporter that customises the output to the terminal of minis.
12
+ *
13
+ * Reference:
14
+ * Default reporter: https://github.com/facebook/metro/blob/main/packages/metro/src/lib/TerminalReporter.js
15
+ * Expo example: https://github.com/expo/expo/blob/main/packages/%40expo/cli/src/start/server/metro/MetroTerminalReporter.ts
16
+ */
17
+ class MinisMetroReporter extends MetroTerminalReporter {
18
+ _log(event) {
19
+ switch (event.type) {
20
+ case 'initialize_started':
21
+ case 'dep_graph_loading': {
22
+ // do not log metro logo and welcome on start
23
+ return;
24
+ }
25
+ }
26
+ // @ts-ignore
27
+ super._log(event);
28
+ }
29
+ }
30
+ function createMinisMetroReporter() {
31
+ return new MinisMetroReporter(new metro_core_1.Terminal(process.stdout));
32
+ }
33
+ exports.createMinisMetroReporter = createMinisMetroReporter;
34
+ //# sourceMappingURL=metro-reporter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metro-reporter.js","sourceRoot":"","sources":["../../../../../src/commands/dev/utils/metro/metro-reporter.ts"],"names":[],"mappings":";;;;;;AAAA,sFAGuC;AACvC,2CAAmC;AAEnC,MAAM,qBAAqB,GACzB,0BAA0D,CAAA;AAE5D;;;;;;GAMG;AACH,MAAM,kBAAmB,SAAQ,qBAAqB;IACpD,IAAI,CAAC,KAA8B;QACjC,QAAQ,KAAK,CAAC,IAAI,EAAE;YAClB,KAAK,oBAAoB,CAAC;YAC1B,KAAK,mBAAmB,CAAC,CAAC;gBACxB,6CAA6C;gBAC7C,OAAM;aACP;SACF;QAED,aAAa;QACb,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACnB,CAAC;CACF;AAED,SAAgB,wBAAwB;IACtC,OAAO,IAAI,kBAAkB,CAAC,IAAI,qBAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAA;AAC7D,CAAC;AAFD,4DAEC"}
@@ -0,0 +1,6 @@
1
+ import MetroConfig from 'metro-config';
2
+ /**
3
+ * mutates the received metro config param to inject a custom middleware.
4
+ * needed because of https://github.com/facebook/metro/issues/660
5
+ */
6
+ export declare function injectMetroServerMiddleware(metroConfig: MetroConfig.ConfigT): void;
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.injectMetroServerMiddleware = void 0;
7
+ const connect_1 = __importDefault(require("connect"));
8
+ const middleware_1 = require("../../../../dev-panel/middleware");
9
+ /**
10
+ * mutates the received metro config param to inject a custom middleware.
11
+ * needed because of https://github.com/facebook/metro/issues/660
12
+ */
13
+ function injectMetroServerMiddleware(metroConfig) {
14
+ const middleware = (0, connect_1.default)()
15
+ .use('/symbolicate', rawBodyMiddleware)
16
+ .use('/dev_panel', middleware_1.devPanelMiddleware)
17
+ .use('/status', statusPageMiddleware);
18
+ const customEnhanceMiddleware = metroConfig.server.enhanceMiddleware;
19
+ // @ts-ignore
20
+ metroConfig.server.enhanceMiddleware = (metroMiddleware, server) => {
21
+ if (customEnhanceMiddleware) {
22
+ metroMiddleware = customEnhanceMiddleware(metroMiddleware, server); // eslint-disable-line no-param-reassign
23
+ }
24
+ return middleware.use(metroMiddleware);
25
+ };
26
+ }
27
+ exports.injectMetroServerMiddleware = injectMetroServerMiddleware;
28
+ // reference https://github.com/react-native-community/cli/blob/main/packages/cli-server-api/src/rawBodyMiddleware.ts
29
+ function rawBodyMiddleware(req, _res, next) {
30
+ ;
31
+ req.rawBody = '';
32
+ req.setEncoding('utf8');
33
+ req.on('data', (chunk) => {
34
+ ;
35
+ req.rawBody += chunk;
36
+ });
37
+ req.on('end', () => {
38
+ next();
39
+ });
40
+ }
41
+ // reference https://github.com/react-native-community/cli/blob/86df104250608977130378b9b59d8a9e12d0212a/packages/cli-server-api/src/statusPageMiddleware.ts
42
+ function statusPageMiddleware(_req, res) {
43
+ res.end('packager-status:running');
44
+ }
45
+ //# sourceMappingURL=metro-server-middleware.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metro-server-middleware.js","sourceRoot":"","sources":["../../../../../src/commands/dev/utils/metro/metro-server-middleware.ts"],"names":[],"mappings":";;;;;;AAEA,sDAA6B;AAG7B,iEAAmE;AAEnE;;;GAGG;AACH,SAAgB,2BAA2B,CAAC,WAAgC;IAC1E,MAAM,UAAU,GAAG,IAAA,iBAAO,GAAE;SACzB,GAAG,CAAC,cAAc,EAAE,iBAAiB,CAAC;SACtC,GAAG,CAAC,YAAY,EAAE,+BAAkB,CAAC;SACrC,GAAG,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAA;IAEvC,MAAM,uBAAuB,GAAG,WAAW,CAAC,MAAM,CAAC,iBAAiB,CAAA;IAEpE,aAAa;IACb,WAAW,CAAC,MAAM,CAAC,iBAAiB,GAAG,CACrC,eAAoB,EACpB,MAAW,EACX,EAAE;QACF,IAAI,uBAAuB,EAAE;YAC3B,eAAe,GAAG,uBAAuB,CAAC,eAAe,EAAE,MAAM,CAAC,CAAA,CAAC,wCAAwC;SAC5G;QACD,OAAO,UAAU,CAAC,GAAG,CAAC,eAAe,CAAC,CAAA;IACxC,CAAC,CAAA;AACH,CAAC;AAlBD,kEAkBC;AAED,qHAAqH;AACrH,SAAS,iBAAiB,CACxB,GAAyB,EACzB,IAAyB,EACzB,IAAyB;IAEzB,CAAC;IAAC,GAAgD,CAAC,OAAO,GAAG,EAAE,CAAA;IAC/D,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;IAEvB,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;QAC/B,CAAC;QAAC,GAAgD,CAAC,OAAO,IAAI,KAAK,CAAA;IACrE,CAAC,CAAC,CAAA;IAEF,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;QACjB,IAAI,EAAE,CAAA;IACR,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,4JAA4J;AAC5J,SAAS,oBAAoB,CAC3B,IAA0B,EAC1B,GAAwB;IAExB,GAAG,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAA;AACpC,CAAC"}
@@ -0,0 +1,2 @@
1
+ import type { DevCommandOptions } from '../..';
2
+ export declare function runMetro(options?: DevCommandOptions): Promise<void>;
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.runMetro = void 0;
7
+ const metro_1 = __importDefault(require("metro"));
8
+ const metro_config_1 = require("./metro-config");
9
+ const DEFAULT_OPTIONS = {
10
+ resetCache: false,
11
+ };
12
+ async function runMetro(options = DEFAULT_OPTIONS) {
13
+ const { host, ...metroOptions } = options;
14
+ const metroServerConfig = {
15
+ ...(await (0, metro_config_1.getMetroConfig)()),
16
+ metroOptions,
17
+ };
18
+ await metro_1.default.runServer(metroServerConfig, { host });
19
+ if (host !== 'localhost') {
20
+ await metro_1.default.runServer(metroServerConfig, { host: 'localhost' });
21
+ }
22
+ }
23
+ exports.runMetro = runMetro;
24
+ //# sourceMappingURL=metro-server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metro-server.js","sourceRoot":"","sources":["../../../../../src/commands/dev/utils/metro/metro-server.ts"],"names":[],"mappings":";;;;;;AAAA,kDAAyB;AAIzB,iDAA6C;AAE7C,MAAM,eAAe,GAAG;IACtB,UAAU,EAAE,KAAK;CACT,CAAA;AAEH,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,IAAA,6BAAc,GAAE,CAAC;QAC3B,YAAY;KACb,CAAA;IAED,MAAM,eAAK,CAAC,SAAS,CAAC,iBAAiB,EAAE,EAAC,IAAI,EAAC,CAAC,CAAA;IAEhD,IAAI,IAAI,KAAK,WAAW,EAAE;QACxB,MAAM,eAAK,CAAC,SAAS,CAAC,iBAAiB,EAAE,EAAC,IAAI,EAAE,WAAW,EAAC,CAAC,CAAA;KAC9D;AACH,CAAC;AAZD,4BAYC"}
@@ -0,0 +1 @@
1
+ export declare function getMiniManifest(): any;
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getMiniManifest = void 0;
4
+ function getMiniManifest() {
5
+ const manifestPath = `${process.cwd()}/src/manifest.json`;
6
+ let manifest;
7
+ try {
8
+ manifest = require(manifestPath);
9
+ }
10
+ catch {
11
+ if (process.env.MOCK_MANIFEST) {
12
+ manifest = {
13
+ handle: 'mocked',
14
+ name: 'mocked',
15
+ };
16
+ }
17
+ else {
18
+ throw new Error(`Failed to load manifest file from ${manifestPath}`);
19
+ }
20
+ }
21
+ return manifest;
22
+ }
23
+ exports.getMiniManifest = getMiniManifest;
24
+ //# sourceMappingURL=minis-manifest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"minis-manifest.js","sourceRoot":"","sources":["../../../../src/commands/dev/utils/minis-manifest.ts"],"names":[],"mappings":";;;AAAA,SAAgB,eAAe;IAC7B,MAAM,YAAY,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,oBAAoB,CAAA;IACzD,IAAI,QAAa,CAAA;IACjB,IAAI;QACF,QAAQ,GAAG,OAAO,CAAC,YAAY,CAAC,CAAA;KACjC;IAAC,MAAM;QACN,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE;YAC7B,QAAQ,GAAG;gBACT,MAAM,EAAE,QAAQ;gBAChB,IAAI,EAAE,QAAQ;aACf,CAAA;SACF;aAAM;YACL,MAAM,IAAI,KAAK,CAAC,qCAAqC,YAAY,EAAE,CAAC,CAAA;SACrE;KACF;IACD,OAAO,QAAQ,CAAA;AACjB,CAAC;AAhBD,0CAgBC"}
@@ -0,0 +1 @@
1
+ export declare function printQRCode(content: string): Promise<void>;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.printQRCode = void 0;
7
+ const qrcode_terminal_1 = __importDefault(require("qrcode-terminal"));
8
+ async function printQRCode(content) {
9
+ qrcode_terminal_1.default.generate(content, { small: true }, (code) => console.log(code));
10
+ }
11
+ exports.printQRCode = printQRCode;
12
+ //# sourceMappingURL=qr-code.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"qr-code.js","sourceRoot":"","sources":["../../../../src/commands/dev/utils/qr-code.ts"],"names":[],"mappings":";;;;;;AAAA,sEAA4C;AAErC,KAAK,UAAU,WAAW,CAAC,OAAe;IAC/C,yBAAc,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAC,KAAK,EAAE,IAAI,EAAC,EAAE,CAAC,IAAY,EAAE,EAAE,CAC/D,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAClB,CAAA;AACH,CAAC;AAJD,kCAIC"}
@@ -0,0 +1,19 @@
1
+ interface SimCtlListDevice {
2
+ dataPath: string;
3
+ dataPathSize: number;
4
+ logPath: string;
5
+ udid: string;
6
+ isAvailable: boolean;
7
+ deviceTypeIdentifier: string;
8
+ state: string;
9
+ name: string;
10
+ }
11
+ interface EnhancedSimCtlListDevice extends SimCtlListDevice {
12
+ osVersion: string;
13
+ }
14
+ export declare function promptForSimulator(): Promise<EnhancedSimCtlListDevice | null | undefined>;
15
+ export declare function getInstalledShopVersion(udid: string): Promise<string | null>;
16
+ export declare function bootSimulator(udid: string): Promise<void>;
17
+ export declare function installShopInSimulator(udid: string, version: string): Promise<void>;
18
+ export declare function deeplinkToSimulator(udid: string, deeplink: string): Promise<void>;
19
+ export {};
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.deeplinkToSimulator = exports.installShopInSimulator = exports.bootSimulator = exports.getInstalledShopVersion = exports.promptForSimulator = void 0;
7
+ const lodash_1 = __importDefault(require("lodash"));
8
+ const chalk_1 = __importDefault(require("chalk"));
9
+ const prompts_1 = __importDefault(require("prompts"));
10
+ const exec_async_child_process_1 = require("../../utils/exec-async-child-process");
11
+ const binaries_1 = require("./binaries");
12
+ async function getSelectableSimulators() {
13
+ const { stdout } = await (0, exec_async_child_process_1.execAsync)('xcrun simctl list devices --json');
14
+ const simctlOutput = JSON.parse(stdout.join(''));
15
+ const simulators = Object.keys(simctlOutput.devices)
16
+ .filter(runtime => runtime.includes('iOS'))
17
+ .reduce((devices, runtime) => [
18
+ ...devices,
19
+ ...simctlOutput.devices[runtime].map(device => ({
20
+ ...device,
21
+ osVersion: lodash_1.default.last(runtime.split('.')),
22
+ })),
23
+ ], []);
24
+ return simulators.filter(device => device.isAvailable && device.name.includes('iPhone'));
25
+ }
26
+ async function promptForSimulator() {
27
+ const devices = await getSelectableSimulators();
28
+ const sortedDevices = [
29
+ ...devices.filter(device => device.state === 'Booted'),
30
+ ...devices.filter(device => device.state !== 'Booted'),
31
+ ];
32
+ const { value } = await (0, prompts_1.default)({
33
+ type: 'autocomplete',
34
+ name: 'value',
35
+ limit: 11,
36
+ message: 'Select a simulator',
37
+ choices: sortedDevices.map(item => {
38
+ const isActive = item.state === 'Booted';
39
+ const format = isActive ? chalk_1.default.bold : (text) => text;
40
+ return {
41
+ title: `${format(item.name)} ${chalk_1.default.dim(`(${item.osVersion})`)}`,
42
+ value: item.udid,
43
+ };
44
+ }),
45
+ suggest: (input, choices) => {
46
+ const regex = new RegExp(input, 'i');
47
+ return choices.filter((choice) => regex.test(choice.title));
48
+ },
49
+ });
50
+ return value ? devices.find(device => device.udid === value) : null;
51
+ }
52
+ exports.promptForSimulator = promptForSimulator;
53
+ async function getInstalledShopVersion(udid) {
54
+ try {
55
+ const { stdout } = await (0, exec_async_child_process_1.execAsync)(`defaults read $(xcrun simctl get_app_container ${udid} com.shopifyinternal.arrive)/Info CFBundleShortVersionString`);
56
+ const installedVersion = stdout[0]; // 2.86.0-snapshot+1674205229
57
+ return installedVersion.split('-')[0];
58
+ }
59
+ catch {
60
+ return null;
61
+ }
62
+ }
63
+ exports.getInstalledShopVersion = getInstalledShopVersion;
64
+ async function bootSimulator(udid) {
65
+ try {
66
+ await (0, exec_async_child_process_1.execAsync)(`xcrun simctl boot ${udid}`);
67
+ }
68
+ catch (error) {
69
+ if (!error.stderr?.match(/Unable to boot device in current state: Booted/)) {
70
+ throw error;
71
+ }
72
+ }
73
+ await (0, exec_async_child_process_1.execAsync)(`open -a Simulator.app --args -CurrentDeviceUDID ${udid}`);
74
+ }
75
+ exports.bootSimulator = bootSimulator;
76
+ async function installShopInSimulator(udid, version) {
77
+ const fileName = (0, binaries_1.versionToBinaryFileName)(version, 'ios');
78
+ await (0, exec_async_child_process_1.execAsync)(`unzip -o ${binaries_1.BINARIES_PATH}/${fileName} -d ${binaries_1.BINARIES_PATH}`);
79
+ await (0, exec_async_child_process_1.execAsync)(`rm -rf ${binaries_1.BINARIES_PATH}/__MACOSX`); // weird directory that gets created after unzipping on macos
80
+ const shopAppPath = `${binaries_1.BINARIES_PATH}/Shop.app`;
81
+ await (0, exec_async_child_process_1.execAsync)(`xcrun simctl install ${udid} ${shopAppPath}`);
82
+ }
83
+ exports.installShopInSimulator = installShopInSimulator;
84
+ async function deeplinkToSimulator(udid, deeplink) {
85
+ // TODO: deeplink doesn't seem to be working in iphone SE
86
+ await (0, exec_async_child_process_1.execAsync)(`xcrun simctl openurl ${udid} ${deeplink}`);
87
+ }
88
+ exports.deeplinkToSimulator = deeplinkToSimulator;
89
+ //# sourceMappingURL=simulator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"simulator.js","sourceRoot":"","sources":["../../../../src/commands/dev/utils/simulator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export declare function withRetries<T>(getResult: () => Promise<T>, isResultReady?: (result: T) => boolean, { maxRetries, timeBetweenRetries }?: {
2
+ timeBetweenRetries: number;
3
+ maxRetries: number;
4
+ }): Promise<T>;