@shopify/cli-hydrogen 4.0.0-alpha.9 → 4.0.0

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 (383) hide show
  1. package/dist/commands/hydrogen/build.d.ts +20 -0
  2. package/dist/commands/hydrogen/build.js +36 -33
  3. package/dist/commands/hydrogen/check.d.ts +18 -0
  4. package/dist/commands/hydrogen/check.js +35 -0
  5. package/dist/commands/hydrogen/dev.d.ts +14 -0
  6. package/dist/commands/hydrogen/dev.js +56 -60
  7. package/dist/commands/hydrogen/generate/route.d.ts +34 -0
  8. package/dist/commands/hydrogen/generate/route.js +165 -0
  9. package/dist/commands/hydrogen/generate/route.test.d.ts +1 -0
  10. package/dist/commands/hydrogen/generate/route.test.js +126 -0
  11. package/dist/commands/hydrogen/generate/routes.d.ts +16 -0
  12. package/dist/commands/hydrogen/generate/routes.js +22 -0
  13. package/dist/commands/hydrogen/init.d.ts +22 -0
  14. package/dist/commands/hydrogen/init.js +169 -25
  15. package/dist/commands/hydrogen/preview.d.ts +17 -0
  16. package/dist/commands/hydrogen/preview.js +2 -2
  17. package/dist/create-app.d.ts +1 -0
  18. package/dist/create-app.js +4 -0
  19. package/dist/{templates/demo-store/app/routes/($lang) → generator-templates/routes}/[robots.txt].tsx +2 -1
  20. package/dist/{templates/demo-store/app/routes/($lang) → generator-templates/routes}/[sitemap.xml].tsx +8 -6
  21. package/dist/generator-templates/routes/account/login.tsx +74 -0
  22. package/dist/generator-templates/routes/account/register.tsx +74 -0
  23. package/dist/generator-templates/routes/cart.tsx +43 -0
  24. package/dist/generator-templates/routes/collections/$collectionHandle.tsx +65 -0
  25. package/dist/{templates/demo-store/app → generator-templates}/routes/graphiql.tsx +0 -0
  26. package/dist/{templates/hello-world/app → generator-templates}/routes/index.tsx +0 -0
  27. package/dist/generator-templates/routes/pages/$pageHandle.tsx +74 -0
  28. package/dist/{templates/demo-store/app/routes/($lang) → generator-templates/routes}/policies/$policyHandle.tsx +9 -38
  29. package/dist/generator-templates/routes/policies/index.tsx +65 -0
  30. package/dist/generator-templates/routes/products/$productHandle.tsx +57 -0
  31. package/dist/hooks/init.d.ts +5 -0
  32. package/dist/utils/check-lockfile.d.ts +3 -0
  33. package/dist/utils/check-lockfile.js +78 -0
  34. package/dist/utils/check-version.d.ts +3 -0
  35. package/dist/utils/check-version.js +50 -0
  36. package/dist/utils/config.d.ts +18 -0
  37. package/dist/utils/config.js +116 -43
  38. package/dist/utils/flags.d.ts +10 -0
  39. package/dist/utils/flags.js +15 -3
  40. package/dist/utils/flags.test.d.ts +1 -0
  41. package/dist/utils/flags.test.js +18 -0
  42. package/dist/utils/log.d.ts +5 -0
  43. package/dist/utils/mini-oxygen.d.ts +11 -0
  44. package/dist/utils/mini-oxygen.js +7 -4
  45. package/dist/utils/missing-routes.d.ts +6 -0
  46. package/dist/utils/missing-routes.js +71 -0
  47. package/dist/utils/template-downloader.d.ts +11 -0
  48. package/dist/utils/template-downloader.js +66 -0
  49. package/dist/utils/transpile-ts.d.ts +16 -0
  50. package/dist/utils/transpile-ts.js +161 -0
  51. package/dist/utils/virtual-routes.d.ts +7 -0
  52. package/dist/utils/virtual-routes.js +47 -0
  53. package/dist/utils/virtual-routes.test.d.ts +1 -0
  54. package/dist/utils/virtual-routes.test.js +46 -0
  55. package/dist/virtual-routes/assets/dummy.d.ts +1 -0
  56. package/dist/virtual-routes/assets/dummy.js +1 -0
  57. package/dist/virtual-routes/assets/dummy.ts +1 -0
  58. package/dist/{templates/demo-store/dist/client → virtual-routes/assets}/favicon.svg +0 -0
  59. package/dist/virtual-routes/assets/styles.css +207 -0
  60. package/dist/virtual-routes/components/HydrogenLogoBaseBW.jsx +7 -0
  61. package/dist/virtual-routes/components/HydrogenLogoBaseColor.jsx +13 -0
  62. package/dist/virtual-routes/components/IconBanner.jsx +47 -0
  63. package/dist/virtual-routes/components/IconDiscord.jsx +4 -0
  64. package/dist/virtual-routes/components/IconError.jsx +20 -0
  65. package/dist/virtual-routes/components/IconGithub.jsx +4 -0
  66. package/dist/virtual-routes/components/IconTwitter.jsx +4 -0
  67. package/dist/virtual-routes/components/Layout.jsx +6 -0
  68. package/dist/virtual-routes/routes/graphiql.jsx +5 -0
  69. package/dist/virtual-routes/routes/index.jsx +140 -0
  70. package/dist/virtual-routes/virtual-root.jsx +38 -0
  71. package/oclif.manifest.json +1 -131
  72. package/package.json +36 -7
  73. package/dist/templates/demo-store/.cache/content-v2/sha512/02/76/13bbea15bb42b81a204b0dc5f14726e0bfa8d012a7b284f887cc2e3c92195d6b07a78f199f990b311ca5fafa9079563503cdd81808cd9b7e496d86c72732 +0 -1
  74. package/dist/templates/demo-store/.cache/content-v2/sha512/08/56/c9a478b8c5c2fbfb6eed219f0861db568eceecbb45155124491ca25125ca421aac7e1b10d29151e5294a776ae10e02e01dc2da3561da793d111c4f908502 +0 -1
  75. package/dist/templates/demo-store/.cache/content-v2/sha512/0f/d5/950a1e0708f440217f567601ee2bfed73c56ada7491058d1ebb769f9a348484d29d4c3897d848d5f9123b0cfb8be69de4ebddc9d964a368e779e2927be5b +0 -1
  76. package/dist/templates/demo-store/.cache/content-v2/sha512/10/31/47b4061a63eaedea6368416dff9248ab2e51a4bea4004882a27c1437490c8150a4709438d28bbd8fd71a7516c9af612204f6116b0604e18902b5c6f69453 +0 -1
  77. package/dist/templates/demo-store/.cache/content-v2/sha512/13/f6/b7f804d45a961ca1e392429e75ad80f23ba46cbba0e960c6a70f8de81f3f3763af59651474176798d1a1a4bd2a5109b1d441f6d1c8ba070b678b38378adf +0 -1
  78. package/dist/templates/demo-store/.cache/content-v2/sha512/28/7c/c71b0c6367bdf7307a8061fe1c4568c9f1e9603d835b6fc917fe8042535a867c37154e35376a01ad6bdb3c2d6f29b88b41902fd6f20b1227e02081682d01 +0 -1
  79. package/dist/templates/demo-store/.cache/content-v2/sha512/29/62/a788055902cff8e9403b901ebd715b56541b0ee4dc9f13cb739cd906ae89ae1fa7199831d613ab21c3ee5d84c5456608dc8707d9199ae3d8ba5e9fd7ce95 +0 -1
  80. package/dist/templates/demo-store/.cache/content-v2/sha512/2b/b2/d5a8e11c89553d08b26b4a7ba8b901de31c0b182f745f8c5d1c5aba44bf46d0d69e3d8042f5917728d0b69d5eba102e3de332f8141aef67a12d215a66843 +0 -1
  81. package/dist/templates/demo-store/.cache/content-v2/sha512/34/dd/ec66f7075936ba94dd741485089904914960fd50a4886c31783c27c27ca08852be43dea712e8aaea6f5197b83ccf1949c8a24c27ff61f5280377917d722e +0 -1
  82. package/dist/templates/demo-store/.cache/content-v2/sha512/46/04/af285aee74d96b28b24f75d7911de65e6c7bb26475ab5219fe5308028fda55060cf45650dfa09c0731ec73ece453c1e24e0c38715e8d4c5c80fd6365a1f4 +0 -1
  83. package/dist/templates/demo-store/.cache/content-v2/sha512/4e/ea/2fe739931285fa2839b54fe6c91470491475eac2d960e35ef0c6750313c08fbf2b2d784c0bb71c5fb2ef6c4a27f2202a4c29199b53bf7fd43c5721f90ecf +0 -1
  84. package/dist/templates/demo-store/.cache/content-v2/sha512/51/ab/e165384df6374c7b2d0ebebc8642ecb0e0c14f7c5b57970ec5d2e17f7d1643e0b01eda69e5ffbefde85ecba6d613bcc5175c5564e36bfb73d966c8ea4153 +0 -1
  85. package/dist/templates/demo-store/.cache/content-v2/sha512/54/b2/a99146d18769ec698b6c61e4c3e63689a24110cca7c671d926fc1320f5a2ac5cdbf143db9074dcfb383359307c50ccbe2512f2d9ee992eb53f2ed98997af +0 -1
  86. package/dist/templates/demo-store/.cache/content-v2/sha512/57/7e/37b69b357be4c488e5fca37c009c908201ac2107ddaa589143bcb108e9c5f7e4ca91a36f068b3f88bb0da655d7832bd040dcbef25d807faf0804a7f93c9a +0 -1
  87. package/dist/templates/demo-store/.cache/content-v2/sha512/6d/d8/5ad2b238dcc09122c8977b26e2a2eb94e12b1cda5181a020ec77d9364ea2efdc2ddddaf2ba766ced871d8cc33e5862fb4ae0c6591080b7523e5e779dceb5 +0 -1
  88. package/dist/templates/demo-store/.cache/content-v2/sha512/72/e4/3df1f2ae672aa3148b6afde9bd16b5371250464c301be7a4ca40e459768db712d39fb7039ce9710264f726b531b7dd346e43fe260b53789206a05f665393 +0 -1
  89. package/dist/templates/demo-store/.cache/content-v2/sha512/73/40/c822831f11f08a9ceea944d0145b072ba6164a3e2e75f98fda5437cda6dfddf9ca9450445c1f3236228d6259ac95e4cde9bb6e5996490ed00b7b13b06121 +0 -1
  90. package/dist/templates/demo-store/.cache/content-v2/sha512/73/ad/c5cb88faf344aa1be4c7f263610bbf4e5b4b4122a277e9f8adb20bdaabf46a65f647d902bf885172c5e17f16d63c69d9f0213938ad0648099d627bcdc7a3 +0 -1
  91. package/dist/templates/demo-store/.cache/content-v2/sha512/79/6a/c7905d20904ce592cd04dabc941dcfb9ae88a2936f564c6ca21dba66c7b89f44c697504d1fef3427d5121f3ce0abfc72225a25a5985cc2f823c50cb1a4e0 +0 -1
  92. package/dist/templates/demo-store/.cache/content-v2/sha512/7e/bd/739d3492efb96a9a5952538eee6f83dd7123c59a4b48538a5a554b8684ba84a1e65dd626b5aa9c6dc74c96734c46e3303ab93e6a5fcc56ecb4150c036aea +0 -1
  93. package/dist/templates/demo-store/.cache/content-v2/sha512/88/76/d18fdfbb05293909609d42368642fc6da4bd138c5864ec2f721212b52e595b84ae46f48021ed3e6240edf443f78bdea557d56d700e3da848459ea3077a80 +0 -1
  94. package/dist/templates/demo-store/.cache/content-v2/sha512/88/d0/847cc94057b70b5352a6f097d172883a789eedabfe597475672bec5495d323bc41e185cd5a6477aa691befeb69bd6f19f77b4735ebd8f230d39491bdabae +0 -1
  95. package/dist/templates/demo-store/.cache/content-v2/sha512/93/6b/e60098157f6bff8ba570cab2ffd97a14983109006f7fa87e4432728366f96dfb19e957d28754daa45f1b6cb2421d26ab59bbd5ce5a448d6102e8e662403d +0 -1
  96. package/dist/templates/demo-store/.cache/content-v2/sha512/bc/1c/74650cdfe58d3295c52501b3572b71ca4d0bcebe895291b39d63fc57d60b1924315d5b6292c825bec288196d39acf45d63688726fd77e85d99ce18e52f28 +0 -1
  97. package/dist/templates/demo-store/.cache/content-v2/sha512/bc/33/6e26ece5ac53d9eac9ac8a192ef39faf2a587a5808253c659fb1d371c477fc8074d428c8d1929b0d85dd1fec66fc79ea6b9fcb01507e2efec75fb7fbc2cc +0 -1
  98. package/dist/templates/demo-store/.cache/content-v2/sha512/cb/63/324e426b4c93a3fa8db83dab506b9abbe2d7628897dfd1369642f19d66f140c090e1c3834728d5082f8cffe846f7c54d112e11f5d934d629ed996d177a1f +0 -1
  99. package/dist/templates/demo-store/.cache/content-v2/sha512/d6/bd/656ddf1b02384b21b4fb55c615f28bba616f85c0992a8555bfbc3b0cf0692e2b3f20a534b4c3baef86e7c9ccf36b8d3a9239747b3d8422ff4dbe7dd2d0a6 +0 -1
  100. package/dist/templates/demo-store/.cache/content-v2/sha512/da/84/b6d27e02f9b109d7cff3095b08e2e2ed1802c8b6829c98f6e297d1c404059f8bacfdc278afd07e2f81cbc487318396a3775037b678ab6aff9a5231c94c0d +0 -1
  101. package/dist/templates/demo-store/.cache/content-v2/sha512/e8/ae/9b467e1d23913d4584d9417875b3cdc25f6dfed8b228f3a0c818129010b778aae1af1eb200b015ab428e79afe0ef1061262392fbdb96ed7da95efbe7f758 +0 -1
  102. package/dist/templates/demo-store/.cache/content-v2/sha512/f4/ba/e578b89fa1a4a0549fa2e68e0ba078fa8c9207c376189d1550a7ae0e54c4c0548d0a29a0cef532ca613e25832b9343e74f6a8bc7338fcc28d51e6e3d7898 +0 -1
  103. package/dist/templates/demo-store/.cache/content-v2/sha512/fb/75/9195d7f913bc6ae5a345003e0863e0c38c00e744334e2ae61feba1a3099be8207599085a8264590dbd0fd9e1fff1d58037183d106cdbc750c7ad6f979d88 +0 -1
  104. package/dist/templates/demo-store/.cache/content-v2/sha512/fd/ef/df6382410602f345da5bb420585629c22c350bc028c87eb6da71e611f381c5ccba09b435b9b5fb31d7c8beb5b8abfa87abdb874b189a3211efe61840fbac +0 -1
  105. package/dist/templates/demo-store/.cache/content-v2/sha512/fd/f3/986b7ee5ea5ad1d89af5c08de69d43c025b54381092e0a19fd7e7a1e0352552aa85c056315ce5e11a46ec75a252b1a44e2083abb73cd6df8407dfdb0ac48 +0 -1
  106. package/dist/templates/demo-store/.cache/index-v5/05/44/bebd201ef5e9e9a7c41bd789ff110691a32c7f7fbbbdd630f33d96667cd1 +0 -2
  107. package/dist/templates/demo-store/.cache/index-v5/26/b5/113aeb17f9f4ef406a1f8b143895199ca545fd0cc1e7972435a092910963 +0 -2
  108. package/dist/templates/demo-store/.cache/index-v5/2c/09/e60b5cd818510e0cbec908aae3b74175e35e446f4383e87c21489433a11e +0 -2
  109. package/dist/templates/demo-store/.cache/index-v5/38/21/c3fb7841590b85142018ba88a01045ef1249ac34211342579f0129eae294 +0 -2
  110. package/dist/templates/demo-store/.cache/index-v5/3a/98/8858fe7de4bf85d37c71adc322cc95335b498bef9a4ae41db324bf5696cc +0 -2
  111. package/dist/templates/demo-store/.cache/index-v5/3e/40/7021422a7cae2c05484b491fb5b85edd82b325e598ac9e5c6afb858049da +0 -2
  112. package/dist/templates/demo-store/.cache/index-v5/47/2f/8e9ec62247eca3464d07de774855bb30a56145adc6525b907490e0c1bda0 +0 -2
  113. package/dist/templates/demo-store/.cache/index-v5/5e/83/14bed234cd143eaf4043de721fcf4250a5adc7008e76d663365e8a322c88 +0 -2
  114. package/dist/templates/demo-store/.cache/index-v5/5f/87/f79366b4aab5423acdda7930c6c989c49dd1c6607885df3afaa5e6873c9f +0 -2
  115. package/dist/templates/demo-store/.cache/index-v5/6e/9e/dc622ea9b5c66089a08f3e8b7a0e62a29e85bab337da0a3b28d6126185ec +0 -2
  116. package/dist/templates/demo-store/.cache/index-v5/71/4c/401eb7f3b2db5e56857a3ddd90e61181e636a5d01cc569ff8671ddf7f14b +0 -2
  117. package/dist/templates/demo-store/.cache/index-v5/78/84/46021cf9ede94313b5bc2cbf2355909ae811d4879a7747f9e2341f6b5bfb +0 -2
  118. package/dist/templates/demo-store/.cache/index-v5/79/2e/b0dd8fcd37a11ecb71cfd33184651560cabda672e55e0b244fc6f825190c +0 -2
  119. package/dist/templates/demo-store/.cache/index-v5/7b/e1/807e64f6a84e568bf9163283e9d49b77b24ff24bd8eed751d9fd94ea404a +0 -2
  120. package/dist/templates/demo-store/.cache/index-v5/85/07/e0c4be5b8442583f11be2d0b6f09171d22721437456b745eb2c977294995 +0 -2
  121. package/dist/templates/demo-store/.cache/index-v5/87/4d/89bc172664efe0dc7f86d8e67559073b2900ae079bd42ae9e3c015d38ab0 +0 -2
  122. package/dist/templates/demo-store/.cache/index-v5/8c/0d/a633a8771437b330d83eef0fdd99a81c41356b2bdc81f80ec9277f92b060 +0 -2
  123. package/dist/templates/demo-store/.cache/index-v5/a3/fc/e2e503290d165b9b0e20c6880bc23ff8ec39a440482418b5103c36be66b9 +0 -2
  124. package/dist/templates/demo-store/.cache/index-v5/a5/bc/d87ab9468457cb872d6c360f8acecd05e0f88b7239b50754f120706fabd4 +0 -2
  125. package/dist/templates/demo-store/.cache/index-v5/a5/c0/8e6e4f498a17b6198e54f204247ba544e6404b282d4ce3065d85fa69a8a4 +0 -2
  126. package/dist/templates/demo-store/.cache/index-v5/af/65/89b0c9eb41779c1658ace443604fea125c524bc95cfc71c9b6300da2dc81 +0 -2
  127. package/dist/templates/demo-store/.cache/index-v5/b2/75/51549baf010c977c70017db497fd9bd20e1efa9b658a6d52761c559f9c0b +0 -2
  128. package/dist/templates/demo-store/.cache/index-v5/b3/75/d3e7a4a5df68530007409daf1d2e66ab789c8b658d1819d7e5fd183f5f57 +0 -2
  129. package/dist/templates/demo-store/.cache/index-v5/bb/db/9dc2cbdcdc6ff352f9a34463a02e198aa2123a4c2e4ef37fea8b8ccae413 +0 -2
  130. package/dist/templates/demo-store/.cache/index-v5/d0/c4/d960260ece228d28f70e317741b3f3f3df05c53956d870235837ae2b73b4 +0 -2
  131. package/dist/templates/demo-store/.cache/index-v5/d3/ca/ff5860148f0bedafb91dab72b54462de81a32a21210324c45a051b197b48 +0 -2
  132. package/dist/templates/demo-store/.cache/index-v5/d4/55/296e80e87e2652f4cf1aebd5419fe73ef16c94ab20cd0400166d44ea1746 +0 -2
  133. package/dist/templates/demo-store/.cache/index-v5/da/7a/4b6977be684885e550a0d8fd21c955d0195371ffc3a9535a5a7b950a5ac9 +0 -2
  134. package/dist/templates/demo-store/.cache/index-v5/dd/aa/599a1cd855476ba058c63ae75a9c006ca11f7fbc2efc00b361d7f1b95cb4 +0 -2
  135. package/dist/templates/demo-store/.cache/index-v5/df/d2/bcfa3853e61309abab85dbd561dbc632ad0ea79b24f1b77c95f861eead5f +0 -2
  136. package/dist/templates/demo-store/.cache/index-v5/df/f5/cc3a1197c607eac768ab1b1cdb7b53a7f87b67c23c92da957d45a5bd0bda +0 -2
  137. package/dist/templates/demo-store/.cache/index-v5/e4/bd/743967c269ef70a14ba6b5dd223d26759eae9295d79f165c66f514b7d8d3 +0 -2
  138. package/dist/templates/demo-store/.cache/index-v5/e5/d3/0de6bfbb93ef9271b53f0ded9696291312b19ff087c2826d679ee2c74c01 +0 -2
  139. package/dist/templates/demo-store/.editorconfig +0 -8
  140. package/dist/templates/demo-store/.eslintignore +0 -4
  141. package/dist/templates/demo-store/.eslintrc.js +0 -16
  142. package/dist/templates/demo-store/.graphqlrc.yml +0 -1
  143. package/dist/templates/demo-store/.prettierignore +0 -2
  144. package/dist/templates/demo-store/_env +0 -6
  145. package/dist/templates/demo-store/_gitignore +0 -13
  146. package/dist/templates/demo-store/app/components/AccountAddressBook.tsx +0 -97
  147. package/dist/templates/demo-store/app/components/AccountDetails.tsx +0 -41
  148. package/dist/templates/demo-store/app/components/AddToCartButton.tsx +0 -42
  149. package/dist/templates/demo-store/app/components/Breadcrumbs.tsx +0 -36
  150. package/dist/templates/demo-store/app/components/Button.tsx +0 -56
  151. package/dist/templates/demo-store/app/components/Cart.tsx +0 -431
  152. package/dist/templates/demo-store/app/components/CartLoading.tsx +0 -50
  153. package/dist/templates/demo-store/app/components/CountrySelector.tsx +0 -180
  154. package/dist/templates/demo-store/app/components/Drawer.tsx +0 -115
  155. package/dist/templates/demo-store/app/components/FeaturedCollections.tsx +0 -54
  156. package/dist/templates/demo-store/app/components/FeaturedProducts.tsx +0 -116
  157. package/dist/templates/demo-store/app/components/FeaturedSection.tsx +0 -39
  158. package/dist/templates/demo-store/app/components/GenericError.tsx +0 -58
  159. package/dist/templates/demo-store/app/components/Grid.tsx +0 -44
  160. package/dist/templates/demo-store/app/components/Hero.tsx +0 -129
  161. package/dist/templates/demo-store/app/components/Icon.tsx +0 -253
  162. package/dist/templates/demo-store/app/components/Input.tsx +0 -24
  163. package/dist/templates/demo-store/app/components/Layout.tsx +0 -492
  164. package/dist/templates/demo-store/app/components/Link.tsx +0 -46
  165. package/dist/templates/demo-store/app/components/Modal.tsx +0 -46
  166. package/dist/templates/demo-store/app/components/NotFound.tsx +0 -22
  167. package/dist/templates/demo-store/app/components/OrderCard.tsx +0 -82
  168. package/dist/templates/demo-store/app/components/Pagination.tsx +0 -277
  169. package/dist/templates/demo-store/app/components/ProductCard.tsx +0 -140
  170. package/dist/templates/demo-store/app/components/ProductGallery.tsx +0 -114
  171. package/dist/templates/demo-store/app/components/ProductGrid.tsx +0 -93
  172. package/dist/templates/demo-store/app/components/ProductSwimlane.tsx +0 -30
  173. package/dist/templates/demo-store/app/components/Skeleton.tsx +0 -24
  174. package/dist/templates/demo-store/app/components/SortFilter.tsx +0 -414
  175. package/dist/templates/demo-store/app/components/Text.tsx +0 -192
  176. package/dist/templates/demo-store/app/components/index.ts +0 -28
  177. package/dist/templates/demo-store/app/data/countries.ts +0 -194
  178. package/dist/templates/demo-store/app/data/index.ts +0 -1027
  179. package/dist/templates/demo-store/app/entry.client.tsx +0 -4
  180. package/dist/templates/demo-store/app/entry.server.tsx +0 -26
  181. package/dist/templates/demo-store/app/hooks/useCartFetchers.tsx +0 -14
  182. package/dist/templates/demo-store/app/hooks/useIsHydrated.tsx +0 -12
  183. package/dist/templates/demo-store/app/lib/const.ts +0 -10
  184. package/dist/templates/demo-store/app/lib/placeholders.ts +0 -244
  185. package/dist/templates/demo-store/app/lib/seo/common.tsx +0 -367
  186. package/dist/templates/demo-store/app/lib/seo/debugger.tsx +0 -175
  187. package/dist/templates/demo-store/app/lib/seo/image.tsx +0 -32
  188. package/dist/templates/demo-store/app/lib/seo/index.ts +0 -4
  189. package/dist/templates/demo-store/app/lib/seo/seo.tsx +0 -24
  190. package/dist/templates/demo-store/app/lib/seo/types.ts +0 -84
  191. package/dist/templates/demo-store/app/lib/session.server.ts +0 -57
  192. package/dist/templates/demo-store/app/lib/type.ts +0 -21
  193. package/dist/templates/demo-store/app/lib/utils.ts +0 -310
  194. package/dist/templates/demo-store/app/root.tsx +0 -279
  195. package/dist/templates/demo-store/app/routes/($lang)/$.tsx +0 -7
  196. package/dist/templates/demo-store/app/routes/($lang)/account/__private/address/$id.tsx +0 -320
  197. package/dist/templates/demo-store/app/routes/($lang)/account/__private/edit.tsx +0 -273
  198. package/dist/templates/demo-store/app/routes/($lang)/account/__private/logout.ts +0 -25
  199. package/dist/templates/demo-store/app/routes/($lang)/account/__private/orders.$id.tsx +0 -322
  200. package/dist/templates/demo-store/app/routes/($lang)/account/__public/activate.$id.$activationToken.tsx +0 -218
  201. package/dist/templates/demo-store/app/routes/($lang)/account/__public/login.tsx +0 -197
  202. package/dist/templates/demo-store/app/routes/($lang)/account/__public/recover.tsx +0 -144
  203. package/dist/templates/demo-store/app/routes/($lang)/account/__public/register.tsx +0 -184
  204. package/dist/templates/demo-store/app/routes/($lang)/account/__public/reset.$id.$resetToken.tsx +0 -214
  205. package/dist/templates/demo-store/app/routes/($lang)/account.tsx +0 -188
  206. package/dist/templates/demo-store/app/routes/($lang)/api/countries.tsx +0 -22
  207. package/dist/templates/demo-store/app/routes/($lang)/api/products.tsx +0 -116
  208. package/dist/templates/demo-store/app/routes/($lang)/cart.tsx +0 -510
  209. package/dist/templates/demo-store/app/routes/($lang)/collections/$collectionHandle.tsx +0 -300
  210. package/dist/templates/demo-store/app/routes/($lang)/collections/all.tsx +0 -5
  211. package/dist/templates/demo-store/app/routes/($lang)/collections/index.tsx +0 -188
  212. package/dist/templates/demo-store/app/routes/($lang)/discounts.$code.tsx +0 -60
  213. package/dist/templates/demo-store/app/routes/($lang)/featured-products.tsx +0 -58
  214. package/dist/templates/demo-store/app/routes/($lang)/index.tsx +0 -241
  215. package/dist/templates/demo-store/app/routes/($lang)/journal/$journalHandle.tsx +0 -141
  216. package/dist/templates/demo-store/app/routes/($lang)/journal/index.tsx +0 -152
  217. package/dist/templates/demo-store/app/routes/($lang)/og-image.tsx +0 -19
  218. package/dist/templates/demo-store/app/routes/($lang)/pages/$pageHandle.tsx +0 -75
  219. package/dist/templates/demo-store/app/routes/($lang)/policies/index.tsx +0 -97
  220. package/dist/templates/demo-store/app/routes/($lang)/products/$productHandle.tsx +0 -551
  221. package/dist/templates/demo-store/app/routes/($lang)/products/index.tsx +0 -148
  222. package/dist/templates/demo-store/app/routes/($lang)/search.tsx +0 -198
  223. package/dist/templates/demo-store/app/styles/app.css +0 -4203
  224. package/dist/templates/demo-store/app/styles/custom-font.css +0 -13
  225. package/dist/templates/demo-store/app/styles/fonts/IBMPlexSerif-Text.woff2 +0 -0
  226. package/dist/templates/demo-store/app/styles/fonts/IBMPlexSerif-TextItalic.woff2 +0 -0
  227. package/dist/templates/demo-store/dist/client/build/_assets/IBMPlexSerif-Text-YFMZNZW6.woff2 +0 -0
  228. package/dist/templates/demo-store/dist/client/build/_assets/IBMPlexSerif-TextItalic-CS6L5H7S.woff2 +0 -0
  229. package/dist/templates/demo-store/dist/client/build/_assets/app-PPSD2NK6.css +0 -1
  230. package/dist/templates/demo-store/dist/client/build/_assets/custom-font-WVPOFKHF.css +0 -1
  231. package/dist/templates/demo-store/dist/client/build/_assets/favicon-5FIZBM2K.svg +0 -28
  232. package/dist/templates/demo-store/dist/client/build/_shared/chunk-7CASD2US.js +0 -9
  233. package/dist/templates/demo-store/dist/client/build/_shared/chunk-7CASD2US.js.map +0 -7
  234. package/dist/templates/demo-store/dist/client/build/_shared/chunk-7CKXJRLM.js +0 -2
  235. package/dist/templates/demo-store/dist/client/build/_shared/chunk-7CKXJRLM.js.map +0 -7
  236. package/dist/templates/demo-store/dist/client/build/_shared/chunk-AYHDHSL7.js +0 -2
  237. package/dist/templates/demo-store/dist/client/build/_shared/chunk-AYHDHSL7.js.map +0 -7
  238. package/dist/templates/demo-store/dist/client/build/_shared/chunk-EW52HEI6.js +0 -133
  239. package/dist/templates/demo-store/dist/client/build/_shared/chunk-EW52HEI6.js.map +0 -7
  240. package/dist/templates/demo-store/dist/client/build/_shared/chunk-MEPKJ2VW.js +0 -2
  241. package/dist/templates/demo-store/dist/client/build/_shared/chunk-MEPKJ2VW.js.map +0 -7
  242. package/dist/templates/demo-store/dist/client/build/_shared/chunk-NIVT6A2W.js +0 -2
  243. package/dist/templates/demo-store/dist/client/build/_shared/chunk-NIVT6A2W.js.map +0 -7
  244. package/dist/templates/demo-store/dist/client/build/_shared/chunk-SYP5DAMV.js +0 -2
  245. package/dist/templates/demo-store/dist/client/build/_shared/chunk-SYP5DAMV.js.map +0 -7
  246. package/dist/templates/demo-store/dist/client/build/_shared/chunk-SZCP6RSO.js +0 -7
  247. package/dist/templates/demo-store/dist/client/build/_shared/chunk-SZCP6RSO.js.map +0 -7
  248. package/dist/templates/demo-store/dist/client/build/_shared/chunk-YCAWB56Y.js +0 -31
  249. package/dist/templates/demo-store/dist/client/build/_shared/chunk-YCAWB56Y.js.map +0 -7
  250. package/dist/templates/demo-store/dist/client/build/entry.client-3PUQSZFF.js +0 -2
  251. package/dist/templates/demo-store/dist/client/build/entry.client-3PUQSZFF.js.map +0 -7
  252. package/dist/templates/demo-store/dist/client/build/manifest-E4E22121.js +0 -1
  253. package/dist/templates/demo-store/dist/client/build/root-6BHVTOEY.js +0 -14
  254. package/dist/templates/demo-store/dist/client/build/root-6BHVTOEY.js.map +0 -7
  255. package/dist/templates/demo-store/dist/client/build/routes/($lang)/$-HDBACFGJ.js +0 -2
  256. package/dist/templates/demo-store/dist/client/build/routes/($lang)/$-HDBACFGJ.js.map +0 -7
  257. package/dist/templates/demo-store/dist/client/build/routes/($lang)/[robots.txt]-KDA3EX2G.js +0 -2
  258. package/dist/templates/demo-store/dist/client/build/routes/($lang)/[robots.txt]-KDA3EX2G.js.map +0 -7
  259. package/dist/templates/demo-store/dist/client/build/routes/($lang)/[sitemap.xml]-AAQRJL2R.js +0 -2
  260. package/dist/templates/demo-store/dist/client/build/routes/($lang)/[sitemap.xml]-AAQRJL2R.js.map +0 -7
  261. package/dist/templates/demo-store/dist/client/build/routes/($lang)/account/__private/address/$id-3WQU2LQT.js +0 -2
  262. package/dist/templates/demo-store/dist/client/build/routes/($lang)/account/__private/address/$id-3WQU2LQT.js.map +0 -7
  263. package/dist/templates/demo-store/dist/client/build/routes/($lang)/account/__private/edit-3XQ4BLHS.js +0 -2
  264. package/dist/templates/demo-store/dist/client/build/routes/($lang)/account/__private/edit-3XQ4BLHS.js.map +0 -7
  265. package/dist/templates/demo-store/dist/client/build/routes/($lang)/account/__private/logout-7KXWFBCX.js +0 -2
  266. package/dist/templates/demo-store/dist/client/build/routes/($lang)/account/__private/logout-7KXWFBCX.js.map +0 -7
  267. package/dist/templates/demo-store/dist/client/build/routes/($lang)/account/__private/orders.$id-7VQDCWO5.js +0 -2
  268. package/dist/templates/demo-store/dist/client/build/routes/($lang)/account/__private/orders.$id-7VQDCWO5.js.map +0 -7
  269. package/dist/templates/demo-store/dist/client/build/routes/($lang)/account/__public/activate.$id.$activationToken-Z5BQE6J5.js +0 -2
  270. package/dist/templates/demo-store/dist/client/build/routes/($lang)/account/__public/activate.$id.$activationToken-Z5BQE6J5.js.map +0 -7
  271. package/dist/templates/demo-store/dist/client/build/routes/($lang)/account/__public/login-K6QUN2VF.js +0 -2
  272. package/dist/templates/demo-store/dist/client/build/routes/($lang)/account/__public/login-K6QUN2VF.js.map +0 -7
  273. package/dist/templates/demo-store/dist/client/build/routes/($lang)/account/__public/recover-UV5PLPS5.js +0 -2
  274. package/dist/templates/demo-store/dist/client/build/routes/($lang)/account/__public/recover-UV5PLPS5.js.map +0 -7
  275. package/dist/templates/demo-store/dist/client/build/routes/($lang)/account/__public/register-SZW3ORRR.js +0 -2
  276. package/dist/templates/demo-store/dist/client/build/routes/($lang)/account/__public/register-SZW3ORRR.js.map +0 -7
  277. package/dist/templates/demo-store/dist/client/build/routes/($lang)/account/__public/reset.$id.$resetToken-WOUXQWZU.js +0 -2
  278. package/dist/templates/demo-store/dist/client/build/routes/($lang)/account/__public/reset.$id.$resetToken-WOUXQWZU.js.map +0 -7
  279. package/dist/templates/demo-store/dist/client/build/routes/($lang)/account-PRE5HSJE.js +0 -25
  280. package/dist/templates/demo-store/dist/client/build/routes/($lang)/account-PRE5HSJE.js.map +0 -7
  281. package/dist/templates/demo-store/dist/client/build/routes/($lang)/api/countries-UD6BGYL2.js +0 -2
  282. package/dist/templates/demo-store/dist/client/build/routes/($lang)/api/countries-UD6BGYL2.js.map +0 -7
  283. package/dist/templates/demo-store/dist/client/build/routes/($lang)/api/products-KIFIWUFE.js +0 -2
  284. package/dist/templates/demo-store/dist/client/build/routes/($lang)/api/products-KIFIWUFE.js.map +0 -7
  285. package/dist/templates/demo-store/dist/client/build/routes/($lang)/cart-3AJ7UOZX.js +0 -55
  286. package/dist/templates/demo-store/dist/client/build/routes/($lang)/cart-3AJ7UOZX.js.map +0 -7
  287. package/dist/templates/demo-store/dist/client/build/routes/($lang)/collections/$collectionHandle-ORDYEBM3.js +0 -83
  288. package/dist/templates/demo-store/dist/client/build/routes/($lang)/collections/$collectionHandle-ORDYEBM3.js.map +0 -7
  289. package/dist/templates/demo-store/dist/client/build/routes/($lang)/collections/all-IXDFOKCK.js +0 -2
  290. package/dist/templates/demo-store/dist/client/build/routes/($lang)/collections/all-IXDFOKCK.js.map +0 -7
  291. package/dist/templates/demo-store/dist/client/build/routes/($lang)/collections/index-3AJFWRDR.js +0 -2
  292. package/dist/templates/demo-store/dist/client/build/routes/($lang)/collections/index-3AJFWRDR.js.map +0 -7
  293. package/dist/templates/demo-store/dist/client/build/routes/($lang)/discounts.$code-GYKQBNLQ.js +0 -2
  294. package/dist/templates/demo-store/dist/client/build/routes/($lang)/discounts.$code-GYKQBNLQ.js.map +0 -7
  295. package/dist/templates/demo-store/dist/client/build/routes/($lang)/featured-products-KNUST6DD.js +0 -2
  296. package/dist/templates/demo-store/dist/client/build/routes/($lang)/featured-products-KNUST6DD.js.map +0 -7
  297. package/dist/templates/demo-store/dist/client/build/routes/($lang)/index-4US2D5XK.js +0 -32
  298. package/dist/templates/demo-store/dist/client/build/routes/($lang)/index-4US2D5XK.js.map +0 -7
  299. package/dist/templates/demo-store/dist/client/build/routes/($lang)/journal/$journalHandle-BCHHYOJX.js +0 -2
  300. package/dist/templates/demo-store/dist/client/build/routes/($lang)/journal/$journalHandle-BCHHYOJX.js.map +0 -7
  301. package/dist/templates/demo-store/dist/client/build/routes/($lang)/journal/index-LZR4YNUM.js +0 -2
  302. package/dist/templates/demo-store/dist/client/build/routes/($lang)/journal/index-LZR4YNUM.js.map +0 -7
  303. package/dist/templates/demo-store/dist/client/build/routes/($lang)/og-image-KUOACO4J.js +0 -2
  304. package/dist/templates/demo-store/dist/client/build/routes/($lang)/og-image-KUOACO4J.js.map +0 -7
  305. package/dist/templates/demo-store/dist/client/build/routes/($lang)/pages/$pageHandle-5WR6PFRU.js +0 -2
  306. package/dist/templates/demo-store/dist/client/build/routes/($lang)/pages/$pageHandle-5WR6PFRU.js.map +0 -7
  307. package/dist/templates/demo-store/dist/client/build/routes/($lang)/policies/$policyHandle-C5ATUMN6.js +0 -2
  308. package/dist/templates/demo-store/dist/client/build/routes/($lang)/policies/$policyHandle-C5ATUMN6.js.map +0 -7
  309. package/dist/templates/demo-store/dist/client/build/routes/($lang)/policies/index-MJDYZG5P.js +0 -2
  310. package/dist/templates/demo-store/dist/client/build/routes/($lang)/policies/index-MJDYZG5P.js.map +0 -7
  311. package/dist/templates/demo-store/dist/client/build/routes/($lang)/products/$productHandle-IB2WTXB6.js +0 -68
  312. package/dist/templates/demo-store/dist/client/build/routes/($lang)/products/$productHandle-IB2WTXB6.js.map +0 -7
  313. package/dist/templates/demo-store/dist/client/build/routes/($lang)/products/index-266HKDAN.js +0 -24
  314. package/dist/templates/demo-store/dist/client/build/routes/($lang)/products/index-266HKDAN.js.map +0 -7
  315. package/dist/templates/demo-store/dist/client/build/routes/($lang)/search-CH57YG7S.js +0 -54
  316. package/dist/templates/demo-store/dist/client/build/routes/($lang)/search-CH57YG7S.js.map +0 -7
  317. package/dist/templates/demo-store/dist/client/build/routes/graphiql-ZHVT5SA7.js +0 -2
  318. package/dist/templates/demo-store/dist/client/build/routes/graphiql-ZHVT5SA7.js.map +0 -7
  319. package/dist/templates/demo-store/dist/worker/_assets/IBMPlexSerif-Text-YFMZNZW6.woff2 +0 -0
  320. package/dist/templates/demo-store/dist/worker/_assets/IBMPlexSerif-TextItalic-CS6L5H7S.woff2 +0 -0
  321. package/dist/templates/demo-store/dist/worker/index.js +0 -1385
  322. package/dist/templates/demo-store/dist/worker/index.js.map +0 -7
  323. package/dist/templates/demo-store/package.json +0 -67
  324. package/dist/templates/demo-store/playwright.config.ts +0 -109
  325. package/dist/templates/demo-store/postcss.config.js +0 -10
  326. package/dist/templates/demo-store/public/favicon.svg +0 -28
  327. package/dist/templates/demo-store/remix.env.d.ts +0 -40
  328. package/dist/templates/demo-store/remix.init/index.js +0 -25
  329. package/dist/templates/demo-store/remix.init/package.json +0 -7
  330. package/dist/templates/demo-store/server.ts +0 -73
  331. package/dist/templates/demo-store/styles/app.css +0 -182
  332. package/dist/templates/demo-store/tailwind.config.js +0 -70
  333. package/dist/templates/demo-store/tests/cart.test.ts +0 -70
  334. package/dist/templates/demo-store/tests/seo.test.ts +0 -36
  335. package/dist/templates/demo-store/tests/utils.ts +0 -100
  336. package/dist/templates/demo-store/tsconfig.json +0 -25
  337. package/dist/templates/hello-world/.cache/content-v2/sha512/13/f6/b7f804d45a961ca1e392429e75ad80f23ba46cbba0e960c6a70f8de81f3f3763af59651474176798d1a1a4bd2a5109b1d441f6d1c8ba070b678b38378adf +0 -1
  338. package/dist/templates/hello-world/.cache/content-v2/sha512/4b/d3/aedf0c5a14c0f852936adb81a3bbd15ad1d5d9964ffe11a40d56bbdb2f2a4c7588ffa1d1ee657a3c3be4f6e6194465365f5d4213ef3b4e5086aa4bf0a5a4 +0 -1
  339. package/dist/templates/hello-world/.cache/content-v2/sha512/fa/dd/9bc10a1cb1f145eabd96bdba509178e20484197fefd8469ace9f53bf277e875751db3c4dddf229807c48cbe8db19494fe2a5aab7d2a4b7ae8bebbd67509c +0 -1
  340. package/dist/templates/hello-world/.cache/index-v5/09/f6/fe4b05c4157320b8b59b3f84116195be0437d87357d743d21acd638a4606 +0 -2
  341. package/dist/templates/hello-world/.cache/index-v5/b3/75/d3e7a4a5df68530007409daf1d2e66ab789c8b658d1819d7e5fd183f5f57 +0 -2
  342. package/dist/templates/hello-world/.cache/index-v5/d0/c4/d960260ece228d28f70e317741b3f3f3df05c53956d870235837ae2b73b4 +0 -2
  343. package/dist/templates/hello-world/.eslintignore +0 -4
  344. package/dist/templates/hello-world/.eslintrc.js +0 -6
  345. package/dist/templates/hello-world/.graphqlrc.yml +0 -1
  346. package/dist/templates/hello-world/README.md +0 -20
  347. package/dist/templates/hello-world/_env +0 -6
  348. package/dist/templates/hello-world/_gitignore +0 -8
  349. package/dist/templates/hello-world/app/components/Layout.tsx +0 -15
  350. package/dist/templates/hello-world/app/components/index.ts +0 -1
  351. package/dist/templates/hello-world/app/entry.client.tsx +0 -4
  352. package/dist/templates/hello-world/app/entry.server.tsx +0 -21
  353. package/dist/templates/hello-world/app/root.tsx +0 -212
  354. package/dist/templates/hello-world/app/routes/graphiql.tsx +0 -10
  355. package/dist/templates/hello-world/app/styles/app.css +0 -38
  356. package/dist/templates/hello-world/dist/client/build/_assets/app-NBPUE4H5.css +0 -1
  357. package/dist/templates/hello-world/dist/client/build/_assets/favicon-5FIZBM2K.svg +0 -28
  358. package/dist/templates/hello-world/dist/client/build/_shared/chunk-MEPKJ2VW.js +0 -2
  359. package/dist/templates/hello-world/dist/client/build/_shared/chunk-MEPKJ2VW.js.map +0 -7
  360. package/dist/templates/hello-world/dist/client/build/_shared/chunk-SYP5DAMV.js +0 -2
  361. package/dist/templates/hello-world/dist/client/build/_shared/chunk-SYP5DAMV.js.map +0 -7
  362. package/dist/templates/hello-world/dist/client/build/_shared/chunk-UWGFS4PS.js +0 -31
  363. package/dist/templates/hello-world/dist/client/build/_shared/chunk-UWGFS4PS.js.map +0 -7
  364. package/dist/templates/hello-world/dist/client/build/entry.client-YKLPLTIJ.js +0 -9
  365. package/dist/templates/hello-world/dist/client/build/entry.client-YKLPLTIJ.js.map +0 -7
  366. package/dist/templates/hello-world/dist/client/build/manifest-5BEA23FF.js +0 -1
  367. package/dist/templates/hello-world/dist/client/build/root-YMCCM3GG.js +0 -2
  368. package/dist/templates/hello-world/dist/client/build/root-YMCCM3GG.js.map +0 -7
  369. package/dist/templates/hello-world/dist/client/build/routes/graphiql-ZHVT5SA7.js +0 -2
  370. package/dist/templates/hello-world/dist/client/build/routes/graphiql-ZHVT5SA7.js.map +0 -7
  371. package/dist/templates/hello-world/dist/client/build/routes/index-TH4MKESG.js +0 -2
  372. package/dist/templates/hello-world/dist/client/build/routes/index-TH4MKESG.js.map +0 -7
  373. package/dist/templates/hello-world/dist/client/favicon.svg +0 -28
  374. package/dist/templates/hello-world/dist/worker/index.js +0 -172
  375. package/dist/templates/hello-world/dist/worker/index.js.map +0 -7
  376. package/dist/templates/hello-world/package.json +0 -41
  377. package/dist/templates/hello-world/public/favicon.svg +0 -28
  378. package/dist/templates/hello-world/remix.env.d.ts +0 -35
  379. package/dist/templates/hello-world/remix.init/index.js +0 -25
  380. package/dist/templates/hello-world/remix.init/package.json +0 -7
  381. package/dist/templates/hello-world/server.ts +0 -129
  382. package/dist/templates/hello-world/tsconfig.json +0 -25
  383. package/dist/tmp-create-app.js +0 -33
@@ -0,0 +1,20 @@
1
+ import * as _oclif_core_lib_interfaces_parser_js from '@oclif/core/lib/interfaces/parser.js';
2
+ import Command from '@shopify/cli-kit/node/base-command';
3
+
4
+ declare class Build extends Command {
5
+ static description: string;
6
+ static flags: {
7
+ path: _oclif_core_lib_interfaces_parser_js.OptionFlag<string | undefined>;
8
+ sourcemap: _oclif_core_lib_interfaces_parser_js.BooleanFlag<boolean>;
9
+ "disable-route-warning": _oclif_core_lib_interfaces_parser_js.BooleanFlag<boolean>;
10
+ };
11
+ run(): Promise<void>;
12
+ }
13
+ declare function runBuild({ path: appPath, sourcemap, disableRouteWarning, }: {
14
+ path?: string;
15
+ sourcemap?: boolean;
16
+ disableRouteWarning?: boolean;
17
+ }): Promise<void>;
18
+ declare function copyPublicFiles(publicPath: string, buildPathClient: string): Promise<void>;
19
+
20
+ export { copyPublicFiles, Build as default, runBuild };
@@ -1,55 +1,49 @@
1
1
  import path from 'path';
2
- import { output } from '@shopify/cli-kit';
2
+ import { file, output } from '@shopify/cli-kit';
3
3
  import colors from '@shopify/cli-kit/node/colors';
4
4
  import { getProjectPaths, getRemixConfig } from '../../utils/config.js';
5
- import { commonFlags } from '../../utils/flags.js';
5
+ import { commonFlags, flagsToCamelObject } from '../../utils/flags.js';
6
6
  import Command from '@shopify/cli-kit/node/base-command';
7
7
  import Flags from '@oclif/core/lib/flags.js';
8
+ import { checkLockfileStatus } from '../../utils/check-lockfile.js';
9
+ import { findMissingRoutes } from '../../utils/missing-routes.js';
10
+ import { getPackageManager } from '@shopify/cli-kit/node/node-package-manager';
8
11
 
9
12
  const LOG_WORKER_BUILT = "\u{1F4E6} Worker built";
10
13
  class Build extends Command {
11
- static description = "Builds a Hydrogen storefront for production";
14
+ static description = "Builds a Hydrogen storefront for production.";
12
15
  static flags = {
13
- ...commonFlags,
16
+ path: commonFlags.path,
14
17
  sourcemap: Flags.boolean({
15
- env: "SHOPIFY_HYDROGEN_FLAG_SOURCEMAP"
16
- }),
17
- entry: Flags.string({
18
+ description: "Generate sourcemaps for the build.",
18
19
  env: "SHOPIFY_HYDROGEN_FLAG_SOURCEMAP",
19
- required: true
20
+ default: true
20
21
  }),
21
- minify: Flags.boolean({
22
- description: "Minify the build output",
23
- env: "SHOPIFY_HYDROGEN_FLAG_MINIFY"
22
+ ["disable-route-warning"]: Flags.boolean({
23
+ description: "Disable warning about missing standard routes.",
24
+ env: "SHOPIFY_HYDROGEN_FLAG_DISABLE_ROUTE_WARNING"
24
25
  })
25
26
  };
26
27
  async run() {
27
28
  const { flags } = await this.parse(Build);
28
29
  const directory = flags.path ? path.resolve(flags.path) : process.cwd();
29
- await runBuild({ ...flags, path: directory });
30
+ await runBuild({ ...flagsToCamelObject(flags), path: directory });
30
31
  }
31
32
  }
32
33
  async function runBuild({
33
- entry,
34
+ path: appPath,
34
35
  sourcemap = true,
35
- path: appPath
36
+ disableRouteWarning = false
36
37
  }) {
37
38
  if (!process.env.NODE_ENV) {
38
39
  process.env.NODE_ENV = "production";
39
40
  }
40
- const {
41
- root,
42
- entryFile,
43
- buildPath,
44
- buildPathClient,
45
- buildPathWorkerFile,
46
- publicPath
47
- } = getProjectPaths(appPath, entry);
41
+ const { root, buildPath, buildPathClient, buildPathWorkerFile, publicPath } = getProjectPaths(appPath);
42
+ await checkLockfileStatus(root);
48
43
  console.time(LOG_WORKER_BUILT);
49
- const { default: fsExtra } = await import('fs-extra');
50
44
  const [remixConfig] = await Promise.all([
51
- getRemixConfig(root, entryFile, publicPath),
52
- fsExtra.rm(buildPath, { force: true, recursive: true })
45
+ getRemixConfig(root),
46
+ file.rmdir(buildPath, { force: true })
53
47
  ]);
54
48
  output.info(`
55
49
  \u{1F3D7}\uFE0F Building in ${process.env.NODE_ENV} mode...`);
@@ -68,8 +62,7 @@ async function runBuild({
68
62
  ]);
69
63
  if (process.env.NODE_ENV !== "development") {
70
64
  console.timeEnd(LOG_WORKER_BUILT);
71
- const { size } = await fsExtra.stat(buildPathWorkerFile);
72
- const sizeMB = size / (1024 * 1024);
65
+ const sizeMB = await file.size(buildPathWorkerFile) / (1024 * 1024);
73
66
  output.info(
74
67
  output.content` ${colors.dim(
75
68
  path.relative(root, buildPathWorkerFile)
@@ -77,18 +70,28 @@ async function runBuild({
77
70
  );
78
71
  if (sizeMB >= 1) {
79
72
  output.warn(
80
- "\u{1F6A8} Worker bundle exceeds 1 MB! This can delay your worker response.\n"
73
+ `\u{1F6A8} Worker bundle exceeds 1 MB! This can delay your worker response.${remixConfig.serverMinify ? "" : " Minify your bundle by adding `serverMinify: true` to remix.config.js."}
74
+ `
75
+ );
76
+ }
77
+ }
78
+ if (!disableRouteWarning) {
79
+ const missingRoutes = findMissingRoutes(remixConfig);
80
+ if (missingRoutes.length) {
81
+ const packageManager = await getPackageManager(root);
82
+ const exec = packageManager === "npm" ? "npx" : packageManager;
83
+ output.warn(
84
+ `Heads up: Shopify stores have a number of standard routes that aren\u2019t set up yet.
85
+ Some functionality and backlinks might not work as expected until these are created or redirects are set up.
86
+ This build is missing ${missingRoutes.length} route${missingRoutes.length > 1 ? "s" : ""}. For more details, run \`${exec} shopify hydrogen check routes\`.
87
+ `
81
88
  );
82
89
  }
83
90
  }
84
91
  process.exit(0);
85
92
  }
86
93
  async function copyPublicFiles(publicPath, buildPathClient) {
87
- const { default: fsExtra } = await import('fs-extra');
88
- return fsExtra.copy(publicPath, buildPathClient, {
89
- recursive: true,
90
- overwrite: true
91
- });
94
+ return file.copy(publicPath, buildPathClient);
92
95
  }
93
96
 
94
97
  export { copyPublicFiles, Build as default, runBuild };
@@ -0,0 +1,18 @@
1
+ import * as _oclif_core_lib_interfaces_parser_js from '@oclif/core/lib/interfaces/parser.js';
2
+ import Command from '@shopify/cli-kit/node/base-command';
3
+
4
+ declare class GenerateRoute extends Command {
5
+ static description: string;
6
+ static flags: {
7
+ path: _oclif_core_lib_interfaces_parser_js.OptionFlag<string | undefined>;
8
+ };
9
+ static args: {
10
+ name: string;
11
+ description: string;
12
+ required: boolean;
13
+ options: string[];
14
+ }[];
15
+ run(): Promise<void>;
16
+ }
17
+
18
+ export { GenerateRoute as default };
@@ -0,0 +1,35 @@
1
+ import Command from '@shopify/cli-kit/node/base-command';
2
+ import { path } from '@shopify/cli-kit';
3
+ import { commonFlags } from '../../utils/flags.js';
4
+ import { getRemixConfig } from '../../utils/config.js';
5
+ import { logMissingRoutes, findMissingRoutes } from '../../utils/missing-routes.js';
6
+
7
+ class GenerateRoute extends Command {
8
+ static description = "Returns diagnostic information about a Hydrogen storefront.";
9
+ static flags = {
10
+ path: commonFlags.path
11
+ };
12
+ static args = [
13
+ {
14
+ name: "resource",
15
+ description: `The resource to check. Currently only 'routes' is supported.`,
16
+ required: true,
17
+ options: ["routes"]
18
+ }
19
+ ];
20
+ async run() {
21
+ const { flags, args } = await this.parse(GenerateRoute);
22
+ const directory = flags.path ? path.resolve(flags.path) : process.cwd();
23
+ if (args.resource === "routes") {
24
+ await runCheckRoutes({ directory });
25
+ } else {
26
+ throw new Error("Invalid command argument.");
27
+ }
28
+ }
29
+ }
30
+ async function runCheckRoutes({ directory }) {
31
+ const remixConfig = await getRemixConfig(directory);
32
+ logMissingRoutes(findMissingRoutes(remixConfig));
33
+ }
34
+
35
+ export { GenerateRoute as default };
@@ -0,0 +1,14 @@
1
+ import * as _oclif_core_lib_interfaces_parser_js from '@oclif/core/lib/interfaces/parser.js';
2
+ import Command from '@shopify/cli-kit/node/base-command';
3
+
4
+ declare class Dev extends Command {
5
+ static description: string;
6
+ static flags: {
7
+ path: _oclif_core_lib_interfaces_parser_js.OptionFlag<string | undefined>;
8
+ port: _oclif_core_lib_interfaces_parser_js.OptionFlag<number>;
9
+ "disable-virtual-routes": _oclif_core_lib_interfaces_parser_js.BooleanFlag<boolean>;
10
+ };
11
+ run(): Promise<void>;
12
+ }
13
+
14
+ export { Dev as default };
@@ -4,99 +4,99 @@ import { output } from '@shopify/cli-kit';
4
4
  import { copyPublicFiles } from './build.js';
5
5
  import { getProjectPaths, getRemixConfig } from '../../utils/config.js';
6
6
  import { muteDevLogs } from '../../utils/log.js';
7
- import { commonFlags } from '../../utils/flags.js';
7
+ import { commonFlags, flagsToCamelObject } from '../../utils/flags.js';
8
8
  import Command from '@shopify/cli-kit/node/base-command';
9
9
  import Flags from '@oclif/core/lib/flags.js';
10
10
  import { startMiniOxygen } from '../../utils/mini-oxygen.js';
11
+ import { checkHydrogenVersion } from '../../utils/check-version.js';
12
+ import { addVirtualRoutes } from '../../utils/virtual-routes.js';
11
13
 
12
14
  const LOG_INITIAL_BUILD = "\n\u{1F3C1} Initial build";
13
15
  const LOG_REBUILDING = "\u{1F9F1} Rebuilding...";
14
16
  const LOG_REBUILT = "\u{1F680} Rebuilt";
15
17
  class Dev extends Command {
16
- static description = "Runs Hydrogen storefront in a MiniOxygen worker in development";
18
+ static description = "Runs Hydrogen storefront in an Oxygen worker for development.";
17
19
  static flags = {
18
- ...commonFlags,
19
- port: Flags.integer({
20
- description: "Port to run the preview server on",
21
- env: "SHOPIFY_HYDROGEN_FLAG_PORT",
22
- default: 3e3
23
- }),
24
- entry: Flags.string({
25
- env: "SHOPIFY_HYDROGEN_FLAG_ENTRY",
26
- required: true
20
+ path: commonFlags.path,
21
+ port: commonFlags.port,
22
+ ["disable-virtual-routes"]: Flags.boolean({
23
+ description: "Disable rendering fallback routes when a route file doesn't exist",
24
+ env: "SHOPIFY_HYDROGEN_FLAG_DISABLE_VIRTUAL_ROUTES",
25
+ default: false
27
26
  })
28
27
  };
29
28
  async run() {
30
29
  const { flags } = await this.parse(Dev);
31
30
  const directory = flags.path ? path.resolve(flags.path) : process.cwd();
32
- await runDev({ ...flags, path: directory });
31
+ await runDev({ ...flagsToCamelObject(flags), path: directory });
33
32
  }
34
33
  }
35
34
  async function runDev({
36
- entry,
37
35
  port,
38
- path: appPath
36
+ path: appPath,
37
+ disableVirtualRoutes
39
38
  }) {
40
39
  if (!process.env.NODE_ENV)
41
40
  process.env.NODE_ENV = "development";
42
41
  muteDevLogs();
43
- await compileAndWatch(getProjectPaths(appPath, entry), { port });
44
- }
45
- async function compileAndWatch(projectPaths, options = {}, isInit = true) {
46
- isInit && console.time(LOG_INITIAL_BUILD);
47
- const { root, entryFile, publicPath, buildPathClient, buildPathWorkerFile } = projectPaths;
48
- const shouldReloadRemixApp = (file) => file.startsWith(path.resolve(root, "remix.config."));
49
- const remixConfig = await getRemixConfig(
50
- root,
51
- entryFile,
52
- publicPath,
53
- options.cacheBust
54
- );
42
+ console.time(LOG_INITIAL_BUILD);
43
+ const { root, publicPath, buildPathClient, buildPathWorkerFile } = getProjectPaths(appPath);
44
+ const checkingHydrogenVersion = checkHydrogenVersion(root);
55
45
  const copyingFiles = copyPublicFiles(publicPath, buildPathClient);
46
+ const reloadConfig = async () => {
47
+ const config = await getRemixConfig(root);
48
+ return disableVirtualRoutes ? config : addVirtualRoutes(config);
49
+ };
50
+ const getFilePaths = (file) => {
51
+ const fileRelative = path.relative(root, file);
52
+ return [fileRelative, path.resolve(root, fileRelative)];
53
+ };
56
54
  const { watch } = await import('@remix-run/dev/dist/compiler/watch.js');
57
- const stopCompileWatcher = await watch(remixConfig, {
55
+ await watch(await reloadConfig(), {
56
+ reloadConfig,
58
57
  mode: process.env.NODE_ENV,
59
58
  async onInitialBuild() {
60
59
  await copyingFiles;
61
- if (isInit) {
62
- console.timeEnd(LOG_INITIAL_BUILD);
63
- await startMiniOxygen({
64
- root,
65
- port: options.port,
66
- watch: true,
67
- buildPathWorkerFile,
68
- buildPathClient
69
- });
70
- }
60
+ console.timeEnd(LOG_INITIAL_BUILD);
61
+ await startMiniOxygen({
62
+ root,
63
+ port,
64
+ watch: true,
65
+ buildPathWorkerFile,
66
+ buildPathClient
67
+ });
68
+ const showUpgrade = await checkingHydrogenVersion;
69
+ if (showUpgrade)
70
+ showUpgrade();
71
71
  },
72
72
  async onFileCreated(file) {
73
+ const [relative, absolute] = getFilePaths(file);
73
74
  output.info(`
74
- \u{1F4C4} File created: ${path.relative(root, file)}`);
75
- if (file.startsWith(publicPath)) {
76
- await copyPublicFiles(file, file.replace(publicPath, buildPathClient));
77
- }
78
- if (shouldReloadRemixApp(file)) {
79
- await reloadRemixApp(file);
75
+ \u{1F4C4} File created: ${relative}`);
76
+ if (absolute.startsWith(publicPath)) {
77
+ await copyPublicFiles(
78
+ absolute,
79
+ absolute.replace(publicPath, buildPathClient)
80
+ );
80
81
  }
81
82
  },
82
83
  async onFileChanged(file) {
84
+ const [relative, absolute] = getFilePaths(file);
83
85
  output.info(`
84
- \u{1F4C4} File changed: ${path.relative(root, file)}`);
85
- if (file.startsWith(publicPath)) {
86
- await copyPublicFiles(file, file.replace(publicPath, buildPathClient));
87
- }
88
- if (shouldReloadRemixApp(file)) {
89
- await reloadRemixApp(file);
86
+ \u{1F4C4} File changed: ${relative}`);
87
+ if (absolute.startsWith(publicPath)) {
88
+ await copyPublicFiles(
89
+ absolute,
90
+ absolute.replace(publicPath, buildPathClient)
91
+ );
90
92
  }
91
93
  },
92
94
  async onFileDeleted(file) {
95
+ const [relative, absolute] = getFilePaths(file);
93
96
  output.info(`
94
- \u{1F4C4} File deleted: ${path.relative(root, file)}`);
95
- if (file.startsWith(publicPath)) {
96
- await fs.unlink(file.replace(publicPath, buildPathClient));
97
- }
98
- if (shouldReloadRemixApp(file)) {
99
- await reloadRemixApp(file);
97
+ \u{1F4C4} File deleted: ${relative}`);
98
+ if (absolute.startsWith(publicPath)) {
99
+ await fs.unlink(absolute.replace(publicPath, buildPathClient));
100
100
  }
101
101
  },
102
102
  onRebuildStart() {
@@ -107,10 +107,6 @@ async function compileAndWatch(projectPaths, options = {}, isInit = true) {
107
107
  console.timeEnd(LOG_REBUILT);
108
108
  }
109
109
  });
110
- async function reloadRemixApp(cacheBust) {
111
- await stopCompileWatcher();
112
- compileAndWatch(projectPaths, { ...options, cacheBust }, false);
113
- }
114
110
  }
115
111
 
116
- export { Dev as default, runDev };
112
+ export { Dev as default };
@@ -0,0 +1,34 @@
1
+ import * as _oclif_core_lib_interfaces_parser_js from '@oclif/core/lib/interfaces/parser.js';
2
+ import Command from '@shopify/cli-kit/node/base-command';
3
+
4
+ declare const GENERATOR_TEMPLATES_DIR = "generator-templates";
5
+ interface Result {
6
+ operation: 'generated' | 'skipped' | 'overwritten';
7
+ }
8
+ declare class GenerateRoute extends Command {
9
+ static description: string;
10
+ static flags: {
11
+ adapter: _oclif_core_lib_interfaces_parser_js.OptionFlag<string | undefined>;
12
+ typescript: _oclif_core_lib_interfaces_parser_js.BooleanFlag<boolean>;
13
+ force: _oclif_core_lib_interfaces_parser_js.BooleanFlag<boolean>;
14
+ path: _oclif_core_lib_interfaces_parser_js.OptionFlag<string | undefined>;
15
+ };
16
+ static hidden: true;
17
+ static args: {
18
+ name: string;
19
+ description: string;
20
+ required: boolean;
21
+ options: string[];
22
+ env: string;
23
+ }[];
24
+ run(): Promise<void>;
25
+ }
26
+ declare function runGenerate(route: string, { directory, typescript, force, adapter, templatesRoot, }: {
27
+ directory: string;
28
+ typescript?: boolean;
29
+ force?: boolean;
30
+ adapter?: string;
31
+ templatesRoot?: string;
32
+ }): Promise<Result>;
33
+
34
+ export { GENERATOR_TEMPLATES_DIR, GenerateRoute as default, runGenerate };
@@ -0,0 +1,165 @@
1
+ import Command from '@shopify/cli-kit/node/base-command';
2
+ import { path, file, ui } from '@shopify/cli-kit';
3
+ import { AbortError } from '@shopify/cli-kit/node/error';
4
+ import { renderSuccess } from '@shopify/cli-kit/node/ui';
5
+ import { commonFlags } from '../../../utils/flags.js';
6
+ import Flags from '@oclif/core/lib/flags.js';
7
+ import { transpileFile, format, resolveFormatConfig } from '../../../utils/transpile-ts.js';
8
+
9
+ const GENERATOR_TEMPLATES_DIR = "generator-templates";
10
+ const ROUTE_MAP = {
11
+ home: "/index",
12
+ page: "/pages/$pageHandle",
13
+ cart: "/cart",
14
+ products: "/products/$productHandle",
15
+ collections: "/collections/$collectionHandle",
16
+ policies: ["/policies/index", "/policies/$policyHandle"],
17
+ robots: "/[robots.txt]",
18
+ sitemap: "/[sitemap.xml]",
19
+ account: ["/account/login", "/account/register"]
20
+ };
21
+ const ROUTES = [...Object.keys(ROUTE_MAP), "all"];
22
+ class GenerateRoute extends Command {
23
+ static description = "Generates a standard Shopify route.";
24
+ static flags = {
25
+ adapter: Flags.string({
26
+ description: "Remix adapter used in the route. The default is `@shopify/remix-oxygen`.",
27
+ env: "SHOPIFY_HYDROGEN_FLAG_ADAPTER"
28
+ }),
29
+ typescript: Flags.boolean({
30
+ description: "Generate TypeScript files",
31
+ env: "SHOPIFY_HYDROGEN_FLAG_TYPESCRIPT"
32
+ }),
33
+ force: commonFlags.force,
34
+ path: commonFlags.path
35
+ };
36
+ static hidden;
37
+ static args = [
38
+ {
39
+ name: "route",
40
+ description: `The route to generate. One of ${ROUTES.join()}.`,
41
+ required: true,
42
+ options: ROUTES,
43
+ env: "SHOPIFY_HYDROGEN_ARG_ROUTE"
44
+ }
45
+ ];
46
+ async run() {
47
+ const result = /* @__PURE__ */ new Map();
48
+ const { flags, args } = await this.parse(GenerateRoute);
49
+ const directory = flags.path ? path.resolve(flags.path) : process.cwd();
50
+ const { route } = args;
51
+ const routePath = route === "all" ? Object.values(ROUTE_MAP).flat() : ROUTE_MAP[route];
52
+ if (!routePath) {
53
+ throw new AbortError(
54
+ `No route found for ${route}. Try one of ${ROUTES.join()}.`
55
+ );
56
+ }
57
+ const isTypescript = flags.typescript || await file.exists(path.join(directory, "tsconfig.json"));
58
+ const routesArray = Array.isArray(routePath) ? routePath : [routePath];
59
+ try {
60
+ for (const item of routesArray) {
61
+ result.set(
62
+ item,
63
+ await runGenerate(item, {
64
+ directory,
65
+ typescript: isTypescript,
66
+ force: flags.force,
67
+ adapter: flags.adapter
68
+ })
69
+ );
70
+ }
71
+ } catch (err) {
72
+ throw new AbortError(err.message);
73
+ }
74
+ const extension = isTypescript ? ".tsx" : ".jsx";
75
+ const success = Array.from(result.values()).filter(
76
+ (result2) => result2.operation !== "skipped"
77
+ );
78
+ renderSuccess({
79
+ headline: `${success.length} of ${result.size} route${result.size > 1 ? "s" : ""} generated`,
80
+ body: {
81
+ list: {
82
+ items: Array.from(result.entries()).map(
83
+ ([path2, { operation }]) => `[${operation}] app/routes${path2}${extension}`
84
+ )
85
+ }
86
+ }
87
+ });
88
+ }
89
+ }
90
+ async function runGenerate(route, {
91
+ directory,
92
+ typescript,
93
+ force,
94
+ adapter,
95
+ templatesRoot = new URL("../../../", import.meta.url).pathname
96
+ }) {
97
+ let operation;
98
+ const extension = typescript ? ".tsx" : ".jsx";
99
+ const templatePath = path.join(
100
+ templatesRoot,
101
+ GENERATOR_TEMPLATES_DIR,
102
+ "routes",
103
+ `${route}.tsx`
104
+ );
105
+ const destinationPath = path.join(
106
+ directory,
107
+ "app",
108
+ "routes",
109
+ `${route}${extension}`
110
+ );
111
+ const relativeDestinationPath = path.relative(directory, destinationPath);
112
+ if (!force && await file.exists(destinationPath)) {
113
+ const options = [
114
+ { name: "No", value: "skip" },
115
+ { name: `Yes`, value: "overwrite" }
116
+ ];
117
+ const choice = await ui.prompt([
118
+ {
119
+ type: "select",
120
+ name: "value",
121
+ message: `The file ${path.relativize(
122
+ relativeDestinationPath
123
+ )} already exists. Do you want to overwrite it?`,
124
+ choices: options
125
+ }
126
+ ]);
127
+ operation = choice.value === "skip" ? "skipped" : "overwritten";
128
+ if (operation === "skipped") {
129
+ return { operation };
130
+ }
131
+ } else {
132
+ operation = "generated";
133
+ }
134
+ let templateContent = await file.read(templatePath);
135
+ if (!typescript) {
136
+ const jsConfigPath = path.join(directory, "jsconfig.json");
137
+ const config = await file.exists(jsConfigPath) ? JSON.parse(
138
+ (await file.read(jsConfigPath, { encoding: "utf8" })).replace(
139
+ /^\s*\/\/.*$/gm,
140
+ ""
141
+ )
142
+ ) : void 0;
143
+ templateContent = transpileFile(templateContent, config?.compilerOptions);
144
+ }
145
+ if (adapter) {
146
+ templateContent = templateContent.replace(
147
+ /@shopify\/remix-oxygen/g,
148
+ adapter
149
+ );
150
+ }
151
+ templateContent = format(
152
+ templateContent,
153
+ await resolveFormatConfig(destinationPath),
154
+ destinationPath
155
+ );
156
+ if (!await file.exists(path.dirname(destinationPath))) {
157
+ await file.mkdir(path.dirname(destinationPath));
158
+ }
159
+ await file.write(destinationPath, templateContent);
160
+ return {
161
+ operation
162
+ };
163
+ }
164
+
165
+ export { GENERATOR_TEMPLATES_DIR, GenerateRoute as default, runGenerate };