@shopify/shop-minis-cli 0.0.37 → 0.0.82

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 (362) hide show
  1. package/.eslintrc.cjs +78 -0
  2. package/.vscode/extensions.json +3 -0
  3. package/.vscode/launch.json +29 -0
  4. package/.vscode/settings.json +8 -0
  5. package/.vscode/shop-minis-cli.code-workspace +8 -0
  6. package/build/commands/cancel-submission/cancel-submission.d.ts +1 -0
  7. package/build/commands/cancel-submission/cancel-submission.js +57 -0
  8. package/build/commands/cancel-submission/cancel-submission.js.map +1 -0
  9. package/build/commands/cancel-submission/index.d.ts +2 -0
  10. package/build/commands/cancel-submission/index.js +18 -0
  11. package/build/commands/cancel-submission/index.js.map +1 -0
  12. package/build/commands/cancel-submission/types.d.ts +3 -0
  13. package/build/commands/cancel-submission/types.js +2 -0
  14. package/build/commands/cancel-submission/types.js.map +1 -0
  15. package/build/commands/check-submission/index.d.ts +2 -0
  16. package/build/commands/check-submission/index.js +55 -0
  17. package/build/commands/check-submission/index.js.map +1 -0
  18. package/build/commands/check-submission/types.d.ts +3 -0
  19. package/build/commands/check-submission/types.js +2 -0
  20. package/build/commands/check-submission/types.js.map +1 -0
  21. package/build/commands/codemod/index.d.ts +3 -0
  22. package/build/commands/codemod/index.js +47 -0
  23. package/build/commands/codemod/index.js.map +1 -0
  24. package/build/commands/codemod/releases/index.d.ts +7 -0
  25. package/build/commands/codemod/releases/index.js +58 -0
  26. package/build/commands/codemod/releases/index.js.map +1 -0
  27. package/build/commands/codemod/releases/types.d.ts +9 -0
  28. package/build/commands/codemod/releases/types.js +2 -0
  29. package/build/commands/codemod/releases/types.js.map +1 -0
  30. package/build/commands/codemod/releases/v0-0-42/index.d.ts +3 -0
  31. package/build/commands/codemod/releases/v0-0-42/index.js +46 -0
  32. package/build/commands/codemod/releases/v0-0-42/index.js.map +1 -0
  33. package/build/commands/codemod/releases/v0-0-42/reset-files.d.ts +7 -0
  34. package/build/commands/codemod/releases/v0-0-42/reset-files.js +83 -0
  35. package/build/commands/codemod/releases/v0-0-42/reset-files.js.map +1 -0
  36. package/build/commands/codemod/releases/v0-0-43.d.ts +3 -0
  37. package/build/commands/codemod/releases/v0-0-43.js +32 -0
  38. package/build/commands/codemod/releases/v0-0-43.js.map +1 -0
  39. package/build/commands/codemod/releases/v0-0-44.d.ts +3 -0
  40. package/build/commands/codemod/releases/v0-0-44.js +214 -0
  41. package/build/commands/codemod/releases/v0-0-44.js.map +1 -0
  42. package/build/commands/codemod/releases/v0-0-45.d.ts +3 -0
  43. package/build/commands/codemod/releases/v0-0-45.js +23 -0
  44. package/build/commands/codemod/releases/v0-0-45.js.map +1 -0
  45. package/build/commands/codemod/releases/v0-0-50.d.ts +3 -0
  46. package/build/commands/codemod/releases/v0-0-50.js +34 -0
  47. package/build/commands/codemod/releases/v0-0-50.js.map +1 -0
  48. package/build/commands/codemod/releases/v0-0-54.d.ts +3 -0
  49. package/build/commands/codemod/releases/v0-0-54.js +70 -0
  50. package/build/commands/codemod/releases/v0-0-54.js.map +1 -0
  51. package/build/commands/codemod/releases/v0-0-56.d.ts +3 -0
  52. package/build/commands/codemod/releases/v0-0-56.js +48 -0
  53. package/build/commands/codemod/releases/v0-0-56.js.map +1 -0
  54. package/build/commands/codemod/releases/v0-0-57.d.ts +3 -0
  55. package/build/commands/codemod/releases/v0-0-57.js +41 -0
  56. package/build/commands/codemod/releases/v0-0-57.js.map +1 -0
  57. package/build/commands/codemod/releases/v0-0-58.d.ts +3 -0
  58. package/build/commands/codemod/releases/v0-0-58.js +68 -0
  59. package/build/commands/codemod/releases/v0-0-58.js.map +1 -0
  60. package/build/commands/codemod/releases/v0-0-61.d.ts +3 -0
  61. package/build/commands/codemod/releases/v0-0-61.js +30 -0
  62. package/build/commands/codemod/releases/v0-0-61.js.map +1 -0
  63. package/build/commands/codemod/releases/v0-0-63.d.ts +3 -0
  64. package/build/commands/codemod/releases/v0-0-63.js +42 -0
  65. package/build/commands/codemod/releases/v0-0-63.js.map +1 -0
  66. package/build/commands/codemod/releases/v0-0-64.d.ts +3 -0
  67. package/build/commands/codemod/releases/v0-0-64.js +47 -0
  68. package/build/commands/codemod/releases/v0-0-64.js.map +1 -0
  69. package/build/commands/codemod/releases/v0-0-75.d.ts +3 -0
  70. package/build/commands/codemod/releases/v0-0-75.js +30 -0
  71. package/build/commands/codemod/releases/v0-0-75.js.map +1 -0
  72. package/build/commands/codemod/releases/v0-0-76.d.ts +3 -0
  73. package/build/commands/codemod/releases/v0-0-76.js +32 -0
  74. package/build/commands/codemod/releases/v0-0-76.js.map +1 -0
  75. package/build/commands/codemod/releases/v0-0-77.d.ts +3 -0
  76. package/build/commands/codemod/releases/v0-0-77.js +39 -0
  77. package/build/commands/codemod/releases/v0-0-77.js.map +1 -0
  78. package/build/commands/codemod/releases/v0-0-79.d.ts +3 -0
  79. package/build/commands/codemod/releases/v0-0-79.js +35 -0
  80. package/build/commands/codemod/releases/v0-0-79.js.map +1 -0
  81. package/build/commands/config.d.ts +14 -0
  82. package/build/commands/config.js +42 -0
  83. package/build/commands/config.js.map +1 -0
  84. package/build/commands/create-mini/index.js +84 -68
  85. package/build/commands/create-mini/index.js.map +1 -1
  86. package/build/commands/create-mini/utils/template-app.d.ts +1 -1
  87. package/build/commands/create-mini/utils/template-app.js +38 -38
  88. package/build/commands/create-mini/utils/template-app.js.map +1 -1
  89. package/build/commands/dev/index.d.ts +3 -0
  90. package/build/commands/dev/index.js +51 -22
  91. package/build/commands/dev/index.js.map +1 -1
  92. package/build/commands/dev/utils/android.d.ts +6 -4
  93. package/build/commands/dev/utils/android.js +55 -67
  94. package/build/commands/dev/utils/android.js.map +1 -1
  95. package/build/commands/dev/utils/binaries.d.ts +2 -80
  96. package/build/commands/dev/utils/binaries.js +10 -166
  97. package/build/commands/dev/utils/binaries.js.map +1 -1
  98. package/build/commands/dev/utils/build-type.d.ts +2 -0
  99. package/build/commands/dev/utils/build-type.js +14 -0
  100. package/build/commands/dev/utils/build-type.js.map +1 -0
  101. package/build/commands/dev/utils/deeplink.d.ts +3 -3
  102. package/build/commands/dev/utils/deeplink.js +13 -18
  103. package/build/commands/dev/utils/deeplink.js.map +1 -1
  104. package/build/commands/dev/utils/interactive-terminal.d.ts +4 -2
  105. package/build/commands/dev/utils/interactive-terminal.js +66 -107
  106. package/build/commands/dev/utils/interactive-terminal.js.map +1 -1
  107. package/build/commands/dev/utils/metro/metro-config.js +17 -20
  108. package/build/commands/dev/utils/metro/metro-config.js.map +1 -1
  109. package/build/commands/dev/utils/metro/metro-reporter.d.ts +3 -4
  110. package/build/commands/dev/utils/metro/metro-reporter.js +6 -13
  111. package/build/commands/dev/utils/metro/metro-reporter.js.map +1 -1
  112. package/build/commands/dev/utils/metro/metro-server-middleware.d.ts +1 -0
  113. package/build/commands/dev/utils/metro/metro-server-middleware.js +11 -12
  114. package/build/commands/dev/utils/metro/metro-server-middleware.js.map +1 -1
  115. package/build/commands/dev/utils/metro/metro-server.d.ts +2 -2
  116. package/build/commands/dev/utils/metro/metro-server.js +7 -14
  117. package/build/commands/dev/utils/metro/metro-server.js.map +1 -1
  118. package/build/commands/dev/utils/network.d.ts +20 -0
  119. package/build/commands/dev/utils/network.js +122 -0
  120. package/build/commands/dev/utils/network.js.map +1 -0
  121. package/build/commands/dev/utils/platform.d.ts +18 -0
  122. package/build/commands/dev/utils/platform.js +41 -0
  123. package/build/commands/dev/utils/platform.js.map +1 -0
  124. package/build/commands/dev/utils/prompt-binary-upgrade.d.ts +1 -0
  125. package/build/commands/dev/utils/prompt-binary-upgrade.js +12 -0
  126. package/build/commands/dev/utils/prompt-binary-upgrade.js.map +1 -0
  127. package/build/commands/dev/utils/qr-code.js +3 -10
  128. package/build/commands/dev/utils/qr-code.js.map +1 -1
  129. package/build/commands/dev/utils/simulator.d.ts +5 -2
  130. package/build/commands/dev/utils/simulator.js +43 -37
  131. package/build/commands/dev/utils/simulator.js.map +1 -1
  132. package/build/commands/dev/utils/start-app/config.d.ts +5 -0
  133. package/build/commands/dev/utils/start-app/config.js +25 -0
  134. package/build/commands/dev/utils/start-app/config.js.map +1 -0
  135. package/build/commands/dev/utils/start-app/start-app-with-options.d.ts +2 -0
  136. package/build/commands/dev/utils/start-app/start-app-with-options.js +94 -0
  137. package/build/commands/dev/utils/start-app/start-app-with-options.js.map +1 -0
  138. package/build/commands/dev/utils/start-app/start-app.d.ts +2 -0
  139. package/build/commands/dev/utils/start-app/start-app.js +10 -0
  140. package/build/commands/dev/utils/start-app/start-app.js.map +1 -0
  141. package/build/commands/dev/utils/start-app/types.d.ts +20 -0
  142. package/build/commands/dev/utils/start-app/types.js +2 -0
  143. package/build/commands/dev/utils/start-app/types.js.map +1 -0
  144. package/build/commands/dev/utils/types.d.ts +24 -0
  145. package/build/commands/dev/utils/types.js +7 -0
  146. package/build/commands/dev/utils/types.js.map +1 -0
  147. package/build/commands/dev/utils/version.d.ts +64 -0
  148. package/build/commands/dev/utils/version.js +101 -0
  149. package/build/commands/dev/utils/version.js.map +1 -0
  150. package/build/commands/dev/utils/with-retries.js +1 -5
  151. package/build/commands/dev/utils/with-retries.js.map +1 -1
  152. package/build/commands/doctor/index.d.ts +6 -0
  153. package/build/commands/doctor/index.js +21 -0
  154. package/build/commands/doctor/index.js.map +1 -0
  155. package/build/commands/doctor/utils/diagnose-dependencies.d.ts +7 -0
  156. package/build/commands/doctor/utils/diagnose-dependencies.js +108 -0
  157. package/build/commands/doctor/utils/diagnose-dependencies.js.map +1 -0
  158. package/build/commands/generate-graphql-types/index.d.ts +1 -0
  159. package/build/commands/generate-graphql-types/index.js +43 -27
  160. package/build/commands/generate-graphql-types/index.js.map +1 -1
  161. package/build/commands/info/index.d.ts +3 -0
  162. package/build/commands/info/index.js +42 -0
  163. package/build/commands/info/index.js.map +1 -0
  164. package/build/commands/setup/index.d.ts +2 -0
  165. package/build/commands/setup/index.js +81 -0
  166. package/build/commands/setup/index.js.map +1 -0
  167. package/build/commands/submit/config.d.ts +9 -0
  168. package/build/commands/submit/config.js +18 -0
  169. package/build/commands/submit/config.js.map +1 -0
  170. package/build/commands/submit/errors.d.ts +19 -0
  171. package/build/commands/submit/errors.js +87 -0
  172. package/build/commands/submit/errors.js.map +1 -0
  173. package/build/commands/submit/gcs.d.ts +6 -0
  174. package/build/commands/submit/gcs.js +10 -0
  175. package/build/commands/submit/gcs.js.map +1 -0
  176. package/build/commands/submit/index.d.ts +2 -0
  177. package/build/commands/submit/index.js +25 -0
  178. package/build/commands/submit/index.js.map +1 -0
  179. package/build/commands/submit/submit.d.ts +5 -0
  180. package/build/commands/submit/submit.js +222 -0
  181. package/build/commands/submit/submit.js.map +1 -0
  182. package/build/commands/submit/tasks.d.ts +37 -0
  183. package/build/commands/submit/tasks.js +91 -0
  184. package/build/commands/submit/tasks.js.map +1 -0
  185. package/build/commands/submit/types.d.ts +14 -0
  186. package/build/commands/submit/types.js +2 -0
  187. package/build/commands/submit/types.js.map +1 -0
  188. package/build/commands/submit/utils/assert-core-dependencies-version.d.ts +1 -0
  189. package/build/commands/submit/utils/assert-core-dependencies-version.js +58 -0
  190. package/build/commands/submit/utils/assert-core-dependencies-version.js.map +1 -0
  191. package/build/commands/submit/utils/request-entry-point-params.d.ts +1 -0
  192. package/build/commands/submit/utils/request-entry-point-params.js +41 -0
  193. package/build/commands/submit/utils/request-entry-point-params.js.map +1 -0
  194. package/build/commands/submit/validation.d.ts +1 -0
  195. package/build/commands/submit/validation.js +11 -0
  196. package/build/commands/submit/validation.js.map +1 -0
  197. package/build/commands/upgrade/index.d.ts +13 -0
  198. package/build/commands/upgrade/index.js +53 -0
  199. package/build/commands/upgrade/index.js.map +1 -0
  200. package/build/commands/upgrade/utils/cli.d.ts +1 -0
  201. package/build/commands/upgrade/utils/cli.js +15 -0
  202. package/build/commands/upgrade/utils/cli.js.map +1 -0
  203. package/build/commands/validate-manifest/index.d.ts +3 -0
  204. package/build/commands/validate-manifest/index.js +29 -0
  205. package/build/commands/validate-manifest/index.js.map +1 -0
  206. package/build/data/accept-invitation.d.ts +4 -0
  207. package/build/data/accept-invitation.js +16 -0
  208. package/build/data/accept-invitation.js.map +1 -0
  209. package/build/data/cancel-submission.d.ts +22 -0
  210. package/build/data/cancel-submission.js +26 -0
  211. package/build/data/cancel-submission.js.map +1 -0
  212. package/build/data/create-submission.d.ts +20 -0
  213. package/build/data/create-submission.js +27 -0
  214. package/build/data/create-submission.js.map +1 -0
  215. package/build/data/create-upload.d.ts +21 -0
  216. package/build/data/create-upload.js +40 -0
  217. package/build/data/create-upload.js.map +1 -0
  218. package/build/data/get-submissions.d.ts +27 -0
  219. package/build/data/get-submissions.js +33 -0
  220. package/build/data/get-submissions.js.map +1 -0
  221. package/build/data/gql-client.d.ts +8 -0
  222. package/build/data/gql-client.js +9 -0
  223. package/build/data/gql-client.js.map +1 -0
  224. package/build/data/mini.d.ts +5 -0
  225. package/build/data/mini.js +14 -0
  226. package/build/data/mini.js.map +1 -0
  227. package/build/data/types/autogenerated/shop-minis-admin-api/fragment-masking.d.ts +13 -0
  228. package/build/data/types/autogenerated/shop-minis-admin-api/fragment-masking.js +7 -0
  229. package/build/data/types/autogenerated/shop-minis-admin-api/fragment-masking.js.map +1 -0
  230. package/build/data/types/autogenerated/shop-minis-admin-api/gql.d.ts +75 -0
  231. package/build/data/types/autogenerated/shop-minis-admin-api/gql.js +24 -0
  232. package/build/data/types/autogenerated/shop-minis-admin-api/gql.js.map +1 -0
  233. package/build/data/types/autogenerated/shop-minis-admin-api/graphql.d.ts +1570 -0
  234. package/build/data/types/autogenerated/shop-minis-admin-api/graphql.js +1062 -0
  235. package/build/data/types/autogenerated/shop-minis-admin-api/graphql.js.map +1 -0
  236. package/build/data/types/autogenerated/shop-minis-admin-api/index.d.ts +2 -0
  237. package/build/data/types/autogenerated/shop-minis-admin-api/index.js +3 -0
  238. package/build/data/types/autogenerated/shop-minis-admin-api/index.js.map +1 -0
  239. package/build/dev-panel/asset-manifest.json +6 -9
  240. package/build/dev-panel/index.html +1 -1
  241. package/build/dev-panel/static/css/{main.31436fe3.css → main.7f1ee407.css} +2 -2
  242. package/build/dev-panel/static/css/main.7f1ee407.css.map +1 -0
  243. package/build/dev-panel/static/js/{main.27f47095.js → main.6625699c.js} +3 -3
  244. package/build/dev-panel/static/js/main.6625699c.js.map +1 -0
  245. package/build/index.d.ts +1 -1
  246. package/build/index.js +30 -15
  247. package/build/index.js.map +1 -1
  248. package/build/schemas/manifest.schema.json +198 -0
  249. package/build/utils/archive.d.ts +30 -0
  250. package/build/utils/archive.js +38 -0
  251. package/build/utils/archive.js.map +1 -0
  252. package/build/utils/common-tasks.d.ts +1 -0
  253. package/build/utils/common-tasks.js +49 -0
  254. package/build/utils/common-tasks.js.map +1 -0
  255. package/build/utils/development-params.d.ts +13 -0
  256. package/build/utils/development-params.js +42 -0
  257. package/build/utils/development-params.js.map +1 -0
  258. package/build/{commands/utils → utils}/exec-async-child-process.d.ts +1 -1
  259. package/build/{commands/utils → utils}/exec-async-child-process.js +6 -13
  260. package/build/utils/exec-async-child-process.js.map +1 -0
  261. package/build/utils/file.d.ts +1 -0
  262. package/build/utils/file.js +7 -0
  263. package/build/utils/file.js.map +1 -0
  264. package/build/utils/minis-manifest.d.ts +6 -0
  265. package/build/utils/minis-manifest.js +56 -0
  266. package/build/utils/minis-manifest.js.map +1 -0
  267. package/build/utils/package-manager.d.ts +38 -0
  268. package/build/utils/package-manager.js +98 -0
  269. package/build/utils/package-manager.js.map +1 -0
  270. package/build/utils/patch-package.d.ts +5 -0
  271. package/build/utils/patch-package.js +76 -0
  272. package/build/utils/patch-package.js.map +1 -0
  273. package/build/utils/replace-strings-in-template.d.ts +1 -0
  274. package/build/utils/replace-strings-in-template.js +15 -0
  275. package/build/utils/replace-strings-in-template.js.map +1 -0
  276. package/build/utils/semver.d.ts +1 -0
  277. package/build/utils/semver.js +19 -0
  278. package/build/utils/semver.js.map +1 -0
  279. package/build/{commands/utils → utils}/wrap-with-loading-indicator.d.ts +1 -1
  280. package/build/utils/wrap-with-loading-indicator.js +16 -0
  281. package/build/utils/wrap-with-loading-indicator.js.map +1 -0
  282. package/package.json +35 -28
  283. package/scripts/graphql-codegen.ts +23 -0
  284. package/scripts/test-template.ts +63 -0
  285. package/shipit.alpha.yml +3 -0
  286. package/templates/__template_blank/src/index.tsx +5 -4
  287. package/templates/__template_blank/src/types.ts +1 -1
  288. package/templates/__template_common/.eslintrc.js +16 -0
  289. package/templates/__template_common/assets.d.ts +14 -0
  290. package/templates/__template_common/babel.config.js +3 -17
  291. package/templates/__template_common/gitignore +2 -0
  292. package/templates/__template_common/index.tsx +3 -6
  293. package/templates/__template_common/metro.config.js +4 -30
  294. package/templates/__template_common/package.json +17 -47
  295. package/templates/__template_common/src/manifest.json +1 -27
  296. package/templates/__template_hello_world/src/components/ComponentLink.ts +31 -19
  297. package/templates/__template_hello_world/src/components/ComponentListItem.tsx +1 -0
  298. package/templates/__template_hello_world/src/components/FeaturedComponents.tsx +4 -2
  299. package/templates/__template_hello_world/src/components/quiz/ImageCarouselSlide.tsx +54 -0
  300. package/templates/__template_hello_world/src/components/quiz/MultipleChoiceSlide.tsx +77 -0
  301. package/templates/__template_hello_world/src/components/quiz/QuizProvider.tsx +64 -0
  302. package/templates/__template_hello_world/src/components/quiz/QuizSlide.tsx +79 -0
  303. package/templates/__template_hello_world/src/components/quiz/QuizSlideCommander.tsx +35 -0
  304. package/templates/__template_hello_world/src/components/quiz/TextFieldSlide.tsx +84 -0
  305. package/templates/__template_hello_world/src/components/quiz/TextSlide.tsx +6 -0
  306. package/templates/__template_hello_world/src/components/quiz/types.ts +72 -0
  307. package/templates/__template_hello_world/src/data/Test.graphql.d.ts +69 -76
  308. package/templates/__template_hello_world/src/data/TestProducts.graphql +30 -0
  309. package/templates/__template_hello_world/src/data/TestProducts.graphql.d.ts +159 -81
  310. package/templates/__template_hello_world/src/fixtures/mocked-products-with-variants.ts +274 -0
  311. package/templates/__template_hello_world/src/hooks/useQuizData.ts +26 -0
  312. package/templates/__template_hello_world/src/hooks/useQuizState.ts +27 -0
  313. package/templates/__template_hello_world/src/index.tsx +6 -5
  314. package/templates/__template_hello_world/src/routes.tsx +46 -22
  315. package/templates/__template_hello_world/src/screens/AccordionScreen.tsx +73 -0
  316. package/templates/__template_hello_world/src/screens/BottomSheetScreen.tsx +6 -5
  317. package/templates/__template_hello_world/src/screens/HomeScreen.tsx +14 -3
  318. package/templates/__template_hello_world/src/screens/{ImageCarouselScreen.tsx → ImageMultipleChoiceScreen.tsx} +4 -6
  319. package/templates/__template_hello_world/src/screens/InputScreen.tsx +13 -70
  320. package/templates/__template_hello_world/src/screens/QuizResultScreen.tsx +82 -0
  321. package/templates/__template_hello_world/src/screens/QuizScreen.tsx +40 -0
  322. package/templates/__template_hello_world/src/screens/QuizSlideScreen.tsx +150 -0
  323. package/templates/__template_hello_world/src/screens/ShopActionsScreen.tsx +48 -0
  324. package/templates/__template_hello_world/src/screens/VariantPickerScreen.tsx +120 -0
  325. package/templates/__template_hello_world/src/types.ts +27 -24
  326. package/templates/__template_hello_world/src/utils/mockQuizData.ts +330 -0
  327. package/templates/__template_hello_world/src/utils/quizUtils.ts +75 -0
  328. package/templates/__template_snowboardz/src/components/SkillLevelIcon.tsx +1 -4
  329. package/templates/__template_snowboardz/src/components/SkillLevelPicker.tsx +7 -1
  330. package/templates/__template_snowboardz/src/data/TestProducts.graphql +1 -1
  331. package/templates/__template_snowboardz/src/data/TestProducts.graphql.d.ts +84 -74
  332. package/templates/__template_snowboardz/src/index.tsx +6 -5
  333. package/templates/__template_snowboardz/src/routes.tsx +2 -2
  334. package/templates/__template_snowboardz/src/types.ts +3 -3
  335. package/build/commands/check/index.d.ts +0 -5
  336. package/build/commands/check/index.js +0 -77
  337. package/build/commands/check/index.js.map +0 -1
  338. package/build/commands/check/utils/versions.d.ts +0 -1
  339. package/build/commands/check/utils/versions.js +0 -14
  340. package/build/commands/check/utils/versions.js.map +0 -1
  341. package/build/commands/dev/utils/binaries.test.d.ts +0 -1
  342. package/build/commands/dev/utils/binaries.test.js +0 -275
  343. package/build/commands/dev/utils/binaries.test.js.map +0 -1
  344. package/build/commands/dev/utils/minis-manifest.d.ts +0 -1
  345. package/build/commands/dev/utils/minis-manifest.js +0 -24
  346. package/build/commands/dev/utils/minis-manifest.js.map +0 -1
  347. package/build/commands/utils/exec-async-child-process.js.map +0 -1
  348. package/build/commands/utils/wrap-with-loading-indicator.js +0 -23
  349. package/build/commands/utils/wrap-with-loading-indicator.js.map +0 -1
  350. package/build/dev-panel/middleware.d.ts +0 -4
  351. package/build/dev-panel/middleware.js +0 -11
  352. package/build/dev-panel/middleware.js.map +0 -1
  353. package/build/dev-panel/static/css/main.31436fe3.css.map +0 -1
  354. package/build/dev-panel/static/js/main.27f47095.js.map +0 -1
  355. package/build/dev-panel/static/media/bottomsheet.fe525b8722f6d504a185.png +0 -0
  356. package/build/dev-panel/static/media/navigation.597434370a97c328a970.png +0 -0
  357. package/build/dev-panel/static/media/stories.a425b6972a5338fabdad.png +0 -0
  358. package/templates/__template_blank/src/custom.d.ts +0 -4
  359. package/templates/__template_common/.eslintrc.json +0 -132
  360. package/templates/__template_common/patches/react-native+0.68.5.patch +0 -173
  361. package/templates/__template_hello_world/src/utils/getFlagEmoji.spec.tsx +0 -19
  362. /package/build/dev-panel/static/js/{main.27f47095.js.LICENSE.txt → main.6625699c.js.LICENSE.txt} +0 -0
@@ -1,16 +1,13 @@
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");
1
+ import { rm, stat } from 'node:fs/promises';
2
+ import { join } from 'node:path';
3
+ import chalk from 'chalk';
4
+ import _ from 'lodash';
5
+ import prompts from 'prompts';
6
+ import { outputDebug } from '@shopify/cli-kit/node/output';
7
+ import { PATHS } from '../../config.js';
8
+ import { execAsync } from '../../../utils/exec-async-child-process.js';
12
9
  async function getSelectableSimulators() {
13
- const { stdout } = await (0, exec_async_child_process_1.execAsync)('xcrun simctl list devices --json');
10
+ const { stdout } = await execAsync('xcrun simctl list devices --json');
14
11
  const simctlOutput = JSON.parse(stdout.join(''));
15
12
  const simulators = Object.keys(simctlOutput.devices)
16
13
  .filter(runtime => runtime.includes('iOS'))
@@ -18,27 +15,27 @@ async function getSelectableSimulators() {
18
15
  ...devices,
19
16
  ...simctlOutput.devices[runtime].map(device => ({
20
17
  ...device,
21
- osVersion: lodash_1.default.last(runtime.split('.')),
18
+ osVersion: _.last(runtime.split('.')),
22
19
  })),
23
20
  ], []);
24
21
  return simulators.filter(device => device.isAvailable && device.name.includes('iPhone'));
25
22
  }
26
- async function promptForSimulator() {
23
+ export async function promptForSimulator() {
27
24
  const devices = await getSelectableSimulators();
28
25
  const sortedDevices = [
29
26
  ...devices.filter(device => device.state === 'Booted'),
30
27
  ...devices.filter(device => device.state !== 'Booted'),
31
28
  ];
32
- const { value } = await (0, prompts_1.default)({
29
+ const { value } = await prompts({
33
30
  type: 'autocomplete',
34
31
  name: 'value',
35
32
  limit: 11,
36
33
  message: 'Select a simulator',
37
34
  choices: sortedDevices.map(item => {
38
35
  const isActive = item.state === 'Booted';
39
- const format = isActive ? chalk_1.default.bold : (text) => text;
36
+ const format = isActive ? chalk.bold : (text) => text;
40
37
  return {
41
- title: `${format(item.name)} ${chalk_1.default.dim(`(${item.osVersion})`)}`,
38
+ title: `${format(item.name)} ${chalk.dim(`(${item.osVersion})`)}`,
42
39
  value: item.udid,
43
40
  };
44
41
  }),
@@ -49,41 +46,50 @@ async function promptForSimulator() {
49
46
  });
50
47
  return value ? devices.find(device => device.udid === value) : null;
51
48
  }
52
- exports.promptForSimulator = promptForSimulator;
53
- async function getInstalledShopVersion(udid) {
49
+ export async function getInstalledShopVersion(udid) {
54
50
  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];
51
+ const { stdout: CFBundleShortVersionString } = await execAsync(`defaults read $(xcrun simctl get_app_container ${udid} com.shopifyinternal.arrive)/Info CFBundleShortVersionString`);
52
+ const { stdout: CFBundleVersion } = await execAsync(`defaults read $(xcrun simctl get_app_container ${udid} com.shopifyinternal.arrive)/Info CFBundleVersion`);
53
+ const installedVersion = CFBundleShortVersionString[0]; // 2.86.0-snapshot+1674205229
54
+ const build = CFBundleVersion[0]; // 1674205229
55
+ const version = installedVersion.split('-')[0];
56
+ return {
57
+ version,
58
+ build,
59
+ };
58
60
  }
59
61
  catch {
60
62
  return null;
61
63
  }
62
64
  }
63
- exports.getInstalledShopVersion = getInstalledShopVersion;
64
- async function bootSimulator(udid) {
65
+ export async function bootSimulator(udid) {
65
66
  try {
66
- await (0, exec_async_child_process_1.execAsync)(`xcrun simctl boot ${udid}`);
67
+ await execAsync(`xcrun simctl boot ${udid}`);
67
68
  }
68
69
  catch (error) {
69
70
  if (!error.stderr?.match(/Unable to boot device in current state: Booted/)) {
70
71
  throw error;
71
72
  }
72
73
  }
73
- await (0, exec_async_child_process_1.execAsync)(`open -a Simulator.app --args -CurrentDeviceUDID ${udid}`);
74
+ await execAsync(`open -a Simulator.app --args -CurrentDeviceUDID ${udid}`);
74
75
  }
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}`);
76
+ export async function installShopInSimulator(udid, fileName) {
77
+ outputDebug(`Install Shop in iOS simulator ${JSON.stringify({ udid, fileName })}`);
78
+ const inputPath = join(PATHS.CACHE_DIR, fileName);
79
+ const outputPath = join(PATHS.CACHE_DIR, 'Shop.app');
80
+ // remove any existing Shop.app
81
+ try {
82
+ await stat(outputPath);
83
+ await rm(outputPath, { recursive: true });
84
+ }
85
+ catch {
86
+ // file doesn't exist, so we can move on
87
+ }
88
+ await execAsync(`unzip -o '${inputPath}' -d '${outputPath}' -x '__MACOSX/*'`);
89
+ await execAsync(`xcrun simctl install ${udid} ${outputPath}`);
82
90
  }
83
- exports.installShopInSimulator = installShopInSimulator;
84
- async function deeplinkToSimulator(udid, deeplink) {
91
+ export async function deeplinkToSimulator(udid, deeplink) {
85
92
  // 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}`);
93
+ await execAsync(`xcrun simctl openurl ${udid} "${deeplink}"`);
87
94
  }
88
- exports.deeplinkToSimulator = deeplinkToSimulator;
89
95
  //# sourceMappingURL=simulator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"simulator.js","sourceRoot":"","sources":["../../../../src/commands/dev/utils/simulator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"simulator.js","sourceRoot":"","sources":["../../../../src/commands/dev/utils/simulator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { Platform } from '../platform.js';
2
+ import { StartAppPlatformHooks } from './types.js';
3
+ export declare const StartAppHandlersIOS: StartAppPlatformHooks;
4
+ export declare const StartAppHandlersAndroid: StartAppPlatformHooks;
5
+ export declare const handlersForPlatform: (platform: Platform) => StartAppPlatformHooks;
@@ -0,0 +1,25 @@
1
+ import { Platform } from '../platform.js';
2
+ import { deeplinkToSimulator, installShopInSimulator, getInstalledShopVersion as getInstalledShopVersionIOS, } from '../simulator.js';
3
+ import { connectDevelopmentServer, deeplinkToEmulator, installShopInEmulator, getInstalledShopVersion as getInstalledShopVersionAndroid, } from '../android.js';
4
+ export const StartAppHandlersIOS = {
5
+ getInstalledShopVersion: getInstalledShopVersionIOS,
6
+ installShop: installShopInSimulator,
7
+ openDeeplink: deeplinkToSimulator,
8
+ };
9
+ export const StartAppHandlersAndroid = {
10
+ getInstalledShopVersion: getInstalledShopVersionAndroid,
11
+ installShop: installShopInEmulator,
12
+ openDeeplink: async (aDeviceId, deeplink) => {
13
+ await connectDevelopmentServer(aDeviceId);
14
+ await deeplinkToEmulator(aDeviceId, deeplink);
15
+ },
16
+ };
17
+ export const handlersForPlatform = (platform) => {
18
+ switch (platform) {
19
+ case Platform.IOS:
20
+ return StartAppHandlersIOS;
21
+ case Platform.Android:
22
+ return StartAppHandlersAndroid;
23
+ }
24
+ };
25
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../../../src/commands/dev/utils/start-app/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAC,MAAM,gBAAgB,CAAA;AACvC,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,uBAAuB,IAAI,0BAA0B,GACtD,MAAM,iBAAiB,CAAA;AACxB,OAAO,EACL,wBAAwB,EACxB,kBAAkB,EAClB,qBAAqB,EACrB,uBAAuB,IAAI,8BAA8B,GAC1D,MAAM,eAAe,CAAA;AAItB,MAAM,CAAC,MAAM,mBAAmB,GAA0B;IACxD,uBAAuB,EAAE,0BAA0B;IACnD,WAAW,EAAE,sBAAsB;IACnC,YAAY,EAAE,mBAAmB;CAClC,CAAA;AAED,MAAM,CAAC,MAAM,uBAAuB,GAA0B;IAC5D,uBAAuB,EAAE,8BAA8B;IACvD,WAAW,EAAE,qBAAqB;IAClC,YAAY,EAAE,KAAK,EAAE,SAAiB,EAAE,QAAgB,EAAE,EAAE;QAC1D,MAAM,wBAAwB,CAAC,SAAS,CAAC,CAAA;QACzC,MAAM,kBAAkB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;IAC/C,CAAC;CACF,CAAA;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,QAAkB,EAAE,EAAE;IACxD,QAAQ,QAAQ,EAAE;QAChB,KAAK,QAAQ,CAAC,GAAG;YACf,OAAO,mBAAmB,CAAA;QAC5B,KAAK,QAAQ,CAAC,OAAO;YACnB,OAAO,uBAAuB,CAAA;KACjC;AACH,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ import { StartAppLoadingLoggers, StartAppParameters, StartAppPlatformHooks } from './types.js';
2
+ export declare const startAppWithOptions: ({ deviceId, platform, deeplink, buildType, snapshotVersion, }: StartAppParameters, { getInstalledShopVersion, installShop, openDeeplink }: StartAppPlatformHooks, { onLoadingStart, onLoadingEnd, onLoadingUpdate }?: StartAppLoadingLoggers) => Promise<void>;
@@ -0,0 +1,94 @@
1
+ import { outputDebug } from '@shopify/cli-kit/node/output';
2
+ import { downloadBinary, getLatestRemoteVersion } from '../network.js';
3
+ import { metadataToBinaryFileName } from '../version.js';
4
+ import { promptBinaryUpgrade } from '../prompt-binary-upgrade.js';
5
+ import { getPlatformConfig } from '../platform.js';
6
+ import { BuildType } from '../types.js';
7
+ import { isVersionAvailableLocally } from '../binaries.js';
8
+ export const startAppWithOptions = async ({ deviceId, platform, deeplink, buildType, snapshotVersion, }, { getInstalledShopVersion, installShop, openDeeplink }, { onLoadingStart, onLoadingEnd, onLoadingUpdate } = {}) => {
9
+ outputDebug(`Starting app with options ${JSON.stringify({
10
+ deviceId,
11
+ platform,
12
+ deeplink,
13
+ buildType,
14
+ snapshotVersion,
15
+ })}`);
16
+ const installedShopVersion = await getInstalledShopVersion(deviceId);
17
+ const hasShopAppInstalled = installedShopVersion !== null;
18
+ const versionToUse = await getAppVersionToUse(platform, buildType, snapshotVersion);
19
+ outputDebug(`Currently installed Shop version ${JSON.stringify(installedShopVersion)}`);
20
+ outputDebug(`Target Shop version to use ${JSON.stringify(versionToUse)}`);
21
+ const platformConfig = getPlatformConfig(platform);
22
+ if (versionToUse == null) {
23
+ onLoadingEnd?.('fail', `No binaries for ${platformConfig.name} can be found on the server!`);
24
+ return;
25
+ }
26
+ else {
27
+ onLoadingEnd?.();
28
+ }
29
+ // If the user specified a nightly or snapshot build
30
+ const userOverriddenVersion = versionToUse.type !== BuildType.Release;
31
+ // The installed version does not tell us which build type it is, but we can fairly
32
+ // safely assume that version + build number is unique across all build types, so we
33
+ // we will just compare the version + build number
34
+ const isTargetVersionInstalled = hasShopAppInstalled
35
+ ? installedShopVersion.version === versionToUse.version &&
36
+ installedShopVersion.build === versionToUse.build
37
+ : false;
38
+ const needsUpdate = installedShopVersion == null;
39
+ let wantsUpdate = false;
40
+ if (!isTargetVersionInstalled) {
41
+ if (userOverriddenVersion) {
42
+ // The user specified a version and it's not installed so do that without asking
43
+ wantsUpdate = true;
44
+ }
45
+ else if (hasShopAppInstalled) {
46
+ // The user wants a release build and we know the latest is not installed, so prompt to update
47
+ wantsUpdate = await promptBinaryUpgrade();
48
+ }
49
+ }
50
+ outputDebug(`User needs a download/install? ${needsUpdate}`);
51
+ outputDebug(`User wants a download/install? ${wantsUpdate}`);
52
+ if (needsUpdate || wantsUpdate) {
53
+ const binaryAlreadyDownloaded = await isVersionAvailableLocally(versionToUse);
54
+ if (!binaryAlreadyDownloaded) {
55
+ onLoadingStart?.('Downloading Shop (0%)');
56
+ await downloadBinary(versionToUse, {
57
+ onProgress: progress => {
58
+ onLoadingUpdate?.(`Downloading Shop (${progress}%)`);
59
+ },
60
+ });
61
+ }
62
+ onLoadingStart?.(
63
+ // show a longer message for new installs with instructions to skip onboarding
64
+ installedShopVersion == null
65
+ ? 'Installing Shop\n ↪ You can skip onboarding, or log in with your existing Shop account (optional).'
66
+ : 'Installing Shop');
67
+ await installShop(deviceId, metadataToBinaryFileName(versionToUse));
68
+ }
69
+ onLoadingStart?.('Opening Shop');
70
+ await openDeeplink(deviceId, deeplink);
71
+ onLoadingEnd?.();
72
+ };
73
+ /**
74
+ * If buildType is set to snapshot and snapshotVersion is specified, that version is returned.
75
+ * Otherwise, returns the latest available version for the given platform and build type.
76
+ */
77
+ async function getAppVersionToUse(platform, buildType,
78
+ /**
79
+ * version formatted as version+build
80
+ * @example 2.5.8+5667
81
+ * @example 0.8.0+2
82
+ */
83
+ snapshotVersion) {
84
+ if (snapshotVersion && buildType === BuildType.Snapshot) {
85
+ return {
86
+ build: snapshotVersion.split('+')[1],
87
+ platform,
88
+ type: BuildType.Snapshot,
89
+ version: snapshotVersion.split('+')[0],
90
+ };
91
+ }
92
+ return getLatestRemoteVersion(platform, buildType);
93
+ }
94
+ //# sourceMappingURL=start-app-with-options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"start-app-with-options.js","sourceRoot":"","sources":["../../../../../src/commands/dev/utils/start-app/start-app-with-options.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { StartAppLoadingLoggers, StartAppParameters } from './types.js';
2
+ export declare const startApp: (parameters: StartAppParameters, loadingLoggers?: StartAppLoadingLoggers) => Promise<void>;
@@ -0,0 +1,10 @@
1
+ import { handlersForPlatform } from './config.js';
2
+ import { startAppWithOptions } from './start-app-with-options.js';
3
+ export const startApp = async (parameters, loadingLoggers = {}) => {
4
+ const handlers = handlersForPlatform(parameters.platform);
5
+ if (handlers == null) {
6
+ throw new Error(`Unsupported platform: ${parameters.platform}`);
7
+ }
8
+ return startAppWithOptions(parameters, handlers, loadingLoggers);
9
+ };
10
+ //# sourceMappingURL=start-app.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"start-app.js","sourceRoot":"","sources":["../../../../../src/commands/dev/utils/start-app/start-app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,mBAAmB,EAAC,MAAM,aAAa,CAAA;AAC/C,OAAO,EAAC,mBAAmB,EAAC,MAAM,6BAA6B,CAAA;AAG/D,MAAM,CAAC,MAAM,QAAQ,GAAG,KAAK,EAC3B,UAA8B,EAC9B,iBAAyC,EAAE,EAC3C,EAAE;IACF,MAAM,QAAQ,GAAG,mBAAmB,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAA;IAEzD,IAAI,QAAQ,IAAI,IAAI,EAAE;QACpB,MAAM,IAAI,KAAK,CAAC,yBAAyB,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAA;KAChE;IAED,OAAO,mBAAmB,CAAC,UAAU,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAA;AAClE,CAAC,CAAA"}
@@ -0,0 +1,20 @@
1
+ import { InteractiveTerminal } from '../interactive-terminal.js';
2
+ import { Platform } from '../platform.js';
3
+ import { BuildType, VersionAndBuild } from '../types.js';
4
+ export interface StartAppParameters {
5
+ deviceId: string;
6
+ platform: Platform;
7
+ deeplink: string;
8
+ buildType: BuildType;
9
+ snapshotVersion?: string;
10
+ }
11
+ export interface StartAppPlatformHooks {
12
+ getInstalledShopVersion: (deviceId: string) => Promise<VersionAndBuild | null>;
13
+ installShop: (deviceId: string, version: string) => Promise<void>;
14
+ openDeeplink: (deviceId: string, deeplink: string) => Promise<void>;
15
+ }
16
+ export interface StartAppLoadingLoggers {
17
+ onLoadingStart?: typeof InteractiveTerminal.prototype.loadingStart;
18
+ onLoadingEnd?: typeof InteractiveTerminal.prototype.loadingEnd;
19
+ onLoadingUpdate?: (message: string) => void;
20
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../src/commands/dev/utils/start-app/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,24 @@
1
+ import { Platform } from './platform.js';
2
+ export interface VersionAndBuild {
3
+ version: string;
4
+ build: string;
5
+ }
6
+ export declare enum BuildType {
7
+ Release = "release",
8
+ Nightly = "nightly",
9
+ Snapshot = "snapshot"
10
+ }
11
+ export interface BinaryMetadata {
12
+ version: string;
13
+ build: string;
14
+ type: BuildType;
15
+ platform: Platform;
16
+ }
17
+ export interface GetFilesApiResponse {
18
+ kind: 'storage#objects';
19
+ prefixes?: string[];
20
+ items?: {
21
+ kind: 'storage#object';
22
+ name: string;
23
+ }[];
24
+ }
@@ -0,0 +1,7 @@
1
+ export var BuildType;
2
+ (function (BuildType) {
3
+ BuildType["Release"] = "release";
4
+ BuildType["Nightly"] = "nightly";
5
+ BuildType["Snapshot"] = "snapshot";
6
+ })(BuildType || (BuildType = {}));
7
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/commands/dev/utils/types.ts"],"names":[],"mappings":"AAOA,MAAM,CAAN,IAAY,SAIX;AAJD,WAAY,SAAS;IACnB,gCAAmB,CAAA;IACnB,gCAAmB,CAAA;IACnB,kCAAqB,CAAA;AACvB,CAAC,EAJW,SAAS,KAAT,SAAS,QAIpB"}
@@ -0,0 +1,64 @@
1
+ import { Platform } from './platform.js';
2
+ import { BinaryMetadata, BuildType } from './types.js';
3
+ /**
4
+ * @example
5
+ * filenames [
6
+ * "2.76.0+3.release.apk",
7
+ * "2.76.0+3.release.zip",
8
+ * "2.77.0+5.release.apk",
9
+ * "2.77.0+3.release.zip",
10
+ * "2.77.0+10.release.apk",
11
+ * "2.77.0+10.release.zip",
12
+ * ]
13
+ * returns { version: "2.77.0", build: "10", type: "release", platform: "ios" }
14
+ */
15
+ export declare function getLatestVersionFromFilesList(filenames: string[], platform: Platform, type: BuildType): BinaryMetadata | null;
16
+ /**
17
+ * @example
18
+ * platform android
19
+ * version 2.76.0
20
+ * build 24
21
+ * type release
22
+ * returns "2.76.0+24.release.apk"
23
+ *
24
+ * platform ios
25
+ * version 2.55.0
26
+ * build 4
27
+ * type nightly
28
+ * returns "2.55.0+4.nightly.zip"
29
+ */
30
+ export declare function metadataToBinaryFileName(metadata: BinaryMetadata): string;
31
+ /**
32
+ * @example
33
+ * binaryFileName "2.76.0+123.snapshot.apk"
34
+ * returns true
35
+ *
36
+ * binaryFileName "word.exe"
37
+ * returns false
38
+ */
39
+ export declare function isValidBinaryFileName(binaryFileName: string): boolean;
40
+ /**
41
+ * @example
42
+ * binaryFileName "2.76.0+123.snapshot.apk"
43
+ * returns { version: "2.16.0", build: "123", type: "snapshot", platform: "android" }
44
+ *
45
+ * binaryFileName "2.16.0+3.zip"
46
+ * returns { version: "2.16.0", build "3", platform: "ios" }
47
+ */
48
+ export declare function binaryFileNameToMetadata(binaryFileName: string): Readonly<{
49
+ version: string;
50
+ build: string;
51
+ type: BuildType;
52
+ platform: Platform;
53
+ }>;
54
+ /**
55
+ * @example
56
+ *
57
+ * version "2.76.0"
58
+ * build "3"
59
+ * returns "2.76.0+3"
60
+ */
61
+ export declare function convertToSemver({ version, build, }: {
62
+ version: string;
63
+ build: string;
64
+ }): string;
@@ -0,0 +1,101 @@
1
+ import _ from 'lodash';
2
+ import { valid as isValidSemver, compareBuild as semverCompare } from 'semver';
3
+ import escapeStringRegexp from 'escape-string-regexp';
4
+ import { getBuildTypeForBinaryBuildType } from './build-type.js';
5
+ import { Platform, getPlatformConfig, getPlatformForBinaryFileExtension, } from './platform.js';
6
+ import { BuildType } from './types.js';
7
+ /**
8
+ * @example
9
+ * filenames [
10
+ * "2.76.0+3.release.apk",
11
+ * "2.76.0+3.release.zip",
12
+ * "2.77.0+5.release.apk",
13
+ * "2.77.0+3.release.zip",
14
+ * "2.77.0+10.release.apk",
15
+ * "2.77.0+10.release.zip",
16
+ * ]
17
+ * returns { version: "2.77.0", build: "10", type: "release", platform: "ios" }
18
+ */
19
+ export function getLatestVersionFromFilesList(filenames, platform, type) {
20
+ const localVersions = _.uniq(filenames
21
+ .filter(isValidBinaryFileName)
22
+ .map(binaryFileNameToMetadata)
23
+ .filter(metadata => isValidSemver(convertToSemver(metadata)))
24
+ .filter(metadata => metadata.platform === platform)
25
+ .filter(metadata => metadata.type === type)).sort((lhs, rhs) => semverCompare(convertToSemver(lhs), convertToSemver(rhs)));
26
+ return localVersions.slice(-1)[0] ?? null;
27
+ }
28
+ /**
29
+ * @example
30
+ * platform android
31
+ * version 2.76.0
32
+ * build 24
33
+ * type release
34
+ * returns "2.76.0+24.release.apk"
35
+ *
36
+ * platform ios
37
+ * version 2.55.0
38
+ * build 4
39
+ * type nightly
40
+ * returns "2.55.0+4.nightly.zip"
41
+ */
42
+ export function metadataToBinaryFileName(metadata) {
43
+ return `${metadata.version}+${metadata.build}.${metadata.type}.${getPlatformConfig(metadata.platform).extension}`;
44
+ }
45
+ /**
46
+ * @example
47
+ * binaryFileName "2.76.0+123.snapshot.apk"
48
+ * returns true
49
+ *
50
+ * binaryFileName "word.exe"
51
+ * returns false
52
+ */
53
+ export function isValidBinaryFileName(binaryFileName) {
54
+ try {
55
+ binaryFileNameToMetadata(binaryFileName);
56
+ return true;
57
+ }
58
+ catch {
59
+ return false;
60
+ }
61
+ }
62
+ /**
63
+ * @example
64
+ * binaryFileName "2.76.0+123.snapshot.apk"
65
+ * returns { version: "2.16.0", build: "123", type: "snapshot", platform: "android" }
66
+ *
67
+ * binaryFileName "2.16.0+3.zip"
68
+ * returns { version: "2.16.0", build "3", platform: "ios" }
69
+ */
70
+ export function binaryFileNameToMetadata(binaryFileName) {
71
+ const allBuildTypes = Object.values(BuildType)
72
+ .map(escapeStringRegexp)
73
+ .join('|');
74
+ const allExtensions = Object.values(Platform)
75
+ .map(platform => getPlatformConfig(platform).extension)
76
+ .map(escapeStringRegexp)
77
+ .join('|');
78
+ const regexPattern = `(?<version>\\d+\\.\\d+\\.\\d+)(\\+(?<build>\\d+))\\.(?<type>${allBuildTypes})\\.(?<extension>${allExtensions})`;
79
+ const matches = binaryFileName.match(regexPattern);
80
+ if (!matches) {
81
+ throw new Error(`Invalid file name: ${binaryFileName}`);
82
+ }
83
+ const { version, build, type, extension } = matches.groups;
84
+ return Object.freeze({
85
+ version,
86
+ build,
87
+ type: getBuildTypeForBinaryBuildType(type),
88
+ platform: getPlatformForBinaryFileExtension(extension),
89
+ });
90
+ }
91
+ /**
92
+ * @example
93
+ *
94
+ * version "2.76.0"
95
+ * build "3"
96
+ * returns "2.76.0+3"
97
+ */
98
+ export function convertToSemver({ version, build, }) {
99
+ return `${version}+${build}`;
100
+ }
101
+ //# sourceMappingURL=version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../../../src/commands/dev/utils/version.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,5 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.withRetries = void 0;
4
1
  // TODO: worth adding some specs
5
- async function withRetries(getResult, isResultReady = Boolean, { maxRetries, timeBetweenRetries } = { timeBetweenRetries: 1000, maxRetries: 120 }) {
2
+ export async function withRetries(getResult, isResultReady = Boolean, { maxRetries, timeBetweenRetries } = { timeBetweenRetries: 1000, maxRetries: 120 }) {
6
3
  if (maxRetries === 0) {
7
4
  throw new Error();
8
5
  }
@@ -24,5 +21,4 @@ async function withRetries(getResult, isResultReady = Boolean, { maxRetries, tim
24
21
  }, timeBetweenRetries);
25
22
  });
26
23
  }
27
- exports.withRetries = withRetries;
28
24
  //# sourceMappingURL=with-retries.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"with-retries.js","sourceRoot":"","sources":["../../../../src/commands/dev/utils/with-retries.ts"],"names":[],"mappings":";;;AAAA,gCAAgC;AACzB,KAAK,UAAU,WAAW,CAC/B,SAA2B,EAC3B,gBAAwC,OAAO,EAC/C,EAAC,UAAU,EAAE,kBAAkB,EAAC,GAAG,EAAC,kBAAkB,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAC;IAE9E,IAAI,UAAU,KAAK,CAAC,EAAE;QACpB,MAAM,IAAI,KAAK,EAAE,CAAA;KAClB;IACD,IAAI;QACF,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAA;QAChC,IAAI,aAAa,CAAC,MAAM,CAAC,EAAE;YACzB,OAAO,MAAM,CAAA;SACd;KACF;IAAC,MAAM;QACN,aAAa;KACd;IACD,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;QAC3B,UAAU,CAAC,GAAG,EAAE;YACd,OAAO,CACL,WAAW,CAAC,SAAS,EAAE,aAAa,EAAE;gBACpC,kBAAkB;gBAClB,UAAU,EAAE,UAAU,GAAG,CAAC;aAC3B,CAAC,CACH,CAAA;QACH,CAAC,EAAE,kBAAkB,CAAC,CAAA;IACxB,CAAC,CAAC,CAAA;AACJ,CAAC;AA1BD,kCA0BC"}
1
+ {"version":3,"file":"with-retries.js","sourceRoot":"","sources":["../../../../src/commands/dev/utils/with-retries.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,SAA2B,EAC3B,gBAAwC,OAAO,EAC/C,EAAC,UAAU,EAAE,kBAAkB,EAAC,GAAG,EAAC,kBAAkB,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAC;IAE9E,IAAI,UAAU,KAAK,CAAC,EAAE;QACpB,MAAM,IAAI,KAAK,EAAE,CAAA;KAClB;IACD,IAAI;QACF,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAA;QAChC,IAAI,aAAa,CAAC,MAAM,CAAC,EAAE;YACzB,OAAO,MAAM,CAAA;SACd;KACF;IAAC,MAAM;QACN,aAAa;KACd;IACD,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;QAC3B,UAAU,CAAC,GAAG,EAAE;YACd,OAAO,CACL,WAAW,CAAC,SAAS,EAAE,aAAa,EAAE;gBACpC,kBAAkB;gBAClB,UAAU,EAAE,UAAU,GAAG,CAAC;aAC3B,CAAC,CACH,CAAA;QACH,CAAC,EAAE,kBAAkB,CAAC,CAAA;IACxB,CAAC,CAAC,CAAA;AACJ,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { Command } from 'commander';
2
+ export interface DoctorCommandArgs {
3
+ verbose?: boolean;
4
+ fix?: boolean;
5
+ }
6
+ export declare const command: Command;
@@ -0,0 +1,21 @@
1
+ import { Command } from 'commander';
2
+ import { handler as handleError } from '@shopify/cli-kit/node/error';
3
+ import { diagnoseDependencies } from './utils/diagnose-dependencies.js';
4
+ export const command = new Command()
5
+ .name('doctor')
6
+ .description('Diagnose and fix common Node.js, iOS, Android & React Native issues.')
7
+ .option('--verbose', 'print debugging messages')
8
+ .option('--fix', 'Attempt to fix all diagnosed issues.')
9
+ .action(async (options) => {
10
+ try {
11
+ const dependenciesValidationResult = await diagnoseDependencies(options.fix);
12
+ if (dependenciesValidationResult) {
13
+ console.log('\n✅ The configuration for your mini is correct.');
14
+ }
15
+ }
16
+ catch (err) {
17
+ delete err.stack; // delete the stack to avoid a verbose logging in case of unhandled errors
18
+ await handleError(err);
19
+ }
20
+ });
21
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/doctor/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAA;AACjC,OAAO,EAAC,OAAO,IAAI,WAAW,EAAC,MAAM,6BAA6B,CAAA;AAElE,OAAO,EAAC,oBAAoB,EAAC,MAAM,kCAAkC,CAAA;AAOrE,MAAM,CAAC,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE;KACjC,IAAI,CAAC,QAAQ,CAAC;KACd,WAAW,CACV,sEAAsE,CACvE;KACA,MAAM,CAAC,WAAW,EAAE,0BAA0B,CAAC;KAC/C,MAAM,CAAC,OAAO,EAAE,sCAAsC,CAAC;KACvD,MAAM,CAAC,KAAK,EAAE,OAA0B,EAAE,EAAE;IAC3C,IAAI;QACF,MAAM,4BAA4B,GAAG,MAAM,oBAAoB,CAC7D,OAAO,CAAC,GAAG,CACZ,CAAA;QAED,IAAI,4BAA4B,EAAE;YAChC,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAA;SAC/D;KACF;IAAC,OAAO,GAAG,EAAE;QACZ,OAAQ,GAAa,CAAC,KAAK,CAAA,CAAC,0EAA0E;QACtG,MAAM,WAAW,CAAC,GAAG,CAAC,CAAA;KACvB;AACH,CAAC,CAAC,CAAA"}
@@ -0,0 +1,7 @@
1
+ export declare function diagnoseDependencies(autoFix?: boolean): Promise<boolean>;
2
+ export declare function getInvalidDependencies(): {
3
+ duplicatedDependencies: string[];
4
+ duplicatedDevDependencies: string[];
5
+ nonSupportedDependencies: string[];
6
+ areDependenciesInvalid: boolean;
7
+ };