@shopify/cli-hydrogen 7.1.2 → 8.0.1

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 (145) hide show
  1. package/dist/commands/hydrogen/build-vite.js +19 -10
  2. package/dist/commands/hydrogen/build.js +10 -2
  3. package/dist/commands/hydrogen/check.js +1 -0
  4. package/dist/commands/hydrogen/codegen.js +1 -0
  5. package/dist/commands/hydrogen/customer-account/push.js +170 -0
  6. package/dist/commands/hydrogen/debug/cpu.js +10 -1
  7. package/dist/commands/hydrogen/deploy.js +110 -36
  8. package/dist/commands/hydrogen/dev-vite.js +128 -59
  9. package/dist/commands/hydrogen/dev.js +108 -51
  10. package/dist/commands/hydrogen/env/list.js +20 -28
  11. package/dist/commands/hydrogen/env/pull.js +29 -19
  12. package/dist/commands/hydrogen/env/{push__unstable.js → push.js} +34 -68
  13. package/dist/commands/hydrogen/generate/route.js +1 -0
  14. package/dist/commands/hydrogen/init.js +39 -21
  15. package/dist/commands/hydrogen/link.js +25 -6
  16. package/dist/commands/hydrogen/list.js +1 -0
  17. package/dist/commands/hydrogen/login.js +1 -0
  18. package/dist/commands/hydrogen/logout.js +1 -0
  19. package/dist/commands/hydrogen/preview.js +31 -16
  20. package/dist/commands/hydrogen/setup/css.js +8 -1
  21. package/dist/commands/hydrogen/setup/markets.js +1 -0
  22. package/dist/commands/hydrogen/setup/vite.js +244 -138
  23. package/dist/commands/hydrogen/setup.js +21 -23
  24. package/dist/commands/hydrogen/shortcut.js +10 -0
  25. package/dist/commands/hydrogen/unlink.js +1 -0
  26. package/dist/commands/hydrogen/upgrade.js +2 -1
  27. package/dist/generator-templates/assets/vite/package.json +3 -4
  28. package/dist/generator-templates/assets/vite/vite.config.js +15 -2
  29. package/dist/generator-templates/starter/CHANGELOG.md +129 -0
  30. package/dist/generator-templates/starter/README.md +3 -44
  31. package/dist/generator-templates/starter/app/components/Footer.tsx +1 -1
  32. package/dist/generator-templates/starter/app/components/Header.tsx +1 -1
  33. package/dist/generator-templates/starter/app/graphql/customer-account/CustomerDetailsQuery.ts +1 -0
  34. package/dist/generator-templates/starter/app/lib/fragments.ts +2 -0
  35. package/dist/generator-templates/starter/app/lib/root-data.ts +11 -0
  36. package/dist/generator-templates/starter/app/root.tsx +4 -20
  37. package/dist/generator-templates/starter/app/routes/account.orders._index.tsx +1 -1
  38. package/dist/generator-templates/starter/app/routes/account.tsx +1 -1
  39. package/dist/generator-templates/starter/app/routes/blogs.$blogHandle._index.tsx +3 -3
  40. package/dist/generator-templates/starter/app/routes/cart.tsx +1 -1
  41. package/dist/generator-templates/starter/app/routes/collections.all.tsx +160 -0
  42. package/dist/generator-templates/starter/app/routes/products.$handle.tsx +1 -2
  43. package/dist/generator-templates/starter/customer-accountapi.generated.d.ts +6 -3
  44. package/dist/generator-templates/starter/{remix.env.d.ts → env.d.ts} +8 -2
  45. package/dist/generator-templates/starter/package.json +14 -9
  46. package/dist/generator-templates/starter/server.ts +2 -1
  47. package/dist/generator-templates/starter/storefrontapi.generated.d.ts +59 -3
  48. package/dist/generator-templates/starter/vite.config.ts +26 -0
  49. package/dist/{commands/hydrogen/init.d.ts → init.d.ts} +11 -4
  50. package/dist/lib/check-lockfile.js +12 -18
  51. package/dist/lib/codegen.js +37 -13
  52. package/dist/lib/common.js +50 -0
  53. package/dist/lib/cpu-profiler.js +4 -1
  54. package/dist/lib/dev-shared.js +99 -0
  55. package/dist/lib/environment-variables.js +51 -30
  56. package/dist/lib/file.js +8 -1
  57. package/dist/lib/flags.js +37 -26
  58. package/dist/lib/get-oxygen-deployment-data.js +10 -17
  59. package/dist/lib/graphql/admin/customer-application-update.js +29 -0
  60. package/dist/lib/graphql/admin/get-oxygen-data.js +1 -0
  61. package/dist/lib/graphql/admin/list-environments.js +1 -0
  62. package/dist/lib/graphql/admin/pull-variables.js +4 -4
  63. package/dist/lib/graphql/admin/test-helper.js +37 -0
  64. package/dist/lib/log.js +86 -13
  65. package/dist/lib/mini-oxygen/common.js +19 -33
  66. package/dist/lib/mini-oxygen/index.js +6 -2
  67. package/dist/lib/mini-oxygen/node.js +43 -31
  68. package/dist/lib/mini-oxygen/workerd.js +72 -165
  69. package/dist/lib/missing-routes.js +1 -1
  70. package/dist/lib/onboarding/common.js +85 -70
  71. package/dist/lib/onboarding/local.js +19 -9
  72. package/dist/lib/onboarding/remote.js +35 -30
  73. package/dist/lib/package-managers.js +24 -0
  74. package/dist/lib/remix-config.js +17 -1
  75. package/dist/lib/render-errors.js +17 -10
  76. package/dist/lib/request-events.js +6 -1
  77. package/dist/lib/setups/i18n/replacers.js +9 -6
  78. package/dist/lib/setups/routes/generate.js +1 -0
  79. package/dist/lib/shell.js +2 -1
  80. package/dist/lib/shopify-config.js +19 -1
  81. package/dist/lib/template-diff.js +36 -15
  82. package/dist/lib/template-downloader.js +35 -5
  83. package/dist/lib/transpile/morph/functions.js +26 -8
  84. package/dist/lib/transpile/morph/typedefs.js +6 -4
  85. package/dist/lib/transpile/project.js +8 -4
  86. package/dist/lib/tunneling.js +44 -0
  87. package/dist/lib/verify-linked-storefront.js +24 -0
  88. package/dist/lib/virtual-routes.js +1 -1
  89. package/dist/lib/vite-config.js +39 -9
  90. package/oclif.manifest.json +704 -508
  91. package/package.json +32 -24
  92. package/dist/commands/hydrogen/deploy.test.js +0 -553
  93. package/dist/commands/hydrogen/env/list.test.js +0 -148
  94. package/dist/commands/hydrogen/env/pull.test.js +0 -207
  95. package/dist/commands/hydrogen/env/push__unstable.test.js +0 -383
  96. package/dist/commands/hydrogen/generate/route.test.js +0 -43
  97. package/dist/commands/hydrogen/init.test.js +0 -641
  98. package/dist/commands/hydrogen/link.test.js +0 -187
  99. package/dist/commands/hydrogen/list.test.js +0 -111
  100. package/dist/commands/hydrogen/setup.test.js +0 -61
  101. package/dist/commands/hydrogen/shortcut.test.js +0 -30
  102. package/dist/commands/hydrogen/unlink.test.js +0 -36
  103. package/dist/commands/hydrogen/upgrade.test.js +0 -786
  104. package/dist/generator-templates/starter/remix.config.js +0 -24
  105. package/dist/lib/auth.test.js +0 -157
  106. package/dist/lib/check-lockfile.test.js +0 -81
  107. package/dist/lib/check-version.test.js +0 -86
  108. package/dist/lib/environment-variables.test.js +0 -149
  109. package/dist/lib/file.test.js +0 -68
  110. package/dist/lib/flags.test.js +0 -43
  111. package/dist/lib/get-oxygen-deployment-data.test.js +0 -120
  112. package/dist/lib/gid.test.js +0 -15
  113. package/dist/lib/graphql/admin/client.test.js +0 -76
  114. package/dist/lib/graphql/admin/create-storefront.test.js +0 -64
  115. package/dist/lib/graphql/admin/link-storefront.test.js +0 -38
  116. package/dist/lib/graphql/admin/list-environments.test.js +0 -44
  117. package/dist/lib/graphql/admin/list-storefronts.test.js +0 -44
  118. package/dist/lib/graphql/admin/pull-variables.test.js +0 -43
  119. package/dist/lib/graphql/business-platform/user-account.test.js +0 -80
  120. package/dist/lib/log.test.js +0 -92
  121. package/dist/lib/mini-oxygen/assets.js +0 -134
  122. package/dist/lib/mini-oxygen/mini-oxygen.test.js +0 -214
  123. package/dist/lib/mini-oxygen/workerd-inspector-logs.js +0 -227
  124. package/dist/lib/mini-oxygen/workerd-inspector-proxy.js +0 -200
  125. package/dist/lib/mini-oxygen/workerd-inspector.js +0 -219
  126. package/dist/lib/missing-routes.test.js +0 -45
  127. package/dist/lib/remix-version-check.test.js +0 -39
  128. package/dist/lib/remix-version-interop.test.js +0 -13
  129. package/dist/lib/setups/i18n/domains.test.js +0 -39
  130. package/dist/lib/setups/i18n/replacers.test.js +0 -261
  131. package/dist/lib/setups/i18n/subdomains.test.js +0 -39
  132. package/dist/lib/setups/i18n/subfolders.test.js +0 -39
  133. package/dist/lib/setups/routes/generate.test.js +0 -296
  134. package/dist/lib/shell.test.js +0 -111
  135. package/dist/lib/shopify-config.test.js +0 -199
  136. package/dist/lib/string.test.js +0 -16
  137. package/dist/lib/virtual-routes.test.js +0 -49
  138. package/dist/lib/vite/hydrogen-middleware.js +0 -82
  139. package/dist/lib/vite/mini-oxygen.js +0 -152
  140. package/dist/lib/vite/plugins.d.ts +0 -27
  141. package/dist/lib/vite/plugins.js +0 -139
  142. package/dist/lib/vite/shared.js +0 -10
  143. package/dist/lib/vite/utils.js +0 -55
  144. package/dist/lib/vite/worker-entry.js +0 -1518
  145. /package/dist/generator-templates/starter/{.eslintrc.js → .eslintrc.cjs} +0 -0
@@ -1,139 +0,0 @@
1
- import path from 'node:path';
2
- import { setupRemixDevServerHooks, setupHydrogenMiddleware } from './hydrogen-middleware.js';
3
- import { startMiniOxygenRuntime, setupOxygenMiddleware } from './mini-oxygen.js';
4
- import { setH2OPluginContext, getH2OPluginContext, DEFAULT_SSR_ENTRY } from './shared.js';
5
- import { H2O_BINDING_NAME, createLogRequestEvent } from '../request-events.js';
6
-
7
- function hydrogen(pluginOptions = {}) {
8
- const isRemixChildCompiler = (config) => !config.plugins?.some((plugin) => plugin.name === "remix");
9
- return [
10
- {
11
- name: "hydrogen:main",
12
- config(config) {
13
- return {
14
- ssr: {
15
- optimizeDeps: {
16
- // Add CJS dependencies that break code in workerd
17
- // with errors like "require/module/exports is not defined":
18
- include: [
19
- // React deps:
20
- "react",
21
- "react/jsx-runtime",
22
- "react/jsx-dev-runtime",
23
- "react-dom",
24
- "react-dom/server",
25
- // Remix deps:
26
- "set-cookie-parser",
27
- "cookie",
28
- // Hydrogen deps:
29
- "content-security-policy-builder"
30
- ]
31
- }
32
- },
33
- // Pass the setup functions to the Oxygen runtime.
34
- ...setH2OPluginContext({
35
- setupScripts: [setupRemixDevServerHooks],
36
- shouldStartRuntime: (config2) => !isRemixChildCompiler(config2),
37
- services: {
38
- [H2O_BINDING_NAME]: createLogRequestEvent({
39
- transformLocation: (partialLocation) => path.join(config.root ?? process.cwd(), partialLocation)
40
- })
41
- }
42
- })
43
- };
44
- },
45
- configureServer(viteDevServer) {
46
- if (isRemixChildCompiler(viteDevServer.config))
47
- return;
48
- const { cliOptions } = getH2OPluginContext(viteDevServer.config) || {};
49
- return () => {
50
- setupHydrogenMiddleware(viteDevServer, {
51
- ...pluginOptions,
52
- ...cliOptions
53
- });
54
- };
55
- }
56
- }
57
- ];
58
- }
59
- function oxygen(pluginOptions = {}) {
60
- let resolvedConfig;
61
- let absoluteWorkerEntryFile;
62
- return [
63
- {
64
- name: "oxygen:runtime",
65
- config(config, env) {
66
- return {
67
- appType: "custom",
68
- resolve: {
69
- conditions: ["worker", "workerd"]
70
- },
71
- ssr: {
72
- noExternal: true,
73
- target: "webworker"
74
- },
75
- // When building, the CLI will set the `ssr` option to `true`
76
- // if no --entry flag is passed for the default SSR entry file.
77
- // Replace it here with a default value.
78
- ...env.isSsrBuild && config.build?.ssr && {
79
- build: {
80
- ssr: config.build?.ssr === true ? (
81
- // No --entry flag passed by the user, use the
82
- // option passed to the plugin or the default value
83
- pluginOptions.ssrEntry ?? DEFAULT_SSR_ENTRY
84
- ) : (
85
- // --entry flag passed by the user, keep it
86
- config.build?.ssr
87
- )
88
- }
89
- }
90
- };
91
- },
92
- configureServer(viteDevServer) {
93
- resolvedConfig = viteDevServer.config;
94
- const { shouldStartRuntime, cliOptions, setupScripts, services } = getH2OPluginContext(resolvedConfig) || {};
95
- if (shouldStartRuntime && !shouldStartRuntime(resolvedConfig))
96
- return;
97
- const workerEntryFile = cliOptions?.ssrEntry ?? pluginOptions.ssrEntry ?? DEFAULT_SSR_ENTRY;
98
- absoluteWorkerEntryFile = path.isAbsolute(workerEntryFile) ? workerEntryFile : path.resolve(viteDevServer.config.root, workerEntryFile);
99
- const envPromise = cliOptions?.envPromise ?? Promise.resolve();
100
- let miniOxygen;
101
- const miniOxygenPromise = envPromise.then((remoteEnv) => {
102
- return startMiniOxygenRuntime({
103
- viteDevServer,
104
- workerEntryFile,
105
- setupScripts,
106
- services,
107
- env: { ...remoteEnv, ...pluginOptions.env },
108
- debug: cliOptions?.debug ?? pluginOptions.debug ?? false,
109
- inspectorPort: cliOptions?.inspectorPort ?? pluginOptions.inspectorPort ?? 9229
110
- });
111
- });
112
- process.once("SIGTERM", async () => {
113
- try {
114
- await miniOxygen?.dispose();
115
- } finally {
116
- process.exit();
117
- }
118
- });
119
- return () => {
120
- setupOxygenMiddleware(viteDevServer, async (request) => {
121
- miniOxygen ??= await miniOxygenPromise;
122
- return miniOxygen.dispatch(request);
123
- });
124
- };
125
- },
126
- transform(code, id, options) {
127
- if (resolvedConfig?.command === "serve" && resolvedConfig?.server?.hmr !== false && options?.ssr && (id === absoluteWorkerEntryFile || id === absoluteWorkerEntryFile + path.extname(id))) {
128
- return {
129
- // Accept HMR in server entry module to avoid full-page refresh in the browser.
130
- // Note: appending code at the end should not break the source map.
131
- code: code + "\nif (import.meta.hot) import.meta.hot.accept();"
132
- };
133
- }
134
- }
135
- }
136
- ];
137
- }
138
-
139
- export { hydrogen, oxygen };
@@ -1,10 +0,0 @@
1
- const DEFAULT_SSR_ENTRY = "./server";
2
- const H2O_CONTEXT_KEY = "__h2oPluginContext";
3
- function getH2OPluginContext(config) {
4
- return config?.[H2O_CONTEXT_KEY];
5
- }
6
- function setH2OPluginContext(options) {
7
- return { [H2O_CONTEXT_KEY]: options };
8
- }
9
-
10
- export { DEFAULT_SSR_ENTRY, getH2OPluginContext, setH2OPluginContext };
@@ -1,55 +0,0 @@
1
- import path from 'node:path';
2
- import { Readable } from 'node:stream';
3
- import { Request } from 'miniflare';
4
-
5
- function toURL(req = "/", origin) {
6
- const isRequest = typeof req !== "string";
7
- const pathname = (isRequest ? req.url : req) || "/";
8
- return new URL(
9
- pathname,
10
- origin || isRequest && req.headers.host && `http://${req.headers.host}` || "http://example.com"
11
- );
12
- }
13
- function toWeb(req, headers) {
14
- return new Request(toURL(req), {
15
- method: req.method,
16
- headers: { ...headers, ...req.headers },
17
- body: req.headers["content-length"] ? Readable.toWeb(req) : void 0,
18
- duplex: "half",
19
- // This is required when sending a ReadableStream as body
20
- redirect: "manual"
21
- // Avoid consuming 300 responses here, return to browser
22
- });
23
- }
24
- function pipeFromWeb(webResponse, res) {
25
- const headers = Object.fromEntries(webResponse.headers.entries());
26
- const setCookieHeader = "set-cookie";
27
- if (headers[setCookieHeader]) {
28
- delete headers[setCookieHeader];
29
- res.setHeader(setCookieHeader, webResponse.headers.getSetCookie());
30
- }
31
- res.writeHead(webResponse.status, webResponse.statusText, headers);
32
- if (webResponse.body) {
33
- Readable.fromWeb(webResponse.body).pipe(res);
34
- } else {
35
- res.end();
36
- }
37
- }
38
- function getHmrUrl(viteDevServer) {
39
- const userHmrValue = viteDevServer.config.server?.hmr;
40
- if (userHmrValue === false) {
41
- console.warn(
42
- "HMR is disabled. Code changes will not be reflected in neither browser or server."
43
- );
44
- return "";
45
- }
46
- const configHmr = typeof userHmrValue === "object" ? userHmrValue : {};
47
- const hmrPort = configHmr.port;
48
- const hmrPath = configHmr.path;
49
- let hmrBase = viteDevServer.config.base;
50
- if (hmrPath)
51
- hmrBase = path.posix.join(hmrBase, hmrPath);
52
- return (hmrPort ? `http://localhost:${hmrPort}` : "") + hmrBase;
53
- }
54
-
55
- export { getHmrUrl, pipeFromWeb, toURL, toWeb };