@shopify/shop-minis-cli 0.0.0-hackathon.20250221160544

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 (540) hide show
  1. package/.eslintrc.cjs +78 -0
  2. package/LICENSE +21 -0
  3. package/README.md +8 -0
  4. package/README_INTERNAL.md +114 -0
  5. package/build/commands/app/index.d.ts +2 -0
  6. package/build/commands/app/index.js +14 -0
  7. package/build/commands/app/index.js.map +1 -0
  8. package/build/commands/app/link.d.ts +2 -0
  9. package/build/commands/app/link.js +65 -0
  10. package/build/commands/app/link.js.map +1 -0
  11. package/build/commands/app/list.d.ts +2 -0
  12. package/build/commands/app/list.js +45 -0
  13. package/build/commands/app/list.js.map +1 -0
  14. package/build/commands/app/unlink.d.ts +2 -0
  15. package/build/commands/app/unlink.js +55 -0
  16. package/build/commands/app/unlink.js.map +1 -0
  17. package/build/commands/cancel-submission/cancel-submission.d.ts +1 -0
  18. package/build/commands/cancel-submission/cancel-submission.js +59 -0
  19. package/build/commands/cancel-submission/cancel-submission.js.map +1 -0
  20. package/build/commands/cancel-submission/index.d.ts +2 -0
  21. package/build/commands/cancel-submission/index.js +18 -0
  22. package/build/commands/cancel-submission/index.js.map +1 -0
  23. package/build/commands/cancel-submission/types.d.ts +3 -0
  24. package/build/commands/cancel-submission/types.js +2 -0
  25. package/build/commands/cancel-submission/types.js.map +1 -0
  26. package/build/commands/check-submission/index.d.ts +2 -0
  27. package/build/commands/check-submission/index.js +55 -0
  28. package/build/commands/check-submission/index.js.map +1 -0
  29. package/build/commands/check-submission/types.d.ts +3 -0
  30. package/build/commands/check-submission/types.js +2 -0
  31. package/build/commands/check-submission/types.js.map +1 -0
  32. package/build/commands/codemod/index.d.ts +3 -0
  33. package/build/commands/codemod/index.js +47 -0
  34. package/build/commands/codemod/index.js.map +1 -0
  35. package/build/commands/codemod/releases/index.d.ts +7 -0
  36. package/build/commands/codemod/releases/index.js +97 -0
  37. package/build/commands/codemod/releases/index.js.map +1 -0
  38. package/build/commands/codemod/releases/types.d.ts +9 -0
  39. package/build/commands/codemod/releases/types.js +2 -0
  40. package/build/commands/codemod/releases/types.js.map +1 -0
  41. package/build/commands/codemod/releases/v0-0-100.d.ts +3 -0
  42. package/build/commands/codemod/releases/v0-0-100.js +50 -0
  43. package/build/commands/codemod/releases/v0-0-100.js.map +1 -0
  44. package/build/commands/codemod/releases/v0-0-103.d.ts +3 -0
  45. package/build/commands/codemod/releases/v0-0-103.js +43 -0
  46. package/build/commands/codemod/releases/v0-0-103.js.map +1 -0
  47. package/build/commands/codemod/releases/v0-0-105.d.ts +3 -0
  48. package/build/commands/codemod/releases/v0-0-105.js +59 -0
  49. package/build/commands/codemod/releases/v0-0-105.js.map +1 -0
  50. package/build/commands/codemod/releases/v0-0-106.d.ts +3 -0
  51. package/build/commands/codemod/releases/v0-0-106.js +32 -0
  52. package/build/commands/codemod/releases/v0-0-106.js.map +1 -0
  53. package/build/commands/codemod/releases/v0-0-114.d.ts +3 -0
  54. package/build/commands/codemod/releases/v0-0-114.js +48 -0
  55. package/build/commands/codemod/releases/v0-0-114.js.map +1 -0
  56. package/build/commands/codemod/releases/v0-0-115.d.ts +3 -0
  57. package/build/commands/codemod/releases/v0-0-115.js +50 -0
  58. package/build/commands/codemod/releases/v0-0-115.js.map +1 -0
  59. package/build/commands/codemod/releases/v0-0-121.d.ts +3 -0
  60. package/build/commands/codemod/releases/v0-0-121.js +74 -0
  61. package/build/commands/codemod/releases/v0-0-121.js.map +1 -0
  62. package/build/commands/codemod/releases/v0-0-123.d.ts +3 -0
  63. package/build/commands/codemod/releases/v0-0-123.js +33 -0
  64. package/build/commands/codemod/releases/v0-0-123.js.map +1 -0
  65. package/build/commands/codemod/releases/v0-0-125.d.ts +3 -0
  66. package/build/commands/codemod/releases/v0-0-125.js +37 -0
  67. package/build/commands/codemod/releases/v0-0-125.js.map +1 -0
  68. package/build/commands/codemod/releases/v0-0-130.d.ts +3 -0
  69. package/build/commands/codemod/releases/v0-0-130.js +26 -0
  70. package/build/commands/codemod/releases/v0-0-130.js.map +1 -0
  71. package/build/commands/codemod/releases/v0-0-139.d.ts +3 -0
  72. package/build/commands/codemod/releases/v0-0-139.js +26 -0
  73. package/build/commands/codemod/releases/v0-0-139.js.map +1 -0
  74. package/build/commands/codemod/releases/v0-0-42/index.d.ts +3 -0
  75. package/build/commands/codemod/releases/v0-0-42/index.js +46 -0
  76. package/build/commands/codemod/releases/v0-0-42/index.js.map +1 -0
  77. package/build/commands/codemod/releases/v0-0-42/reset-files.d.ts +7 -0
  78. package/build/commands/codemod/releases/v0-0-42/reset-files.js +83 -0
  79. package/build/commands/codemod/releases/v0-0-42/reset-files.js.map +1 -0
  80. package/build/commands/codemod/releases/v0-0-43.d.ts +3 -0
  81. package/build/commands/codemod/releases/v0-0-43.js +32 -0
  82. package/build/commands/codemod/releases/v0-0-43.js.map +1 -0
  83. package/build/commands/codemod/releases/v0-0-44.d.ts +3 -0
  84. package/build/commands/codemod/releases/v0-0-44.js +214 -0
  85. package/build/commands/codemod/releases/v0-0-44.js.map +1 -0
  86. package/build/commands/codemod/releases/v0-0-45.d.ts +3 -0
  87. package/build/commands/codemod/releases/v0-0-45.js +23 -0
  88. package/build/commands/codemod/releases/v0-0-45.js.map +1 -0
  89. package/build/commands/codemod/releases/v0-0-50.d.ts +3 -0
  90. package/build/commands/codemod/releases/v0-0-50.js +34 -0
  91. package/build/commands/codemod/releases/v0-0-50.js.map +1 -0
  92. package/build/commands/codemod/releases/v0-0-54.d.ts +3 -0
  93. package/build/commands/codemod/releases/v0-0-54.js +70 -0
  94. package/build/commands/codemod/releases/v0-0-54.js.map +1 -0
  95. package/build/commands/codemod/releases/v0-0-56.d.ts +3 -0
  96. package/build/commands/codemod/releases/v0-0-56.js +48 -0
  97. package/build/commands/codemod/releases/v0-0-56.js.map +1 -0
  98. package/build/commands/codemod/releases/v0-0-57.d.ts +3 -0
  99. package/build/commands/codemod/releases/v0-0-57.js +41 -0
  100. package/build/commands/codemod/releases/v0-0-57.js.map +1 -0
  101. package/build/commands/codemod/releases/v0-0-58.d.ts +3 -0
  102. package/build/commands/codemod/releases/v0-0-58.js +68 -0
  103. package/build/commands/codemod/releases/v0-0-58.js.map +1 -0
  104. package/build/commands/codemod/releases/v0-0-61.d.ts +3 -0
  105. package/build/commands/codemod/releases/v0-0-61.js +30 -0
  106. package/build/commands/codemod/releases/v0-0-61.js.map +1 -0
  107. package/build/commands/codemod/releases/v0-0-63.d.ts +3 -0
  108. package/build/commands/codemod/releases/v0-0-63.js +42 -0
  109. package/build/commands/codemod/releases/v0-0-63.js.map +1 -0
  110. package/build/commands/codemod/releases/v0-0-64.d.ts +3 -0
  111. package/build/commands/codemod/releases/v0-0-64.js +47 -0
  112. package/build/commands/codemod/releases/v0-0-64.js.map +1 -0
  113. package/build/commands/codemod/releases/v0-0-75.d.ts +3 -0
  114. package/build/commands/codemod/releases/v0-0-75.js +30 -0
  115. package/build/commands/codemod/releases/v0-0-75.js.map +1 -0
  116. package/build/commands/codemod/releases/v0-0-76.d.ts +3 -0
  117. package/build/commands/codemod/releases/v0-0-76.js +32 -0
  118. package/build/commands/codemod/releases/v0-0-76.js.map +1 -0
  119. package/build/commands/codemod/releases/v0-0-77.d.ts +3 -0
  120. package/build/commands/codemod/releases/v0-0-77.js +39 -0
  121. package/build/commands/codemod/releases/v0-0-77.js.map +1 -0
  122. package/build/commands/codemod/releases/v0-0-79.d.ts +3 -0
  123. package/build/commands/codemod/releases/v0-0-79.js +35 -0
  124. package/build/commands/codemod/releases/v0-0-79.js.map +1 -0
  125. package/build/commands/codemod/releases/v0-0-84.d.ts +3 -0
  126. package/build/commands/codemod/releases/v0-0-84.js +41 -0
  127. package/build/commands/codemod/releases/v0-0-84.js.map +1 -0
  128. package/build/commands/codemod/releases/v0-0-85.d.ts +3 -0
  129. package/build/commands/codemod/releases/v0-0-85.js +60 -0
  130. package/build/commands/codemod/releases/v0-0-85.js.map +1 -0
  131. package/build/commands/codemod/releases/v0-0-89.d.ts +3 -0
  132. package/build/commands/codemod/releases/v0-0-89.js +60 -0
  133. package/build/commands/codemod/releases/v0-0-89.js.map +1 -0
  134. package/build/commands/codemod/releases/v0-0-91/index.d.ts +3 -0
  135. package/build/commands/codemod/releases/v0-0-91/index.js +38 -0
  136. package/build/commands/codemod/releases/v0-0-91/index.js.map +1 -0
  137. package/build/commands/codemod/releases/v0-0-91/replace-dev-wrapper.d.ts +5 -0
  138. package/build/commands/codemod/releases/v0-0-91/replace-dev-wrapper.js +45 -0
  139. package/build/commands/codemod/releases/v0-0-91/replace-dev-wrapper.js.map +1 -0
  140. package/build/commands/codemod/releases/v0-0-91/replace-safe-area-imports.d.ts +1 -0
  141. package/build/commands/codemod/releases/v0-0-91/replace-safe-area-imports.js +97 -0
  142. package/build/commands/codemod/releases/v0-0-91/replace-safe-area-imports.js.map +1 -0
  143. package/build/commands/codemod/releases/v0-0-92.d.ts +3 -0
  144. package/build/commands/codemod/releases/v0-0-92.js +38 -0
  145. package/build/commands/codemod/releases/v0-0-92.js.map +1 -0
  146. package/build/commands/codemod/releases/v0-0-93/blank/App-after.d.ts +1 -0
  147. package/build/commands/codemod/releases/v0-0-93/blank/App-after.js +15 -0
  148. package/build/commands/codemod/releases/v0-0-93/blank/App-after.js.map +1 -0
  149. package/build/commands/codemod/releases/v0-0-93/blank/App-before.d.ts +1 -0
  150. package/build/commands/codemod/releases/v0-0-93/blank/App-before.js +13 -0
  151. package/build/commands/codemod/releases/v0-0-93/blank/App-before.js.map +1 -0
  152. package/build/commands/codemod/releases/v0-0-93/index.d.ts +6 -0
  153. package/build/commands/codemod/releases/v0-0-93/index.js +7 -0
  154. package/build/commands/codemod/releases/v0-0-93/index.js.map +1 -0
  155. package/build/commands/codemod/releases/v0-0-93/shoppable-posts/App-after.d.ts +1 -0
  156. package/build/commands/codemod/releases/v0-0-93/shoppable-posts/App-after.js +53 -0
  157. package/build/commands/codemod/releases/v0-0-93/shoppable-posts/App-after.js.map +1 -0
  158. package/build/commands/codemod/releases/v0-0-93/shoppable-posts/App-before.d.ts +1 -0
  159. package/build/commands/codemod/releases/v0-0-93/shoppable-posts/App-before.js +43 -0
  160. package/build/commands/codemod/releases/v0-0-93/shoppable-posts/App-before.js.map +1 -0
  161. package/build/commands/codemod/releases/v0-0-93/shoppable-videos/App-after.d.ts +1 -0
  162. package/build/commands/codemod/releases/v0-0-93/shoppable-videos/App-after.js +49 -0
  163. package/build/commands/codemod/releases/v0-0-93/shoppable-videos/App-after.js.map +1 -0
  164. package/build/commands/codemod/releases/v0-0-93/shoppable-videos/App-before.d.ts +1 -0
  165. package/build/commands/codemod/releases/v0-0-93/shoppable-videos/App-before.js +42 -0
  166. package/build/commands/codemod/releases/v0-0-93/shoppable-videos/App-before.js.map +1 -0
  167. package/build/commands/codemod/releases/v0-0-93.d.ts +3 -0
  168. package/build/commands/codemod/releases/v0-0-93.js +48 -0
  169. package/build/commands/codemod/releases/v0-0-93.js.map +1 -0
  170. package/build/commands/codemod/releases/v0-0-97/index.d.ts +3 -0
  171. package/build/commands/codemod/releases/v0-0-97/index.js +20 -0
  172. package/build/commands/codemod/releases/v0-0-97/index.js.map +1 -0
  173. package/build/commands/codemod/releases/v0-0-97/migrate-to-new-theme.d.ts +1 -0
  174. package/build/commands/codemod/releases/v0-0-97/migrate-to-new-theme.js +47 -0
  175. package/build/commands/codemod/releases/v0-0-97/migrate-to-new-theme.js.map +1 -0
  176. package/build/commands/codemod/releases/v0-0-97/remove-theme-from-config.d.ts +1 -0
  177. package/build/commands/codemod/releases/v0-0-97/remove-theme-from-config.js +105 -0
  178. package/build/commands/codemod/releases/v0-0-97/remove-theme-from-config.js.map +1 -0
  179. package/build/commands/config.d.ts +17 -0
  180. package/build/commands/config.js +45 -0
  181. package/build/commands/config.js.map +1 -0
  182. package/build/commands/create-extension/constants.d.ts +44 -0
  183. package/build/commands/create-extension/constants.js +111 -0
  184. package/build/commands/create-extension/constants.js.map +1 -0
  185. package/build/commands/create-extension/index.d.ts +2 -0
  186. package/build/commands/create-extension/index.js +68 -0
  187. package/build/commands/create-extension/index.js.map +1 -0
  188. package/build/commands/create-extension/types.d.ts +13 -0
  189. package/build/commands/create-extension/types.js +8 -0
  190. package/build/commands/create-extension/types.js.map +1 -0
  191. package/build/commands/create-extension/utils/add-target-to-config.d.ts +2 -0
  192. package/build/commands/create-extension/utils/add-target-to-config.js +48 -0
  193. package/build/commands/create-extension/utils/add-target-to-config.js.map +1 -0
  194. package/build/commands/create-extension/utils/create-extension-files.d.ts +11 -0
  195. package/build/commands/create-extension/utils/create-extension-files.js +96 -0
  196. package/build/commands/create-extension/utils/create-extension-files.js.map +1 -0
  197. package/build/commands/create-extension/utils/create-from-template.d.ts +3 -0
  198. package/build/commands/create-extension/utils/create-from-template.js +47 -0
  199. package/build/commands/create-extension/utils/create-from-template.js.map +1 -0
  200. package/build/commands/create-extension/utils/format-extension-files.d.ts +1 -0
  201. package/build/commands/create-extension/utils/format-extension-files.js +22 -0
  202. package/build/commands/create-extension/utils/format-extension-files.js.map +1 -0
  203. package/build/commands/create-mini/index.d.ts +2 -0
  204. package/build/commands/create-mini/index.js +182 -0
  205. package/build/commands/create-mini/index.js.map +1 -0
  206. package/build/commands/create-mini/utils/examples.d.ts +4 -0
  207. package/build/commands/create-mini/utils/examples.js +44 -0
  208. package/build/commands/create-mini/utils/examples.js.map +1 -0
  209. package/build/commands/create-mini/utils/template-app.d.ts +2 -0
  210. package/build/commands/create-mini/utils/template-app.js +86 -0
  211. package/build/commands/create-mini/utils/template-app.js.map +1 -0
  212. package/build/commands/dev/index.d.ts +13 -0
  213. package/build/commands/dev/index.js +95 -0
  214. package/build/commands/dev/index.js.map +1 -0
  215. package/build/commands/dev/utils/android.d.ts +18 -0
  216. package/build/commands/dev/utils/android.js +158 -0
  217. package/build/commands/dev/utils/android.js.map +1 -0
  218. package/build/commands/dev/utils/app-screens.d.ts +9 -0
  219. package/build/commands/dev/utils/app-screens.js +170 -0
  220. package/build/commands/dev/utils/app-screens.js.map +1 -0
  221. package/build/commands/dev/utils/binaries.d.ts +5 -0
  222. package/build/commands/dev/utils/binaries.js +17 -0
  223. package/build/commands/dev/utils/binaries.js.map +1 -0
  224. package/build/commands/dev/utils/build-type.d.ts +2 -0
  225. package/build/commands/dev/utils/build-type.js +14 -0
  226. package/build/commands/dev/utils/build-type.js.map +1 -0
  227. package/build/commands/dev/utils/cache-cleanup.d.ts +1 -0
  228. package/build/commands/dev/utils/cache-cleanup.js +45 -0
  229. package/build/commands/dev/utils/cache-cleanup.js.map +1 -0
  230. package/build/commands/dev/utils/deeplink.d.ts +22 -0
  231. package/build/commands/dev/utils/deeplink.js +70 -0
  232. package/build/commands/dev/utils/deeplink.js.map +1 -0
  233. package/build/commands/dev/utils/env-config.d.ts +2 -0
  234. package/build/commands/dev/utils/env-config.js +47 -0
  235. package/build/commands/dev/utils/env-config.js.map +1 -0
  236. package/build/commands/dev/utils/interactive-terminal.d.ts +25 -0
  237. package/build/commands/dev/utils/interactive-terminal.js +244 -0
  238. package/build/commands/dev/utils/interactive-terminal.js.map +1 -0
  239. package/build/commands/dev/utils/metro/metro-config.d.ts +2 -0
  240. package/build/commands/dev/utils/metro/metro-config.js +27 -0
  241. package/build/commands/dev/utils/metro/metro-config.js.map +1 -0
  242. package/build/commands/dev/utils/metro/metro-minis-module-resolver.d.ts +6 -0
  243. package/build/commands/dev/utils/metro/metro-minis-module-resolver.js +11 -0
  244. package/build/commands/dev/utils/metro/metro-minis-module-resolver.js.map +1 -0
  245. package/build/commands/dev/utils/metro/metro-reporter.d.ts +21 -0
  246. package/build/commands/dev/utils/metro/metro-reporter.js +46 -0
  247. package/build/commands/dev/utils/metro/metro-reporter.js.map +1 -0
  248. package/build/commands/dev/utils/metro/metro-server-middleware.d.ts +10 -0
  249. package/build/commands/dev/utils/metro/metro-server-middleware.js +74 -0
  250. package/build/commands/dev/utils/metro/metro-server-middleware.js.map +1 -0
  251. package/build/commands/dev/utils/metro/metro-server.d.ts +6 -0
  252. package/build/commands/dev/utils/metro/metro-server.js +26 -0
  253. package/build/commands/dev/utils/metro/metro-server.js.map +1 -0
  254. package/build/commands/dev/utils/network.d.ts +20 -0
  255. package/build/commands/dev/utils/network.js +129 -0
  256. package/build/commands/dev/utils/network.js.map +1 -0
  257. package/build/commands/dev/utils/platform.d.ts +18 -0
  258. package/build/commands/dev/utils/platform.js +41 -0
  259. package/build/commands/dev/utils/platform.js.map +1 -0
  260. package/build/commands/dev/utils/prompt-binary-upgrade.d.ts +1 -0
  261. package/build/commands/dev/utils/prompt-binary-upgrade.js +12 -0
  262. package/build/commands/dev/utils/prompt-binary-upgrade.js.map +1 -0
  263. package/build/commands/dev/utils/react-native-version.d.ts +4 -0
  264. package/build/commands/dev/utils/react-native-version.js +23 -0
  265. package/build/commands/dev/utils/react-native-version.js.map +1 -0
  266. package/build/commands/dev/utils/simulator.d.ts +22 -0
  267. package/build/commands/dev/utils/simulator.js +113 -0
  268. package/build/commands/dev/utils/simulator.js.map +1 -0
  269. package/build/commands/dev/utils/start-app/config.d.ts +5 -0
  270. package/build/commands/dev/utils/start-app/config.js +24 -0
  271. package/build/commands/dev/utils/start-app/config.js.map +1 -0
  272. package/build/commands/dev/utils/start-app/start-app-with-options.d.ts +3 -0
  273. package/build/commands/dev/utils/start-app/start-app-with-options.js +95 -0
  274. package/build/commands/dev/utils/start-app/start-app-with-options.js.map +1 -0
  275. package/build/commands/dev/utils/start-app/start-app.d.ts +3 -0
  276. package/build/commands/dev/utils/start-app/start-app.js +10 -0
  277. package/build/commands/dev/utils/start-app/start-app.js.map +1 -0
  278. package/build/commands/dev/utils/start-app/types.d.ts +14 -0
  279. package/build/commands/dev/utils/start-app/types.js +2 -0
  280. package/build/commands/dev/utils/start-app/types.js.map +1 -0
  281. package/build/commands/dev/utils/types.d.ts +24 -0
  282. package/build/commands/dev/utils/types.js +7 -0
  283. package/build/commands/dev/utils/types.js.map +1 -0
  284. package/build/commands/dev/utils/version.d.ts +64 -0
  285. package/build/commands/dev/utils/version.js +101 -0
  286. package/build/commands/dev/utils/version.js.map +1 -0
  287. package/build/commands/dev/utils/with-retries.d.ts +4 -0
  288. package/build/commands/dev/utils/with-retries.js +24 -0
  289. package/build/commands/dev/utils/with-retries.js.map +1 -0
  290. package/build/commands/doctor/index.d.ts +6 -0
  291. package/build/commands/doctor/index.js +21 -0
  292. package/build/commands/doctor/index.js.map +1 -0
  293. package/build/commands/doctor/utils/diagnose-dependencies.d.ts +7 -0
  294. package/build/commands/doctor/utils/diagnose-dependencies.js +113 -0
  295. package/build/commands/doctor/utils/diagnose-dependencies.js.map +1 -0
  296. package/build/commands/features/index.d.ts +6 -0
  297. package/build/commands/features/index.js +135 -0
  298. package/build/commands/features/index.js.map +1 -0
  299. package/build/commands/generate-graphql-types/index.d.ts +6 -0
  300. package/build/commands/generate-graphql-types/index.js +33 -0
  301. package/build/commands/generate-graphql-types/index.js.map +1 -0
  302. package/build/commands/generate-graphql-types/utils/generate-graphql-types.d.ts +2 -0
  303. package/build/commands/generate-graphql-types/utils/generate-graphql-types.js +67 -0
  304. package/build/commands/generate-graphql-types/utils/generate-graphql-types.js.map +1 -0
  305. package/build/commands/generate-graphql-types/utils/get-graphql-config.d.ts +1 -0
  306. package/build/commands/generate-graphql-types/utils/get-graphql-config.js +31 -0
  307. package/build/commands/generate-graphql-types/utils/get-graphql-config.js.map +1 -0
  308. package/build/commands/generate-graphql-types/utils/get-graphql-config.spec.d.ts +1 -0
  309. package/build/commands/generate-graphql-types/utils/get-graphql-config.spec.js +57 -0
  310. package/build/commands/generate-graphql-types/utils/get-graphql-config.spec.js.map +1 -0
  311. package/build/commands/info/index.d.ts +3 -0
  312. package/build/commands/info/index.js +42 -0
  313. package/build/commands/info/index.js.map +1 -0
  314. package/build/commands/setup/index.d.ts +2 -0
  315. package/build/commands/setup/index.js +103 -0
  316. package/build/commands/setup/index.js.map +1 -0
  317. package/build/commands/submit/config.d.ts +9 -0
  318. package/build/commands/submit/config.js +18 -0
  319. package/build/commands/submit/config.js.map +1 -0
  320. package/build/commands/submit/errors.d.ts +19 -0
  321. package/build/commands/submit/errors.js +87 -0
  322. package/build/commands/submit/errors.js.map +1 -0
  323. package/build/commands/submit/gcs.d.ts +6 -0
  324. package/build/commands/submit/gcs.js +21 -0
  325. package/build/commands/submit/gcs.js.map +1 -0
  326. package/build/commands/submit/index.d.ts +2 -0
  327. package/build/commands/submit/index.js +25 -0
  328. package/build/commands/submit/index.js.map +1 -0
  329. package/build/commands/submit/submit.d.ts +5 -0
  330. package/build/commands/submit/submit.js +268 -0
  331. package/build/commands/submit/submit.js.map +1 -0
  332. package/build/commands/submit/tasks.d.ts +37 -0
  333. package/build/commands/submit/tasks.js +91 -0
  334. package/build/commands/submit/tasks.js.map +1 -0
  335. package/build/commands/submit/types.d.ts +14 -0
  336. package/build/commands/submit/types.js +2 -0
  337. package/build/commands/submit/types.js.map +1 -0
  338. package/build/commands/submit/utils/assert-core-dependencies-version.d.ts +1 -0
  339. package/build/commands/submit/utils/assert-core-dependencies-version.js +73 -0
  340. package/build/commands/submit/utils/assert-core-dependencies-version.js.map +1 -0
  341. package/build/commands/submit/utils/request-entry-point-params.d.ts +1 -0
  342. package/build/commands/submit/utils/request-entry-point-params.js +43 -0
  343. package/build/commands/submit/utils/request-entry-point-params.js.map +1 -0
  344. package/build/commands/submit/validation.d.ts +1 -0
  345. package/build/commands/submit/validation.js +14 -0
  346. package/build/commands/submit/validation.js.map +1 -0
  347. package/build/commands/upgrade/index.d.ts +13 -0
  348. package/build/commands/upgrade/index.js +70 -0
  349. package/build/commands/upgrade/index.js.map +1 -0
  350. package/build/commands/upgrade/utils/clear-metro-cache.d.ts +1 -0
  351. package/build/commands/upgrade/utils/clear-metro-cache.js +12 -0
  352. package/build/commands/upgrade/utils/clear-metro-cache.js.map +1 -0
  353. package/build/commands/upgrade/utils/cli.d.ts +1 -0
  354. package/build/commands/upgrade/utils/cli.js +15 -0
  355. package/build/commands/upgrade/utils/cli.js.map +1 -0
  356. package/build/commands/validate-manifest/index.d.ts +3 -0
  357. package/build/commands/validate-manifest/index.js +38 -0
  358. package/build/commands/validate-manifest/index.js.map +1 -0
  359. package/build/constants/extensions.d.ts +21 -0
  360. package/build/constants/extensions.js +25 -0
  361. package/build/constants/extensions.js.map +1 -0
  362. package/build/data/accept-invitation.d.ts +4 -0
  363. package/build/data/accept-invitation.js +16 -0
  364. package/build/data/accept-invitation.js.map +1 -0
  365. package/build/data/cancel-submission.d.ts +22 -0
  366. package/build/data/cancel-submission.js +26 -0
  367. package/build/data/cancel-submission.js.map +1 -0
  368. package/build/data/create-submission.d.ts +20 -0
  369. package/build/data/create-submission.js +27 -0
  370. package/build/data/create-submission.js.map +1 -0
  371. package/build/data/create-upload.d.ts +21 -0
  372. package/build/data/create-upload.js +40 -0
  373. package/build/data/create-upload.js.map +1 -0
  374. package/build/data/get-linked-apps.d.ts +13 -0
  375. package/build/data/get-linked-apps.js +21 -0
  376. package/build/data/get-linked-apps.js.map +1 -0
  377. package/build/data/get-submissions.d.ts +27 -0
  378. package/build/data/get-submissions.js +33 -0
  379. package/build/data/get-submissions.js.map +1 -0
  380. package/build/data/gql-client.d.ts +8 -0
  381. package/build/data/gql-client.js +14 -0
  382. package/build/data/gql-client.js.map +1 -0
  383. package/build/data/mini-create.d.ts +19 -0
  384. package/build/data/mini-create.js +34 -0
  385. package/build/data/mini-create.js.map +1 -0
  386. package/build/data/mini-link-app.d.ts +20 -0
  387. package/build/data/mini-link-app.js +35 -0
  388. package/build/data/mini-link-app.js.map +1 -0
  389. package/build/data/mini-unlink-app.d.ts +18 -0
  390. package/build/data/mini-unlink-app.js +25 -0
  391. package/build/data/mini-unlink-app.js.map +1 -0
  392. package/build/data/mini.d.ts +7 -0
  393. package/build/data/mini.js +16 -0
  394. package/build/data/mini.js.map +1 -0
  395. package/build/data/partners/query.d.ts +32 -0
  396. package/build/data/partners/query.js +123 -0
  397. package/build/data/partners/query.js.map +1 -0
  398. package/build/data/partners/types.d.ts +55 -0
  399. package/build/data/partners/types.js +6 -0
  400. package/build/data/partners/types.js.map +1 -0
  401. package/build/data/types/autogenerated/shop-minis-admin-api/fragment-masking.d.ts +13 -0
  402. package/build/data/types/autogenerated/shop-minis-admin-api/fragment-masking.js +7 -0
  403. package/build/data/types/autogenerated/shop-minis-admin-api/fragment-masking.js.map +1 -0
  404. package/build/data/types/autogenerated/shop-minis-admin-api/gql.d.ts +107 -0
  405. package/build/data/types/autogenerated/shop-minis-admin-api/gql.js +28 -0
  406. package/build/data/types/autogenerated/shop-minis-admin-api/gql.js.map +1 -0
  407. package/build/data/types/autogenerated/shop-minis-admin-api/graphql.d.ts +2177 -0
  408. package/build/data/types/autogenerated/shop-minis-admin-api/graphql.js +1474 -0
  409. package/build/data/types/autogenerated/shop-minis-admin-api/graphql.js.map +1 -0
  410. package/build/data/types/autogenerated/shop-minis-admin-api/index.d.ts +2 -0
  411. package/build/data/types/autogenerated/shop-minis-admin-api/index.js +3 -0
  412. package/build/data/types/autogenerated/shop-minis-admin-api/index.js.map +1 -0
  413. package/build/dev-panel/asset-manifest.json +13 -0
  414. package/build/dev-panel/checkmark.svg +3 -0
  415. package/build/dev-panel/chevron.svg +3 -0
  416. package/build/dev-panel/copy.svg +4 -0
  417. package/build/dev-panel/get-started.svg +3 -0
  418. package/build/dev-panel/how-to.svg +3 -0
  419. package/build/dev-panel/index.html +1 -0
  420. package/build/dev-panel/references.svg +3 -0
  421. package/build/dev-panel/robots.txt +3 -0
  422. package/build/dev-panel/static/css/main.94b1dbb1.css +2 -0
  423. package/build/dev-panel/static/css/main.94b1dbb1.css.map +1 -0
  424. package/build/dev-panel/static/js/main.917a564c.js +3 -0
  425. package/build/dev-panel/static/js/main.917a564c.js.LICENSE.txt +41 -0
  426. package/build/dev-panel/static/js/main.917a564c.js.map +1 -0
  427. package/build/dev-panel/topics.svg +3 -0
  428. package/build/index.d.ts +2 -0
  429. package/build/index.js +53 -0
  430. package/build/index.js.map +1 -0
  431. package/build/schemas/manifest.schema.json +185 -0
  432. package/build/templates-index.d.ts +6 -0
  433. package/build/templates-index.js +24 -0
  434. package/build/templates-index.js.map +1 -0
  435. package/build/utils/archive.d.ts +30 -0
  436. package/build/utils/archive.js +38 -0
  437. package/build/utils/archive.js.map +1 -0
  438. package/build/utils/codemod.d.ts +86 -0
  439. package/build/utils/codemod.js +161 -0
  440. package/build/utils/codemod.js.map +1 -0
  441. package/build/utils/common-tasks.d.ts +1 -0
  442. package/build/utils/common-tasks.js +44 -0
  443. package/build/utils/common-tasks.js.map +1 -0
  444. package/build/utils/development-params.d.ts +13 -0
  445. package/build/utils/development-params.js +44 -0
  446. package/build/utils/development-params.js.map +1 -0
  447. package/build/utils/exec-async-child-process.d.ts +18 -0
  448. package/build/utils/exec-async-child-process.js +41 -0
  449. package/build/utils/exec-async-child-process.js.map +1 -0
  450. package/build/utils/extensions.d.ts +13 -0
  451. package/build/utils/extensions.js +87 -0
  452. package/build/utils/extensions.js.map +1 -0
  453. package/build/utils/extract-id-gid.d.ts +1 -0
  454. package/build/utils/extract-id-gid.js +16 -0
  455. package/build/utils/extract-id-gid.js.map +1 -0
  456. package/build/utils/file.d.ts +1 -0
  457. package/build/utils/file.js +7 -0
  458. package/build/utils/file.js.map +1 -0
  459. package/build/utils/loading-state-handlers.d.ts +10 -0
  460. package/build/utils/loading-state-handlers.js +23 -0
  461. package/build/utils/loading-state-handlers.js.map +1 -0
  462. package/build/utils/minis-manifest.d.ts +8 -0
  463. package/build/utils/minis-manifest.js +90 -0
  464. package/build/utils/minis-manifest.js.map +1 -0
  465. package/build/utils/package-manager.d.ts +52 -0
  466. package/build/utils/package-manager.js +139 -0
  467. package/build/utils/package-manager.js.map +1 -0
  468. package/build/utils/patch-package.d.ts +5 -0
  469. package/build/utils/patch-package.js +76 -0
  470. package/build/utils/patch-package.js.map +1 -0
  471. package/build/utils/path.d.ts +1 -0
  472. package/build/utils/path.js +8 -0
  473. package/build/utils/path.js.map +1 -0
  474. package/build/utils/replace-strings-in-template.d.ts +1 -0
  475. package/build/utils/replace-strings-in-template.js +15 -0
  476. package/build/utils/replace-strings-in-template.js.map +1 -0
  477. package/build/utils/semver.d.ts +1 -0
  478. package/build/utils/semver.js +19 -0
  479. package/build/utils/semver.js.map +1 -0
  480. package/build/utils/sync-manifest.d.ts +5 -0
  481. package/build/utils/sync-manifest.js +26 -0
  482. package/build/utils/sync-manifest.js.map +1 -0
  483. package/build/utils/wrap-with-loading-indicator.d.ts +9 -0
  484. package/build/utils/wrap-with-loading-indicator.js +16 -0
  485. package/build/utils/wrap-with-loading-indicator.js.map +1 -0
  486. package/package.json +102 -0
  487. package/scripts/graphql-codegen.ts +29 -0
  488. package/scripts/test-template.ts +66 -0
  489. package/shipit.hackathon-2025.yml +9 -0
  490. package/shipit.snapshot.yml +9 -0
  491. package/templates/__template_blank/src/App.tsx +24 -0
  492. package/templates/__template_blank/src/index.tsx +9 -0
  493. package/templates/__template_common/.cursorrules +141 -0
  494. package/templates/__template_common/.eslintignore +1 -0
  495. package/templates/__template_common/.eslintrc.js +3 -0
  496. package/templates/__template_common/.graphqlrc.js +1 -0
  497. package/templates/__template_common/.prettierrc.json +8 -0
  498. package/templates/__template_common/assets.d.ts +14 -0
  499. package/templates/__template_common/babel.config.js +5 -0
  500. package/templates/__template_common/gitignore +5 -0
  501. package/templates/__template_common/index.tsx +5 -0
  502. package/templates/__template_common/metro.config.js +5 -0
  503. package/templates/__template_common/package.json +35 -0
  504. package/templates/__template_common/src/manifest.json +6 -0
  505. package/templates/__template_common/tsconfig.json +41 -0
  506. package/templates/__template_getting_started/src/App.tsx +23 -0
  507. package/templates/__template_getting_started/src/index.tsx +9 -0
  508. package/templates/__template_getting_started/src/manifest.json +7 -0
  509. package/templates/__template_getting_started/src/screens/HomeScreen.tsx +128 -0
  510. package/templates/__template_getting_started/src/screens/NativeFeaturesScreen.tsx +137 -0
  511. package/templates/__template_getting_started/src/types/screens.ts +5 -0
  512. package/templates/__template_shoppable_posts/src/App.tsx +42 -0
  513. package/templates/__template_shoppable_posts/src/index.tsx +9 -0
  514. package/templates/__template_shoppable_videos/src/App.tsx +39 -0
  515. package/templates/__template_shoppable_videos/src/index.tsx +9 -0
  516. package/templates/extensions/components/__template_blank/render.tsx +9 -0
  517. package/templates/extensions/components/__template_bundle-collection/render.tsx +31 -0
  518. package/templates/extensions/components/__template_bundle-collection/seed.ts +26 -0
  519. package/templates/extensions/components/__template_bundle-selector/render.tsx +51 -0
  520. package/templates/extensions/components/__template_bundle-selector/seed.ts +72 -0
  521. package/templates/extensions/components/__template_default-card/render.tsx +24 -0
  522. package/templates/extensions/components/__template_default-card/seed.ts +10 -0
  523. package/templates/extensions/components/__template_image-collection/render.tsx +17 -0
  524. package/templates/extensions/components/__template_image-collection/seed.ts +70 -0
  525. package/templates/extensions/components/__template_link/render.tsx +17 -0
  526. package/templates/extensions/components/__template_link/seed.ts +5 -0
  527. package/templates/extensions/components/__template_product-offer-card/render.tsx +17 -0
  528. package/templates/extensions/components/__template_product-offer-card/seed.ts +44 -0
  529. package/templates/extensions/components/__template_survey-single-response/render.tsx +26 -0
  530. package/templates/extensions/components/__template_survey-single-response/seed.ts +22 -0
  531. package/templates/extensions/components/__template_video-collection/render.tsx +17 -0
  532. package/templates/extensions/components/__template_video-collection/seed.ts +37 -0
  533. package/templates/extensions/queries/__template_order-confirmation-page/input.graphql +5 -0
  534. package/templates/extensions/queries/__template_order-confirmation-page/input.graphql.d.ts +24 -0
  535. package/templates/extensions/queries/__template_order-management-page/input.graphql +5 -0
  536. package/templates/extensions/queries/__template_order-management-page/input.graphql.d.ts +24 -0
  537. package/templates/extensions/queries/__template_product-page/input.graphql +9 -0
  538. package/templates/extensions/queries/__template_product-page/input.graphql.d.ts +36 -0
  539. package/templates/extensions/queries/__template_store-page/input.graphql +5 -0
  540. package/templates/extensions/queries/__template_store-page/input.graphql.d.ts +24 -0
@@ -0,0 +1,87 @@
1
+ import { AbortError } from '@shopify/cli-kit/node/error';
2
+ import { outputDebug } from '@shopify/cli-kit/node/output';
3
+ import { getRunBinCommand } from '../../utils/package-manager.js';
4
+ import { getPendingSubmission } from '../../data/get-submissions.js';
5
+ const wrapErrorDefaultOptions = {
6
+ separator: ': ',
7
+ };
8
+ // Prefix an error with a nice message without loosing the stack
9
+ export const wrapError = (error, message, userOptions = {}) => {
10
+ const options = {
11
+ ...wrapErrorDefaultOptions,
12
+ ...userOptions,
13
+ };
14
+ const err = new Error(`${message}${options.separator}${error?.message ?? 'Unknown error'}`);
15
+ if (error && error?.stack) {
16
+ err.stack = error?.stack;
17
+ }
18
+ return err;
19
+ };
20
+ export const userErrorToErrorMessage = ({ code, message, field, }) => {
21
+ if (!field || field.length === 0)
22
+ return `${message}. (${code})`;
23
+ return `${message}. (${code} for fields ${field.join(', ')})`;
24
+ };
25
+ export const handleCreateUploadErrors = (params, userErrors) => {
26
+ if (!userErrors || userErrors.length === 0)
27
+ return;
28
+ const errorMessages = userErrors.map(userError => {
29
+ switch (userError.code) {
30
+ case 'INVALID_CHECKSUM':
31
+ return `Invalid checksum for uploaded archive: ${params.checksum}`;
32
+ case 'INVALID_FILE_SIZE':
33
+ return `Invalid file size for uploaded archive: ${params.fileSize}`;
34
+ case 'INVALID_MIME_TYPE':
35
+ return `Invalid mime type for uploaded archive: ${params.mimeType}`;
36
+ default:
37
+ return userErrorToErrorMessage(userError);
38
+ }
39
+ });
40
+ throw new AbortError('There was a problem creating your upload', errorMessages);
41
+ };
42
+ export const generateExistingPendingSubmissionError = async (pendingSubmission) => {
43
+ outputDebug(`Existing pending submission found ${pendingSubmission ? JSON.stringify(pendingSubmission) : ''}`);
44
+ const errorMessage = pendingSubmission
45
+ ? `The previous submission (reference: ${pendingSubmission.reference}) was submitted at ${pendingSubmission.submittedAt}.\n\n` +
46
+ `Status of ${pendingSubmission.reference}: ${pendingSubmission.status}`
47
+ : undefined;
48
+ return new AbortError('Already a submission under review', errorMessage, [
49
+ [
50
+ 'Cancel previous submission. Run',
51
+ {
52
+ command: await getRunBinCommand('shop-minis cancel-submission'),
53
+ },
54
+ 'to cancel',
55
+ ],
56
+ [
57
+ 'Cancel this submission. Do nothing else and wait for previous submission to be reviewed.',
58
+ ],
59
+ ]);
60
+ };
61
+ export const handleCreateSubmissionErrors = async (userErrors) => {
62
+ if (!userErrors || userErrors.length === 0)
63
+ return;
64
+ for (const userError of userErrors) {
65
+ if (userError.code === 'ALREADY_PENDING_SUBMISSION') {
66
+ const pendingSubmission = await getPendingSubmission();
67
+ throw await generateExistingPendingSubmissionError(pendingSubmission);
68
+ }
69
+ }
70
+ const errorMessages = userErrors.map(userError => {
71
+ switch (userError.code) {
72
+ case 'FILE_NOT_FOUND':
73
+ return `Your uploaded package could not be found`;
74
+ case 'UPLOAD_NOT_FOUND':
75
+ return `Your upload could not be found`;
76
+ default:
77
+ return userErrorToErrorMessage(userError);
78
+ }
79
+ });
80
+ throw new AbortError('There was a problem creating your submission', errorMessages);
81
+ };
82
+ export const handleUploadFileErrors = (error) => {
83
+ throw wrapError(error, 'There was a problem with your upload\n\n', {
84
+ separator: '',
85
+ });
86
+ };
87
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/commands/submit/errors.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export interface UploadFileParameters {
2
+ url: string;
3
+ headers: Record<string, string>;
4
+ filepath: string;
5
+ }
6
+ export declare const uploadFile: ({ url, headers, filepath, }: UploadFileParameters) => Promise<void>;
@@ -0,0 +1,21 @@
1
+ import { readFileSync } from 'node:fs';
2
+ import { fetch } from '@shopify/cli-kit/node/http';
3
+ export const uploadFile = async ({ url, headers, filepath, }) => {
4
+ const response = await fetch(url, {
5
+ method: 'PUT',
6
+ headers,
7
+ body: readFileSync(filepath),
8
+ });
9
+ if (!response.ok) {
10
+ if (response.status === 404) {
11
+ throw new Error('Resource not found');
12
+ }
13
+ else if (response.status === 500) {
14
+ throw new Error('Internal server error');
15
+ }
16
+ else {
17
+ throw new Error(`PUT request failed with status: ${response.status}`);
18
+ }
19
+ }
20
+ };
21
+ //# sourceMappingURL=gcs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gcs.js","sourceRoot":"","sources":["../../../src/commands/submit/gcs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,SAAS,CAAA;AAEpC,OAAO,EAAC,KAAK,EAAC,MAAM,4BAA4B,CAAA;AAQhD,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,EAAE,EAC/B,GAAG,EACH,OAAO,EACP,QAAQ,GACa,EAAE,EAAE;IACzB,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;QAChC,MAAM,EAAE,KAAK;QACb,OAAO;QACP,IAAI,EAAE,YAAY,CAAC,QAAQ,CAAC;KAC7B,CAAC,CAAA;IAEF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;QAChB,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE;YAC3B,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAA;SACtC;aAAM,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE;YAClC,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAA;SACzC;aAAM;YACL,MAAM,IAAI,KAAK,CAAC,mCAAmC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAA;SACtE;KACF;AACH,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ import { Command } from 'commander';
2
+ export declare function loadCommand(parentProgram: Command): void;
@@ -0,0 +1,25 @@
1
+ import { Command } from 'commander';
2
+ import { outputDebug } from '@shopify/cli-kit/node/output';
3
+ import { getMiniManifest } from '../../utils/minis-manifest.js';
4
+ import { codeBuildChecks, completeConfig, doSubmit, preSubmitChecks, } from './submit.js';
5
+ export function loadCommand(parentProgram) {
6
+ const command = new Command()
7
+ .name('submit')
8
+ .description('submit your mini app')
9
+ .option('--description [description]', 'submission description - describes the change')
10
+ .option('--verbose', 'print debugging messages') // compatible with cli-kit
11
+ .action(async (args) => {
12
+ const miniName = getMiniManifest().name;
13
+ outputDebug(`Submit args ${JSON.stringify(args)}`);
14
+ outputDebug(`Submitting mini "${miniName}" at ${process.cwd()}`);
15
+ const continueWithSubmission = await codeBuildChecks();
16
+ if (!continueWithSubmission) {
17
+ process.exit(0);
18
+ }
19
+ await preSubmitChecks();
20
+ const config = await completeConfig(args);
21
+ await doSubmit(config);
22
+ });
23
+ parentProgram.addCommand(command);
24
+ }
25
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/submit/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAA;AACjC,OAAO,EAAC,WAAW,EAAC,MAAM,8BAA8B,CAAA;AAExD,OAAO,EAAC,eAAe,EAAC,MAAM,+BAA+B,CAAA;AAE7D,OAAO,EACL,eAAe,EACf,cAAc,EACd,QAAQ,EACR,eAAe,GAChB,MAAM,aAAa,CAAA;AAGpB,MAAM,UAAU,WAAW,CAAC,aAAsB;IAChD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE;SAC1B,IAAI,CAAC,QAAQ,CAAC;SACd,WAAW,CAAC,sBAAsB,CAAC;SACnC,MAAM,CACL,6BAA6B,EAC7B,+CAA+C,CAChD;SACA,MAAM,CAAC,WAAW,EAAE,0BAA0B,CAAC,CAAC,0BAA0B;SAC1E,MAAM,CAAC,KAAK,EAAE,IAAuB,EAAE,EAAE;QACxC,MAAM,QAAQ,GAAG,eAAe,EAAE,CAAC,IAAI,CAAA;QAEvC,WAAW,CAAC,eAAe,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAClD,WAAW,CAAC,oBAAoB,QAAQ,QAAQ,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;QAEhE,MAAM,sBAAsB,GAAG,MAAM,eAAe,EAAE,CAAA;QACtD,IAAI,CAAC,sBAAsB,EAAE;YAC3B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;SAChB;QAED,MAAM,eAAe,EAAE,CAAA;QACvB,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,CAAA;QACzC,MAAM,QAAQ,CAAC,MAAM,CAAC,CAAA;IACxB,CAAC,CAAC,CAAA;IAEJ,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;AACnC,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { SubmitCommandArgs, SubmitConfig } from './types.js';
2
+ export declare const codeBuildChecks: () => Promise<boolean>;
3
+ export declare const preSubmitChecks: () => Promise<void>;
4
+ export declare const completeConfig: (args: SubmitCommandArgs) => Promise<SubmitConfig>;
5
+ export declare const doSubmit: (config: SubmitConfig) => Promise<void>;
@@ -0,0 +1,268 @@
1
+ import { promisify } from 'util';
2
+ import { exec } from 'child_process';
3
+ import { renderSuccess, renderTasks, renderConfirmationPrompt, } from '@shopify/cli-kit/node/ui';
4
+ import { AbortError, handler as handleError } from '@shopify/cli-kit/node/error';
5
+ import { outputInfo, outputDebug, outputWarn } from '@shopify/cli-kit/node/output';
6
+ import { edit } from 'external-editor';
7
+ import { getRunBinCommand } from '../../utils/package-manager.js';
8
+ import { assertNetworkAndAuth } from '../../utils/common-tasks.js';
9
+ import { getMiniManifest } from '../../utils/minis-manifest.js';
10
+ import { validateDescription } from './validation.js';
11
+ import { assertManifestValid, assertNoPendingSubmissions, createStagedUpload, createSubmission, packageShopMini, uploadSubmission, } from './tasks.js';
12
+ import { generateSubmissionArchiveFilename, getSubmissionArchivePath, } from './config.js';
13
+ import { assertCoreDependenciesVersion } from './utils/assert-core-dependencies-version.js';
14
+ import { requestEntryPointParams } from './utils/request-entry-point-params.js';
15
+ const execAsync = promisify(exec);
16
+ export const codeBuildChecks = async () => {
17
+ try {
18
+ await renderTasks([
19
+ // We run this task first to ensure auth and network are working.
20
+ // This makes sense because the dependency check needs a network
21
+ {
22
+ title: `Authenticating using Shop Minis Admin API key`,
23
+ task: async () => {
24
+ await assertNetworkAndAuth();
25
+ },
26
+ },
27
+ {
28
+ title: `Checking if dependencies are up to date`,
29
+ task: async () => {
30
+ await assertCoreDependenciesVersion();
31
+ },
32
+ },
33
+ ]);
34
+ }
35
+ catch (error) {
36
+ handleError(error);
37
+ return false;
38
+ }
39
+ const tscCommand = await getRunBinCommand('tsc');
40
+ const lintCommand = await getRunBinCommand('eslint .');
41
+ try {
42
+ outputInfo('Running typescript checks');
43
+ await execAsync(tscCommand);
44
+ outputInfo('Typescript OK!');
45
+ }
46
+ catch {
47
+ outputWarn('Typescript checks failed');
48
+ const continueWithSubmission = await renderConfirmationPrompt({
49
+ message: 'The code you are about to submit seems to have typescript errors, this might be a reason for rejection. Do you want to continue with the submission?',
50
+ });
51
+ if (!continueWithSubmission) {
52
+ console.log(`Run "${tscCommand}" to see the errors.`);
53
+ return false;
54
+ }
55
+ }
56
+ try {
57
+ outputInfo('Running lint checks');
58
+ await execAsync(lintCommand);
59
+ outputInfo('Lint OK!');
60
+ }
61
+ catch {
62
+ outputWarn('Lint checks failed');
63
+ const continueWithSubmission = await renderConfirmationPrompt({
64
+ message: 'The code you are about to submit seems to have lint errors, this might be a reason for rejection. Do you want to continue with the submission?',
65
+ });
66
+ if (!continueWithSubmission) {
67
+ console.log(`Run "${lintCommand}" to see the errors.`);
68
+ return false;
69
+ }
70
+ }
71
+ return true;
72
+ };
73
+ export const preSubmitChecks = async () => {
74
+ const tasks = [
75
+ {
76
+ title: `Checking if there are other submissions`,
77
+ task: async () => {
78
+ await assertNoPendingSubmissions();
79
+ },
80
+ },
81
+ {
82
+ title: `Verifying your manifest file`,
83
+ task: async () => {
84
+ await assertManifestValid();
85
+ },
86
+ },
87
+ ];
88
+ try {
89
+ await renderTasks(tasks);
90
+ }
91
+ catch (error) {
92
+ // Always output the error first
93
+ handleError(error);
94
+ // If the error doesn't have next steps follow-up with some generic ones
95
+ if (!error || !error?.nextSteps) {
96
+ const submitCmd = await getRunBinCommand('shop-minis submit');
97
+ handleError(new AbortError(`Pre-submission checks failed`, 'Try again and if the issue continues, contact us.', [
98
+ `Try to run "${submitCmd}" again`,
99
+ "Contact Shop if you're having issues",
100
+ ]));
101
+ }
102
+ process.exit(1);
103
+ }
104
+ };
105
+ async function promptForDescription(predefinedDescription) {
106
+ const template = `## Detailed description of the changes you are submitting for review.
107
+ If this is your first submission or if it includes significant changes, ensure that you highlight these aspects clearly:
108
+
109
+
110
+ ## URL to a brief video demonstration of your Mini, or a design file, or step-by-step flow with images:
111
+
112
+
113
+ ## Store and/or product deep links for testing your "${getMiniManifest().name} (${getMiniManifest().handle})" Mini:
114
+ > Store:
115
+ > Product:
116
+
117
+
118
+ ## Step-by-step testing instructions for your Mini (e.g. how to trigger and validate the functionality):
119
+
120
+ `;
121
+ const continueWithSubmission = await renderConfirmationPrompt({
122
+ message: 'Continue with your preferred editor?',
123
+ });
124
+ if (continueWithSubmission) {
125
+ const description = edit(predefinedDescription ?? template);
126
+ const descriptionValidationResult = validateDescription(description, template);
127
+ if (descriptionValidationResult !== true) {
128
+ outputWarn(descriptionValidationResult);
129
+ return promptForDescription(description);
130
+ }
131
+ return description;
132
+ }
133
+ else {
134
+ process.exit(0);
135
+ }
136
+ }
137
+ export const completeConfig = async (args) => {
138
+ let { description } = args;
139
+ if (!description || validateDescription(description) !== true) {
140
+ outputInfo('Please provide the testing instructions we need to review your Mini:');
141
+ description = await promptForDescription(description);
142
+ }
143
+ if (getMiniManifest().entry_points?.length >= 1) {
144
+ const entryPointParams = await requestEntryPointParams();
145
+ description += `\n\n## Entry point params \n\n${entryPointParams}`;
146
+ }
147
+ return {
148
+ description,
149
+ };
150
+ };
151
+ export const doSubmit = async (config) => {
152
+ outputDebug(`Submit config ${JSON.stringify(config)}`);
153
+ const submitTasksData = {
154
+ outputArchiveFilename: null,
155
+ outputArchivePath: null,
156
+ stagedUpload: null,
157
+ submission: null,
158
+ };
159
+ const tasks = [
160
+ {
161
+ title: `Packaging Shop Mini for submission`,
162
+ task: async () => {
163
+ const inputDirectory = process.cwd();
164
+ const matchFilePattern = `**/*`;
165
+ submitTasksData.outputArchiveFilename =
166
+ generateSubmissionArchiveFilename();
167
+ submitTasksData.outputArchivePath = getSubmissionArchivePath(submitTasksData.outputArchiveFilename);
168
+ await packageShopMini({
169
+ inputDirectory,
170
+ outputArchivePath: submitTasksData.outputArchivePath,
171
+ matchFilePattern,
172
+ ignore: [
173
+ '**/*.(spec|test).*',
174
+ '**/__tests__/**/*',
175
+ 'node_modules/**',
176
+ '.minis-cache/**',
177
+ '.git/**',
178
+ '.env',
179
+ ],
180
+ });
181
+ },
182
+ },
183
+ {
184
+ title: 'Preparing to upload submission',
185
+ task: async () => {
186
+ if (!submitTasksData.outputArchivePath ||
187
+ !submitTasksData.outputArchiveFilename) {
188
+ throw new Error('Expected data for upload submission not found');
189
+ }
190
+ // eslint-disable-next-line require-atomic-updates
191
+ submitTasksData.stagedUpload = await createStagedUpload({
192
+ outputArchiveFilename: submitTasksData.outputArchiveFilename,
193
+ outputArchivePath: submitTasksData.outputArchivePath,
194
+ });
195
+ },
196
+ },
197
+ {
198
+ title: 'Uploading submission',
199
+ task: async () => {
200
+ if (!submitTasksData.outputArchivePath ||
201
+ !submitTasksData.stagedUpload) {
202
+ throw new Error('Expected data for submission not found');
203
+ }
204
+ await uploadSubmission({
205
+ url: submitTasksData.stagedUpload.url,
206
+ headers: JSON.parse(submitTasksData.stagedUpload.headers),
207
+ outputArchivePath: submitTasksData.outputArchivePath,
208
+ });
209
+ },
210
+ },
211
+ {
212
+ title: 'Finalizing submission',
213
+ task: async () => {
214
+ if (!submitTasksData.stagedUpload) {
215
+ throw new Error('Expected data for finalizing submission not found');
216
+ }
217
+ // eslint-disable-next-line require-atomic-updates
218
+ submitTasksData.submission = await createSubmission({
219
+ description: config.description,
220
+ stagedUploadId: submitTasksData.stagedUpload.id,
221
+ });
222
+ },
223
+ },
224
+ ];
225
+ try {
226
+ await renderTasks(tasks);
227
+ renderSuccess({
228
+ headline: 'Shop Mini submitted for review',
229
+ body: [
230
+ 'Thank you for your submission. Your Shop Mini has been added to the review queue. Your submission reference is:',
231
+ {
232
+ bold: submitTasksData.submission?.reference ?? 'unknown',
233
+ },
234
+ ],
235
+ nextSteps: [
236
+ [
237
+ 'Keep your eyes on your email for communication regarding your submission',
238
+ ],
239
+ [
240
+ 'To check the status of your submission at any point, run',
241
+ {
242
+ command: await getRunBinCommand('shop-minis check-submission'),
243
+ },
244
+ ],
245
+ [
246
+ 'To cancel your submission at any point, run',
247
+ {
248
+ command: await getRunBinCommand('shop-minis cancel-submission'),
249
+ },
250
+ ],
251
+ ],
252
+ });
253
+ }
254
+ catch (error) {
255
+ // Always output the error first
256
+ handleError(error);
257
+ // If the error doesn't have next steps follow-up with some generic ones
258
+ if (!error || !error?.nextSteps) {
259
+ const submitCmd = await getRunBinCommand('shop-minis submit');
260
+ handleError(new AbortError(`Submission failed`, 'Try again and if the issue continues, contact us.', [
261
+ `Try to run "${submitCmd}" again`,
262
+ "Contact Shop if you're having issues",
263
+ ]));
264
+ }
265
+ process.exit(1);
266
+ }
267
+ };
268
+ //# sourceMappingURL=submit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"submit.js","sourceRoot":"","sources":["../../../src/commands/submit/submit.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ export declare function assertNoPendingSubmissions(): Promise<void>;
2
+ export declare function assertManifestValid(): void;
3
+ interface PackageShopMiniParams {
4
+ inputDirectory: string;
5
+ outputArchivePath: string;
6
+ matchFilePattern: string;
7
+ ignore: string[];
8
+ }
9
+ export declare const packageShopMini: ({ inputDirectory, outputArchivePath, matchFilePattern, ignore, }: PackageShopMiniParams) => Promise<void>;
10
+ interface CreateStagedUploadParams {
11
+ outputArchiveFilename: string;
12
+ outputArchivePath: string;
13
+ }
14
+ export declare const createStagedUpload: ({ outputArchiveFilename, outputArchivePath, }: CreateStagedUploadParams) => Promise<{
15
+ __typename?: "StagedUpload" | undefined;
16
+ url: any;
17
+ headers: string;
18
+ id: string;
19
+ } | null | undefined>;
20
+ interface UploadSubmissionParams {
21
+ url: string;
22
+ headers: Record<string, string>;
23
+ outputArchivePath: string;
24
+ }
25
+ export declare const uploadSubmission: ({ url, headers, outputArchivePath, }: UploadSubmissionParams) => Promise<void>;
26
+ interface CreateSubmissionParams {
27
+ description: string;
28
+ stagedUploadId: string;
29
+ }
30
+ export declare const createSubmission: ({ description, stagedUploadId, }: CreateSubmissionParams) => Promise<{
31
+ __typename?: "Submission" | undefined;
32
+ reference: string;
33
+ description: string;
34
+ status: import("../../data/types/autogenerated/shop-minis-admin-api/graphql.js").SubmissionStatus;
35
+ submittedAt: any;
36
+ } | null | undefined>;
37
+ export {};
@@ -0,0 +1,91 @@
1
+ import { mkdirSync } from 'node:fs';
2
+ import { AbortError } from '@shopify/cli-kit/node/error';
3
+ import { fileSize } from '@shopify/cli-kit/node/fs';
4
+ import { outputContent, outputDebug, outputToken, } from '@shopify/cli-kit/node/output';
5
+ import { zip } from '../../utils/archive.js';
6
+ import { getFileChecksum } from '../../utils/file.js';
7
+ import { validateManifest } from '../../utils/minis-manifest.js';
8
+ import { createUpload as graphqlCreateUpload, } from '../../data/create-upload.js';
9
+ import { getPendingSubmission as graphqlGetPendingSubmission } from '../../data/get-submissions.js';
10
+ import { createSubmission as graphqlCreateSubmission } from '../../data/create-submission.js';
11
+ import { uploadFile } from './gcs.js';
12
+ import { wrapError, handleCreateUploadErrors, handleUploadFileErrors, handleCreateSubmissionErrors, generateExistingPendingSubmissionError, } from './errors.js';
13
+ import { SUBMISSION_PATHS, SUBMISSION_VALIDATION } from './config.js';
14
+ export async function assertNoPendingSubmissions() {
15
+ const pendingSubmission = await graphqlGetPendingSubmission();
16
+ if (pendingSubmission) {
17
+ throw await generateExistingPendingSubmissionError(pendingSubmission);
18
+ }
19
+ }
20
+ export function assertManifestValid() {
21
+ const { valid, errors } = validateManifest();
22
+ if (!valid) {
23
+ throw new AbortError('Manifest invalid. Errors:', errors.map(error => ` • ${error}`).join('\n'), [
24
+ ['Fix the above issues in your', { bold: 'manifest.json' }],
25
+ 'Try again and if the issue continues, contact us.',
26
+ ]);
27
+ }
28
+ }
29
+ export const packageShopMini = async ({ inputDirectory, outputArchivePath, matchFilePattern, ignore, }) => {
30
+ try {
31
+ // Ensure the submissions cache dir exists
32
+ try {
33
+ mkdirSync(SUBMISSION_PATHS.SUBMISSION_CACHE_DIR);
34
+ }
35
+ catch {
36
+ // directory already exists. do nothing
37
+ }
38
+ await zip({
39
+ inputDirectory,
40
+ outputArchivePath,
41
+ matchFilePattern,
42
+ ignore,
43
+ });
44
+ }
45
+ catch (error) {
46
+ throw wrapError(error, 'Unable to package Shop Mini');
47
+ }
48
+ const packageSizeBytes = await fileSize(outputArchivePath);
49
+ if (packageSizeBytes > SUBMISSION_VALIDATION.SUBMISSION_FILE_SIZE_MAX_BYTES) {
50
+ outputDebug(outputContent `Filesize of ${outputToken.path(outputArchivePath)} is ${String(packageSizeBytes)} bytes`);
51
+ throw new AbortError('File size too large', `Your Shop Mini is ${(packageSizeBytes / 1000 / 1000).toFixed(2)}mb, which exceeds the maximum size of ${Math.round(SUBMISSION_VALIDATION.SUBMISSION_FILE_SIZE_MAX_BYTES / 1000 / 1000)}mb.`, [
52
+ 'Reduce file size of assets and files',
53
+ "Contact us if you're having issues reducing file size",
54
+ ]);
55
+ }
56
+ };
57
+ export const createStagedUpload = async ({ outputArchiveFilename, outputArchivePath, }) => {
58
+ const packageSizeBytes = await fileSize(outputArchivePath);
59
+ const packageChecksum = getFileChecksum(outputArchivePath);
60
+ const params = {
61
+ filename: outputArchiveFilename,
62
+ checksum: packageChecksum,
63
+ fileSize: packageSizeBytes,
64
+ mimeType: 'application/gzip',
65
+ };
66
+ const { upload, userErrors } = await graphqlCreateUpload(params);
67
+ handleCreateUploadErrors(params, userErrors);
68
+ return upload;
69
+ };
70
+ export const uploadSubmission = async ({ url, headers, outputArchivePath, }) => {
71
+ const params = {
72
+ filepath: outputArchivePath,
73
+ headers,
74
+ url,
75
+ };
76
+ try {
77
+ await uploadFile(params);
78
+ }
79
+ catch (error) {
80
+ handleUploadFileErrors(error);
81
+ }
82
+ };
83
+ export const createSubmission = async ({ description, stagedUploadId, }) => {
84
+ const { submission, userErrors } = await graphqlCreateSubmission({
85
+ description,
86
+ uploadId: stagedUploadId,
87
+ });
88
+ await handleCreateSubmissionErrors(userErrors);
89
+ return submission;
90
+ };
91
+ //# sourceMappingURL=tasks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tasks.js","sourceRoot":"","sources":["../../../src/commands/submit/tasks.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { CreateSubmissionMutation, CreateUploadMutation } from '../../data/types/autogenerated/shop-minis-admin-api/graphql.js';
2
+ export interface SubmitCommandArgs {
3
+ description?: string;
4
+ verbose?: boolean;
5
+ }
6
+ export interface SubmitConfig {
7
+ description: string;
8
+ }
9
+ export interface SubmitTasksData {
10
+ outputArchiveFilename: string | null;
11
+ outputArchivePath: string | null;
12
+ stagedUpload: CreateUploadMutation['submissionUploadCreate']['upload'] | null;
13
+ submission: CreateSubmissionMutation['submissionCreate']['submission'] | null;
14
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/commands/submit/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ export declare function assertCoreDependenciesVersion(): Promise<void>;