@shopify/cli-hydrogen 7.1.2 → 8.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commands/hydrogen/build-vite.js +19 -10
- package/dist/commands/hydrogen/build.js +10 -2
- package/dist/commands/hydrogen/check.js +1 -0
- package/dist/commands/hydrogen/codegen.js +1 -0
- package/dist/commands/hydrogen/customer-account/push.js +170 -0
- package/dist/commands/hydrogen/debug/cpu.js +3 -0
- package/dist/commands/hydrogen/deploy.js +121 -36
- package/dist/commands/hydrogen/dev-vite.js +128 -59
- package/dist/commands/hydrogen/dev.js +108 -51
- package/dist/commands/hydrogen/env/list.js +7 -8
- package/dist/commands/hydrogen/env/pull.js +17 -1
- package/dist/commands/hydrogen/env/{push__unstable.js → push.js} +23 -50
- package/dist/commands/hydrogen/generate/route.js +1 -0
- package/dist/commands/hydrogen/init.js +45 -17
- package/dist/commands/hydrogen/link.js +20 -4
- package/dist/commands/hydrogen/list.js +1 -0
- package/dist/commands/hydrogen/login.js +1 -0
- package/dist/commands/hydrogen/logout.js +1 -0
- package/dist/commands/hydrogen/preview.js +31 -16
- package/dist/commands/hydrogen/setup/css.js +8 -1
- package/dist/commands/hydrogen/setup/markets.js +1 -0
- package/dist/commands/hydrogen/setup/vite.js +244 -138
- package/dist/commands/hydrogen/setup.js +21 -22
- package/dist/commands/hydrogen/shortcut.js +10 -0
- package/dist/commands/hydrogen/unlink.js +1 -0
- package/dist/commands/hydrogen/upgrade.js +2 -1
- package/dist/generator-templates/assets/vite/package.json +3 -4
- package/dist/generator-templates/assets/vite/vite.config.js +10 -2
- package/dist/generator-templates/starter/CHANGELOG.md +89 -0
- package/dist/generator-templates/starter/README.md +3 -44
- package/dist/generator-templates/starter/app/graphql/customer-account/CustomerDetailsQuery.ts +1 -0
- package/dist/generator-templates/starter/app/lib/fragments.ts +2 -0
- package/dist/generator-templates/starter/app/root.tsx +2 -5
- package/dist/generator-templates/starter/app/routes/account.orders._index.tsx +1 -1
- package/dist/generator-templates/starter/app/routes/account.tsx +1 -1
- package/dist/generator-templates/starter/app/routes/collections.all.tsx +160 -0
- package/dist/generator-templates/starter/app/routes/products.$handle.tsx +1 -2
- package/dist/generator-templates/starter/customer-accountapi.generated.d.ts +6 -3
- package/dist/generator-templates/starter/{remix.env.d.ts → env.d.ts} +8 -2
- package/dist/generator-templates/starter/package.json +14 -9
- package/dist/generator-templates/starter/server.ts +2 -1
- package/dist/generator-templates/starter/storefrontapi.generated.d.ts +59 -3
- package/dist/generator-templates/starter/vite.config.ts +21 -0
- package/dist/{commands/hydrogen/init.d.ts → init.d.ts} +11 -3
- package/dist/lib/check-lockfile.js +12 -18
- package/dist/lib/codegen.js +37 -13
- package/dist/lib/common.js +50 -0
- package/dist/lib/cpu-profiler.js +4 -1
- package/dist/lib/dev-shared.js +97 -0
- package/dist/lib/environment-variables.js +51 -30
- package/dist/lib/file.js +8 -1
- package/dist/lib/flags.js +37 -16
- package/dist/lib/graphql/admin/customer-application-update.js +29 -0
- package/dist/lib/graphql/admin/get-oxygen-data.js +1 -0
- package/dist/lib/graphql/admin/list-environments.js +1 -0
- package/dist/lib/graphql/admin/pull-variables.js +4 -4
- package/dist/lib/graphql/admin/test-helper.js +37 -0
- package/dist/lib/log.js +86 -13
- package/dist/lib/mini-oxygen/common.js +19 -33
- package/dist/lib/mini-oxygen/index.js +6 -2
- package/dist/lib/mini-oxygen/node.js +43 -31
- package/dist/lib/mini-oxygen/workerd.js +72 -165
- package/dist/lib/missing-routes.js +1 -1
- package/dist/lib/onboarding/common.js +82 -70
- package/dist/lib/onboarding/local.js +19 -9
- package/dist/lib/onboarding/remote.js +35 -30
- package/dist/lib/package-managers.js +24 -0
- package/dist/lib/remix-config.js +17 -1
- package/dist/lib/request-events.js +6 -1
- package/dist/lib/setups/i18n/replacers.js +9 -6
- package/dist/lib/setups/routes/generate.js +1 -0
- package/dist/lib/shell.js +2 -1
- package/dist/lib/shopify-config.js +19 -1
- package/dist/lib/template-diff.js +36 -15
- package/dist/lib/template-downloader.js +35 -5
- package/dist/lib/transpile/morph/typedefs.js +5 -2
- package/dist/lib/transpile/project.js +8 -4
- package/dist/lib/tunneling.js +44 -0
- package/dist/lib/virtual-routes.js +1 -1
- package/dist/lib/vite-config.js +39 -9
- package/oclif.manifest.json +711 -498
- package/package.json +32 -24
- package/dist/commands/hydrogen/deploy.test.js +0 -553
- package/dist/commands/hydrogen/env/list.test.js +0 -148
- package/dist/commands/hydrogen/env/pull.test.js +0 -207
- package/dist/commands/hydrogen/env/push__unstable.test.js +0 -383
- package/dist/commands/hydrogen/generate/route.test.js +0 -43
- package/dist/commands/hydrogen/init.test.js +0 -641
- package/dist/commands/hydrogen/link.test.js +0 -187
- package/dist/commands/hydrogen/list.test.js +0 -111
- package/dist/commands/hydrogen/setup.test.js +0 -61
- package/dist/commands/hydrogen/shortcut.test.js +0 -30
- package/dist/commands/hydrogen/unlink.test.js +0 -36
- package/dist/commands/hydrogen/upgrade.test.js +0 -786
- package/dist/generator-templates/starter/remix.config.js +0 -24
- package/dist/lib/auth.test.js +0 -157
- package/dist/lib/check-lockfile.test.js +0 -81
- package/dist/lib/check-version.test.js +0 -86
- package/dist/lib/environment-variables.test.js +0 -149
- package/dist/lib/file.test.js +0 -68
- package/dist/lib/flags.test.js +0 -43
- package/dist/lib/get-oxygen-deployment-data.test.js +0 -120
- package/dist/lib/gid.test.js +0 -15
- package/dist/lib/graphql/admin/client.test.js +0 -76
- package/dist/lib/graphql/admin/create-storefront.test.js +0 -64
- package/dist/lib/graphql/admin/link-storefront.test.js +0 -38
- package/dist/lib/graphql/admin/list-environments.test.js +0 -44
- package/dist/lib/graphql/admin/list-storefronts.test.js +0 -44
- package/dist/lib/graphql/admin/pull-variables.test.js +0 -43
- package/dist/lib/graphql/business-platform/user-account.test.js +0 -80
- package/dist/lib/log.test.js +0 -92
- package/dist/lib/mini-oxygen/assets.js +0 -134
- package/dist/lib/mini-oxygen/mini-oxygen.test.js +0 -214
- package/dist/lib/mini-oxygen/workerd-inspector-logs.js +0 -227
- package/dist/lib/mini-oxygen/workerd-inspector-proxy.js +0 -200
- package/dist/lib/mini-oxygen/workerd-inspector.js +0 -219
- package/dist/lib/missing-routes.test.js +0 -45
- package/dist/lib/remix-version-check.test.js +0 -39
- package/dist/lib/remix-version-interop.test.js +0 -13
- package/dist/lib/setups/i18n/domains.test.js +0 -39
- package/dist/lib/setups/i18n/replacers.test.js +0 -261
- package/dist/lib/setups/i18n/subdomains.test.js +0 -39
- package/dist/lib/setups/i18n/subfolders.test.js +0 -39
- package/dist/lib/setups/routes/generate.test.js +0 -296
- package/dist/lib/shell.test.js +0 -111
- package/dist/lib/shopify-config.test.js +0 -199
- package/dist/lib/string.test.js +0 -16
- package/dist/lib/virtual-routes.test.js +0 -49
- package/dist/lib/vite/hydrogen-middleware.js +0 -82
- package/dist/lib/vite/mini-oxygen.js +0 -152
- package/dist/lib/vite/plugins.d.ts +0 -27
- package/dist/lib/vite/plugins.js +0 -139
- package/dist/lib/vite/shared.js +0 -10
- package/dist/lib/vite/utils.js +0 -55
- package/dist/lib/vite/worker-entry.js +0 -1518
- /package/dist/generator-templates/starter/{.eslintrc.js → .eslintrc.cjs} +0 -0
package/dist/lib/vite/plugins.js
DELETED
|
@@ -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 };
|
package/dist/lib/vite/shared.js
DELETED
|
@@ -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 };
|
package/dist/lib/vite/utils.js
DELETED
|
@@ -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 };
|