@shopify/hydrogen 2026.4.5 → 2026.10.0-preview.2

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 (764) hide show
  1. package/README.md +73 -13
  2. package/bin/hydrogen.mjs +7 -0
  3. package/dist/cli/index.mjs +647 -0
  4. package/dist/client/client.d.mts +34 -0
  5. package/dist/client/client.mjs +206 -0
  6. package/dist/client/client.mjs.map +1 -0
  7. package/dist/client/errors.d.mts +48 -0
  8. package/dist/client/errors.mjs +52 -0
  9. package/dist/client/errors.mjs.map +1 -0
  10. package/dist/client/index.d.mts +4 -0
  11. package/dist/client/types.d.mts +147 -0
  12. package/dist/core/analytics/cart-tracker.d.mts +8 -0
  13. package/dist/core/analytics/cart-tracker.mjs +144 -0
  14. package/dist/core/analytics/cart-tracker.mjs.map +1 -0
  15. package/dist/core/analytics/events.d.mts +15 -0
  16. package/dist/core/analytics/events.mjs +15 -0
  17. package/dist/core/analytics/events.mjs.map +1 -0
  18. package/dist/core/analytics/index.d.mts +3 -0
  19. package/dist/core/analytics/types.d.mts +143 -0
  20. package/dist/core/analytics/utils/flatten-connection.d.mts +19 -0
  21. package/dist/core/analytics/utils/flatten-connection.mjs +25 -0
  22. package/dist/core/analytics/utils/flatten-connection.mjs.map +1 -0
  23. package/dist/core/cache/cache-status.mjs +17 -0
  24. package/dist/core/cache/cache-status.mjs.map +1 -0
  25. package/dist/core/cache/fetch-with-cache.d.mts +43 -0
  26. package/dist/core/cache/fetch-with-cache.mjs +188 -0
  27. package/dist/core/cache/fetch-with-cache.mjs.map +1 -0
  28. package/dist/core/cache/key.d.mts +6 -0
  29. package/dist/core/cache/key.mjs +27 -0
  30. package/dist/core/cache/key.mjs.map +1 -0
  31. package/dist/core/cache/run-with-cache.d.mts +36 -0
  32. package/dist/core/cache/run-with-cache.mjs +114 -0
  33. package/dist/core/cache/run-with-cache.mjs.map +1 -0
  34. package/dist/core/cache/store.d.mts +19 -0
  35. package/dist/core/cache/store.mjs +62 -0
  36. package/dist/core/cache/store.mjs.map +1 -0
  37. package/dist/core/cache/strategies.d.mts +39 -0
  38. package/dist/core/cache/strategies.mjs +70 -0
  39. package/dist/core/cache/strategies.mjs.map +1 -0
  40. package/dist/core/cart/actions.d.mts +50 -0
  41. package/dist/core/cart/actions.mjs +240 -0
  42. package/dist/core/cart/actions.mjs.map +1 -0
  43. package/dist/core/cart/attach-quantity-input.d.mts +5 -0
  44. package/dist/core/cart/attach-quantity-input.mjs +17 -0
  45. package/dist/core/cart/attach-quantity-input.mjs.map +1 -0
  46. package/dist/core/cart/buyer-identity-sync.d.mts +23 -0
  47. package/dist/core/cart/buyer-identity-sync.mjs +9 -0
  48. package/dist/core/cart/buyer-identity-sync.mjs.map +1 -0
  49. package/dist/core/cart/cart.d.mts +37 -0
  50. package/dist/core/cart/cart.mjs +1707 -0
  51. package/dist/core/cart/cart.mjs.map +1 -0
  52. package/dist/core/cart/cookie.d.mts +5 -0
  53. package/dist/core/cart/cookie.mjs +28 -0
  54. package/dist/core/cart/cookie.mjs.map +1 -0
  55. package/dist/core/cart/form.d.mts +130 -0
  56. package/dist/core/cart/form.mjs +75 -0
  57. package/dist/core/cart/form.mjs.map +1 -0
  58. package/dist/core/cart/get-cart.d.mts +25 -0
  59. package/dist/core/cart/get-cart.mjs +32 -0
  60. package/dist/core/cart/get-cart.mjs.map +1 -0
  61. package/dist/core/cart/index.d.mts +10 -0
  62. package/dist/core/cart/quantity.d.mts +10 -0
  63. package/dist/core/cart/quantity.mjs +14 -0
  64. package/dist/core/cart/quantity.mjs.map +1 -0
  65. package/dist/core/cart/queries.d.mts +4296 -0
  66. package/dist/core/cart/queries.mjs +70 -0
  67. package/dist/core/cart/queries.mjs.map +1 -0
  68. package/dist/core/cart/server-handlers.d.mts +82 -0
  69. package/dist/core/cart/server-handlers.mjs +322 -0
  70. package/dist/core/cart/server-handlers.mjs.map +1 -0
  71. package/dist/core/cart/state.d.mts +137 -0
  72. package/dist/core/cart/state.mjs +76 -0
  73. package/dist/core/cart/state.mjs.map +1 -0
  74. package/dist/core/cart/sync-quantity-inputs.mjs +16 -0
  75. package/dist/core/cart/sync-quantity-inputs.mjs.map +1 -0
  76. package/dist/core/collection/collection.d.mts +134 -0
  77. package/dist/core/collection/collection.mjs +170 -0
  78. package/dist/core/collection/collection.mjs.map +1 -0
  79. package/dist/core/collection/index.d.mts +6 -0
  80. package/dist/core/collection/reconciler.d.mts +32 -0
  81. package/dist/core/collection/reconciler.mjs +89 -0
  82. package/dist/core/collection/reconciler.mjs.map +1 -0
  83. package/dist/core/collection/state.d.mts +66 -0
  84. package/dist/core/collection/state.mjs +20 -0
  85. package/dist/core/collection/state.mjs.map +1 -0
  86. package/dist/core/collection/url.d.mts +71 -0
  87. package/dist/core/collection/url.mjs +376 -0
  88. package/dist/core/collection/url.mjs.map +1 -0
  89. package/dist/core/constants.d.mts +5 -0
  90. package/dist/core/constants.mjs +8 -0
  91. package/dist/core/constants.mjs.map +1 -0
  92. package/dist/core/headers.mjs +43 -0
  93. package/dist/core/headers.mjs.map +1 -0
  94. package/dist/core/index.d.mts +56 -0
  95. package/dist/core/index.mjs +45 -0
  96. package/dist/core/logging/logging.d.mts +21 -0
  97. package/dist/core/logging/logging.mjs +99 -0
  98. package/dist/core/logging/logging.mjs.map +1 -0
  99. package/dist/core/logging/types.d.mts +40 -0
  100. package/dist/core/logging/types.mjs +18 -0
  101. package/dist/core/logging/types.mjs.map +1 -0
  102. package/dist/core/money/cache.mjs +25 -0
  103. package/dist/core/money/cache.mjs.map +1 -0
  104. package/dist/core/money/format.d.mts +15 -0
  105. package/dist/core/money/format.mjs +243 -0
  106. package/dist/core/money/format.mjs.map +1 -0
  107. package/dist/core/money/types.d.mts +47 -0
  108. package/dist/core/observable.mjs +46 -0
  109. package/dist/core/observable.mjs.map +1 -0
  110. package/dist/core/predictive-search/constants.d.mts +5 -0
  111. package/dist/core/predictive-search/constants.mjs +6 -0
  112. package/dist/core/predictive-search/constants.mjs.map +1 -0
  113. package/dist/core/predictive-search/form.d.mts +31 -0
  114. package/dist/core/predictive-search/form.mjs +31 -0
  115. package/dist/core/predictive-search/form.mjs.map +1 -0
  116. package/dist/core/predictive-search/index.d.mts +6 -0
  117. package/dist/core/predictive-search/queries.d.mts +118 -0
  118. package/dist/core/predictive-search/queries.mjs +81 -0
  119. package/dist/core/predictive-search/queries.mjs.map +1 -0
  120. package/dist/core/predictive-search/search.d.mts +32 -0
  121. package/dist/core/predictive-search/search.mjs +74 -0
  122. package/dist/core/predictive-search/search.mjs.map +1 -0
  123. package/dist/core/predictive-search/server-handlers.d.mts +36 -0
  124. package/dist/core/predictive-search/server-handlers.mjs +113 -0
  125. package/dist/core/predictive-search/server-handlers.mjs.map +1 -0
  126. package/dist/core/predictive-search/store.d.mts +44 -0
  127. package/dist/core/predictive-search/store.mjs +224 -0
  128. package/dist/core/predictive-search/store.mjs.map +1 -0
  129. package/dist/core/predictive-search/url.d.mts +41 -0
  130. package/dist/core/predictive-search/url.mjs +71 -0
  131. package/dist/core/predictive-search/url.mjs.map +1 -0
  132. package/dist/core/product/accept-variant-id.mjs +98 -0
  133. package/dist/core/product/accept-variant-id.mjs.map +1 -0
  134. package/dist/core/product/form.d.mts +63 -0
  135. package/dist/core/product/form.mjs +44 -0
  136. package/dist/core/product/form.mjs.map +1 -0
  137. package/dist/core/product/index.d.mts +5 -0
  138. package/dist/core/product/options.d.mts +43 -0
  139. package/dist/core/product/options.mjs +296 -0
  140. package/dist/core/product/options.mjs.map +1 -0
  141. package/dist/core/product/product-form.d.mts +72 -0
  142. package/dist/core/product/product-form.mjs +158 -0
  143. package/dist/core/product/product-form.mjs.map +1 -0
  144. package/dist/core/product/state.d.mts +68 -0
  145. package/dist/core/product/url.d.mts +47 -0
  146. package/dist/core/product/url.mjs +69 -0
  147. package/dist/core/product/url.mjs.map +1 -0
  148. package/dist/core/request-context.d.mts +75 -0
  149. package/dist/core/request-context.mjs +141 -0
  150. package/dist/core/request-context.mjs.map +1 -0
  151. package/dist/core/request-routing/handle-shopify-redirects.d.mts +17 -0
  152. package/dist/core/request-routing/handle-shopify-redirects.mjs +31 -0
  153. package/dist/core/request-routing/handle-shopify-redirects.mjs.map +1 -0
  154. package/dist/core/request-routing/handle-shopify-routes.d.mts +14 -0
  155. package/dist/core/request-routing/handle-shopify-routes.mjs +42 -0
  156. package/dist/core/request-routing/handle-shopify-routes.mjs.map +1 -0
  157. package/dist/core/request-routing/interceptors/admin-redirect.mjs +12 -0
  158. package/dist/core/request-routing/interceptors/admin-redirect.mjs.map +1 -0
  159. package/dist/core/request-routing/interceptors/ajax-api.mjs +16 -0
  160. package/dist/core/request-routing/interceptors/ajax-api.mjs.map +1 -0
  161. package/dist/core/request-routing/interceptors/api-proxy.mjs +20 -0
  162. package/dist/core/request-routing/interceptors/api-proxy.mjs.map +1 -0
  163. package/dist/core/request-routing/interceptors/checkout.mjs +58 -0
  164. package/dist/core/request-routing/interceptors/checkout.mjs.map +1 -0
  165. package/dist/core/request-routing/interceptors/mcp-proxy.mjs +23 -0
  166. package/dist/core/request-routing/interceptors/mcp-proxy.mjs.map +1 -0
  167. package/dist/core/request-routing/interceptors/proxy.mjs +73 -0
  168. package/dist/core/request-routing/interceptors/proxy.mjs.map +1 -0
  169. package/dist/core/request-routing/interceptors/query-param-redirect.mjs +22 -0
  170. package/dist/core/request-routing/interceptors/query-param-redirect.mjs.map +1 -0
  171. package/dist/core/request-routing/interceptors/sfapi-proxy.mjs +27 -0
  172. package/dist/core/request-routing/interceptors/sfapi-proxy.mjs.map +1 -0
  173. package/dist/core/request-routing/interceptors/standard-routes.mjs +19 -0
  174. package/dist/core/request-routing/interceptors/standard-routes.mjs.map +1 -0
  175. package/dist/core/request-routing/interceptors/url-redirects.mjs +27 -0
  176. package/dist/core/request-routing/interceptors/url-redirects.mjs.map +1 -0
  177. package/dist/core/request-routing/interceptors/well-known.mjs +22 -0
  178. package/dist/core/request-routing/interceptors/well-known.mjs.map +1 -0
  179. package/dist/core/request-routing/registered-routes.d.mts +7 -0
  180. package/dist/core/request-routing/registered-routes.mjs +72 -0
  181. package/dist/core/request-routing/registered-routes.mjs.map +1 -0
  182. package/dist/core/request-routing/route-types.d.mts +56 -0
  183. package/dist/core/request-routing/safe-apply-response-headers.mjs +16 -0
  184. package/dist/core/request-routing/safe-apply-response-headers.mjs.map +1 -0
  185. package/dist/core/shop-pay/shop-pay.d.mts +102 -0
  186. package/dist/core/shop-pay/shop-pay.mjs +289 -0
  187. package/dist/core/shop-pay/shop-pay.mjs.map +1 -0
  188. package/dist/core/shopify-scripts/analytics.mjs +26 -0
  189. package/dist/core/shopify-scripts/analytics.mjs.map +1 -0
  190. package/dist/core/shopify-scripts/consent.mjs +17 -0
  191. package/dist/core/shopify-scripts/consent.mjs.map +1 -0
  192. package/dist/core/shopify-scripts/constants.mjs +19 -0
  193. package/dist/core/shopify-scripts/constants.mjs.map +1 -0
  194. package/dist/core/shopify-scripts/deprecated-cookies.mjs +97 -0
  195. package/dist/core/shopify-scripts/deprecated-cookies.mjs.map +1 -0
  196. package/dist/core/shopify-scripts/global.d.mts +1 -0
  197. package/dist/core/shopify-scripts/global.mjs +86 -0
  198. package/dist/core/shopify-scripts/global.mjs.map +1 -0
  199. package/dist/core/shopify-scripts/index.d.mts +27 -0
  200. package/dist/core/shopify-scripts/index.mjs +135 -0
  201. package/dist/core/shopify-scripts/index.mjs.map +1 -0
  202. package/dist/core/shopify-scripts/initialize.d.mts +18 -0
  203. package/dist/core/shopify-scripts/initialize.mjs +27 -0
  204. package/dist/core/shopify-scripts/initialize.mjs.map +1 -0
  205. package/dist/core/shopify-scripts/page-view.mjs +49 -0
  206. package/dist/core/shopify-scripts/page-view.mjs.map +1 -0
  207. package/dist/core/shopify-scripts/perfkit.mjs +33 -0
  208. package/dist/core/shopify-scripts/perfkit.mjs.map +1 -0
  209. package/dist/core/shopify-scripts/render.d.mts +1 -0
  210. package/dist/core/shopify-scripts/render.mjs +23 -0
  211. package/dist/core/shopify-scripts/render.mjs.map +1 -0
  212. package/dist/core/shopify-scripts/types.d.mts +76 -0
  213. package/dist/core/shopify-scripts/utils/cookie-domain.mjs +43 -0
  214. package/dist/core/shopify-scripts/utils/cookie-domain.mjs.map +1 -0
  215. package/dist/core/shopify-scripts/utils/inline-script.mjs +8 -0
  216. package/dist/core/shopify-scripts/utils/inline-script.mjs.map +1 -0
  217. package/dist/core/shopify-scripts/utils/navigation.mjs +46 -0
  218. package/dist/core/shopify-scripts/utils/navigation.mjs.map +1 -0
  219. package/dist/core/shopify-scripts/utils/tracking-values.mjs +65 -0
  220. package/dist/core/shopify-scripts/utils/tracking-values.mjs.map +1 -0
  221. package/dist/core/shopify-scripts/utils/uuid.mjs +17 -0
  222. package/dist/core/shopify-scripts/utils/uuid.mjs.map +1 -0
  223. package/dist/core/shopify-scripts/webmcp.mjs +22 -0
  224. package/dist/core/shopify-scripts/webmcp.mjs.map +1 -0
  225. package/dist/core/standard-routes/build.d.mts +34 -0
  226. package/dist/core/standard-routes/build.mjs +54 -0
  227. package/dist/core/standard-routes/build.mjs.map +1 -0
  228. package/dist/core/standard-routes/defaults.mjs +31 -0
  229. package/dist/core/standard-routes/defaults.mjs.map +1 -0
  230. package/dist/core/standard-routes/match.mjs +108 -0
  231. package/dist/core/standard-routes/match.mjs.map +1 -0
  232. package/dist/core/standard-routes/path.mjs +58 -0
  233. package/dist/core/standard-routes/path.mjs.map +1 -0
  234. package/dist/core/standard-routes/redirects.mjs +51 -0
  235. package/dist/core/standard-routes/redirects.mjs.map +1 -0
  236. package/dist/core/standard-routes/types.d.mts +95 -0
  237. package/dist/core/url.mjs +42 -0
  238. package/dist/core/url.mjs.map +1 -0
  239. package/dist/core/utils/load-script.mjs +34 -0
  240. package/dist/core/utils/load-script.mjs.map +1 -0
  241. package/dist/core/utils/parse-gid.mjs +33 -0
  242. package/dist/core/utils/parse-gid.mjs.map +1 -0
  243. package/dist/core/utils/record.mjs +8 -0
  244. package/dist/core/utils/record.mjs.map +1 -0
  245. package/dist/customer-account/client.d.mts +50 -0
  246. package/dist/customer-account/client.mjs +239 -0
  247. package/dist/customer-account/client.mjs.map +1 -0
  248. package/dist/customer-account/errors.d.mts +28 -0
  249. package/dist/customer-account/errors.mjs +39 -0
  250. package/dist/customer-account/errors.mjs.map +1 -0
  251. package/dist/customer-account/graphql.d.mts +29 -0
  252. package/dist/customer-account/graphql.mjs +39 -0
  253. package/dist/customer-account/graphql.mjs.map +1 -0
  254. package/dist/customer-account/index.d.mts +7 -0
  255. package/dist/customer-account/index.mjs +7 -0
  256. package/dist/customer-account/session.d.mts +117 -0
  257. package/dist/customer-account/session.mjs +733 -0
  258. package/dist/customer-account/session.mjs.map +1 -0
  259. package/dist/customer-account/type-resolver.d.mts +11 -0
  260. package/dist/customer-account-api-types.d.ts +3269 -3270
  261. package/dist/customer-account.schema.json +50753 -1
  262. package/dist/development/_virtual/_@oxc-project_runtime@0.127.0/helpers/taggedTemplateLiteral.mjs +7 -0
  263. package/dist/development/client/client.d.mts +34 -0
  264. package/dist/development/client/client.mjs +206 -0
  265. package/dist/development/client/client.mjs.map +1 -0
  266. package/dist/development/client/errors.d.mts +48 -0
  267. package/dist/development/client/errors.mjs +57 -0
  268. package/dist/development/client/errors.mjs.map +1 -0
  269. package/dist/development/client/index.d.mts +4 -0
  270. package/dist/development/client/types.d.mts +147 -0
  271. package/dist/development/core/analytics/cart-tracker.d.mts +8 -0
  272. package/dist/development/core/analytics/cart-tracker.mjs +144 -0
  273. package/dist/development/core/analytics/cart-tracker.mjs.map +1 -0
  274. package/dist/development/core/analytics/events.d.mts +15 -0
  275. package/dist/development/core/analytics/events.mjs +15 -0
  276. package/dist/development/core/analytics/events.mjs.map +1 -0
  277. package/dist/development/core/analytics/index.d.mts +3 -0
  278. package/dist/development/core/analytics/types.d.mts +143 -0
  279. package/dist/development/core/analytics/utils/flatten-connection.d.mts +19 -0
  280. package/dist/development/core/analytics/utils/flatten-connection.mjs +25 -0
  281. package/dist/development/core/analytics/utils/flatten-connection.mjs.map +1 -0
  282. package/dist/development/core/cache/cache-status.mjs +17 -0
  283. package/dist/development/core/cache/cache-status.mjs.map +1 -0
  284. package/dist/development/core/cache/fetch-with-cache.d.mts +43 -0
  285. package/dist/development/core/cache/fetch-with-cache.mjs +188 -0
  286. package/dist/development/core/cache/fetch-with-cache.mjs.map +1 -0
  287. package/dist/development/core/cache/key.d.mts +6 -0
  288. package/dist/development/core/cache/key.mjs +27 -0
  289. package/dist/development/core/cache/key.mjs.map +1 -0
  290. package/dist/development/core/cache/run-with-cache.d.mts +36 -0
  291. package/dist/development/core/cache/run-with-cache.mjs +114 -0
  292. package/dist/development/core/cache/run-with-cache.mjs.map +1 -0
  293. package/dist/development/core/cache/store.d.mts +19 -0
  294. package/dist/development/core/cache/store.mjs +62 -0
  295. package/dist/development/core/cache/store.mjs.map +1 -0
  296. package/dist/development/core/cache/strategies.d.mts +39 -0
  297. package/dist/development/core/cache/strategies.mjs +70 -0
  298. package/dist/development/core/cache/strategies.mjs.map +1 -0
  299. package/dist/development/core/cart/actions.d.mts +50 -0
  300. package/dist/development/core/cart/actions.mjs +240 -0
  301. package/dist/development/core/cart/actions.mjs.map +1 -0
  302. package/dist/development/core/cart/attach-quantity-input.d.mts +5 -0
  303. package/dist/development/core/cart/attach-quantity-input.mjs +17 -0
  304. package/dist/development/core/cart/attach-quantity-input.mjs.map +1 -0
  305. package/dist/development/core/cart/buyer-identity-sync.d.mts +19 -0
  306. package/dist/development/core/cart/buyer-identity-sync.mjs +6 -0
  307. package/dist/development/core/cart/buyer-identity-sync.mjs.map +1 -0
  308. package/dist/development/core/cart/cart.d.mts +37 -0
  309. package/dist/development/core/cart/cart.mjs +1707 -0
  310. package/dist/development/core/cart/cart.mjs.map +1 -0
  311. package/dist/development/core/cart/cookie.d.mts +5 -0
  312. package/dist/development/core/cart/cookie.mjs +28 -0
  313. package/dist/development/core/cart/cookie.mjs.map +1 -0
  314. package/dist/development/core/cart/form.d.mts +130 -0
  315. package/dist/development/core/cart/form.mjs +75 -0
  316. package/dist/development/core/cart/form.mjs.map +1 -0
  317. package/dist/development/core/cart/get-cart.d.mts +25 -0
  318. package/dist/development/core/cart/get-cart.mjs +32 -0
  319. package/dist/development/core/cart/get-cart.mjs.map +1 -0
  320. package/dist/development/core/cart/index.d.mts +10 -0
  321. package/dist/development/core/cart/quantity.d.mts +10 -0
  322. package/dist/development/core/cart/quantity.mjs +14 -0
  323. package/dist/development/core/cart/quantity.mjs.map +1 -0
  324. package/dist/development/core/cart/queries.d.mts +4296 -0
  325. package/dist/development/core/cart/queries.mjs +70 -0
  326. package/dist/development/core/cart/queries.mjs.map +1 -0
  327. package/dist/development/core/cart/server-handlers.d.mts +82 -0
  328. package/dist/development/core/cart/server-handlers.mjs +322 -0
  329. package/dist/development/core/cart/server-handlers.mjs.map +1 -0
  330. package/dist/development/core/cart/state.d.mts +137 -0
  331. package/dist/development/core/cart/state.mjs +76 -0
  332. package/dist/development/core/cart/state.mjs.map +1 -0
  333. package/dist/development/core/cart/sync-quantity-inputs.mjs +16 -0
  334. package/dist/development/core/cart/sync-quantity-inputs.mjs.map +1 -0
  335. package/dist/development/core/collection/collection.d.mts +134 -0
  336. package/dist/development/core/collection/collection.mjs +170 -0
  337. package/dist/development/core/collection/collection.mjs.map +1 -0
  338. package/dist/development/core/collection/index.d.mts +6 -0
  339. package/dist/development/core/collection/reconciler.d.mts +32 -0
  340. package/dist/development/core/collection/reconciler.mjs +89 -0
  341. package/dist/development/core/collection/reconciler.mjs.map +1 -0
  342. package/dist/development/core/collection/state.d.mts +66 -0
  343. package/dist/development/core/collection/state.mjs +20 -0
  344. package/dist/development/core/collection/state.mjs.map +1 -0
  345. package/dist/development/core/collection/url.d.mts +71 -0
  346. package/dist/development/core/collection/url.mjs +376 -0
  347. package/dist/development/core/collection/url.mjs.map +1 -0
  348. package/dist/development/core/constants.mjs +7 -0
  349. package/dist/development/core/constants.mjs.map +1 -0
  350. package/dist/development/core/development.d.mts +56 -0
  351. package/dist/development/core/development.mjs +45 -0
  352. package/dist/development/core/headers.mjs +43 -0
  353. package/dist/development/core/headers.mjs.map +1 -0
  354. package/dist/development/core/index.d.mts +54 -0
  355. package/dist/development/core/logging/logging.d.mts +21 -0
  356. package/dist/development/core/logging/logging.mjs +99 -0
  357. package/dist/development/core/logging/logging.mjs.map +1 -0
  358. package/dist/development/core/logging/types.d.mts +40 -0
  359. package/dist/development/core/logging/types.mjs +18 -0
  360. package/dist/development/core/logging/types.mjs.map +1 -0
  361. package/dist/development/core/money/cache.mjs +25 -0
  362. package/dist/development/core/money/cache.mjs.map +1 -0
  363. package/dist/development/core/money/format.d.mts +15 -0
  364. package/dist/development/core/money/format.mjs +243 -0
  365. package/dist/development/core/money/format.mjs.map +1 -0
  366. package/dist/development/core/money/types.d.mts +47 -0
  367. package/dist/development/core/observable.mjs +46 -0
  368. package/dist/development/core/observable.mjs.map +1 -0
  369. package/dist/development/core/predictive-search/constants.d.mts +5 -0
  370. package/dist/development/core/predictive-search/constants.mjs +6 -0
  371. package/dist/development/core/predictive-search/constants.mjs.map +1 -0
  372. package/dist/development/core/predictive-search/form.d.mts +31 -0
  373. package/dist/development/core/predictive-search/form.mjs +31 -0
  374. package/dist/development/core/predictive-search/form.mjs.map +1 -0
  375. package/dist/development/core/predictive-search/index.d.mts +6 -0
  376. package/dist/development/core/predictive-search/queries.d.mts +118 -0
  377. package/dist/development/core/predictive-search/queries.mjs +81 -0
  378. package/dist/development/core/predictive-search/queries.mjs.map +1 -0
  379. package/dist/development/core/predictive-search/search.d.mts +32 -0
  380. package/dist/development/core/predictive-search/search.mjs +74 -0
  381. package/dist/development/core/predictive-search/search.mjs.map +1 -0
  382. package/dist/development/core/predictive-search/server-handlers.d.mts +36 -0
  383. package/dist/development/core/predictive-search/server-handlers.mjs +113 -0
  384. package/dist/development/core/predictive-search/server-handlers.mjs.map +1 -0
  385. package/dist/development/core/predictive-search/store.d.mts +44 -0
  386. package/dist/development/core/predictive-search/store.mjs +224 -0
  387. package/dist/development/core/predictive-search/store.mjs.map +1 -0
  388. package/dist/development/core/predictive-search/url.d.mts +41 -0
  389. package/dist/development/core/predictive-search/url.mjs +71 -0
  390. package/dist/development/core/predictive-search/url.mjs.map +1 -0
  391. package/dist/development/core/product/accept-variant-id.mjs +98 -0
  392. package/dist/development/core/product/accept-variant-id.mjs.map +1 -0
  393. package/dist/development/core/product/form.d.mts +63 -0
  394. package/dist/development/core/product/form.mjs +44 -0
  395. package/dist/development/core/product/form.mjs.map +1 -0
  396. package/dist/development/core/product/index.d.mts +5 -0
  397. package/dist/development/core/product/options.d.mts +43 -0
  398. package/dist/development/core/product/options.mjs +296 -0
  399. package/dist/development/core/product/options.mjs.map +1 -0
  400. package/dist/development/core/product/product-form.d.mts +72 -0
  401. package/dist/development/core/product/product-form.mjs +158 -0
  402. package/dist/development/core/product/product-form.mjs.map +1 -0
  403. package/dist/development/core/product/state.d.mts +68 -0
  404. package/dist/development/core/product/url.d.mts +47 -0
  405. package/dist/development/core/product/url.mjs +69 -0
  406. package/dist/development/core/product/url.mjs.map +1 -0
  407. package/dist/development/core/request-context.d.mts +75 -0
  408. package/dist/development/core/request-context.mjs +141 -0
  409. package/dist/development/core/request-context.mjs.map +1 -0
  410. package/dist/development/core/request-routing/handle-shopify-redirects.d.mts +17 -0
  411. package/dist/development/core/request-routing/handle-shopify-redirects.mjs +31 -0
  412. package/dist/development/core/request-routing/handle-shopify-redirects.mjs.map +1 -0
  413. package/dist/development/core/request-routing/handle-shopify-routes.d.mts +1 -0
  414. package/dist/development/core/request-routing/handle-shopify-routes.development.d.mts +11 -0
  415. package/dist/development/core/request-routing/handle-shopify-routes.development.mjs +16 -0
  416. package/dist/development/core/request-routing/handle-shopify-routes.development.mjs.map +1 -0
  417. package/dist/development/core/request-routing/handle-shopify-routes.mjs +42 -0
  418. package/dist/development/core/request-routing/handle-shopify-routes.mjs.map +1 -0
  419. package/dist/development/core/request-routing/interceptors/admin-redirect.mjs +12 -0
  420. package/dist/development/core/request-routing/interceptors/admin-redirect.mjs.map +1 -0
  421. package/dist/development/core/request-routing/interceptors/ajax-api.mjs +16 -0
  422. package/dist/development/core/request-routing/interceptors/ajax-api.mjs.map +1 -0
  423. package/dist/development/core/request-routing/interceptors/api-proxy.mjs +20 -0
  424. package/dist/development/core/request-routing/interceptors/api-proxy.mjs.map +1 -0
  425. package/dist/development/core/request-routing/interceptors/checkout.mjs +58 -0
  426. package/dist/development/core/request-routing/interceptors/checkout.mjs.map +1 -0
  427. package/dist/development/core/request-routing/interceptors/graphiql.mjs +46 -0
  428. package/dist/development/core/request-routing/interceptors/graphiql.mjs.map +1 -0
  429. package/dist/development/core/request-routing/interceptors/mcp-proxy.mjs +23 -0
  430. package/dist/development/core/request-routing/interceptors/mcp-proxy.mjs.map +1 -0
  431. package/dist/development/core/request-routing/interceptors/proxy.mjs +73 -0
  432. package/dist/development/core/request-routing/interceptors/proxy.mjs.map +1 -0
  433. package/dist/development/core/request-routing/interceptors/query-param-redirect.mjs +22 -0
  434. package/dist/development/core/request-routing/interceptors/query-param-redirect.mjs.map +1 -0
  435. package/dist/development/core/request-routing/interceptors/sfapi-proxy.mjs +27 -0
  436. package/dist/development/core/request-routing/interceptors/sfapi-proxy.mjs.map +1 -0
  437. package/dist/development/core/request-routing/interceptors/standard-routes.mjs +19 -0
  438. package/dist/development/core/request-routing/interceptors/standard-routes.mjs.map +1 -0
  439. package/dist/development/core/request-routing/interceptors/url-redirects.mjs +27 -0
  440. package/dist/development/core/request-routing/interceptors/url-redirects.mjs.map +1 -0
  441. package/dist/development/core/request-routing/interceptors/well-known.mjs +22 -0
  442. package/dist/development/core/request-routing/interceptors/well-known.mjs.map +1 -0
  443. package/dist/development/core/request-routing/registered-routes.d.mts +7 -0
  444. package/dist/development/core/request-routing/registered-routes.mjs +72 -0
  445. package/dist/development/core/request-routing/registered-routes.mjs.map +1 -0
  446. package/dist/development/core/request-routing/route-types.d.mts +56 -0
  447. package/dist/development/core/request-routing/safe-apply-response-headers.mjs +16 -0
  448. package/dist/development/core/request-routing/safe-apply-response-headers.mjs.map +1 -0
  449. package/dist/development/core/shop-pay/shop-pay.d.mts +102 -0
  450. package/dist/development/core/shop-pay/shop-pay.mjs +289 -0
  451. package/dist/development/core/shop-pay/shop-pay.mjs.map +1 -0
  452. package/dist/development/core/shopify-scripts/analytics.mjs +26 -0
  453. package/dist/development/core/shopify-scripts/analytics.mjs.map +1 -0
  454. package/dist/development/core/shopify-scripts/consent.mjs +17 -0
  455. package/dist/development/core/shopify-scripts/consent.mjs.map +1 -0
  456. package/dist/development/core/shopify-scripts/constants.mjs +19 -0
  457. package/dist/development/core/shopify-scripts/constants.mjs.map +1 -0
  458. package/dist/development/core/shopify-scripts/deprecated-cookies.mjs +97 -0
  459. package/dist/development/core/shopify-scripts/deprecated-cookies.mjs.map +1 -0
  460. package/dist/development/core/shopify-scripts/global.d.mts +1 -0
  461. package/dist/development/core/shopify-scripts/global.mjs +86 -0
  462. package/dist/development/core/shopify-scripts/global.mjs.map +1 -0
  463. package/dist/development/core/shopify-scripts/index.d.mts +27 -0
  464. package/dist/development/core/shopify-scripts/index.mjs +145 -0
  465. package/dist/development/core/shopify-scripts/index.mjs.map +1 -0
  466. package/dist/development/core/shopify-scripts/initialize.d.mts +18 -0
  467. package/dist/development/core/shopify-scripts/initialize.mjs +27 -0
  468. package/dist/development/core/shopify-scripts/initialize.mjs.map +1 -0
  469. package/dist/development/core/shopify-scripts/page-view.mjs +49 -0
  470. package/dist/development/core/shopify-scripts/page-view.mjs.map +1 -0
  471. package/dist/development/core/shopify-scripts/perfkit.mjs +33 -0
  472. package/dist/development/core/shopify-scripts/perfkit.mjs.map +1 -0
  473. package/dist/development/core/shopify-scripts/render.d.mts +1 -0
  474. package/dist/development/core/shopify-scripts/render.mjs +23 -0
  475. package/dist/development/core/shopify-scripts/render.mjs.map +1 -0
  476. package/dist/development/core/shopify-scripts/types.d.mts +76 -0
  477. package/dist/development/core/shopify-scripts/utils/cookie-domain.mjs +43 -0
  478. package/dist/development/core/shopify-scripts/utils/cookie-domain.mjs.map +1 -0
  479. package/dist/development/core/shopify-scripts/utils/inline-script.mjs +8 -0
  480. package/dist/development/core/shopify-scripts/utils/inline-script.mjs.map +1 -0
  481. package/dist/development/core/shopify-scripts/utils/navigation.mjs +46 -0
  482. package/dist/development/core/shopify-scripts/utils/navigation.mjs.map +1 -0
  483. package/dist/development/core/shopify-scripts/utils/tracking-values.mjs +65 -0
  484. package/dist/development/core/shopify-scripts/utils/tracking-values.mjs.map +1 -0
  485. package/dist/development/core/shopify-scripts/utils/uuid.mjs +17 -0
  486. package/dist/development/core/shopify-scripts/utils/uuid.mjs.map +1 -0
  487. package/dist/development/core/shopify-scripts/webmcp.mjs +22 -0
  488. package/dist/development/core/shopify-scripts/webmcp.mjs.map +1 -0
  489. package/dist/development/core/standard-routes/build.d.mts +34 -0
  490. package/dist/development/core/standard-routes/build.mjs +54 -0
  491. package/dist/development/core/standard-routes/build.mjs.map +1 -0
  492. package/dist/development/core/standard-routes/defaults.mjs +31 -0
  493. package/dist/development/core/standard-routes/defaults.mjs.map +1 -0
  494. package/dist/development/core/standard-routes/match.mjs +108 -0
  495. package/dist/development/core/standard-routes/match.mjs.map +1 -0
  496. package/dist/development/core/standard-routes/path.mjs +58 -0
  497. package/dist/development/core/standard-routes/path.mjs.map +1 -0
  498. package/dist/development/core/standard-routes/redirects.mjs +51 -0
  499. package/dist/development/core/standard-routes/redirects.mjs.map +1 -0
  500. package/dist/development/core/standard-routes/types.d.mts +95 -0
  501. package/dist/development/core/types.d.mts +11 -0
  502. package/dist/development/core/url.mjs +42 -0
  503. package/dist/development/core/url.mjs.map +1 -0
  504. package/dist/development/core/utils/load-script.mjs +34 -0
  505. package/dist/development/core/utils/load-script.mjs.map +1 -0
  506. package/dist/development/core/utils/parse-gid.mjs +33 -0
  507. package/dist/development/core/utils/parse-gid.mjs.map +1 -0
  508. package/dist/development/customer-account/session.d.mts +46 -0
  509. package/dist/development/customer-account/session.mjs +21 -0
  510. package/dist/development/customer-account/session.mjs.map +1 -0
  511. package/dist/development/globals.d.mts +64 -0
  512. package/dist/development/graphql/generated/customer-account-api-types.d.mts +13 -0
  513. package/dist/development/graphql/generated/graphql-env.d.mts +19280 -0
  514. package/dist/development/graphql/generated/storefront-api-types.d.mts +47 -0
  515. package/dist/development/graphql/graphql.d.mts +40 -0
  516. package/dist/development/graphql/graphql.mjs +16 -0
  517. package/dist/development/graphql/graphql.mjs.map +1 -0
  518. package/dist/development/graphql/index.d.mts +2 -0
  519. package/dist/development/graphql/scalars.d.mts +15 -0
  520. package/dist/development/graphql/type-resolver.d.mts +229 -0
  521. package/dist/development/react/cart.d.mts +44 -0
  522. package/dist/development/react/cart.mjs +155 -0
  523. package/dist/development/react/cart.mjs.map +1 -0
  524. package/dist/development/react/collection.d.mts +91 -0
  525. package/dist/development/react/collection.mjs +129 -0
  526. package/dist/development/react/collection.mjs.map +1 -0
  527. package/dist/development/react/index.d.mts +13 -0
  528. package/dist/development/react/index.mjs +10 -0
  529. package/dist/development/react/predictive-search.d.mts +49 -0
  530. package/dist/development/react/predictive-search.mjs +133 -0
  531. package/dist/development/react/predictive-search.mjs.map +1 -0
  532. package/dist/development/react/product.d.mts +72 -0
  533. package/dist/development/react/product.mjs +127 -0
  534. package/dist/development/react/product.mjs.map +1 -0
  535. package/dist/development/react/shop-pay.d.mts +9 -0
  536. package/dist/development/react/shop-pay.mjs +16 -0
  537. package/dist/development/react/shop-pay.mjs.map +1 -0
  538. package/dist/development/react/shopify-scripts.d.mts +20 -0
  539. package/dist/development/react/shopify-scripts.mjs +39 -0
  540. package/dist/development/react/shopify-scripts.mjs.map +1 -0
  541. package/dist/development/vendor/standard-actions.d.mts +134 -0
  542. package/dist/development/vendor/standard-events.d.mts +1107 -0
  543. package/dist/development/vue/cart.d.mts +46 -0
  544. package/dist/development/vue/cart.mjs +122 -0
  545. package/dist/development/vue/cart.mjs.map +1 -0
  546. package/dist/development/vue/collection.d.mts +46 -0
  547. package/dist/development/vue/collection.mjs +108 -0
  548. package/dist/development/vue/collection.mjs.map +1 -0
  549. package/dist/development/vue/index.d.mts +11 -0
  550. package/dist/development/vue/index.mjs +8 -0
  551. package/dist/development/vue/predictive-search.d.mts +124 -0
  552. package/dist/development/vue/predictive-search.mjs +171 -0
  553. package/dist/development/vue/predictive-search.mjs.map +1 -0
  554. package/dist/development/vue/product.d.mts +57 -0
  555. package/dist/development/vue/product.mjs +167 -0
  556. package/dist/development/vue/product.mjs.map +1 -0
  557. package/dist/development/vue/shop-pay.d.mts +25 -0
  558. package/dist/development/vue/shop-pay.mjs +35 -0
  559. package/dist/development/vue/shop-pay.mjs.map +1 -0
  560. package/dist/development/vue/shopify-scripts.d.mts +127 -0
  561. package/dist/development/vue/shopify-scripts.mjs +79 -0
  562. package/dist/development/vue/shopify-scripts.mjs.map +1 -0
  563. package/dist/globals.d.mts +64 -0
  564. package/dist/graphql/generated/customer-account-api-types.d.mts +13 -0
  565. package/dist/graphql/generated/customer-account-graphql-env.d.mts +22170 -0
  566. package/dist/graphql/generated/graphql-env.d.mts +19280 -0
  567. package/dist/graphql/generated/storefront-api-types.d.mts +47 -0
  568. package/dist/graphql/graphql.d.mts +40 -0
  569. package/dist/graphql/graphql.mjs +16 -0
  570. package/dist/graphql/graphql.mjs.map +1 -0
  571. package/dist/graphql/index.d.mts +2 -0
  572. package/dist/graphql/scalars.d.mts +26 -0
  573. package/dist/graphql/type-resolver.d.mts +229 -0
  574. package/dist/react/cart.d.mts +44 -0
  575. package/dist/react/cart.mjs +155 -0
  576. package/dist/react/cart.mjs.map +1 -0
  577. package/dist/react/collection.d.mts +91 -0
  578. package/dist/react/collection.mjs +129 -0
  579. package/dist/react/collection.mjs.map +1 -0
  580. package/dist/react/index.d.mts +13 -0
  581. package/dist/react/index.mjs +10 -0
  582. package/dist/react/predictive-search.d.mts +49 -0
  583. package/dist/react/predictive-search.mjs +133 -0
  584. package/dist/react/predictive-search.mjs.map +1 -0
  585. package/dist/react/product.d.mts +72 -0
  586. package/dist/react/product.mjs +127 -0
  587. package/dist/react/product.mjs.map +1 -0
  588. package/dist/react/shop-pay.d.mts +9 -0
  589. package/dist/react/shop-pay.mjs +16 -0
  590. package/dist/react/shop-pay.mjs.map +1 -0
  591. package/dist/react/shopify-scripts.d.mts +20 -0
  592. package/dist/react/shopify-scripts.mjs +39 -0
  593. package/dist/react/shopify-scripts.mjs.map +1 -0
  594. package/dist/storefront-api-types.d.ts +2351 -2390
  595. package/dist/storefront.schema.json +41534 -1
  596. package/dist/ts-plugin/index.cjs +68 -0
  597. package/dist/ts-plugin/index.cjs.map +1 -0
  598. package/dist/ts-plugin/index.d.cts +4 -0
  599. package/dist/vendor/standard-actions.d.mts +134 -0
  600. package/dist/vendor/standard-events.d.mts +1107 -0
  601. package/dist/vite/certificate-prompt.mjs +24 -0
  602. package/dist/vite/certificate-prompt.mjs.map +1 -0
  603. package/dist/vite/index.d.mts +2 -0
  604. package/dist/vite/index.mjs +3 -0
  605. package/dist/vite/local-https.d.mts +47 -0
  606. package/dist/vite/local-https.mjs +276 -0
  607. package/dist/vite/local-https.mjs.map +1 -0
  608. package/dist/vite/mkcert.mjs +141 -0
  609. package/dist/vite/mkcert.mjs.map +1 -0
  610. package/dist/vue/cart.d.mts +46 -0
  611. package/dist/vue/cart.mjs +122 -0
  612. package/dist/vue/cart.mjs.map +1 -0
  613. package/dist/vue/collection.d.mts +46 -0
  614. package/dist/vue/collection.mjs +108 -0
  615. package/dist/vue/collection.mjs.map +1 -0
  616. package/dist/vue/index.d.mts +11 -0
  617. package/dist/vue/index.mjs +8 -0
  618. package/dist/vue/predictive-search.d.mts +124 -0
  619. package/dist/vue/predictive-search.mjs +171 -0
  620. package/dist/vue/predictive-search.mjs.map +1 -0
  621. package/dist/vue/product.d.mts +57 -0
  622. package/dist/vue/product.mjs +167 -0
  623. package/dist/vue/product.mjs.map +1 -0
  624. package/dist/vue/shop-pay.d.mts +25 -0
  625. package/dist/vue/shop-pay.mjs +35 -0
  626. package/dist/vue/shop-pay.mjs.map +1 -0
  627. package/dist/vue/shopify-scripts.d.mts +127 -0
  628. package/dist/vue/shopify-scripts.mjs +79 -0
  629. package/dist/vue/shopify-scripts.mjs.map +1 -0
  630. package/package.json +116 -86
  631. package/skills/hydrogen-analytics/SKILL.md +80 -0
  632. package/skills/hydrogen-analytics/references/react.md +160 -0
  633. package/skills/hydrogen-analytics/references/vue.md +80 -0
  634. package/skills/hydrogen-cart-drawer/SKILL.md +248 -0
  635. package/skills/hydrogen-cart-drawer/references/accessibility.md +109 -0
  636. package/skills/hydrogen-cart-drawer/references/css.md +67 -0
  637. package/skills/hydrogen-cart-ui/SKILL.md +224 -0
  638. package/skills/hydrogen-cart-ui/references/nextjs.md +89 -0
  639. package/skills/hydrogen-cart-ui/references/react.md +285 -0
  640. package/skills/hydrogen-cart-ui/references/vue.md +228 -0
  641. package/skills/hydrogen-collection-browser/SKILL.md +83 -0
  642. package/skills/hydrogen-collection-browser/references/nextjs.md +118 -0
  643. package/skills/hydrogen-collection-browser/references/nuxt.md +108 -0
  644. package/skills/hydrogen-collection-browser/references/react.md +301 -0
  645. package/skills/hydrogen-customer-account/SKILL.md +107 -0
  646. package/skills/hydrogen-image/SKILL.md +65 -0
  647. package/skills/hydrogen-local-https/SKILL.md +142 -0
  648. package/skills/hydrogen-markets/SKILL.md +221 -0
  649. package/skills/hydrogen-markets/references/nextjs.md +157 -0
  650. package/skills/hydrogen-money/SKILL.md +67 -0
  651. package/skills/hydrogen-oxygen/SKILL.md +245 -0
  652. package/skills/hydrogen-oxygen/references/react-router.md +230 -0
  653. package/skills/hydrogen-predictive-search/SKILL.md +130 -0
  654. package/skills/hydrogen-predictive-search/references/react.md +32 -0
  655. package/skills/hydrogen-predictive-search/references/vue.md +40 -0
  656. package/skills/hydrogen-request-handlers/SKILL.md +107 -0
  657. package/skills/hydrogen-request-handlers/references/frameworks.md +179 -0
  658. package/skills/hydrogen-request-handlers/references/nextjs.md +137 -0
  659. package/skills/hydrogen-request-handlers/references/nuxt.md +215 -0
  660. package/skills/hydrogen-routing/SKILL.md +171 -0
  661. package/skills/hydrogen-setup/SKILL.md +50 -0
  662. package/skills/hydrogen-setup/references/analytics.md +624 -0
  663. package/skills/hydrogen-setup/steps/1-inspect-app.md +62 -0
  664. package/skills/hydrogen-setup/steps/10-analytics.md +10 -0
  665. package/skills/hydrogen-setup/steps/11-verify.md +31 -0
  666. package/skills/hydrogen-setup/steps/2-scaffold.md +86 -0
  667. package/skills/hydrogen-setup/steps/3-build-home-page.md +37 -0
  668. package/skills/hydrogen-setup/steps/4-collection-and-search.md +14 -0
  669. package/skills/hydrogen-setup/steps/5-cart.md +10 -0
  670. package/skills/hydrogen-setup/steps/6-product-detail-page.md +416 -0
  671. package/skills/hydrogen-setup/steps/7-shopify-runtime-scripts.md +69 -0
  672. package/skills/hydrogen-setup/steps/8-cart-drawer-and-navbar.md +35 -0
  673. package/skills/hydrogen-setup/steps/9-account-page.md +54 -0
  674. package/skills/hydrogen-shop-pay/SKILL.md +79 -0
  675. package/skills/hydrogen-shop-pay/references/core.md +66 -0
  676. package/skills/hydrogen-shop-pay/references/react.md +50 -0
  677. package/skills/hydrogen-shop-pay/references/vue.md +39 -0
  678. package/skills/hydrogen-smoke-test/SKILL.md +205 -0
  679. package/skills/hydrogen-storefront-client/SKILL.md +322 -0
  680. package/skills/hydrogen-storefront-client/references/astro.md +125 -0
  681. package/skills/hydrogen-storefront-client/references/caching.md +25 -0
  682. package/skills/hydrogen-storefront-client/references/nextjs.md +121 -0
  683. package/skills/hydrogen-storefront-client/references/nuxt.md +121 -0
  684. package/skills/hydrogen-storefront-client/references/query-validation.md +95 -0
  685. package/skills/hydrogen-storefront-client/references/react-router.md +81 -0
  686. package/skills/hydrogen-storefront-client/references/solidstart.md +131 -0
  687. package/skills/hydrogen-storefront-client/references/sveltekit.md +169 -0
  688. package/skills/hydrogen-variant-form/SKILL.md +267 -0
  689. package/skills/hydrogen-variant-form/references/nextjs.md +207 -0
  690. package/skills/hydrogen-variant-form/references/nuxt.md +95 -0
  691. package/skills/hydrogen-variant-form/references/react.md +71 -0
  692. package/dist/dev/get-virtual-routes-H72465VB.js +0 -74
  693. package/dist/dev/hydrogen-routes.d.ts +0 -5
  694. package/dist/dev/hydrogen-routes.js +0 -25
  695. package/dist/development/get-virtual-routes-ACFZHU42.js +0 -71
  696. package/dist/development/get-virtual-routes-ACFZHU42.js.map +0 -1
  697. package/dist/development/index.cjs +0 -6978
  698. package/dist/development/index.cjs.map +0 -1
  699. package/dist/development/index.js +0 -6631
  700. package/dist/development/index.js.map +0 -1
  701. package/dist/development/log-seo-tags-IG37ONQ2.js +0 -74
  702. package/dist/development/log-seo-tags-IG37ONQ2.js.map +0 -1
  703. package/dist/development/react-router-preset.d.ts +0 -45
  704. package/dist/development/react-router-preset.js +0 -49
  705. package/dist/development/react-router-preset.js.map +0 -1
  706. package/dist/index.cjs +0 -1
  707. package/dist/oxygen/index.d.ts +0 -197
  708. package/dist/oxygen/index.js +0 -107
  709. package/dist/production/get-virtual-routes-ZZEGQQDV.js +0 -3
  710. package/dist/production/get-virtual-routes-ZZEGQQDV.js.map +0 -1
  711. package/dist/production/index.cjs +0 -1019
  712. package/dist/production/index.cjs.map +0 -1
  713. package/dist/production/index.d.cts +0 -3260
  714. package/dist/production/index.d.ts +0 -3260
  715. package/dist/production/index.js +0 -1019
  716. package/dist/production/index.js.map +0 -1
  717. package/dist/production/log-seo-tags-TY72EQWZ.js +0 -2
  718. package/dist/production/log-seo-tags-TY72EQWZ.js.map +0 -1
  719. package/dist/production/react-router-preset.d.ts +0 -45
  720. package/dist/production/react-router-preset.js +0 -11
  721. package/dist/react-router.d.ts +0 -75
  722. package/dist/vite/chunk-4O5OI3OO.js +0 -127
  723. package/dist/vite/chunk-FAQ7TVHC.js +0 -9
  724. package/dist/vite/chunk-QXBQVDMY.js +0 -68
  725. package/dist/vite/compat-date.d.ts +0 -3
  726. package/dist/vite/compat-date.js +0 -6
  727. package/dist/vite/get-virtual-routes.d.ts +0 -21
  728. package/dist/vite/get-virtual-routes.js +0 -74
  729. package/dist/vite/hydrogen-middleware.d.ts +0 -9
  730. package/dist/vite/hydrogen-middleware.js +0 -7
  731. package/dist/vite/plugin.d.ts +0 -22
  732. package/dist/vite/plugin.js +0 -171
  733. package/dist/vite/request-events.d.ts +0 -144
  734. package/dist/vite/request-events.js +0 -10
  735. package/dist/vite/types.d.ts +0 -5
  736. package/dist/vite/types.js +0 -0
  737. package/dist/vite/virtual-routes/assets/debug-network.css +0 -609
  738. package/dist/vite/virtual-routes/assets/favicon-dark.svg +0 -20
  739. package/dist/vite/virtual-routes/assets/favicon.svg +0 -28
  740. package/dist/vite/virtual-routes/assets/inter-variable-font.woff2 +0 -0
  741. package/dist/vite/virtual-routes/assets/jetbrainsmono-variable-font.woff2 +0 -0
  742. package/dist/vite/virtual-routes/assets/styles.css +0 -249
  743. package/dist/vite/virtual-routes/components/FlameChartWrapper.jsx +0 -123
  744. package/dist/vite/virtual-routes/components/HydrogenLogoBaseBW.jsx +0 -32
  745. package/dist/vite/virtual-routes/components/HydrogenLogoBaseColor.jsx +0 -47
  746. package/dist/vite/virtual-routes/components/IconBanner.jsx +0 -292
  747. package/dist/vite/virtual-routes/components/IconClose.jsx +0 -38
  748. package/dist/vite/virtual-routes/components/IconDiscard.jsx +0 -44
  749. package/dist/vite/virtual-routes/components/IconError.jsx +0 -61
  750. package/dist/vite/virtual-routes/components/IconGithub.jsx +0 -23
  751. package/dist/vite/virtual-routes/components/IconTwitter.jsx +0 -21
  752. package/dist/vite/virtual-routes/components/Layout.jsx +0 -7
  753. package/dist/vite/virtual-routes/components/RequestDetails.jsx +0 -171
  754. package/dist/vite/virtual-routes/components/RequestTable.jsx +0 -91
  755. package/dist/vite/virtual-routes/components/RequestWaterfall.jsx +0 -151
  756. package/dist/vite/virtual-routes/layout.jsx +0 -33
  757. package/dist/vite/virtual-routes/lib/useDebugNetworkServer.jsx +0 -178
  758. package/dist/vite/virtual-routes/routes/[.]well-known.appspecific.com[.]chrome[.]devtools[.]json.jsx +0 -37
  759. package/dist/vite/virtual-routes/routes/[.]well-known.appspecific.com[.]chrome[.]devtools[.]json.tsx +0 -79
  760. package/dist/vite/virtual-routes/routes/graphiql.jsx +0 -5
  761. package/dist/vite/virtual-routes/routes/index.jsx +0 -265
  762. package/dist/vite/virtual-routes/routes/subrequest-profiler.jsx +0 -243
  763. package/dist/vite/virtual-routes/virtual-root-with-layout.jsx +0 -63
  764. package/dist/vite/virtual-routes/virtual-root.jsx +0 -67
@@ -0,0 +1,647 @@
1
+ #!/usr/bin/env node
2
+ import { createRequire } from "node:module";
3
+ import { cpSync, existsSync, mkdirSync, readFileSync, readdirSync, realpathSync, rmSync, statSync, writeFileSync } from "node:fs";
4
+ import { fileURLToPath } from "node:url";
5
+ import { chmod, mkdir, readFile, rename, rm, writeFile } from "node:fs/promises";
6
+ import { homedir } from "node:os";
7
+ import { dirname, isAbsolute, join, parse, resolve } from "node:path";
8
+ import { spawn } from "node:child_process";
9
+ import { createHash, randomUUID } from "node:crypto";
10
+ import { parseArgs } from "node:util";
11
+
12
+ //#region src/core/logging/types.ts
13
+ const DEFAULT_LOG_LEVEL = "info";
14
+ const LOG_LEVEL_VALUES = {
15
+ trace: 10,
16
+ debug: 20,
17
+ info: 30,
18
+ warn: 40,
19
+ error: 50,
20
+ fatal: 60,
21
+ silent: Number.POSITIVE_INFINITY
22
+ };
23
+ function isLevelEnabled(level, threshold) {
24
+ return LOG_LEVEL_VALUES[level] >= LOG_LEVEL_VALUES[threshold];
25
+ }
26
+
27
+ //#endregion
28
+ //#region src/core/logging/logging.ts
29
+ const CONSOLE_METHODS = {
30
+ trace: "debug",
31
+ debug: "debug",
32
+ info: "info",
33
+ warn: "warn",
34
+ error: "error",
35
+ fatal: "error"
36
+ };
37
+ function formatLogPrefix(level, scope) {
38
+ return `[hydrogen:${level}:${scope}]`;
39
+ }
40
+ function writeToConsole(level, message, context) {
41
+ const { scope, error, ...rest } = context ?? {};
42
+ const args = [scope ? `${formatLogPrefix(level, scope)} ${message}` : message];
43
+ if (error !== void 0) args.push(error);
44
+ if (Object.keys(rest).length > 0) args.push(rest);
45
+ console[CONSOLE_METHODS[level]](...args);
46
+ }
47
+ /**
48
+ * Built-in sink: writes `[hydrogen:<level>:<scope>] <message>` to a
49
+ * level-specific `console` method, followed by `context.error` and any extra
50
+ * context fields. `trace` uses `console.debug`; `fatal` uses `console.error`.
51
+ */
52
+ const consoleLogger = {
53
+ trace: (message, context) => writeToConsole("trace", message, context),
54
+ debug: (message, context) => writeToConsole("debug", message, context),
55
+ info: (message, context) => writeToConsole("info", message, context),
56
+ warn: (message, context) => writeToConsole("warn", message, context),
57
+ error: (message, context) => writeToConsole("error", message, context),
58
+ fatal: (message, context) => writeToConsole("fatal", message, context)
59
+ };
60
+ const state = {
61
+ logger: consoleLogger,
62
+ level: DEFAULT_LOG_LEVEL
63
+ };
64
+ function emit(scope, level, message, context) {
65
+ if (!isLevelEnabled(level, state.level)) return;
66
+ try {
67
+ state.logger[level](message, {
68
+ ...context,
69
+ scope
70
+ });
71
+ } catch (error) {
72
+ reportLoggerFailure(error, {
73
+ level,
74
+ scope,
75
+ message,
76
+ context
77
+ });
78
+ }
79
+ }
80
+ function reportLoggerFailure(error, failedEntry) {
81
+ if (state.logger === consoleLogger) return;
82
+ const fallbackContext = {
83
+ scope: "logging",
84
+ error,
85
+ originalLevel: failedEntry.level,
86
+ originalScope: failedEntry.scope,
87
+ originalMessage: failedEntry.message
88
+ };
89
+ if (failedEntry.context !== void 0) fallbackContext.originalContext = failedEntry.context;
90
+ try {
91
+ consoleLogger.error("configured logger failed", fallbackContext);
92
+ } catch {}
93
+ }
94
+ /** @internal Returns the lazily-resolved scoped logger for a Hydrogen subsystem. */
95
+ function getLogger(scope) {
96
+ return {
97
+ trace: (message, context) => emit(scope, "trace", message, context),
98
+ debug: (message, context) => emit(scope, "debug", message, context),
99
+ info: (message, context) => emit(scope, "info", message, context),
100
+ warn: (message, context) => emit(scope, "warn", message, context),
101
+ error: (message, context) => emit(scope, "error", message, context),
102
+ fatal: (message, context) => emit(scope, "fatal", message, context)
103
+ };
104
+ }
105
+
106
+ //#endregion
107
+ //#region src/vite/mkcert.ts
108
+ const log = getLogger("local-https");
109
+ function confirm(message) {
110
+ consoleLogger.info(`☑️ ${message}`);
111
+ }
112
+ const MKCERT_VERSION = "v1.4.4";
113
+ const MKCERT_RELEASE_BASE_URL = `https://github.com/FiloSottile/mkcert/releases/download/${MKCERT_VERSION}`;
114
+ const EXECUTABLE_MODE = 493;
115
+ const SUCCESS_EXIT_CODE$2 = 0;
116
+ const DOWNLOAD_TIMEOUT_MS = 6e4;
117
+ const MKCERT_BINARIES = {
118
+ "darwin-arm64": {
119
+ assetName: `mkcert-${MKCERT_VERSION}-darwin-arm64`,
120
+ sha256: "c8af0df44bce04359794dad8ea28d750437411d632748049d08644ffb66a60c6"
121
+ },
122
+ "darwin-x64": {
123
+ assetName: `mkcert-${MKCERT_VERSION}-darwin-amd64`,
124
+ sha256: "a32dfab51f1845d51e810db8e47dcf0e6b51ae3422426514bf5a2b8302e97d4e"
125
+ },
126
+ "linux-arm64": {
127
+ assetName: `mkcert-${MKCERT_VERSION}-linux-arm64`,
128
+ sha256: "b98f2cc69fd9147fe4d405d859c57504571adec0d3611c3eefd04107c7ac00d0"
129
+ },
130
+ "linux-x64": {
131
+ assetName: `mkcert-${MKCERT_VERSION}-linux-amd64`,
132
+ sha256: "6d31c65b03972c6dc4a14ab429f2928300518b26503f58723e532d1b0a3bbb52"
133
+ },
134
+ "win32-arm64": {
135
+ assetName: `mkcert-${MKCERT_VERSION}-windows-arm64.exe`,
136
+ sha256: "793747256c562622d40127c8080df26add2fb44c50906ce9db63b42a5280582e"
137
+ },
138
+ "win32-x64": {
139
+ assetName: `mkcert-${MKCERT_VERSION}-windows-amd64.exe`,
140
+ sha256: "d2660b50a9ed59eada480750561c96abc2ed4c9a38c6a24d93e30e0977631398"
141
+ }
142
+ };
143
+ /** @internal Exported for tests. */
144
+ function resolveMkcertBinary(platform, arch) {
145
+ const binary = MKCERT_BINARIES[`${platform}-${arch}`];
146
+ if (!binary) return void 0;
147
+ return {
148
+ ...binary,
149
+ url: `${MKCERT_RELEASE_BASE_URL}/${binary.assetName}`
150
+ };
151
+ }
152
+ function sha256Hex(bytes) {
153
+ return createHash("sha256").update(bytes).digest("hex");
154
+ }
155
+ /** @internal Exported for tests. */
156
+ async function downloadVerified(options) {
157
+ let bytes;
158
+ try {
159
+ const response = await fetch(options.url, { signal: AbortSignal.timeout(DOWNLOAD_TIMEOUT_MS) });
160
+ if (!response.ok) throw new Error(`mkcert download failed with status ${response.status}: ${options.url}`);
161
+ bytes = new Uint8Array(await response.arrayBuffer());
162
+ } catch (error) {
163
+ if (error instanceof Error && error.name === "TimeoutError") throw new Error(`mkcert download timed out after ${DOWNLOAD_TIMEOUT_MS / 1e3}s: ${options.url}`, { cause: error });
164
+ throw error;
165
+ }
166
+ const digest = sha256Hex(bytes);
167
+ if (digest !== options.sha256) throw new Error(`mkcert download did not match the pinned SHA-256 checksum; refusing to run it.\n URL: ${options.url}\n Expected: ${options.sha256}\n Received: ${digest}`);
168
+ await mkdir(dirname(options.destination), { recursive: true });
169
+ const temporaryPath = `${options.destination}.tmp-${process.pid}`;
170
+ try {
171
+ await writeFile(temporaryPath, bytes, { mode: EXECUTABLE_MODE });
172
+ await chmod(temporaryPath, EXECUTABLE_MODE);
173
+ await rename(temporaryPath, options.destination);
174
+ } catch (error) {
175
+ await rm(temporaryPath, { force: true });
176
+ throw error;
177
+ }
178
+ }
179
+ async function ensureMkcertBinary() {
180
+ const binary = resolveMkcertBinary(process.platform, process.arch);
181
+ if (!binary) throw new Error(`Automatic mkcert download is not available for ${process.platform}-${process.arch}. Install mkcert manually and generate the certificate.`);
182
+ const binaryPath = join(homedir(), ".shopify", "hydrogen", "mkcert", binary.assetName);
183
+ if (existsSync(binaryPath) && sha256Hex(await readFile(binaryPath)) === binary.sha256) return binaryPath;
184
+ log.info(`downloading mkcert ${MKCERT_VERSION}…`);
185
+ await downloadVerified({
186
+ url: binary.url,
187
+ sha256: binary.sha256,
188
+ destination: binaryPath
189
+ });
190
+ confirm(`mkcert ${MKCERT_VERSION} downloaded`);
191
+ return binaryPath;
192
+ }
193
+ function runMkcert(binaryPath, args) {
194
+ return new Promise((resolve, reject) => {
195
+ const child = spawn(binaryPath, args, { stdio: [
196
+ "inherit",
197
+ "pipe",
198
+ "pipe"
199
+ ] });
200
+ let output = "";
201
+ const collect = (chunk) => {
202
+ output += chunk.toString();
203
+ };
204
+ child.stdout?.on("data", collect);
205
+ child.stderr?.on("data", collect);
206
+ child.on("error", reject);
207
+ child.on("close", (code, signal) => {
208
+ if (code === SUCCESS_EXIT_CODE$2) {
209
+ resolve(output);
210
+ return;
211
+ }
212
+ const reason = signal ? `mkcert was killed by ${signal}` : `mkcert exited with code ${code}`;
213
+ reject(new Error(output.trim() === "" ? reason : `${reason}\n${output.trim()}`));
214
+ });
215
+ });
216
+ }
217
+ async function provisionCertificates(settings) {
218
+ const binaryPath = await ensureMkcertBinary();
219
+ await mkdir(dirname(settings.certPath), { recursive: true });
220
+ await mkdir(dirname(settings.keyPath), { recursive: true });
221
+ log.info("generating a trusted local certificate; mkcert may prompt for your password.");
222
+ confirm((await runMkcert(binaryPath, [
223
+ "-install",
224
+ "-cert-file",
225
+ settings.certPath,
226
+ "-key-file",
227
+ settings.keyPath,
228
+ settings.host
229
+ ])).includes("The local CA is already installed") ? "The local CA is already installed in the system trust store" : "The local CA is now installed in the system trust store");
230
+ confirm(`Created a new certificate for "${settings.host}"`);
231
+ log.info("verifying certificates…");
232
+ const missingPaths = [settings.certPath, settings.keyPath].filter((path) => !existsSync(path));
233
+ if (missingPaths.length > 0) throw new Error(`mkcert did not create the expected files: ${missingPaths.join(", ")}`);
234
+ confirm("local https certificates ready");
235
+ }
236
+ async function uninstallCertificateAuthority() {
237
+ const binaryPath = await ensureMkcertBinary();
238
+ log.info("removing the local certificate authority; mkcert may prompt for your password.");
239
+ await runMkcert(binaryPath, ["-uninstall"]);
240
+ confirm("The local CA was removed from the system trust stores");
241
+ }
242
+
243
+ //#endregion
244
+ //#region src/vite/local-https.ts
245
+ const LOCAL_HTTPS_DEFAULTS = {
246
+ host: "local.tryhydrogen.dev",
247
+ port: 5173
248
+ };
249
+ /**
250
+ * Downloads a pinned, checksum-verified mkcert release and generates the
251
+ * trusted local certificate files when they do not exist yet. The Vite plugin
252
+ * runs this automatically on `vite dev`; call it directly for frameworks that
253
+ * read certificate paths before Vite starts or from setup scripts.
254
+ */
255
+ async function provisionLocalHttps(options = {}) {
256
+ const settings = resolveLocalHttpsSettings({
257
+ enabled: true,
258
+ ...options
259
+ });
260
+ if (!certificateFilesExist(settings)) await provisionCertificates(settings);
261
+ return {
262
+ host: settings.host,
263
+ certPath: settings.certPath,
264
+ keyPath: settings.keyPath
265
+ };
266
+ }
267
+ function resolveLocalHttpsSettings(options) {
268
+ const host = options.host ?? LOCAL_HTTPS_DEFAULTS.host;
269
+ const certificateDirectory = join(homedir(), ".shopify", "hydrogen", "certs");
270
+ return {
271
+ host,
272
+ port: options.port ?? LOCAL_HTTPS_DEFAULTS.port,
273
+ certPath: resolveCertificatePath(options.certPath ?? join(certificateDirectory, `${host}.pem`)),
274
+ keyPath: resolveCertificatePath(options.keyPath ?? join(certificateDirectory, `${host}-key.pem`))
275
+ };
276
+ }
277
+ function resolveCertificatePath(path) {
278
+ if (path instanceof URL) return fileURLToPath(path);
279
+ if (path === "~") return homedir();
280
+ if (path.startsWith("~/")) return resolve(homedir(), path.slice(2));
281
+ return isAbsolute(path) ? path : resolve(path);
282
+ }
283
+ function certificateFilesExist(settings) {
284
+ return existsSync(settings.certPath) && existsSync(settings.keyPath);
285
+ }
286
+
287
+ //#endregion
288
+ //#region src/cli/certs.ts
289
+ const REMOVE_CA_FLAG = "--remove-ca";
290
+ async function installLocalHttpsCertificates() {
291
+ const { host, certPath, keyPath } = await provisionLocalHttps();
292
+ console.log(`Local HTTPS is ready for https://${host}`);
293
+ console.log(` Certificate: ${certPath}`);
294
+ console.log(` Private key: ${keyPath}`);
295
+ }
296
+ async function uninstallLocalHttpsCertificates(args = []) {
297
+ const unknownArgument = args.find((argument) => argument !== REMOVE_CA_FLAG);
298
+ if (unknownArgument) throw new Error(`Unknown argument: ${unknownArgument}`);
299
+ const removeCertificateAuthority = args.includes(REMOVE_CA_FLAG);
300
+ if (removeCertificateAuthority) {
301
+ console.warn("Warning: removing mkcert's shared local CA will make certificates created by other projects untrusted.");
302
+ await uninstallCertificateAuthority();
303
+ }
304
+ const hydrogenDirectory = join(homedir(), ".shopify", "hydrogen");
305
+ const certificateDirectory = join(hydrogenDirectory, "certs");
306
+ const host = LOCAL_HTTPS_DEFAULTS.host;
307
+ const binary = resolveMkcertBinary(process.platform, process.arch);
308
+ const removals = [rm(join(certificateDirectory, `${host}.pem`), { force: true }), rm(join(certificateDirectory, `${host}-key.pem`), { force: true })];
309
+ if (binary) removals.push(rm(join(hydrogenDirectory, "mkcert", binary.assetName), { force: true }));
310
+ await Promise.all(removals);
311
+ console.log("Hydrogen's local HTTPS certificate files were removed.");
312
+ if (!removeCertificateAuthority) console.log(`The shared mkcert CA remains trusted. Pass ${REMOVE_CA_FLAG} to remove it.`);
313
+ }
314
+
315
+ //#endregion
316
+ //#region src/graphql/plugin-config.ts
317
+ const STOREFRONT_SCHEMA_FILE_NAME = "storefront.schema.json";
318
+ const CUSTOMER_ACCOUNT_SCHEMA_FILE_NAME = "customer-account.schema.json";
319
+ const STOREFRONT_OUTPUT_FILE_NAME = "storefront-graphql-env.d.ts";
320
+ const CUSTOMER_ACCOUNT_OUTPUT_FILE_NAME = "customer-account-graphql-env.d.ts";
321
+ function createGraphQLPluginConfig(schemaDirectory) {
322
+ return {
323
+ name: "gql.tada/ts-plugin",
324
+ schemas: [{
325
+ name: "storefront",
326
+ schema: join(schemaDirectory, STOREFRONT_SCHEMA_FILE_NAME),
327
+ tadaOutputLocation: STOREFRONT_OUTPUT_FILE_NAME
328
+ }, {
329
+ name: "customer-account",
330
+ schema: join(schemaDirectory, CUSTOMER_ACCOUNT_SCHEMA_FILE_NAME),
331
+ tadaOutputLocation: CUSTOMER_ACCOUNT_OUTPUT_FILE_NAME
332
+ }],
333
+ trackFieldUsage: false
334
+ };
335
+ }
336
+
337
+ //#endregion
338
+ //#region src/cli/gql.ts
339
+ const GQL_TADA_CLI_PATH_FROM_PACKAGE_ROOT = "bin/cli.js";
340
+ const PACKAGE_ROOT_FROM_CLI_MODULE$1 = "../../";
341
+ const SUCCESS_EXIT_CODE$1 = 0;
342
+ const TSCONFIG_FILE_NAME = "tsconfig.json";
343
+ const TEMPORARY_TSCONFIG_PREFIX = ".hydrogen-gql-";
344
+ const CHECK_LEVELS = new Set([
345
+ "info",
346
+ "warn",
347
+ "error"
348
+ ]);
349
+ function findTsconfig(cwd, configuredPath) {
350
+ if (configuredPath) return resolve(cwd, configuredPath);
351
+ let directory = cwd;
352
+ const root = parse(directory).root;
353
+ while (directory !== root) {
354
+ const candidate = join(directory, TSCONFIG_FILE_NAME);
355
+ if (existsSync(candidate)) return candidate;
356
+ directory = dirname(directory);
357
+ }
358
+ const rootCandidate = join(root, TSCONFIG_FILE_NAME);
359
+ if (existsSync(rootCandidate)) return rootCandidate;
360
+ throw new Error(`Could not find ${TSCONFIG_FILE_NAME}.`);
361
+ }
362
+ function spawnRunCommand$1(command, args, options) {
363
+ return new Promise((resolvePromise, reject) => {
364
+ const child = spawn(command, args, {
365
+ cwd: options.cwd,
366
+ stdio: "inherit"
367
+ });
368
+ child.on("error", reject);
369
+ child.on("close", (code) => {
370
+ if (code === SUCCESS_EXIT_CODE$1) {
371
+ resolvePromise();
372
+ return;
373
+ }
374
+ reject(/* @__PURE__ */ new Error(`Command failed with exit code ${code}: ${command} ${args.join(" ")}`));
375
+ });
376
+ });
377
+ }
378
+ function getPackageRoot$1() {
379
+ return resolve(import.meta.dirname, PACKAGE_ROOT_FROM_CLI_MODULE$1);
380
+ }
381
+ function getGqlTadaCliPath() {
382
+ return join(dirname(createRequire(import.meta.url).resolve("gql.tada/package.json")), GQL_TADA_CLI_PATH_FROM_PACKAGE_ROOT);
383
+ }
384
+ function parseCheckArgs(args) {
385
+ const { values } = parseArgs({
386
+ args,
387
+ options: {
388
+ "fail-on-warn": {
389
+ type: "boolean",
390
+ short: "w",
391
+ default: false
392
+ },
393
+ level: {
394
+ type: "string",
395
+ short: "l",
396
+ default: "info"
397
+ },
398
+ tsconfig: {
399
+ type: "string",
400
+ short: "c"
401
+ }
402
+ },
403
+ strict: true
404
+ });
405
+ if (!CHECK_LEVELS.has(values.level)) throw new Error(`Invalid diagnostic level: ${values.level}`);
406
+ return values;
407
+ }
408
+ async function checkGraphQL(options = {}) {
409
+ const cwd = options.cwd ?? process.cwd();
410
+ const packageRoot = options.packageRoot ?? getPackageRoot$1();
411
+ const gqlTadaCliPath = options.gqlTadaCliPath ?? getGqlTadaCliPath();
412
+ const runCommand = options.runCommand ?? spawnRunCommand$1;
413
+ const values = parseCheckArgs(options.args ?? []);
414
+ const tsconfigPath = findTsconfig(cwd, values.tsconfig);
415
+ const temporaryTsconfigPath = join(dirname(tsconfigPath), `${TEMPORARY_TSCONFIG_PREFIX}${randomUUID()}.json`);
416
+ const pluginConfig = createGraphQLPluginConfig(join(packageRoot, "dist"));
417
+ writeFileSync(temporaryTsconfigPath, JSON.stringify({
418
+ extends: tsconfigPath,
419
+ compilerOptions: { plugins: [pluginConfig] }
420
+ }), { flag: "wx" });
421
+ const cliArgs = [
422
+ gqlTadaCliPath,
423
+ "check",
424
+ "--tsconfig",
425
+ temporaryTsconfigPath,
426
+ "--level",
427
+ values.level
428
+ ];
429
+ if (values["fail-on-warn"]) cliArgs.push("--fail-on-warn");
430
+ const cleanup = () => rmSync(temporaryTsconfigPath, { force: true });
431
+ process.once("exit", cleanup);
432
+ try {
433
+ await runCommand(process.execPath, cliArgs, { cwd });
434
+ } finally {
435
+ process.off("exit", cleanup);
436
+ cleanup();
437
+ }
438
+ }
439
+
440
+ //#endregion
441
+ //#region src/core/utils/record.ts
442
+ function isObjectRecord(value) {
443
+ return typeof value === "object" && value !== null && !Array.isArray(value);
444
+ }
445
+
446
+ //#endregion
447
+ //#region src/cli/setup.ts
448
+ const PACKAGE_NAME = "@shopify/hydrogen";
449
+ const PACKAGE_INSTALL_SPEC = `${PACKAGE_NAME}@preview`;
450
+ const PACKAGE_ROOT_FROM_CLI_MODULE = "../../";
451
+ const SKILLS_DIRECTORY_NAME = "skills";
452
+ const CLAUDE_DIRECTORY_NAME = ".claude";
453
+ const AGENTS_DIRECTORY_NAME = ".agents";
454
+ const NODE_MODULES_DIRECTORY_NAME = "node_modules";
455
+ const PACKAGE_JSON_FILE_NAME = "package.json";
456
+ const SUCCESS_EXIT_CODE = 0;
457
+ const PACKAGE_MANAGER_LOCKFILES = [
458
+ ["pnpm", "pnpm-lock.yaml"],
459
+ ["yarn", "yarn.lock"],
460
+ ["npm", "package-lock.json"],
461
+ ["bun", "bun.lockb"],
462
+ ["bun", "bun.lock"]
463
+ ];
464
+ const INSTALL_ARGS = {
465
+ pnpm: ["add", PACKAGE_INSTALL_SPEC],
466
+ npm: ["install", PACKAGE_INSTALL_SPEC],
467
+ yarn: ["add", PACKAGE_INSTALL_SPEC],
468
+ bun: ["add", PACKAGE_INSTALL_SPEC]
469
+ };
470
+ function getStringRecord(value) {
471
+ if (!isObjectRecord(value)) return void 0;
472
+ const entries = Object.entries(value);
473
+ if (entries.some(([, entryValue]) => typeof entryValue !== "string")) return void 0;
474
+ return Object.fromEntries(entries);
475
+ }
476
+ function readPackageJson(appRoot) {
477
+ const packageJsonPath = join(appRoot, PACKAGE_JSON_FILE_NAME);
478
+ if (!existsSync(packageJsonPath)) throw new Error(`No ${PACKAGE_JSON_FILE_NAME} found. Run this command from the app root.`);
479
+ const parsed = JSON.parse(readFileSync(packageJsonPath, "utf8"));
480
+ if (!isObjectRecord(parsed)) throw new Error(`${PACKAGE_JSON_FILE_NAME} must contain a JSON object.`);
481
+ return {
482
+ packageManager: typeof parsed.packageManager === "string" ? parsed.packageManager : void 0,
483
+ dependencies: getStringRecord(parsed.dependencies),
484
+ devDependencies: getStringRecord(parsed.devDependencies)
485
+ };
486
+ }
487
+ function parsePackageManager(value) {
488
+ if (!value) return void 0;
489
+ for (const packageManager of Object.keys(INSTALL_ARGS)) {
490
+ if (value === packageManager) return packageManager;
491
+ if (value.startsWith(`${packageManager}@`)) return packageManager;
492
+ if (value.startsWith(`${packageManager}/`)) return packageManager;
493
+ }
494
+ }
495
+ function detectPackageManager(appRoot, packageJson, env) {
496
+ const packageJsonManager = parsePackageManager(packageJson.packageManager);
497
+ if (packageJsonManager) return packageJsonManager;
498
+ for (const [packageManager, lockfile] of PACKAGE_MANAGER_LOCKFILES) if (existsSync(join(appRoot, lockfile))) return packageManager;
499
+ const userAgentManager = parsePackageManager(env.npm_config_user_agent);
500
+ if (userAgentManager) return userAgentManager;
501
+ throw new Error("Could not detect a package manager. Add a packageManager field or a lockfile before running setup.");
502
+ }
503
+ function hasHydrogenDependency(packageJson) {
504
+ return Boolean(packageJson.dependencies?.[PACKAGE_NAME] ?? packageJson.devDependencies?.[PACKAGE_NAME]);
505
+ }
506
+ async function installHydrogen(appRoot, packageManager, runCommand) {
507
+ await runCommand(packageManager, [...INSTALL_ARGS[packageManager]], { cwd: appRoot });
508
+ }
509
+ function assertDirectory(directoryPath, message) {
510
+ if (!existsSync(directoryPath) || !statSync(directoryPath).isDirectory()) throw new Error(message);
511
+ }
512
+ function getSkillsDestinationRoots(appRoot) {
513
+ const destinationRoots = [];
514
+ const claudeDirectory = join(appRoot, CLAUDE_DIRECTORY_NAME);
515
+ if (existsSync(claudeDirectory)) {
516
+ assertDirectory(claudeDirectory, `${CLAUDE_DIRECTORY_NAME} exists but is not a directory.`);
517
+ destinationRoots.push(join(claudeDirectory, SKILLS_DIRECTORY_NAME));
518
+ }
519
+ const agentsDirectory = join(appRoot, AGENTS_DIRECTORY_NAME);
520
+ if (existsSync(agentsDirectory)) {
521
+ assertDirectory(agentsDirectory, `${AGENTS_DIRECTORY_NAME} exists but is not a directory.`);
522
+ destinationRoots.push(join(agentsDirectory, SKILLS_DIRECTORY_NAME));
523
+ }
524
+ return destinationRoots.length > 0 ? destinationRoots : [join(appRoot, AGENTS_DIRECTORY_NAME, SKILLS_DIRECTORY_NAME)];
525
+ }
526
+ function getSkillNames(sourceSkillsRoot) {
527
+ assertDirectory(sourceSkillsRoot, `No packaged skills found at ${sourceSkillsRoot}.`);
528
+ return readdirSync(sourceSkillsRoot, { withFileTypes: true }).filter((entry) => entry.isDirectory()).map((entry) => entry.name);
529
+ }
530
+ function findConflictingSkills(destinationRoot, skillNames) {
531
+ return skillNames.filter((skillName) => existsSync(join(destinationRoot, skillName, "SKILL.md")));
532
+ }
533
+ function removeIncompleteSkills(destinationRoot, skillNames) {
534
+ for (const skillName of skillNames) {
535
+ const destinationPath = join(destinationRoot, skillName);
536
+ if (!existsSync(destinationPath)) continue;
537
+ if (existsSync(join(destinationPath, "SKILL.md"))) continue;
538
+ rmSync(destinationPath, {
539
+ recursive: true,
540
+ force: true
541
+ });
542
+ }
543
+ }
544
+ function copySkills(packageRoot, appRoot) {
545
+ const sourceSkillsRoot = join(packageRoot, SKILLS_DIRECTORY_NAME);
546
+ const destinationRoots = getSkillsDestinationRoots(appRoot);
547
+ const skillNames = getSkillNames(sourceSkillsRoot);
548
+ const conflictingSkills = destinationRoots.flatMap((destinationRoot) => findConflictingSkills(destinationRoot, skillNames).map((skillName) => join(destinationRoot, skillName)));
549
+ if (conflictingSkills.length > 0) throw new Error(`Skill directories already exist: ${conflictingSkills.join(", ")}. Remove them and rerun setup.`);
550
+ for (const destinationRoot of destinationRoots) {
551
+ removeIncompleteSkills(destinationRoot, skillNames);
552
+ mkdirSync(destinationRoot, { recursive: true });
553
+ for (const skillName of skillNames) cpSync(join(sourceSkillsRoot, skillName), join(destinationRoot, skillName), {
554
+ recursive: true,
555
+ errorOnExist: true,
556
+ force: false
557
+ });
558
+ }
559
+ return {
560
+ destinationRoots,
561
+ copiedCount: skillNames.length * destinationRoots.length
562
+ };
563
+ }
564
+ function getPackageRoot() {
565
+ return fileURLToPath(new URL(PACKAGE_ROOT_FROM_CLI_MODULE, import.meta.url));
566
+ }
567
+ function getLocalPackageRoot(appRoot) {
568
+ const localPackageRoot = join(appRoot, NODE_MODULES_DIRECTORY_NAME, PACKAGE_NAME);
569
+ if (!existsSync(localPackageRoot)) return void 0;
570
+ assertDirectory(localPackageRoot, `${localPackageRoot} exists but is not a directory.`);
571
+ return realpathSync(localPackageRoot);
572
+ }
573
+ function spawnRunCommand(command, args, options) {
574
+ return new Promise((resolve, reject) => {
575
+ const child = spawn(command, args, {
576
+ cwd: options.cwd,
577
+ stdio: "inherit"
578
+ });
579
+ child.on("error", reject);
580
+ child.on("close", (code) => {
581
+ if (code === SUCCESS_EXIT_CODE) {
582
+ resolve();
583
+ return;
584
+ }
585
+ reject(/* @__PURE__ */ new Error(`Command failed with exit code ${code}: ${command} ${args.join(" ")}`));
586
+ });
587
+ });
588
+ }
589
+ async function setupHydrogen(options = {}) {
590
+ const appRoot = options.cwd ?? process.cwd();
591
+ const env = options.env ?? process.env;
592
+ const runCommand = options.runCommand ?? spawnRunCommand;
593
+ const log = options.log ?? console.log;
594
+ const packageJson = readPackageJson(appRoot);
595
+ if (!hasHydrogenDependency(packageJson)) {
596
+ const packageManager = detectPackageManager(appRoot, packageJson, env);
597
+ log(`Installing ${PACKAGE_NAME} with ${packageManager}...`);
598
+ await installHydrogen(appRoot, packageManager, runCommand);
599
+ }
600
+ const result = copySkills(options.packageRoot ?? getLocalPackageRoot(appRoot) ?? getPackageRoot(), appRoot);
601
+ log(`Copied ${result.copiedCount} Hydrogen skills to ${result.destinationRoots.join(", ")}.`);
602
+ }
603
+
604
+ //#endregion
605
+ //#region src/cli/index.ts
606
+ const CLI_ARGUMENTS_INDEX = 2;
607
+ const FAILURE_EXIT_CODE = 1;
608
+ const COMMANDS = [
609
+ {
610
+ path: ["certs", "install"],
611
+ run: async (_args) => installLocalHttpsCertificates()
612
+ },
613
+ {
614
+ path: ["certs", "uninstall"],
615
+ run: async (args) => uninstallLocalHttpsCertificates(args)
616
+ },
617
+ {
618
+ path: ["setup"],
619
+ run: async (_args) => setupHydrogen()
620
+ },
621
+ {
622
+ path: ["gql", "check"],
623
+ run: async (args) => checkGraphQL({ args })
624
+ }
625
+ ];
626
+ function commandMatches(path, args) {
627
+ return path.every((segment, index) => args[index] === segment);
628
+ }
629
+ function runCli() {
630
+ const args = process.argv.slice(CLI_ARGUMENTS_INDEX);
631
+ const command = COMMANDS.find(({ path }) => commandMatches(path, args));
632
+ if (!command) {
633
+ const commandName = args.join(" ");
634
+ const availableCommands = COMMANDS.map(({ path }) => path.join(" ")).join(", ");
635
+ console.error(commandName ? `Unknown command: ${commandName}` : "No command specified.");
636
+ console.error(`Available commands: ${availableCommands}`);
637
+ process.exit(FAILURE_EXIT_CODE);
638
+ }
639
+ command.run(args.slice(command.path.length)).catch((error) => {
640
+ console.error(error instanceof Error ? error.message : "An unexpected error occurred");
641
+ process.exit(FAILURE_EXIT_CODE);
642
+ });
643
+ }
644
+ if (process.argv[1] !== void 0 && fileURLToPath(import.meta.url) === realpathSync(process.argv[1])) runCli();
645
+
646
+ //#endregion
647
+ export { runCli };
@@ -0,0 +1,34 @@
1
+ import { CachingStrategy } from "../core/cache/strategies.mjs";
2
+ import { CacheInstance } from "../core/cache/run-with-cache.mjs";
3
+ import { ShopifyRequestContext } from "../core/request-context.mjs";
4
+ import { ClientType, CreateStorefrontClientArgs, StorefrontClient } from "./types.mjs";
5
+
6
+ //#region src/client/client.d.ts
7
+ /**
8
+ * Creates a type-safe Storefront API client.
9
+ *
10
+ * Pick a `type` based on where your code runs and whether buyer context is available:
11
+ *
12
+ * | | public | private | private_no_buyer_context |
13
+ * |-----------------|--------------------------------|-------------------------------|--------------------------|
14
+ * | Runs in | Browser or mobile | Server (SSR) | Server (background) |
15
+ * | Token | Public access token, or none | Private access token | Private access token |
16
+ * | Buyer context | Browser request context | You forward trusted `buyerIp` | None |
17
+ * | Best for | Client-side fetches | SSR with buyer context | Webhooks, background jobs |
18
+ *
19
+ * Pass `requestContext` so the client's SFAPI requests carry request-scoped
20
+ * headers, follow the incoming request's abort signal, and read the resolved
21
+ * `i18n` used for Storefront API variable injection and localized routes.
22
+ *
23
+ * Token-based access is required for some Storefront API fields, including
24
+ * product tags, metaobjects, metafields, menus, and customers. Use a private
25
+ * client only in trusted server code where the token cannot leak to browsers.
26
+ *
27
+ * @see {@link https://shopify.dev/docs/api/storefront#authentication | Storefront API authentication}
28
+ */
29
+ declare function createStorefrontClient<const Type extends ClientType, const RequestContext extends ShopifyRequestContext, const CacheConfig extends CacheInstance | undefined = undefined>(args: CreateStorefrontClientArgs<RequestContext, Type, CacheConfig>): StorefrontClient<[CacheConfig] extends [CacheInstance] ? {
30
+ cache?: CachingStrategy;
31
+ } : {}, Type, RequestContext>;
32
+ //#endregion
33
+ export { createStorefrontClient };
34
+ //# sourceMappingURL=client.d.mts.map