@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
@@ -0,0 +1,98 @@
1
+ import path from 'path';
2
+ import fs from 'fs';
3
+ import os from 'os';
4
+ import { mkdtemp } from 'node:fs/promises';
5
+ import _ from 'lodash';
6
+ import { getPackageManager as _getPackageManager } from '@shopify/cli-kit/node/node-package-manager';
7
+ import { formatPackageManagerCommand, outputDebug, } from '@shopify/cli-kit/node/output';
8
+ import { execAsync } from './exec-async-child-process.js';
9
+ export const getPackageManager = _.memoize(async () => {
10
+ const packageManager = await _getPackageManager(process.cwd());
11
+ outputDebug(`Preferred package manager has been detected as: ${packageManager}`);
12
+ return packageManager;
13
+ });
14
+ /**
15
+ * Install a package + update package.json and locks
16
+ */
17
+ export const getUpgradePackageCommand = async (packageName, { version = 'latest', exact } = {}) => {
18
+ const packageManager = await getPackageManager();
19
+ return packageManager === 'yarn'
20
+ ? `yarn add ${packageName}@${version} ${exact ? '--exact' : ''}`.trim()
21
+ : // `--save` will save to the existing section of package.json
22
+ // `--legacy-peer-deps` gets us around react 16/17/18 peer dep conflicts that do not matter
23
+ `npm install ${packageName}@${version} --legacy-peer-deps ${exact ? '--save-exact' : '--save'}`;
24
+ };
25
+ export const execUpgradePackageCommand = async (packageName, { version = 'latest', exact } = {}) => {
26
+ const upgradeCommand = await getUpgradePackageCommand(packageName, {
27
+ version,
28
+ exact,
29
+ });
30
+ await execAsync({
31
+ cmd: upgradeCommand,
32
+ loadingMessage: `Upgrading ${packageName}...`,
33
+ successMessage: `${packageName} upgraded`,
34
+ });
35
+ };
36
+ /**
37
+ * Install the latest versions that are compatible with the range in package.json
38
+ * Yarn will upgrade in this range if it can and npm will stick with an existing compatible version
39
+ */
40
+ export const getInstallCommand = async () => {
41
+ const packageManager = await getPackageManager();
42
+ return packageManager === 'yarn'
43
+ ? `yarn install`
44
+ : // `--legacy-peer-deps` gets us around react 16/17/18 peer dep conflicts that do not matter
45
+ `npm install --legacy-peer-deps`;
46
+ };
47
+ export const execInstallCommand = async () => {
48
+ const installCommand = await getInstallCommand();
49
+ await execAsync({
50
+ cmd: installCommand,
51
+ loadingMessage: 'Installing dependencies...',
52
+ successMessage: 'Dependencies installed',
53
+ });
54
+ };
55
+ /**
56
+ * Get a package.json script command formatted according to the detected package manager
57
+ */
58
+ export const getRunScriptCommand = async (scriptName, scriptArgs = []) => {
59
+ return formatPackageManagerCommand(await getPackageManager(), scriptName, ...scriptArgs);
60
+ };
61
+ /**
62
+ * Get a dependency bin command formatted according to the detected package manager
63
+ */
64
+ export const getRunBinCommand = async (scriptName, scriptArgs = []) => {
65
+ const packageManager = await getPackageManager();
66
+ return `${packageManager === 'yarn' ? 'yarn' : 'npx'} ${scriptName} ${scriptArgs.join(' ')}`.trimEnd();
67
+ };
68
+ /**
69
+ * Get a package.json script or a dependency bin command formatted according to the detected package manager
70
+ */
71
+ export const getPackageLatestVersionCommand = async (packageName) => {
72
+ const packageManager = await getPackageManager();
73
+ return packageManager === 'yarn'
74
+ ? `yarn info ${packageName} version --silent`
75
+ : `npm show ${packageName} version`;
76
+ };
77
+ export const hardResetDependencies = async () => {
78
+ const installCommand = await getInstallCommand(); // get install command before deleting lockfiles, since lockfiles are used to detect package manager
79
+ await execAsync('rm -rf yarn.lock package-lock.json');
80
+ // doing `rm -rf node_modules proved to be very slow
81
+ // we move it to a tmp folder instead, so that we can reinstall dependencies while we delete the directory in parallel
82
+ const tmpDir = await mkdtemp(path.join(os.tmpdir(), 'minis_dependencies'));
83
+ await execAsync(`mv node_modules ${tmpDir}`);
84
+ return Promise.all([execAsync(`rm -rf ${tmpDir}`), execAsync(installCommand)]);
85
+ };
86
+ export const getPackageVersion = async (packageName) => {
87
+ const packageJsonPath = path.join(process.cwd(), 'node_modules', ...packageName.split('/'), 'package.json');
88
+ let packageJson = {};
89
+ try {
90
+ const packageJsonString = fs.readFileSync(packageJsonPath).toString('utf-8');
91
+ packageJson = JSON.parse(packageJsonString);
92
+ }
93
+ catch {
94
+ // do nothing. we will return 'not found' instead of crashing
95
+ }
96
+ return packageJson.version || 'not found';
97
+ };
98
+ //# sourceMappingURL=package-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package-manager.js","sourceRoot":"","sources":["../../src/utils/package-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Applies patches to Minis dependencies (only if they have not been applied yet)
3
+ * @returns a list with the names of the patches that were applied
4
+ */
5
+ export declare function maybeApplyPatches(): string[];
@@ -0,0 +1,76 @@
1
+ import { createRequire } from 'node:module';
2
+ import path from 'node:path';
3
+ import { outputDebug } from '@shopify/cli-kit/node/output';
4
+ import fs from 'fs-extra';
5
+ const { applyPatch: patchPackageApplyPatch } = createRequire(import.meta.url)('patch-package/dist/applyPatches');
6
+ const { getPackageDetailsFromPatchFilename } = createRequire(import.meta.url)('patch-package/dist/PackageDetails');
7
+ // We use an empty file to know if a patch was already applied or not. i.e.
8
+ // if node_modules/react-native/.patched-by-minis-cli exists, we assume that a patch was already applied
9
+ // if node_modules/react-native/.patched-by-minis-cli does not exist, we assume that a patch is not applied yet
10
+ const PATCHED_MARK_FILE = '.patched-by-minis-cli';
11
+ const nodeModulesPath = path.join(process.cwd(), 'node_modules');
12
+ const patchesDirectoryPath = path.join(nodeModulesPath, '@shopify', 'shop-minis-runtime', 'patches');
13
+ function getPatchFiles() {
14
+ try {
15
+ return fs.readdirSync(patchesDirectoryPath);
16
+ }
17
+ catch (err) {
18
+ // older versions of shop-minis-runtime (< 0.0.5) do not have the patches folder.
19
+ outputDebug('Patches folder does not exist. Please update @shopify/shop-minis-runtime to ^0.0.5');
20
+ return [];
21
+ }
22
+ }
23
+ /**
24
+ * Applies patches to Minis dependencies (only if they have not been applied yet)
25
+ * @returns a list with the names of the patches that were applied
26
+ */
27
+ export function maybeApplyPatches() {
28
+ const appliedPatches = [];
29
+ outputDebug('Applying dependency patches...');
30
+ const patches = getPatchFiles();
31
+ for (const patch of patches) {
32
+ if (isPatchApplied(patch)) {
33
+ outputDebug(`${patch} is already applied`);
34
+ continue;
35
+ }
36
+ outputDebug(`Applying patch ${patch}`);
37
+ const applied = applyPatch(patch);
38
+ if (applied) {
39
+ markPatchAsApplied(patch);
40
+ outputDebug(`Patch ${patch} applied`);
41
+ appliedPatches.push(patch);
42
+ }
43
+ else {
44
+ outputDebug(`Failed to apply patch ${patch}`);
45
+ }
46
+ }
47
+ return appliedPatches;
48
+ }
49
+ function isPatchApplied(patch) {
50
+ const dependencyName = getDependencyNameForPatch(patch);
51
+ return fs.existsSync(path.join(nodeModulesPath, dependencyName, PATCHED_MARK_FILE));
52
+ }
53
+ function applyPatch(patch) {
54
+ const patchFilePath = path.join(patchesDirectoryPath, patch);
55
+ return patchPackageApplyPatch({
56
+ patchFilePath,
57
+ reverse: false,
58
+ patchDir: patchesDirectoryPath,
59
+ packageDetails: getPackageDetailsFromPatchFilename(patch),
60
+ });
61
+ }
62
+ function markPatchAsApplied(patch) {
63
+ const dependencyName = getDependencyNameForPatch(patch);
64
+ fs.createFileSync(path.join(nodeModulesPath, dependencyName, PATCHED_MARK_FILE));
65
+ }
66
+ /**
67
+ * Given a patch file name, returns the name of the actual dependency that's being patched.
68
+ *
69
+ * @example
70
+ * getDependencyNameForPatch('react-native+0.68.5.patch')
71
+ * // returns 'react-native'
72
+ */
73
+ function getDependencyNameForPatch(patch) {
74
+ return patch.split('+')[0];
75
+ }
76
+ //# sourceMappingURL=patch-package.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"patch-package.js","sourceRoot":"","sources":["../../src/utils/patch-package.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare function replaceStringsInTemplate(dir: string, stringsToReplace: Record<string, string>): Promise<void>;
@@ -0,0 +1,15 @@
1
+ import replaceInFile from 'replace-in-file';
2
+ export async function replaceStringsInTemplate(dir, stringsToReplace) {
3
+ for (const [replaceKey, replaceValue] of Object.entries(stringsToReplace)) {
4
+ const replaceOptions = {
5
+ files: [`${dir}/**/*.*`],
6
+ from: new RegExp(replaceKey, 'g'),
7
+ to: replaceValue,
8
+ optionsForFiles: {
9
+ ignore: ['**/node_modules/**'],
10
+ },
11
+ };
12
+ await replaceInFile.replaceInFile(replaceOptions);
13
+ }
14
+ }
15
+ //# sourceMappingURL=replace-strings-in-template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"replace-strings-in-template.js","sourceRoot":"","sources":["../../src/utils/replace-strings-in-template.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,MAAM,iBAAiB,CAAA;AAE3C,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,GAAW,EACX,gBAAwC;IAExC,KAAK,MAAM,CAAC,UAAU,EAAE,YAAY,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE;QACzE,MAAM,cAAc,GAAG;YACrB,KAAK,EAAE,CAAC,GAAG,GAAG,SAAS,CAAC;YACxB,IAAI,EAAE,IAAI,MAAM,CAAC,UAAU,EAAE,GAAG,CAAC;YACjC,EAAE,EAAE,YAAY;YAChB,eAAe,EAAE;gBACf,MAAM,EAAE,CAAC,oBAAoB,CAAC;aAC/B;SACF,CAAA;QAED,MAAM,aAAa,CAAC,aAAa,CAAC,cAAc,CAAC,CAAA;KAClD;AACH,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function validateUpgradeBetweenVersions(fromVersion: string, toVersion: string): void;
@@ -0,0 +1,19 @@
1
+ import { lte, coerce as coerceVersionToSemver } from 'semver';
2
+ import { AbortError } from '@shopify/cli-kit/node/error';
3
+ export function validateUpgradeBetweenVersions(fromVersion, toVersion) {
4
+ const fromVersionSemver = coerceVersionToSemver(fromVersion);
5
+ const toVersionSemver = coerceVersionToSemver(toVersion);
6
+ if (!fromVersionSemver || !toVersionSemver) {
7
+ const versionWithError = fromVersionSemver ? toVersion : fromVersion;
8
+ throw new AbortError('The provided version is not a valid semver string', undefined, [
9
+ [
10
+ `The specified value was "${versionWithError}"`,
11
+ `Read more about semantic versioning in https://semver.org/`,
12
+ ],
13
+ ]);
14
+ }
15
+ if (lte(toVersionSemver, fromVersionSemver)) {
16
+ throw new AbortError('The provided target version must be bigger than the base version', undefined, [[`Target version is "${toVersion}"`, `Base version is "${fromVersion}"`]]);
17
+ }
18
+ }
19
+ //# sourceMappingURL=semver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"semver.js","sourceRoot":"","sources":["../../src/utils/semver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,EAAE,MAAM,IAAI,qBAAqB,EAAC,MAAM,QAAQ,CAAA;AAC3D,OAAO,EAAC,UAAU,EAAC,MAAM,6BAA6B,CAAA;AAEtD,MAAM,UAAU,8BAA8B,CAC5C,WAAmB,EACnB,SAAiB;IAEjB,MAAM,iBAAiB,GAAG,qBAAqB,CAAC,WAAW,CAAC,CAAA;IAC5D,MAAM,eAAe,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAA;IAExD,IAAI,CAAC,iBAAiB,IAAI,CAAC,eAAe,EAAE;QAC1C,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAA;QACpE,MAAM,IAAI,UAAU,CAClB,mDAAmD,EACnD,SAAS,EACT;YACE;gBACE,4BAA4B,gBAAgB,GAAG;gBAC/C,4DAA4D;aAC7D;SACF,CACF,CAAA;KACF;IAED,IAAI,GAAG,CAAC,eAAe,EAAE,iBAAiB,CAAC,EAAE;QAC3C,MAAM,IAAI,UAAU,CAClB,kEAAkE,EAClE,SAAS,EACT,CAAC,CAAC,sBAAsB,SAAS,GAAG,EAAE,oBAAoB,WAAW,GAAG,CAAC,CAAC,CAC3E,CAAA;KACF;AACH,CAAC"}
@@ -5,5 +5,5 @@ interface LoadingOptions {
5
5
  errorMessage?: string;
6
6
  spinnerOptions?: Omit<OraOptions, 'text' | 'prefixText'>;
7
7
  }
8
- export declare function wrapWithLoadingIndicator<T>(promise: Promise<T> | (() => Promise<T>), { loadingMessage, errorMessage, successMessage, spinnerOptions }: LoadingOptions): Promise<T | (() => Promise<T>)>;
8
+ export declare function wrapWithLoadingIndicator<T>(promise: Promise<T>, { loadingMessage, errorMessage, successMessage, spinnerOptions }: LoadingOptions): Promise<T>;
9
9
  export {};
@@ -0,0 +1,16 @@
1
+ import ora from 'ora';
2
+ export async function wrapWithLoadingIndicator(promise, { loadingMessage, errorMessage, successMessage, spinnerOptions }) {
3
+ const loadingIndicator = ora(spinnerOptions);
4
+ loadingIndicator.start(loadingMessage);
5
+ try {
6
+ const result = await promise;
7
+ loadingIndicator.succeed(successMessage);
8
+ return result;
9
+ }
10
+ catch (err) {
11
+ loadingIndicator.fail(errorMessage);
12
+ console.log('\n');
13
+ throw err;
14
+ }
15
+ }
16
+ //# sourceMappingURL=wrap-with-loading-indicator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wrap-with-loading-indicator.js","sourceRoot":"","sources":["../../src/utils/wrap-with-loading-indicator.ts"],"names":[],"mappings":"AAAA,OAAO,GAA4B,MAAM,KAAK,CAAA;AAS9C,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,OAAmB,EACnB,EAAC,cAAc,EAAE,YAAY,EAAE,cAAc,EAAE,cAAc,EAAiB;IAE9E,MAAM,gBAAgB,GAAG,GAAG,CAAC,cAAc,CAAC,CAAA;IAC5C,gBAAgB,CAAC,KAAK,CAAC,cAAc,CAAC,CAAA;IAEtC,IAAI;QACF,MAAM,MAAM,GAAG,MAAM,OAAO,CAAA;QAC5B,gBAAgB,CAAC,OAAO,CAAC,cAAc,CAAC,CAAA;QACxC,OAAO,MAAM,CAAA;KACd;IAAC,OAAO,GAAG,EAAE;QACZ,gBAAgB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;QACnC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QACjB,MAAM,GAAG,CAAA;KACV;AACH,CAAC"}
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "access": "public",
5
5
  "@shopify:registry": "https://registry.npmjs.org/"
6
6
  },
7
- "version": "0.0.37",
7
+ "version": "0.0.82",
8
8
  "description": "Shop Minis CLI",
9
9
  "main": "build/index.js",
10
10
  "bin": {
@@ -12,77 +12,84 @@
12
12
  },
13
13
  "author": "shopify",
14
14
  "license": "MIT",
15
+ "type": "module",
15
16
  "scripts": {
16
- "build": "yarn clean && yarn build:cli && yarn build:cli:binaries && yarn dev-panel:build-and-copy",
17
+ "build": "yarn clean && yarn build:cli:graphql && yarn build:cli && yarn dev-panel:build-and-copy",
17
18
  "clean": "rm -rf build",
18
- "build:cli": "tsc -i false && chmod 755 build/index.js",
19
- "build:cli:watch": "chokidar \"./src/**/*.ts\" -c \"yarn run build:cli\" --silent --initial --ignore '(build|src/dev-panel/*|node_modules)'",
20
- "build:cli:binaries": "mkdir -p build/commands/dev/bin/",
19
+ "build:cli": "tsc -p tsconfig.build.json && chmod 755 build/index.js",
20
+ "build:cli:watch": "chokidar \"./src/**/*.ts\" -c \"yarn run build:cli\" --silent --initial --ignore '(build|node_modules)'",
21
+ "build:cli:graphql": "node --loader ts-node/esm scripts/graphql-codegen.ts",
21
22
  "lint": "eslint . --ext .js,.mjs,.ts,.tsx --format codeframe --cache",
22
- "shop-minis-dev": "ts-node -T src/index.ts",
23
23
  "shop-minis": "./build/index.js",
24
- "test": "jest",
25
- "dev-panel:install": "cd ./src/dev-panel && yarn",
26
- "dev-panel:start": "cd ./src/dev-panel && yarn start",
27
- "dev-panel:clean": "cd ./src/dev-panel && rm -rf build",
28
- "dev-panel:build": "cd ./src/dev-panel && PUBLIC_URL=/dev-panel yarn build",
29
- "dev-panel:build-and-copy": "mkdir -p build/dev-panel/ && yarn dev-panel:clean && yarn dev-panel:install && yarn dev-panel:build && cp -r src/dev-panel/build/* build/dev-panel"
24
+ "test": "vitest",
25
+ "test:template": "node --loader ts-node/esm scripts/test-template.ts",
26
+ "dev-panel:install": "cd ./dev-panel && yarn",
27
+ "dev-panel:start": "cd ./dev-panel && yarn start",
28
+ "dev-panel:clean": "cd ./dev-panel && rm -rf build",
29
+ "dev-panel:build": "cd ./dev-panel && PUBLIC_URL=/dev-panel yarn build",
30
+ "dev-panel:build-and-copy": "mkdir -p build/dev-panel/ && yarn dev-panel:clean && yarn dev-panel:install && yarn dev-panel:build && cp -r dev-panel/build/* build/dev-panel"
30
31
  },
31
32
  "devDependencies": {
32
- "@babel/core": "^7.20.12",
33
- "@babel/preset-env": "^7.20.2",
34
- "@babel/preset-typescript": "^7.18.6",
33
+ "@graphql-codegen/cli": "^3.2.2",
34
+ "@graphql-codegen/client-preset": "^2.1.1",
35
35
  "@react-native-community/eslint-config": "^3.1.0",
36
36
  "@shopify/eslint-plugin": "^42.0.1",
37
37
  "@types/connect": "^3.4.35",
38
+ "@types/envinfo": "^7.8.1",
38
39
  "@types/fs-extra": "^9.0.13",
39
40
  "@types/inquirer": "^9.0.3",
40
- "@types/jest": "^29.2.6",
41
41
  "@types/lodash": "^4.14.191",
42
- "@types/metro": "^0.66.1",
43
42
  "@types/node": "^18.11.17",
44
43
  "@types/prompts": "^2.4.2",
45
44
  "@types/qrcode": "^1.5.0",
46
45
  "@types/serve-static": "^1.15.0",
47
46
  "@typescript-eslint/eslint-plugin": "^5.17.0",
48
47
  "@typescript-eslint/parser": "^5.17.0",
49
- "babel-jest": "^29.3.1",
50
48
  "chokidar-cli": "^3.0.0",
51
49
  "eslint": "^8.24.0",
52
50
  "eslint-formatter-codeframe": "^7.32.1",
53
- "eslint-plugin-jest": "^26.2.2",
54
51
  "eslint-plugin-reanimated": "^2.0.0",
55
- "jest": "^29.3.1",
56
52
  "prettier": "^2.7.1",
57
53
  "ts-node": "^10.9.1",
58
- "typescript": "^4.9.4"
54
+ "typescript": "^4.9.4",
55
+ "vitest": "^0.29.8"
59
56
  },
60
57
  "dependencies": {
61
58
  "@google-cloud/storage": "^6.9.0",
62
- "@react-native-community/cli": "^10.0.0",
63
- "@react-native-community/cli-plugin-metro": "^10.0.0",
59
+ "@inquirer/editor": "^1.2.4",
60
+ "@react-native-community/cli": "^11.3.6",
61
+ "@react-native-community/cli-plugin-metro": "^11.3.6",
62
+ "@shopify/cli-kit": "^3.45.0",
64
63
  "@types/qrcode-terminal": "^0.12.0",
64
+ "archiver": "^5.3.1",
65
65
  "chalk": "^4.1.2",
66
66
  "commander": "^9.4.1",
67
67
  "connect": "^3.7.0",
68
68
  "dotenv": "^16.0.3",
69
+ "envinfo": "^7.8.1",
70
+ "escape-string-regexp": "^4.0.0",
69
71
  "fs-extra": "^11.1.0",
72
+ "glob": "^9.3.2",
70
73
  "graphql": "^15.0.0",
71
74
  "graphql-config": "^4.3.5",
72
- "graphql-typescript-definitions": "^3.2.2",
75
+ "graphql-request": "^5.2.0",
76
+ "graphql-typescript-definitions": "^3.3.3",
73
77
  "inquirer": "^8.2.3",
74
78
  "internal-ip": "^6.2.0",
79
+ "jsonschema": "^1.4.1",
75
80
  "lodash": "^4.17.21",
76
- "metro": "^0.73.6",
77
- "metro-config": "^0.73.6",
78
- "metro-core": "^0.73.6",
81
+ "metro": "^0.76.7",
82
+ "metro-config": "^0.76.7",
83
+ "metro-core": "^0.76.7",
79
84
  "open": "^8.4.0",
80
85
  "ora": "^5.4.1",
86
+ "patch-package": "6.5.1",
81
87
  "prompts": "^2.4.2",
82
88
  "qrcode-terminal": "^0.12.0",
83
89
  "replace-in-file": "^6.3.5",
84
90
  "semver": "^7.3.8",
85
- "serve-static": "^1.15.0"
91
+ "serve-static": "^1.15.0",
92
+ "suppress-experimental-warnings": "^1.1.17"
86
93
  },
87
94
  "resolutions": {
88
95
  "@apollo/federation": "0.38.1"
@@ -0,0 +1,23 @@
1
+ import {CodegenConfig, generate} from '@graphql-codegen/cli'
2
+
3
+ import {SHOP_MINIS_ADMIN_API} from '../src/commands/config.js'
4
+
5
+ const config: CodegenConfig = {
6
+ schema: SHOP_MINIS_ADMIN_API,
7
+ documents: ['src/**/*.ts'],
8
+ generates: {
9
+ 'src/data/types/autogenerated/shop-minis-admin-api/': {
10
+ preset: 'client-preset',
11
+ },
12
+ },
13
+ hooks: {afterAllFileWrite: ['prettier --write']},
14
+
15
+ // Make sure the output is valid esm
16
+ emitLegacyCommonJSImports: false,
17
+ }
18
+
19
+ async function generateTypes() {
20
+ await generate(config, true)
21
+ }
22
+
23
+ generateTypes()
@@ -0,0 +1,63 @@
1
+ import {execSync} from 'node:child_process'
2
+
3
+ import {Command} from 'commander'
4
+
5
+ const TEMPLATES = ['snowboardz', 'hello_world', 'blank']
6
+
7
+ const program = new Command()
8
+ .name('test-template')
9
+ .description('Instanciates a template and checks that it is valid')
10
+ .argument(
11
+ '<template name>',
12
+ 'Name of the template to use (blank, hello_world, snowboardz)'
13
+ )
14
+ .action(async (templateName: string) => {
15
+ if (!TEMPLATES.includes(templateName)) {
16
+ console.log(
17
+ `\n${templateName} is not a valid template name. Please use one of ${TEMPLATES.join(
18
+ ', '
19
+ )}\n`
20
+ )
21
+ process.exit(1)
22
+ }
23
+
24
+ // build the CLI
25
+ execSync('yarn build:cli', {stdio: 'inherit'})
26
+
27
+ // set up folder structure
28
+ execSync('mkdir -p ../templates/', {stdio: 'inherit'})
29
+ execSync('rm -rf ../templates/test-template', {stdio: 'inherit'}) // just in case this wasn't deleted before
30
+
31
+ // build mini
32
+ execSync(
33
+ `yarn shop-minis create test-template --template ${templateName} --output-dir ../templates/`,
34
+ {stdio: 'inherit'}
35
+ )
36
+
37
+ // run eslint
38
+ try {
39
+ execSync('cd ../templates/test-template && yarn lint', {stdio: 'inherit'})
40
+ } catch {
41
+ console.log(`\n ⚠️ eslint failed. To reproduce run:
42
+ $ cd ../templates/test-template
43
+ $ yarn lint
44
+ `)
45
+ process.exit(1)
46
+ }
47
+
48
+ // run typescript checks
49
+ try {
50
+ execSync('cd ../templates/test-template && yarn tsc', {stdio: 'inherit'})
51
+ } catch {
52
+ console.log(`\n ⚠️ typescript failed. To reproduce run:
53
+ $ cd ../templates/test-template
54
+ $ yarn tsc
55
+ `)
56
+ process.exit(1)
57
+ }
58
+
59
+ // clean up
60
+ execSync('rm -rf ../templates/test-template', {stdio: 'inherit'})
61
+ })
62
+
63
+ program.parse()
@@ -0,0 +1,3 @@
1
+ deploy:
2
+ pre:
3
+ - yarn build
@@ -1,9 +1,10 @@
1
- import {theme as defaultTheme, Theme} from '@shopify/shop-minis-platform-sdk'
1
+ import {MiniAppConfig} from '@shopify/shop-minis-platform-sdk'
2
2
 
3
3
  import {HomeScreen} from './screens/HomeScreen'
4
4
 
5
- export const theme: Theme = {
6
- ...defaultTheme,
5
+ const config: MiniAppConfig = {
6
+ name: '__MINI_APP_NAME__',
7
+ Root: HomeScreen,
7
8
  }
8
9
 
9
- export default HomeScreen
10
+ export default config
@@ -1,5 +1,5 @@
1
1
  // @react-navigation/native-stack requires a `type` instead of an `interface`
2
2
  // eslint-disable-next-line @typescript-eslint/consistent-type-definitions
3
3
  export type StackParamList = {
4
- '__MINI_APP_HANDLE_PASCAL_CASE__.Home': undefined
4
+ '__MINI_APP_NAME_PASCAL_CASE__.Home': undefined
5
5
  }
@@ -0,0 +1,16 @@
1
+ module.exports = {
2
+ root: true,
3
+ extends: ['plugin:@shopify/shop-minis/all'],
4
+ settings: {
5
+ react: {
6
+ version: 'detect',
7
+ },
8
+ },
9
+ parserOptions: {
10
+ ecmaVersion: 6,
11
+ project: './tsconfig.json',
12
+ schema:
13
+ 'node_modules/@shopify/shop-minis-platform-sdk/src/api/minis.graphql',
14
+ operations: '**/*.graphql',
15
+ },
16
+ }
@@ -0,0 +1,14 @@
1
+ declare module '*.svg' {
2
+ const content: import('react').FC<import('react-native-svg').SvgProps>
3
+ export default content
4
+ }
5
+
6
+ declare module '*.png' {
7
+ const content: import('react-native').ImageRequireSource
8
+ export default content
9
+ }
10
+
11
+ declare module '*.jpg' {
12
+ const content: import('react-native').ImageRequireSource
13
+ export default content
14
+ }
@@ -1,19 +1,5 @@
1
1
  module.exports = {
2
- presets: [
3
- [
4
- 'module:metro-react-native-babel-preset',
5
- {useTransformReactJSXExperimental: true},
6
- ],
7
- ],
8
- plugins: [
9
- [
10
- '@babel/plugin-transform-react-jsx',
11
- {
12
- runtime: 'automatic',
13
- },
14
- ],
15
- ['@babel/plugin-transform-named-capturing-groups-regex'],
16
- ['import-graphql'],
17
- ['react-native-reanimated/plugin'],
18
- ],
2
+ // Changes to babel config are not supported by the mini platform.
3
+ // Custom configuration can introduce unexpected behaviour in your mini and could be a cause of rejection during the submission process.
4
+ presets: ['@shopify/shop-minis-runtime/babel-preset'],
19
5
  }
@@ -1,3 +1,5 @@
1
1
  node_modules
2
2
  .minis-cache
3
3
  *.tsbuildinfo
4
+ .env
5
+ entry-point-params.json
@@ -1,14 +1,12 @@
1
1
  // Note: This file is only used for the development mode. Changes made here will not be
2
2
  // reflected in published/production mode mini apps
3
- import 'intl'
4
- import 'intl/locale-data/jsonp/en'
5
3
  import {AppRegistry} from 'react-native'
6
- import 'react-native-gesture-handler'
4
+ import '@shopify/shop-minis-platform-sdk/src/utils/registerNativeModules'
7
5
  import {useNativeEventEmitterShopActions} from '@shopify/shop-minis-platform-sdk'
8
6
  import {Wrapper} from '@shopify/shop-minis-platform-sdk/src/components/Wrapper'
9
7
  import {ShopActionsProvider} from '@shopify/shop-minis-platform-sdk/actions'
10
8
 
11
- import MiniAppRootComponent, {theme} from './src'
9
+ import MiniApp from './src'
12
10
 
13
11
  AppRegistry.registerComponent(
14
12
  'ShopMinis',
@@ -28,14 +26,13 @@ AppRegistry.registerComponent(
28
26
  <Wrapper
29
27
  initialApiKeys={initialApiKeys}
30
28
  apiHeaders={apiHeaders}
31
- theme={theme}
32
29
  params={params}
33
30
  entryPoint={entryPoint}
34
31
  entryPointParams={entryPointParams}
35
32
  environment={environment}
36
33
  enableApiSandbox
37
34
  >
38
- <MiniAppRootComponent />
35
+ <MiniApp.Root />
39
36
  </Wrapper>
40
37
  </ShopActionsProvider>
41
38
  )