@shopify/shop-minis-cli 0.0.0-snapshot.20240712123821

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 (452) hide show
  1. package/.eslintrc.cjs +78 -0
  2. package/LICENSE +21 -0
  3. package/README.md +8 -0
  4. package/README_INTERNAL.md +115 -0
  5. package/build/commands/cancel-submission/cancel-submission.d.ts +1 -0
  6. package/build/commands/cancel-submission/cancel-submission.js +57 -0
  7. package/build/commands/cancel-submission/cancel-submission.js.map +1 -0
  8. package/build/commands/cancel-submission/index.d.ts +2 -0
  9. package/build/commands/cancel-submission/index.js +18 -0
  10. package/build/commands/cancel-submission/index.js.map +1 -0
  11. package/build/commands/cancel-submission/types.d.ts +3 -0
  12. package/build/commands/cancel-submission/types.js +2 -0
  13. package/build/commands/cancel-submission/types.js.map +1 -0
  14. package/build/commands/check-submission/index.d.ts +2 -0
  15. package/build/commands/check-submission/index.js +55 -0
  16. package/build/commands/check-submission/index.js.map +1 -0
  17. package/build/commands/check-submission/types.d.ts +3 -0
  18. package/build/commands/check-submission/types.js +2 -0
  19. package/build/commands/check-submission/types.js.map +1 -0
  20. package/build/commands/codemod/index.d.ts +3 -0
  21. package/build/commands/codemod/index.js +47 -0
  22. package/build/commands/codemod/index.js.map +1 -0
  23. package/build/commands/codemod/releases/index.d.ts +7 -0
  24. package/build/commands/codemod/releases/index.js +89 -0
  25. package/build/commands/codemod/releases/index.js.map +1 -0
  26. package/build/commands/codemod/releases/types.d.ts +9 -0
  27. package/build/commands/codemod/releases/types.js +2 -0
  28. package/build/commands/codemod/releases/types.js.map +1 -0
  29. package/build/commands/codemod/releases/v0-0-100.d.ts +3 -0
  30. package/build/commands/codemod/releases/v0-0-100.js +50 -0
  31. package/build/commands/codemod/releases/v0-0-100.js.map +1 -0
  32. package/build/commands/codemod/releases/v0-0-103.d.ts +3 -0
  33. package/build/commands/codemod/releases/v0-0-103.js +43 -0
  34. package/build/commands/codemod/releases/v0-0-103.js.map +1 -0
  35. package/build/commands/codemod/releases/v0-0-105.d.ts +3 -0
  36. package/build/commands/codemod/releases/v0-0-105.js +59 -0
  37. package/build/commands/codemod/releases/v0-0-105.js.map +1 -0
  38. package/build/commands/codemod/releases/v0-0-106.d.ts +3 -0
  39. package/build/commands/codemod/releases/v0-0-106.js +32 -0
  40. package/build/commands/codemod/releases/v0-0-106.js.map +1 -0
  41. package/build/commands/codemod/releases/v0-0-114.d.ts +3 -0
  42. package/build/commands/codemod/releases/v0-0-114.js +48 -0
  43. package/build/commands/codemod/releases/v0-0-114.js.map +1 -0
  44. package/build/commands/codemod/releases/v0-0-115.d.ts +3 -0
  45. package/build/commands/codemod/releases/v0-0-115.js +50 -0
  46. package/build/commands/codemod/releases/v0-0-115.js.map +1 -0
  47. package/build/commands/codemod/releases/v0-0-121.d.ts +3 -0
  48. package/build/commands/codemod/releases/v0-0-121.js +74 -0
  49. package/build/commands/codemod/releases/v0-0-121.js.map +1 -0
  50. package/build/commands/codemod/releases/v0-0-42/index.d.ts +3 -0
  51. package/build/commands/codemod/releases/v0-0-42/index.js +46 -0
  52. package/build/commands/codemod/releases/v0-0-42/index.js.map +1 -0
  53. package/build/commands/codemod/releases/v0-0-42/reset-files.d.ts +7 -0
  54. package/build/commands/codemod/releases/v0-0-42/reset-files.js +83 -0
  55. package/build/commands/codemod/releases/v0-0-42/reset-files.js.map +1 -0
  56. package/build/commands/codemod/releases/v0-0-43.d.ts +3 -0
  57. package/build/commands/codemod/releases/v0-0-43.js +32 -0
  58. package/build/commands/codemod/releases/v0-0-43.js.map +1 -0
  59. package/build/commands/codemod/releases/v0-0-44.d.ts +3 -0
  60. package/build/commands/codemod/releases/v0-0-44.js +214 -0
  61. package/build/commands/codemod/releases/v0-0-44.js.map +1 -0
  62. package/build/commands/codemod/releases/v0-0-45.d.ts +3 -0
  63. package/build/commands/codemod/releases/v0-0-45.js +23 -0
  64. package/build/commands/codemod/releases/v0-0-45.js.map +1 -0
  65. package/build/commands/codemod/releases/v0-0-50.d.ts +3 -0
  66. package/build/commands/codemod/releases/v0-0-50.js +34 -0
  67. package/build/commands/codemod/releases/v0-0-50.js.map +1 -0
  68. package/build/commands/codemod/releases/v0-0-54.d.ts +3 -0
  69. package/build/commands/codemod/releases/v0-0-54.js +70 -0
  70. package/build/commands/codemod/releases/v0-0-54.js.map +1 -0
  71. package/build/commands/codemod/releases/v0-0-56.d.ts +3 -0
  72. package/build/commands/codemod/releases/v0-0-56.js +48 -0
  73. package/build/commands/codemod/releases/v0-0-56.js.map +1 -0
  74. package/build/commands/codemod/releases/v0-0-57.d.ts +3 -0
  75. package/build/commands/codemod/releases/v0-0-57.js +41 -0
  76. package/build/commands/codemod/releases/v0-0-57.js.map +1 -0
  77. package/build/commands/codemod/releases/v0-0-58.d.ts +3 -0
  78. package/build/commands/codemod/releases/v0-0-58.js +68 -0
  79. package/build/commands/codemod/releases/v0-0-58.js.map +1 -0
  80. package/build/commands/codemod/releases/v0-0-61.d.ts +3 -0
  81. package/build/commands/codemod/releases/v0-0-61.js +30 -0
  82. package/build/commands/codemod/releases/v0-0-61.js.map +1 -0
  83. package/build/commands/codemod/releases/v0-0-63.d.ts +3 -0
  84. package/build/commands/codemod/releases/v0-0-63.js +42 -0
  85. package/build/commands/codemod/releases/v0-0-63.js.map +1 -0
  86. package/build/commands/codemod/releases/v0-0-64.d.ts +3 -0
  87. package/build/commands/codemod/releases/v0-0-64.js +47 -0
  88. package/build/commands/codemod/releases/v0-0-64.js.map +1 -0
  89. package/build/commands/codemod/releases/v0-0-75.d.ts +3 -0
  90. package/build/commands/codemod/releases/v0-0-75.js +30 -0
  91. package/build/commands/codemod/releases/v0-0-75.js.map +1 -0
  92. package/build/commands/codemod/releases/v0-0-76.d.ts +3 -0
  93. package/build/commands/codemod/releases/v0-0-76.js +32 -0
  94. package/build/commands/codemod/releases/v0-0-76.js.map +1 -0
  95. package/build/commands/codemod/releases/v0-0-77.d.ts +3 -0
  96. package/build/commands/codemod/releases/v0-0-77.js +39 -0
  97. package/build/commands/codemod/releases/v0-0-77.js.map +1 -0
  98. package/build/commands/codemod/releases/v0-0-79.d.ts +3 -0
  99. package/build/commands/codemod/releases/v0-0-79.js +35 -0
  100. package/build/commands/codemod/releases/v0-0-79.js.map +1 -0
  101. package/build/commands/codemod/releases/v0-0-84.d.ts +3 -0
  102. package/build/commands/codemod/releases/v0-0-84.js +41 -0
  103. package/build/commands/codemod/releases/v0-0-84.js.map +1 -0
  104. package/build/commands/codemod/releases/v0-0-85.d.ts +3 -0
  105. package/build/commands/codemod/releases/v0-0-85.js +60 -0
  106. package/build/commands/codemod/releases/v0-0-85.js.map +1 -0
  107. package/build/commands/codemod/releases/v0-0-89.d.ts +3 -0
  108. package/build/commands/codemod/releases/v0-0-89.js +60 -0
  109. package/build/commands/codemod/releases/v0-0-89.js.map +1 -0
  110. package/build/commands/codemod/releases/v0-0-91/index.d.ts +3 -0
  111. package/build/commands/codemod/releases/v0-0-91/index.js +38 -0
  112. package/build/commands/codemod/releases/v0-0-91/index.js.map +1 -0
  113. package/build/commands/codemod/releases/v0-0-91/replace-dev-wrapper.d.ts +5 -0
  114. package/build/commands/codemod/releases/v0-0-91/replace-dev-wrapper.js +45 -0
  115. package/build/commands/codemod/releases/v0-0-91/replace-dev-wrapper.js.map +1 -0
  116. package/build/commands/codemod/releases/v0-0-91/replace-safe-area-imports.d.ts +1 -0
  117. package/build/commands/codemod/releases/v0-0-91/replace-safe-area-imports.js +97 -0
  118. package/build/commands/codemod/releases/v0-0-91/replace-safe-area-imports.js.map +1 -0
  119. package/build/commands/codemod/releases/v0-0-92.d.ts +3 -0
  120. package/build/commands/codemod/releases/v0-0-92.js +38 -0
  121. package/build/commands/codemod/releases/v0-0-92.js.map +1 -0
  122. package/build/commands/codemod/releases/v0-0-93/blank/App-after.d.ts +1 -0
  123. package/build/commands/codemod/releases/v0-0-93/blank/App-after.js +15 -0
  124. package/build/commands/codemod/releases/v0-0-93/blank/App-after.js.map +1 -0
  125. package/build/commands/codemod/releases/v0-0-93/blank/App-before.d.ts +1 -0
  126. package/build/commands/codemod/releases/v0-0-93/blank/App-before.js +13 -0
  127. package/build/commands/codemod/releases/v0-0-93/blank/App-before.js.map +1 -0
  128. package/build/commands/codemod/releases/v0-0-93/index.d.ts +6 -0
  129. package/build/commands/codemod/releases/v0-0-93/index.js +7 -0
  130. package/build/commands/codemod/releases/v0-0-93/index.js.map +1 -0
  131. package/build/commands/codemod/releases/v0-0-93/shoppable-posts/App-after.d.ts +1 -0
  132. package/build/commands/codemod/releases/v0-0-93/shoppable-posts/App-after.js +53 -0
  133. package/build/commands/codemod/releases/v0-0-93/shoppable-posts/App-after.js.map +1 -0
  134. package/build/commands/codemod/releases/v0-0-93/shoppable-posts/App-before.d.ts +1 -0
  135. package/build/commands/codemod/releases/v0-0-93/shoppable-posts/App-before.js +43 -0
  136. package/build/commands/codemod/releases/v0-0-93/shoppable-posts/App-before.js.map +1 -0
  137. package/build/commands/codemod/releases/v0-0-93/shoppable-videos/App-after.d.ts +1 -0
  138. package/build/commands/codemod/releases/v0-0-93/shoppable-videos/App-after.js +49 -0
  139. package/build/commands/codemod/releases/v0-0-93/shoppable-videos/App-after.js.map +1 -0
  140. package/build/commands/codemod/releases/v0-0-93/shoppable-videos/App-before.d.ts +1 -0
  141. package/build/commands/codemod/releases/v0-0-93/shoppable-videos/App-before.js +42 -0
  142. package/build/commands/codemod/releases/v0-0-93/shoppable-videos/App-before.js.map +1 -0
  143. package/build/commands/codemod/releases/v0-0-93.d.ts +3 -0
  144. package/build/commands/codemod/releases/v0-0-93.js +48 -0
  145. package/build/commands/codemod/releases/v0-0-93.js.map +1 -0
  146. package/build/commands/codemod/releases/v0-0-97/index.d.ts +3 -0
  147. package/build/commands/codemod/releases/v0-0-97/index.js +20 -0
  148. package/build/commands/codemod/releases/v0-0-97/index.js.map +1 -0
  149. package/build/commands/codemod/releases/v0-0-97/migrate-to-new-theme.d.ts +1 -0
  150. package/build/commands/codemod/releases/v0-0-97/migrate-to-new-theme.js +47 -0
  151. package/build/commands/codemod/releases/v0-0-97/migrate-to-new-theme.js.map +1 -0
  152. package/build/commands/codemod/releases/v0-0-97/remove-theme-from-config.d.ts +1 -0
  153. package/build/commands/codemod/releases/v0-0-97/remove-theme-from-config.js +105 -0
  154. package/build/commands/codemod/releases/v0-0-97/remove-theme-from-config.js.map +1 -0
  155. package/build/commands/config.d.ts +14 -0
  156. package/build/commands/config.js +42 -0
  157. package/build/commands/config.js.map +1 -0
  158. package/build/commands/create-extension/constants.d.ts +24 -0
  159. package/build/commands/create-extension/constants.js +68 -0
  160. package/build/commands/create-extension/constants.js.map +1 -0
  161. package/build/commands/create-extension/index.d.ts +2 -0
  162. package/build/commands/create-extension/index.js +122 -0
  163. package/build/commands/create-extension/index.js.map +1 -0
  164. package/build/commands/create-extension/types.d.ts +11 -0
  165. package/build/commands/create-extension/types.js +7 -0
  166. package/build/commands/create-extension/types.js.map +1 -0
  167. package/build/commands/create-extension/utils/add-target-to-config.d.ts +2 -0
  168. package/build/commands/create-extension/utils/add-target-to-config.js +56 -0
  169. package/build/commands/create-extension/utils/add-target-to-config.js.map +1 -0
  170. package/build/commands/create-extension/utils/create-from-template.d.ts +3 -0
  171. package/build/commands/create-extension/utils/create-from-template.js +46 -0
  172. package/build/commands/create-extension/utils/create-from-template.js.map +1 -0
  173. package/build/commands/create-mini/index.d.ts +2 -0
  174. package/build/commands/create-mini/index.js +137 -0
  175. package/build/commands/create-mini/index.js.map +1 -0
  176. package/build/commands/create-mini/utils/template-app.d.ts +1 -0
  177. package/build/commands/create-mini/utils/template-app.js +47 -0
  178. package/build/commands/create-mini/utils/template-app.js.map +1 -0
  179. package/build/commands/dev/index.d.ts +12 -0
  180. package/build/commands/dev/index.js +75 -0
  181. package/build/commands/dev/index.js.map +1 -0
  182. package/build/commands/dev/utils/android.d.ts +18 -0
  183. package/build/commands/dev/utils/android.js +153 -0
  184. package/build/commands/dev/utils/android.js.map +1 -0
  185. package/build/commands/dev/utils/binaries.d.ts +5 -0
  186. package/build/commands/dev/utils/binaries.js +17 -0
  187. package/build/commands/dev/utils/binaries.js.map +1 -0
  188. package/build/commands/dev/utils/build-type.d.ts +2 -0
  189. package/build/commands/dev/utils/build-type.js +14 -0
  190. package/build/commands/dev/utils/build-type.js.map +1 -0
  191. package/build/commands/dev/utils/deeplink.d.ts +14 -0
  192. package/build/commands/dev/utils/deeplink.js +58 -0
  193. package/build/commands/dev/utils/deeplink.js.map +1 -0
  194. package/build/commands/dev/utils/interactive-terminal.d.ts +25 -0
  195. package/build/commands/dev/utils/interactive-terminal.js +210 -0
  196. package/build/commands/dev/utils/interactive-terminal.js.map +1 -0
  197. package/build/commands/dev/utils/metro/metro-config.d.ts +2 -0
  198. package/build/commands/dev/utils/metro/metro-config.js +27 -0
  199. package/build/commands/dev/utils/metro/metro-config.js.map +1 -0
  200. package/build/commands/dev/utils/metro/metro-minis-module-resolver.d.ts +6 -0
  201. package/build/commands/dev/utils/metro/metro-minis-module-resolver.js +11 -0
  202. package/build/commands/dev/utils/metro/metro-minis-module-resolver.js.map +1 -0
  203. package/build/commands/dev/utils/metro/metro-reporter.d.ts +13 -0
  204. package/build/commands/dev/utils/metro/metro-reporter.js +27 -0
  205. package/build/commands/dev/utils/metro/metro-reporter.js.map +1 -0
  206. package/build/commands/dev/utils/metro/metro-server-middleware.d.ts +10 -0
  207. package/build/commands/dev/utils/metro/metro-server-middleware.js +74 -0
  208. package/build/commands/dev/utils/metro/metro-server-middleware.js.map +1 -0
  209. package/build/commands/dev/utils/metro/metro-server.d.ts +6 -0
  210. package/build/commands/dev/utils/metro/metro-server.js +26 -0
  211. package/build/commands/dev/utils/metro/metro-server.js.map +1 -0
  212. package/build/commands/dev/utils/network.d.ts +20 -0
  213. package/build/commands/dev/utils/network.js +129 -0
  214. package/build/commands/dev/utils/network.js.map +1 -0
  215. package/build/commands/dev/utils/platform.d.ts +18 -0
  216. package/build/commands/dev/utils/platform.js +41 -0
  217. package/build/commands/dev/utils/platform.js.map +1 -0
  218. package/build/commands/dev/utils/prompt-binary-upgrade.d.ts +1 -0
  219. package/build/commands/dev/utils/prompt-binary-upgrade.js +12 -0
  220. package/build/commands/dev/utils/prompt-binary-upgrade.js.map +1 -0
  221. package/build/commands/dev/utils/qr-code.d.ts +1 -0
  222. package/build/commands/dev/utils/qr-code.js +5 -0
  223. package/build/commands/dev/utils/qr-code.js.map +1 -0
  224. package/build/commands/dev/utils/react-native-version.d.ts +4 -0
  225. package/build/commands/dev/utils/react-native-version.js +23 -0
  226. package/build/commands/dev/utils/react-native-version.js.map +1 -0
  227. package/build/commands/dev/utils/simulator.d.ts +22 -0
  228. package/build/commands/dev/utils/simulator.js +95 -0
  229. package/build/commands/dev/utils/simulator.js.map +1 -0
  230. package/build/commands/dev/utils/start-app/config.d.ts +5 -0
  231. package/build/commands/dev/utils/start-app/config.js +25 -0
  232. package/build/commands/dev/utils/start-app/config.js.map +1 -0
  233. package/build/commands/dev/utils/start-app/start-app-with-options.d.ts +2 -0
  234. package/build/commands/dev/utils/start-app/start-app-with-options.js +94 -0
  235. package/build/commands/dev/utils/start-app/start-app-with-options.js.map +1 -0
  236. package/build/commands/dev/utils/start-app/start-app.d.ts +2 -0
  237. package/build/commands/dev/utils/start-app/start-app.js +10 -0
  238. package/build/commands/dev/utils/start-app/start-app.js.map +1 -0
  239. package/build/commands/dev/utils/start-app/types.d.ts +20 -0
  240. package/build/commands/dev/utils/start-app/types.js +2 -0
  241. package/build/commands/dev/utils/start-app/types.js.map +1 -0
  242. package/build/commands/dev/utils/types.d.ts +24 -0
  243. package/build/commands/dev/utils/types.js +7 -0
  244. package/build/commands/dev/utils/types.js.map +1 -0
  245. package/build/commands/dev/utils/version.d.ts +64 -0
  246. package/build/commands/dev/utils/version.js +101 -0
  247. package/build/commands/dev/utils/version.js.map +1 -0
  248. package/build/commands/dev/utils/with-retries.d.ts +4 -0
  249. package/build/commands/dev/utils/with-retries.js +24 -0
  250. package/build/commands/dev/utils/with-retries.js.map +1 -0
  251. package/build/commands/doctor/index.d.ts +6 -0
  252. package/build/commands/doctor/index.js +21 -0
  253. package/build/commands/doctor/index.js.map +1 -0
  254. package/build/commands/doctor/utils/diagnose-dependencies.d.ts +7 -0
  255. package/build/commands/doctor/utils/diagnose-dependencies.js +113 -0
  256. package/build/commands/doctor/utils/diagnose-dependencies.js.map +1 -0
  257. package/build/commands/features/index.d.ts +6 -0
  258. package/build/commands/features/index.js +135 -0
  259. package/build/commands/features/index.js.map +1 -0
  260. package/build/commands/generate-graphql-types/index.d.ts +6 -0
  261. package/build/commands/generate-graphql-types/index.js +33 -0
  262. package/build/commands/generate-graphql-types/index.js.map +1 -0
  263. package/build/commands/generate-graphql-types/utils/generate-graphql-types.d.ts +2 -0
  264. package/build/commands/generate-graphql-types/utils/generate-graphql-types.js +101 -0
  265. package/build/commands/generate-graphql-types/utils/generate-graphql-types.js.map +1 -0
  266. package/build/commands/info/index.d.ts +3 -0
  267. package/build/commands/info/index.js +42 -0
  268. package/build/commands/info/index.js.map +1 -0
  269. package/build/commands/setup/index.d.ts +2 -0
  270. package/build/commands/setup/index.js +82 -0
  271. package/build/commands/setup/index.js.map +1 -0
  272. package/build/commands/submit/config.d.ts +9 -0
  273. package/build/commands/submit/config.js +18 -0
  274. package/build/commands/submit/config.js.map +1 -0
  275. package/build/commands/submit/errors.d.ts +19 -0
  276. package/build/commands/submit/errors.js +87 -0
  277. package/build/commands/submit/errors.js.map +1 -0
  278. package/build/commands/submit/gcs.d.ts +6 -0
  279. package/build/commands/submit/gcs.js +21 -0
  280. package/build/commands/submit/gcs.js.map +1 -0
  281. package/build/commands/submit/index.d.ts +2 -0
  282. package/build/commands/submit/index.js +25 -0
  283. package/build/commands/submit/index.js.map +1 -0
  284. package/build/commands/submit/submit.d.ts +5 -0
  285. package/build/commands/submit/submit.js +225 -0
  286. package/build/commands/submit/submit.js.map +1 -0
  287. package/build/commands/submit/tasks.d.ts +37 -0
  288. package/build/commands/submit/tasks.js +91 -0
  289. package/build/commands/submit/tasks.js.map +1 -0
  290. package/build/commands/submit/types.d.ts +14 -0
  291. package/build/commands/submit/types.js +2 -0
  292. package/build/commands/submit/types.js.map +1 -0
  293. package/build/commands/submit/utils/assert-core-dependencies-version.d.ts +1 -0
  294. package/build/commands/submit/utils/assert-core-dependencies-version.js +58 -0
  295. package/build/commands/submit/utils/assert-core-dependencies-version.js.map +1 -0
  296. package/build/commands/submit/utils/request-entry-point-params.d.ts +1 -0
  297. package/build/commands/submit/utils/request-entry-point-params.js +41 -0
  298. package/build/commands/submit/utils/request-entry-point-params.js.map +1 -0
  299. package/build/commands/submit/validation.d.ts +1 -0
  300. package/build/commands/submit/validation.js +11 -0
  301. package/build/commands/submit/validation.js.map +1 -0
  302. package/build/commands/upgrade/index.d.ts +13 -0
  303. package/build/commands/upgrade/index.js +65 -0
  304. package/build/commands/upgrade/index.js.map +1 -0
  305. package/build/commands/upgrade/utils/clear-metro-cache.d.ts +1 -0
  306. package/build/commands/upgrade/utils/clear-metro-cache.js +12 -0
  307. package/build/commands/upgrade/utils/clear-metro-cache.js.map +1 -0
  308. package/build/commands/upgrade/utils/cli.d.ts +1 -0
  309. package/build/commands/upgrade/utils/cli.js +15 -0
  310. package/build/commands/upgrade/utils/cli.js.map +1 -0
  311. package/build/commands/validate-manifest/index.d.ts +3 -0
  312. package/build/commands/validate-manifest/index.js +29 -0
  313. package/build/commands/validate-manifest/index.js.map +1 -0
  314. package/build/constants/extensions.d.ts +26 -0
  315. package/build/constants/extensions.js +31 -0
  316. package/build/constants/extensions.js.map +1 -0
  317. package/build/data/accept-invitation.d.ts +4 -0
  318. package/build/data/accept-invitation.js +16 -0
  319. package/build/data/accept-invitation.js.map +1 -0
  320. package/build/data/cancel-submission.d.ts +22 -0
  321. package/build/data/cancel-submission.js +26 -0
  322. package/build/data/cancel-submission.js.map +1 -0
  323. package/build/data/create-submission.d.ts +20 -0
  324. package/build/data/create-submission.js +27 -0
  325. package/build/data/create-submission.js.map +1 -0
  326. package/build/data/create-upload.d.ts +21 -0
  327. package/build/data/create-upload.js +40 -0
  328. package/build/data/create-upload.js.map +1 -0
  329. package/build/data/get-submissions.d.ts +27 -0
  330. package/build/data/get-submissions.js +33 -0
  331. package/build/data/get-submissions.js.map +1 -0
  332. package/build/data/gql-client.d.ts +8 -0
  333. package/build/data/gql-client.js +9 -0
  334. package/build/data/gql-client.js.map +1 -0
  335. package/build/data/mini.d.ts +5 -0
  336. package/build/data/mini.js +14 -0
  337. package/build/data/mini.js.map +1 -0
  338. package/build/data/types/autogenerated/shop-minis-admin-api/fragment-masking.d.ts +13 -0
  339. package/build/data/types/autogenerated/shop-minis-admin-api/fragment-masking.js +7 -0
  340. package/build/data/types/autogenerated/shop-minis-admin-api/fragment-masking.js.map +1 -0
  341. package/build/data/types/autogenerated/shop-minis-admin-api/gql.d.ts +75 -0
  342. package/build/data/types/autogenerated/shop-minis-admin-api/gql.js +24 -0
  343. package/build/data/types/autogenerated/shop-minis-admin-api/gql.js.map +1 -0
  344. package/build/data/types/autogenerated/shop-minis-admin-api/graphql.d.ts +1745 -0
  345. package/build/data/types/autogenerated/shop-minis-admin-api/graphql.js +1072 -0
  346. package/build/data/types/autogenerated/shop-minis-admin-api/graphql.js.map +1 -0
  347. package/build/data/types/autogenerated/shop-minis-admin-api/index.d.ts +2 -0
  348. package/build/data/types/autogenerated/shop-minis-admin-api/index.js +3 -0
  349. package/build/data/types/autogenerated/shop-minis-admin-api/index.js.map +1 -0
  350. package/build/dev-panel/asset-manifest.json +13 -0
  351. package/build/dev-panel/checkmark.svg +3 -0
  352. package/build/dev-panel/chevron.svg +3 -0
  353. package/build/dev-panel/copy.svg +4 -0
  354. package/build/dev-panel/get-started.svg +3 -0
  355. package/build/dev-panel/how-to.svg +3 -0
  356. package/build/dev-panel/index.html +1 -0
  357. package/build/dev-panel/references.svg +3 -0
  358. package/build/dev-panel/robots.txt +3 -0
  359. package/build/dev-panel/static/css/main.7f1ee407.css +2 -0
  360. package/build/dev-panel/static/css/main.7f1ee407.css.map +1 -0
  361. package/build/dev-panel/static/js/main.6625699c.js +3 -0
  362. package/build/dev-panel/static/js/main.6625699c.js.LICENSE.txt +41 -0
  363. package/build/dev-panel/static/js/main.6625699c.js.map +1 -0
  364. package/build/dev-panel/topics.svg +3 -0
  365. package/build/index.d.ts +2 -0
  366. package/build/index.js +47 -0
  367. package/build/index.js.map +1 -0
  368. package/build/schemas/manifest.schema.json +214 -0
  369. package/build/templates-index.d.ts +6 -0
  370. package/build/templates-index.js +19 -0
  371. package/build/templates-index.js.map +1 -0
  372. package/build/utils/archive.d.ts +30 -0
  373. package/build/utils/archive.js +38 -0
  374. package/build/utils/archive.js.map +1 -0
  375. package/build/utils/codemod.d.ts +86 -0
  376. package/build/utils/codemod.js +161 -0
  377. package/build/utils/codemod.js.map +1 -0
  378. package/build/utils/common-tasks.d.ts +1 -0
  379. package/build/utils/common-tasks.js +49 -0
  380. package/build/utils/common-tasks.js.map +1 -0
  381. package/build/utils/development-params.d.ts +13 -0
  382. package/build/utils/development-params.js +44 -0
  383. package/build/utils/development-params.js.map +1 -0
  384. package/build/utils/exec-async-child-process.d.ts +18 -0
  385. package/build/utils/exec-async-child-process.js +41 -0
  386. package/build/utils/exec-async-child-process.js.map +1 -0
  387. package/build/utils/extensions.d.ts +13 -0
  388. package/build/utils/extensions.js +87 -0
  389. package/build/utils/extensions.js.map +1 -0
  390. package/build/utils/file.d.ts +1 -0
  391. package/build/utils/file.js +7 -0
  392. package/build/utils/file.js.map +1 -0
  393. package/build/utils/minis-manifest.d.ts +8 -0
  394. package/build/utils/minis-manifest.js +67 -0
  395. package/build/utils/minis-manifest.js.map +1 -0
  396. package/build/utils/package-manager.d.ts +42 -0
  397. package/build/utils/package-manager.js +107 -0
  398. package/build/utils/package-manager.js.map +1 -0
  399. package/build/utils/patch-package.d.ts +5 -0
  400. package/build/utils/patch-package.js +76 -0
  401. package/build/utils/patch-package.js.map +1 -0
  402. package/build/utils/path.d.ts +1 -0
  403. package/build/utils/path.js +8 -0
  404. package/build/utils/path.js.map +1 -0
  405. package/build/utils/replace-strings-in-template.d.ts +1 -0
  406. package/build/utils/replace-strings-in-template.js +15 -0
  407. package/build/utils/replace-strings-in-template.js.map +1 -0
  408. package/build/utils/semver.d.ts +1 -0
  409. package/build/utils/semver.js +19 -0
  410. package/build/utils/semver.js.map +1 -0
  411. package/build/utils/wrap-with-loading-indicator.d.ts +9 -0
  412. package/build/utils/wrap-with-loading-indicator.js +16 -0
  413. package/build/utils/wrap-with-loading-indicator.js.map +1 -0
  414. package/package.json +102 -0
  415. package/scripts/graphql-codegen.ts +23 -0
  416. package/scripts/test-template.ts +66 -0
  417. package/shipit.snapshot.yml +9 -0
  418. package/templates/__template_blank/src/App.tsx +24 -0
  419. package/templates/__template_blank/src/index.tsx +9 -0
  420. package/templates/__template_common/.eslintignore +1 -0
  421. package/templates/__template_common/.eslintrc.js +3 -0
  422. package/templates/__template_common/.graphqlrc.js +1 -0
  423. package/templates/__template_common/.prettierrc.json +8 -0
  424. package/templates/__template_common/assets.d.ts +14 -0
  425. package/templates/__template_common/babel.config.js +5 -0
  426. package/templates/__template_common/gitignore +5 -0
  427. package/templates/__template_common/index.tsx +7 -0
  428. package/templates/__template_common/metro.config.js +5 -0
  429. package/templates/__template_common/package.json +38 -0
  430. package/templates/__template_common/src/manifest.json +6 -0
  431. package/templates/__template_common/tsconfig.json +41 -0
  432. package/templates/__template_shoppable_posts/src/App.tsx +37 -0
  433. package/templates/__template_shoppable_posts/src/index.tsx +9 -0
  434. package/templates/__template_shoppable_videos/src/App.tsx +34 -0
  435. package/templates/__template_shoppable_videos/src/index.tsx +9 -0
  436. package/templates/extensions/components/__template_blank/render.tsx +11 -0
  437. package/templates/extensions/components/__template_bundle-collection/render.tsx +31 -0
  438. package/templates/extensions/components/__template_bundle-collection/seed.ts +26 -0
  439. package/templates/extensions/components/__template_bundle-selector/render.tsx +51 -0
  440. package/templates/extensions/components/__template_bundle-selector/seed.ts +72 -0
  441. package/templates/extensions/components/__template_default-card/render.tsx +24 -0
  442. package/templates/extensions/components/__template_default-card/seed.ts +10 -0
  443. package/templates/extensions/components/__template_image-collection/render.tsx +17 -0
  444. package/templates/extensions/components/__template_image-collection/seed.ts +70 -0
  445. package/templates/extensions/components/__template_link/render.tsx +17 -0
  446. package/templates/extensions/components/__template_link/seed.ts +5 -0
  447. package/templates/extensions/components/__template_product-offer-card/render.tsx +17 -0
  448. package/templates/extensions/components/__template_product-offer-card/seed.ts +44 -0
  449. package/templates/extensions/components/__template_video-collection/render.tsx +17 -0
  450. package/templates/extensions/components/__template_video-collection/seed.ts +37 -0
  451. package/templates/extensions/queries/__template_product-page/input.graphql +6 -0
  452. package/templates/extensions/queries/__template_product-page/input.graphql.d.ts +26 -0
@@ -0,0 +1,49 @@
1
+ import { ClientError } from 'graphql-request';
2
+ import { AbortError } from '@shopify/cli-kit/node/error';
3
+ import { APPLY_FOR_EARLY_ACCESS_URL, SHOP_MINIS_ADMIN_API_KEY, } from '../commands/config.js';
4
+ import { getSubmissions as graphqlGetSubmissions } from '../data/get-submissions.js';
5
+ export async function assertNetworkAndAuth() {
6
+ const apiKey = SHOP_MINIS_ADMIN_API_KEY;
7
+ if (!apiKey) {
8
+ throw new AbortError('Shop Minis API key is not set.', undefined, [
9
+ [
10
+ 'To continue, set the environment variable in .env',
11
+ { bold: 'SHOP_MINIS_API_KEY=<your-shop-minis-api-key>' },
12
+ ],
13
+ ]);
14
+ }
15
+ try {
16
+ // Use this query as a simple way to check network and auth at the same time
17
+ await graphqlGetSubmissions();
18
+ }
19
+ catch (error) {
20
+ if (error instanceof ClientError && error.response.status === 401) {
21
+ throw new AbortError('Unable to authenticate your account', 'Your Shop Minis Admin API key is invalid.\n' +
22
+ 'Request a new API key and insert it into .env to continue.', [
23
+ [
24
+ 'If you',
25
+ { bold: 'have' },
26
+ 'early access, request a new Shop Minis Admin API key from the Shop Minis team.',
27
+ ],
28
+ [
29
+ 'If you',
30
+ { bold: "don't have" },
31
+ 'early access, apply for early access:',
32
+ {
33
+ link: {
34
+ url: APPLY_FOR_EARLY_ACCESS_URL,
35
+ label: 'Shop Minis website',
36
+ },
37
+ },
38
+ ],
39
+ ]);
40
+ }
41
+ if (error instanceof Object &&
42
+ 'code' in error &&
43
+ error?.code === 'ENOTFOUND') {
44
+ throw new AbortError(`Network error`, 'Try again and if the issue continues, contact us.', ['Try to run `submit` again', "Contact Shop if you're having issues"]);
45
+ }
46
+ throw error;
47
+ }
48
+ }
49
+ //# sourceMappingURL=common-tasks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common-tasks.js","sourceRoot":"","sources":["../../src/utils/common-tasks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAC,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAC,UAAU,EAAC,MAAM,6BAA6B,CAAA;AAEtD,OAAO,EACL,0BAA0B,EAC1B,wBAAwB,GACzB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAC,cAAc,IAAI,qBAAqB,EAAC,MAAM,4BAA4B,CAAA;AAElF,MAAM,CAAC,KAAK,UAAU,oBAAoB;IACxC,MAAM,MAAM,GAAG,wBAAwB,CAAA;IAEvC,IAAI,CAAC,MAAM,EAAE;QACX,MAAM,IAAI,UAAU,CAAC,gCAAgC,EAAE,SAAS,EAAE;YAChE;gBACE,mDAAmD;gBACnD,EAAC,IAAI,EAAE,8CAA8C,EAAC;aACvD;SACF,CAAC,CAAA;KACH;IAED,IAAI;QACF,4EAA4E;QAC5E,MAAM,qBAAqB,EAAE,CAAA;KAC9B;IAAC,OAAO,KAAK,EAAE;QACd,IAAI,KAAK,YAAY,WAAW,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE;YACjE,MAAM,IAAI,UAAU,CAClB,qCAAqC,EACrC,6CAA6C;gBAC3C,4DAA4D,EAC9D;gBACE;oBACE,QAAQ;oBACR,EAAC,IAAI,EAAE,MAAM,EAAC;oBACd,gFAAgF;iBACjF;gBACD;oBACE,QAAQ;oBACR,EAAC,IAAI,EAAE,YAAY,EAAC;oBACpB,uCAAuC;oBACvC;wBACE,IAAI,EAAE;4BACJ,GAAG,EAAE,0BAA0B;4BAC/B,KAAK,EAAE,oBAAoB;yBAC5B;qBACF;iBACF;aACF,CACF,CAAA;SACF;QAED,IACE,KAAK,YAAY,MAAM;YACvB,MAAM,IAAI,KAAK;YACf,KAAK,EAAE,IAAI,KAAK,WAAW,EAC3B;YACA,MAAM,IAAI,UAAU,CAClB,eAAe,EACf,mDAAmD,EACnD,CAAC,2BAA2B,EAAE,sCAAsC,CAAC,CACtE,CAAA;SACF;QAED,MAAM,KAAK,CAAA;KACZ;AACH,CAAC"}
@@ -0,0 +1,13 @@
1
+ declare const ALLOWED_ENTRY_POINT_PARAMS: readonly ["product_id", "shop_id", "product_variant_id", "external_id", "shop_domain", "order_id", "category_id"];
2
+ type DevelopmentEntryPointParams = {
3
+ [key in (typeof ALLOWED_ENTRY_POINT_PARAMS)[number]]?: string;
4
+ };
5
+ /**
6
+ * Reads the content of the file entry-point-params.json in the rootpath of a Mini folder, which should be of the shape Record<string, string>.
7
+ * Then, formats the object as an URL query string and returns it.
8
+ *
9
+ * Returns empty string if the file does not exist or if the format of its content is incorrect.
10
+ */
11
+ export declare function getDevelopmentEntryPointParams(): DevelopmentEntryPointParams;
12
+ export declare function getDevelopmentEntryPointParamsQueryString(): string;
13
+ export {};
@@ -0,0 +1,44 @@
1
+ import { createRequire } from 'node:module';
2
+ import path from 'node:path';
3
+ import { getMiniBasePath } from './path.js';
4
+ const ALLOWED_ENTRY_POINT_PARAMS = [
5
+ 'product_id',
6
+ 'shop_id',
7
+ 'product_variant_id',
8
+ 'external_id',
9
+ 'shop_domain',
10
+ 'order_id',
11
+ 'category_id',
12
+ ];
13
+ const DEVELOPMENT_PARAMS_FILE_NAME = 'entry-point-params.json';
14
+ const DEVELOPMENT_PARAMS_FILE_PATH = path.join(getMiniBasePath(), DEVELOPMENT_PARAMS_FILE_NAME);
15
+ /**
16
+ * Reads the content of the file entry-point-params.json in the rootpath of a Mini folder, which should be of the shape Record<string, string>.
17
+ * Then, formats the object as an URL query string and returns it.
18
+ *
19
+ * Returns empty string if the file does not exist or if the format of its content is incorrect.
20
+ */
21
+ export function getDevelopmentEntryPointParams() {
22
+ try {
23
+ const localRequire = createRequire(import.meta.url);
24
+ delete localRequire.cache[localRequire.resolve(DEVELOPMENT_PARAMS_FILE_PATH)];
25
+ const persistedParams = localRequire(DEVELOPMENT_PARAMS_FILE_PATH);
26
+ const paramsAsEntries = Object.entries(persistedParams).filter(([key, value]) => ALLOWED_ENTRY_POINT_PARAMS.includes(key) && Boolean(value));
27
+ return Object.fromEntries(paramsAsEntries);
28
+ }
29
+ catch (err) {
30
+ if (err?.code !== 'MODULE_NOT_FOUND' && err?.code !== 'ENOENT') {
31
+ console.log('\n ⚠️ Development entrypoints params ignored due to errors:\n');
32
+ console.log(err);
33
+ console.log('\n');
34
+ }
35
+ // do nothing, the development entrypoint params file is optional and might not exist.
36
+ return {};
37
+ }
38
+ }
39
+ export function getDevelopmentEntryPointParamsQueryString() {
40
+ const paramsObject = getDevelopmentEntryPointParams();
41
+ const paramsQueryString = new URLSearchParams(paramsObject).toString();
42
+ return paramsQueryString ? `?${paramsQueryString}` : '';
43
+ }
44
+ //# sourceMappingURL=development-params.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"development-params.js","sourceRoot":"","sources":["../../src/utils/development-params.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAC,MAAM,aAAa,CAAA;AACzC,OAAO,IAAI,MAAM,WAAW,CAAA;AAE5B,OAAO,EAAC,eAAe,EAAC,MAAM,WAAW,CAAA;AAEzC,MAAM,0BAA0B,GAAG;IACjC,YAAY;IACZ,SAAS;IACT,oBAAoB;IACpB,aAAa;IACb,aAAa;IACb,UAAU;IACV,aAAa;CACL,CAAA;AAMV,MAAM,4BAA4B,GAAG,yBAAyB,CAAA;AAC9D,MAAM,4BAA4B,GAAG,IAAI,CAAC,IAAI,CAC5C,eAAe,EAAE,EACjB,4BAA4B,CAC7B,CAAA;AAED;;;;;GAKG;AACH,MAAM,UAAU,8BAA8B;IAC5C,IAAI;QACF,MAAM,YAAY,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QACnD,OAAO,YAAY,CAAC,KAAK,CACvB,YAAY,CAAC,OAAO,CAAC,4BAA4B,CAAC,CACnD,CAAA;QACD,MAAM,eAAe,GAA2B,YAAY,CAC1D,4BAA4B,CAC7B,CAAA;QAED,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,MAAM,CAC5D,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CACf,0BAA0B,CAAC,QAAQ,CACjC,GAAwC,CACzC,IAAI,OAAO,CAAC,KAAK,CAAC,CACtB,CAAA;QACD,OAAO,MAAM,CAAC,WAAW,CAAC,eAAe,CAAC,CAAA;KAC3C;IAAC,OAAO,GAAQ,EAAE;QACjB,IAAI,GAAG,EAAE,IAAI,KAAK,kBAAkB,IAAI,GAAG,EAAE,IAAI,KAAK,QAAQ,EAAE;YAC9D,OAAO,CAAC,GAAG,CACT,gEAAgE,CACjE,CAAA;YACD,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;YAChB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;SAClB;QACD,sFAAsF;QACtF,OAAO,EAAE,CAAA;KACV;AACH,CAAC;AAED,MAAM,UAAU,yCAAyC;IACvD,MAAM,YAAY,GAAG,8BAA8B,EAAE,CAAA;IACrD,MAAM,iBAAiB,GAAG,IAAI,eAAe,CAAC,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAA;IAEtE,OAAO,iBAAiB,CAAC,CAAC,CAAC,IAAI,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;AACzD,CAAC"}
@@ -0,0 +1,18 @@
1
+ /// <reference types="node" resolution-mode="require"/>
2
+ import { exec } from 'child_process';
3
+ import { Options as OraOptions } from 'ora';
4
+ declare const _execAsync: typeof exec.__promisify__;
5
+ type Tail<T extends any[]> = T extends [infer _I, ...infer L] ? L : never;
6
+ type ExecOptions = Tail<Parameters<typeof _execAsync>>;
7
+ interface CmdOptions {
8
+ cmd: string;
9
+ loadingMessage?: string;
10
+ successMessage?: string;
11
+ errorMessage?: string;
12
+ spinnerOptions?: Omit<OraOptions, 'text' | 'prefixText'>;
13
+ }
14
+ export declare function execAsync(cmdConfig: CmdOptions | string, ...args: ExecOptions): Promise<{
15
+ stdout: string[];
16
+ stderr: string[];
17
+ }>;
18
+ export {};
@@ -0,0 +1,41 @@
1
+ import { promisify } from 'util';
2
+ import { exec } from 'child_process';
3
+ import ora from 'ora';
4
+ const _execAsync = promisify(exec);
5
+ export async function execAsync(cmdConfig, ...args) {
6
+ if (typeof cmdConfig === 'string') {
7
+ cmdConfig = { cmd: cmdConfig }; // eslint-disable-line no-param-reassign
8
+ }
9
+ const loadingIndicator = ora(cmdConfig.spinnerOptions);
10
+ if (cmdConfig.loadingMessage) {
11
+ loadingIndicator.start(cmdConfig.loadingMessage);
12
+ }
13
+ let stderr = '';
14
+ let stdout = '';
15
+ try {
16
+ const result = await _execAsync(cmdConfig.cmd, ...args);
17
+ stderr = result.stderr;
18
+ stdout = result.stdout;
19
+ }
20
+ catch (err) {
21
+ if (loadingIndicator.isSpinning) {
22
+ loadingIndicator.fail(cmdConfig.errorMessage);
23
+ console.log('\n');
24
+ }
25
+ throw err;
26
+ }
27
+ if (loadingIndicator.isSpinning) {
28
+ loadingIndicator.succeed(cmdConfig.successMessage);
29
+ }
30
+ if (typeof stdout !== 'string') {
31
+ stdout = stdout.toString('utf8');
32
+ }
33
+ if (typeof stderr !== 'string') {
34
+ stderr = stderr.toString('utf8');
35
+ }
36
+ return {
37
+ stdout: stdout.split(/[\n\r\t]+/).filter(Boolean),
38
+ stderr: stderr.split(/[\n\r\t]+/).filter(Boolean),
39
+ };
40
+ }
41
+ //# sourceMappingURL=exec-async-child-process.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exec-async-child-process.js","sourceRoot":"","sources":["../../src/utils/exec-async-child-process.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,MAAM,CAAA;AAC9B,OAAO,EAAC,IAAI,EAAC,MAAM,eAAe,CAAA;AAElC,OAAO,GAA4B,MAAM,KAAK,CAAA;AAE9C,MAAM,UAAU,GAAG,SAAS,CAAC,IAAI,CAAC,CAAA;AAalC,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,SAA8B,EAC9B,GAAG,IAAiB;IAEpB,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE;QACjC,SAAS,GAAG,EAAC,GAAG,EAAE,SAAS,EAAC,CAAA,CAAC,wCAAwC;KACtE;IAED,MAAM,gBAAgB,GAAG,GAAG,CAAC,SAAS,CAAC,cAAc,CAAC,CAAA;IACtD,IAAI,SAAS,CAAC,cAAc,EAAE;QAC5B,gBAAgB,CAAC,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAA;KACjD;IAED,IAAI,MAAM,GAAoB,EAAE,CAAA;IAChC,IAAI,MAAM,GAAoB,EAAE,CAAA;IAChC,IAAI;QACF,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAA;QACvD,MAAM,GAAG,MAAM,CAAC,MAAM,CAAA;QACtB,MAAM,GAAG,MAAM,CAAC,MAAM,CAAA;KACvB;IAAC,OAAO,GAAG,EAAE;QACZ,IAAI,gBAAgB,CAAC,UAAU,EAAE;YAC/B,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAA;YAC7C,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;SAClB;QACD,MAAM,GAAG,CAAA;KACV;IAED,IAAI,gBAAgB,CAAC,UAAU,EAAE;QAC/B,gBAAgB,CAAC,OAAO,CAAC,SAAS,CAAC,cAAc,CAAC,CAAA;KACnD;IAED,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;QAC9B,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;KACjC;IACD,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;QAC9B,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;KACjC;IACD,OAAO;QACL,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;QACjD,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;KAClD,CAAA;AACH,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { ExtensionTarget } from '../constants/extensions.js';
2
+ export declare const CONFIG_PATH: string;
3
+ /**
4
+ * Find a list of extensions used by this mini
5
+ *
6
+ * We read this from the minis src/index.tsx config.Targets object
7
+ */
8
+ export declare function getMiniExtensions(specifiedExtensionTargets: string[] | undefined): Promise<ExtensionTarget[]>;
9
+ /**
10
+ * Given a extension target name, returns the path to the folder in the mini codebase that contains
11
+ * input queries
12
+ */
13
+ export declare function getExtensionInputQueriesFolderPath(target: string): string;
@@ -0,0 +1,87 @@
1
+ import path from 'node:path';
2
+ import { readFile } from 'node:fs/promises';
3
+ import { outputDebug } from '@shopify/cli-kit/node/output';
4
+ import { ExtensionTarget } from '../constants/extensions.js';
5
+ import { findObjectExpression, findObjectProperty, j, objectKeys, } from './codemod.js';
6
+ import { getMiniBasePath } from './path.js';
7
+ export const CONFIG_PATH = path.join('src', 'index.tsx');
8
+ const readConfigFile = () => readFile(path.join(getMiniBasePath(), CONFIG_PATH), 'utf8');
9
+ /**
10
+ * Find a list of extensions used by this mini
11
+ *
12
+ * We read this from the minis src/index.tsx config.Targets object
13
+ */
14
+ export async function getMiniExtensions(specifiedExtensionTargets) {
15
+ let configFile;
16
+ let root;
17
+ try {
18
+ configFile = await readConfigFile();
19
+ }
20
+ catch (error) {
21
+ outputDebug(`getMiniExtensions couldn't read config at ${CONFIG_PATH}`);
22
+ return [];
23
+ }
24
+ if (!configFile || !configFile.includes('MiniAppConfig')) {
25
+ outputDebug(`getMiniExtensions couldn't find \`MiniAppConfig\` in ${CONFIG_PATH}`);
26
+ return [];
27
+ }
28
+ try {
29
+ root = j(configFile);
30
+ }
31
+ catch (error) {
32
+ outputDebug(`getMiniExtensions couldn't parse config at ${CONFIG_PATH}`);
33
+ return [];
34
+ }
35
+ // It would be better if we could find this by type `MiniAppConfig`
36
+ // Or find it by tracing back the default export of the config file
37
+ const configObject = findObjectExpression(root, 'config');
38
+ if (!configObject) {
39
+ outputDebug(`getMiniExtensions couldn't find a \`config\` object in ${CONFIG_PATH}`);
40
+ return [];
41
+ }
42
+ const targetsObject = findObjectProperty({
43
+ obj: configObject,
44
+ key: 'Targets',
45
+ });
46
+ if (!targetsObject) {
47
+ outputDebug('getMiniExtensions no `Targets` found in config');
48
+ return [];
49
+ }
50
+ const targetsValue = targetsObject.value;
51
+ if (targetsValue.type !== 'ObjectExpression') {
52
+ outputDebug(`getMiniExtensions unexpected type for Targets. Expected: ObjectExpression, Found: ${targetsValue.type}`);
53
+ return [];
54
+ }
55
+ const definedExtensions = objectKeys({ obj: targetsValue });
56
+ if (!definedExtensions) {
57
+ outputDebug('getMiniExtensions no extensions found in `Targets`');
58
+ return [];
59
+ }
60
+ const possibleExtensions = Object.values(ExtensionTarget);
61
+ const validDefinedExtensions = possibleExtensions.filter(val => definedExtensions.includes(val));
62
+ outputDebug(`getMiniExtensions extensions found in \`Targets\`: ${JSON.stringify(validDefinedExtensions)}`);
63
+ const invalidDefinedExtensions = definedExtensions.filter(val => !possibleExtensions.includes(val));
64
+ if (invalidDefinedExtensions.length > 0) {
65
+ outputDebug(`getMiniExtensions invalid extensions found in \`Targets\`: ${JSON.stringify(invalidDefinedExtensions)}`);
66
+ }
67
+ let extensionsToStart = validDefinedExtensions;
68
+ // Find the valid extensions this mini has, filter to cli-args if supplied
69
+ // We could (should?) error out if we don't find what the user wanted
70
+ if (Array.isArray(specifiedExtensionTargets) &&
71
+ specifiedExtensionTargets.length > 0) {
72
+ outputDebug(`Extensions from cli args ${JSON.stringify(specifiedExtensionTargets)}`);
73
+ extensionsToStart = validDefinedExtensions.filter(ext => specifiedExtensionTargets?.includes(ext));
74
+ }
75
+ else {
76
+ outputDebug(`No extensions from cli args`);
77
+ }
78
+ return extensionsToStart;
79
+ }
80
+ /**
81
+ * Given a extension target name, returns the path to the folder in the mini codebase that contains
82
+ * input queries
83
+ */
84
+ export function getExtensionInputQueriesFolderPath(target) {
85
+ return path.join(getMiniBasePath(), 'src', 'targets', target);
86
+ }
87
+ //# sourceMappingURL=extensions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extensions.js","sourceRoot":"","sources":["../../src/utils/extensions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare const getFileChecksum: (filename: string) => string;
@@ -0,0 +1,7 @@
1
+ import crypto from 'node:crypto';
2
+ import fs from 'node:fs';
3
+ export const getFileChecksum = (filename) => {
4
+ const fileBuffer = fs.readFileSync(filename);
5
+ return crypto.createHash('md5').update(fileBuffer).digest('base64');
6
+ };
7
+ //# sourceMappingURL=file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file.js","sourceRoot":"","sources":["../../src/utils/file.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAA;AAChC,OAAO,EAAE,MAAM,SAAS,CAAA;AAExB,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,QAAgB,EAAE,EAAE;IAClD,MAAM,UAAU,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAA;IAE5C,OAAO,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;AACrE,CAAC,CAAA"}
@@ -0,0 +1,8 @@
1
+ export declare const DEFAULT_MANIFEST_PATH: string;
2
+ export declare function getMiniManifest(manifestPath?: string): any;
3
+ export declare const getMiniManifestFeatures: (manifestPath?: string) => string[];
4
+ export declare const setMiniManifestFeatures: (features: string[], manifestPath?: string) => void;
5
+ export declare function validateManifest(manifestPath?: string): {
6
+ valid: boolean;
7
+ errors: string[];
8
+ };
@@ -0,0 +1,67 @@
1
+ import { createRequire } from 'node:module';
2
+ import path from 'node:path';
3
+ import { writeFileSync } from 'node:fs';
4
+ import { AbortError } from '@shopify/cli-kit/node/error';
5
+ import { Validator } from 'jsonschema';
6
+ import { getMiniBasePath } from './path.js';
7
+ const require = createRequire(import.meta.url);
8
+ const manifestSchema = require('../schemas/manifest.schema.json');
9
+ export const DEFAULT_MANIFEST_PATH = path.join('src', 'manifest.json');
10
+ export function getMiniManifest(manifestPath = DEFAULT_MANIFEST_PATH) {
11
+ const fullManifestPath = path.join(getMiniBasePath(), manifestPath);
12
+ let manifest;
13
+ try {
14
+ manifest = require(fullManifestPath);
15
+ }
16
+ catch (err) {
17
+ const mockManifest = process.env.MOCK_MANIFEST;
18
+ if (mockManifest) {
19
+ try {
20
+ manifest = JSON.parse(mockManifest);
21
+ manifest = typeof manifest === 'object' ? manifest : null;
22
+ }
23
+ catch {
24
+ manifest = null;
25
+ }
26
+ if (manifest === null) {
27
+ throw new Error(`Failed to load mock manifest value: ${mockManifest}`);
28
+ }
29
+ }
30
+ else {
31
+ let errorMessage = `Could not load manifest file from ${manifestPath}`;
32
+ if (err?.name === 'SyntaxError') {
33
+ errorMessage = `There are syntax errors in your manifest file (path: ${manifestPath}).`;
34
+ }
35
+ else if (err?.code === 'MODULE_NOT_FOUND') {
36
+ errorMessage = `The manifest file of your mini does not exist. Create it in the path "${manifestPath}".`;
37
+ }
38
+ errorMessage +=
39
+ '\nRead more about the manifest schema here: https://shop.app/minis/docs/reference/manifest/';
40
+ throw new AbortError('Failed to read the manifest file.', errorMessage);
41
+ }
42
+ }
43
+ return manifest;
44
+ }
45
+ export const getMiniManifestFeatures = (manifestPath = DEFAULT_MANIFEST_PATH) => getMiniManifest(manifestPath)?.features ?? [];
46
+ export const setMiniManifestFeatures = (features, manifestPath = DEFAULT_MANIFEST_PATH) => {
47
+ const fullManifestPath = path.join(getMiniBasePath(), manifestPath);
48
+ const manifestJson = getMiniManifest(manifestPath);
49
+ manifestJson.features = features;
50
+ writeFileSync(fullManifestPath, `${JSON.stringify(manifestJson, null, 2)}\n`, {
51
+ encoding: 'utf-8',
52
+ });
53
+ };
54
+ const V1_ENTRYPOINTS = ['CONTENT_CARD', 'ACTION_BUTTON', 'EVENT_CARD'];
55
+ export function validateManifest(manifestPath) {
56
+ const manifest = getMiniManifest(manifestPath);
57
+ const validator = new Validator();
58
+ const result = validator.validate(manifest, manifestSchema);
59
+ if (manifest.entry_points?.some((entry_point) => entry_point.type && V1_ENTRYPOINTS.includes(entry_point.type))) {
60
+ throw new AbortError(`${V1_ENTRYPOINTS} entry points are no longer supported and must be removed from the manifest.`);
61
+ }
62
+ return {
63
+ valid: result.valid,
64
+ errors: result.errors.map(validationError => validationError.stack),
65
+ };
66
+ }
67
+ //# sourceMappingURL=minis-manifest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"minis-manifest.js","sourceRoot":"","sources":["../../src/utils/minis-manifest.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ import _ from 'lodash';
2
+ export declare const getPackageManager: (() => Promise<"yarn" | "npm" | "pnpm" | "unknown">) & _.MemoizedFunction;
3
+ interface UpgradeCommandOptions {
4
+ version?: string;
5
+ exact?: boolean;
6
+ }
7
+ /**
8
+ * Install a package + update package.json and locks
9
+ */
10
+ export declare const getUpgradePackageCommand: (packageName: string, { version, exact }?: UpgradeCommandOptions) => Promise<string>;
11
+ export declare const execUpgradePackageCommand: (packageName: string, { version, exact }?: UpgradeCommandOptions) => Promise<void>;
12
+ /**
13
+ * Install the latest versions that are compatible with the range in package.json
14
+ * Yarn will upgrade in this range if it can and npm will stick with an existing compatible version
15
+ */
16
+ export declare const getInstallCommand: () => Promise<"yarn install" | "npm install --legacy-peer-deps">;
17
+ export declare const execInstallCommand: () => Promise<void>;
18
+ /**
19
+ * Get a package.json script command formatted according to the detected package manager
20
+ */
21
+ export declare const getRunScriptCommand: (scriptName: string, scriptArgs?: string[]) => Promise<string>;
22
+ /**
23
+ * Get a dependency bin command formatted according to the detected package manager
24
+ */
25
+ export declare const getRunBinCommand: (scriptName: string, scriptArgs?: string[]) => Promise<string>;
26
+ /**
27
+ * Gets the latest version of a package available in the public npm registry
28
+ */
29
+ export declare const getPackageLatestVersionCommand: (packageName: string) => Promise<string>;
30
+ /**
31
+ * Gets the latest alpha version of a package available in the public npm registry
32
+ */
33
+ export declare const getPackageAlphaVersionCommand: (packageName: string) => Promise<string>;
34
+ export declare const hardResetDependencies: () => Promise<[{
35
+ stdout: string[];
36
+ stderr: string[];
37
+ }, {
38
+ stdout: string[];
39
+ stderr: string[];
40
+ }]>;
41
+ export declare const getPackageVersion: (packageName: string) => Promise<string>;
42
+ export {};
@@ -0,0 +1,107 @@
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
+ * Gets the latest version of a package available in the public npm registry
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
+ /**
78
+ * Gets the latest alpha version of a package available in the public npm registry
79
+ */
80
+ export const getPackageAlphaVersionCommand = async (packageName) => {
81
+ const packageManager = await getPackageManager();
82
+ return packageManager === 'yarn'
83
+ ? `yarn info ${packageName} dist-tags.alpha --silent`
84
+ : `npm show ${packageName} dist-tags.alpha`;
85
+ };
86
+ export const hardResetDependencies = async () => {
87
+ const installCommand = await getInstallCommand(); // get install command before deleting lockfiles, since lockfiles are used to detect package manager
88
+ await execAsync('rm -rf yarn.lock package-lock.json');
89
+ // doing `rm -rf node_modules proved to be very slow
90
+ // we move it to a tmp folder instead, so that we can reinstall dependencies while we delete the directory in parallel
91
+ const tmpDir = await mkdtemp(path.join(os.tmpdir(), 'minis_dependencies'));
92
+ await execAsync(`mv node_modules ${tmpDir}`);
93
+ return Promise.all([execAsync(`rm -rf ${tmpDir}`), execAsync(installCommand)]);
94
+ };
95
+ export const getPackageVersion = async (packageName) => {
96
+ const packageJsonPath = path.join(process.cwd(), 'node_modules', ...packageName.split('/'), 'package.json');
97
+ let packageJson = {};
98
+ try {
99
+ const packageJsonString = fs.readFileSync(packageJsonPath).toString('utf-8');
100
+ packageJson = JSON.parse(packageJsonString);
101
+ }
102
+ catch {
103
+ // do nothing. we will return 'not found' instead of crashing
104
+ }
105
+ return packageJson.version || 'not found';
106
+ };
107
+ //# 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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"}