@shopify/cli-hydrogen 12.0.0 → 12.0.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 (73) hide show
  1. package/README.md +1 -1
  2. package/dist/assets/hydrogen/routes/locale-check.ts +3 -3
  3. package/dist/assets/hydrogen/starter/.graphqlrc.ts +4 -2
  4. package/dist/assets/hydrogen/starter/CHANGELOG.md +278 -0
  5. package/dist/assets/hydrogen/starter/app/components/Aside.tsx +4 -2
  6. package/dist/assets/hydrogen/starter/app/components/CartLineItem.tsx +67 -38
  7. package/dist/assets/hydrogen/starter/app/components/CartMain.tsx +49 -8
  8. package/dist/assets/hydrogen/starter/app/components/CartSummary.tsx +133 -57
  9. package/dist/assets/hydrogen/starter/app/components/Header.tsx +3 -3
  10. package/dist/assets/hydrogen/starter/app/components/MockShopNotice.tsx +20 -0
  11. package/dist/assets/hydrogen/starter/app/components/PaginatedResourceSection.tsx +24 -4
  12. package/dist/assets/hydrogen/starter/app/components/ProductPrice.tsx +1 -1
  13. package/dist/assets/hydrogen/starter/app/entry.client.tsx +2 -3
  14. package/dist/assets/hydrogen/starter/app/lib/context.ts +5 -0
  15. package/dist/assets/hydrogen/starter/app/lib/fragments.ts +8 -0
  16. package/dist/assets/hydrogen/starter/app/routes/[robots.txt].tsx +14 -53
  17. package/dist/assets/hydrogen/starter/app/routes/_index.tsx +15 -9
  18. package/dist/assets/hydrogen/starter/app/routes/account.$.tsx +1 -1
  19. package/dist/assets/hydrogen/starter/app/routes/account.addresses.tsx +14 -14
  20. package/dist/assets/hydrogen/starter/app/routes/account.profile.tsx +1 -1
  21. package/dist/assets/hydrogen/starter/app/routes/account.tsx +4 -7
  22. package/dist/assets/hydrogen/starter/app/routes/account_.login.tsx +10 -0
  23. package/dist/assets/hydrogen/starter/app/routes/blogs.$blogHandle._index.tsx +2 -9
  24. package/dist/assets/hydrogen/starter/app/routes/blogs._index.tsx +1 -4
  25. package/dist/assets/hydrogen/starter/app/routes/cart.tsx +3 -11
  26. package/dist/assets/hydrogen/starter/app/routes/collections.all.tsx +1 -3
  27. package/dist/assets/hydrogen/starter/app/routes/pages.$handle.tsx +2 -8
  28. package/dist/assets/hydrogen/starter/app/routes/policies.$handle.tsx +1 -4
  29. package/dist/assets/hydrogen/starter/app/routes/policies._index.tsx +1 -1
  30. package/dist/assets/hydrogen/starter/app/routes/products.$handle.tsx +2 -9
  31. package/dist/assets/hydrogen/starter/app/routes/search.tsx +18 -12
  32. package/dist/assets/hydrogen/starter/app/styles/app.css +72 -1
  33. package/dist/assets/hydrogen/starter/eslint.config.js +1 -0
  34. package/dist/assets/hydrogen/starter/guides/predictiveSearch/predictiveSearch.md +3 -3
  35. package/dist/assets/hydrogen/starter/guides/search/search.md +1 -1
  36. package/dist/assets/hydrogen/starter/package.json +16 -16
  37. package/dist/assets/hydrogen/starter/server.ts +5 -7
  38. package/dist/assets/hydrogen/starter/storefrontapi.generated.d.ts +89 -11
  39. package/dist/assets/hydrogen/starter/vite.config.ts +10 -4
  40. package/dist/assets/hydrogen/vite/package.json +1 -2
  41. package/dist/assets/hydrogen/vite/vite.config.js +4 -3
  42. package/dist/commands/hydrogen/deploy.js +19 -13
  43. package/dist/commands/hydrogen/dev.js +6 -6
  44. package/dist/commands/hydrogen/generate/route.js +1 -1
  45. package/dist/commands/hydrogen/init.d.ts +2 -4
  46. package/dist/commands/hydrogen/init.js +2 -8
  47. package/dist/commands/hydrogen/preview.js +1 -1
  48. package/dist/commands/hydrogen/setup/css.js +1 -1
  49. package/dist/commands/hydrogen/setup/markets.js +1 -1
  50. package/dist/commands/hydrogen/setup/vite.js +1 -1
  51. package/dist/commands/hydrogen/setup.js +31 -33
  52. package/dist/commands/hydrogen/upgrade.js +173 -39
  53. package/dist/lib/build.js +4 -5
  54. package/dist/lib/bundle/vite-plugin.js +7 -21
  55. package/dist/lib/check-lockfile.js +16 -7
  56. package/dist/lib/codegen.js +2 -2
  57. package/dist/lib/format-code.js +3 -3
  58. package/dist/lib/graphql/admin/client.js +48 -23
  59. package/dist/lib/import-utils.js +20 -4
  60. package/dist/lib/mini-oxygen/workerd.js +3 -5
  61. package/dist/lib/onboarding/common.js +21 -26
  62. package/dist/lib/onboarding/local.js +46 -59
  63. package/dist/lib/package-managers.js +2 -0
  64. package/dist/lib/patch-cli.js +198 -0
  65. package/dist/lib/setups/routes/generate.js +5 -3
  66. package/dist/lib/template-pack.js +93 -0
  67. package/dist/lib/transpile/morph/functions.js +1 -1
  68. package/dist/lib/transpile/morph/typedefs.js +2 -3
  69. package/dist/lib/upgrade-e2e-utils.js +50 -0
  70. package/oclif.manifest.json +7 -15
  71. package/package.json +22 -19
  72. package/dist/assets/hydrogen/starter/app/routes/api.$version.[graphql.json].tsx +0 -14
  73. package/dist/lib/react-router-version-check.js +0 -82
@@ -353,7 +353,7 @@
353
353
  },
354
354
  "force": {
355
355
  "char": "f",
356
- "description": "Forces a deployment to proceed if there are uncommited changes in its Git repository.",
356
+ "description": "Forces a deployment to proceed if there are uncommitted changes in its Git repository.",
357
357
  "env": "SHOPIFY_HYDROGEN_FLAG_FORCE",
358
358
  "name": "force",
359
359
  "required": false,
@@ -437,7 +437,7 @@
437
437
  "type": "option"
438
438
  },
439
439
  "metadata-description": {
440
- "description": "Description of the changes in the deployment. Defaults to the commit message of the latest commit if there are no uncommited changes.",
440
+ "description": "Description of the changes in the deployment. Defaults to the commit message of the latest commit if there are no uncommitted changes.",
441
441
  "env": "SHOPIFY_HYDROGEN_FLAG_METADATA_DESCRIPTION",
442
442
  "name": "metadata-description",
443
443
  "required": false,
@@ -832,7 +832,7 @@
832
832
  "aliases": [],
833
833
  "args": {
834
834
  "routeName": {
835
- "description": "The route to generate. One of home,page,cart,products,collections,policies,blogs,account,search,robots,sitemap,tokenlessApi,all.",
835
+ "description": "The route to generate. One of home,page,cart,products,collections,policies,blogs,account,search,robots,sitemap,all.",
836
836
  "name": "routeName",
837
837
  "options": [
838
838
  "home",
@@ -846,7 +846,6 @@
846
846
  "search",
847
847
  "robots",
848
848
  "sitemap",
849
- "tokenlessApi",
850
849
  "all"
851
850
  ],
852
851
  "required": true
@@ -855,7 +854,7 @@
855
854
  "description": "Generates a standard Shopify route.",
856
855
  "flags": {
857
856
  "adapter": {
858
- "description": "Remix adapter used in the route. The default is `@shopify/remix-oxygen`.",
857
+ "description": "React Router adapter used in the route. The default is `react-router`.",
859
858
  "env": "SHOPIFY_HYDROGEN_FLAG_ADAPTER",
860
859
  "name": "adapter",
861
860
  "hasDynamicHelp": false,
@@ -918,7 +917,7 @@
918
917
  "description": "Generates all supported standard shopify routes.",
919
918
  "flags": {
920
919
  "adapter": {
921
- "description": "Remix adapter used in the route. The default is `@shopify/remix-oxygen`.",
920
+ "description": "React Router adapter used in the route. The default is `react-router`.",
922
921
  "env": "SHOPIFY_HYDROGEN_FLAG_ADAPTER",
923
922
  "name": "adapter",
924
923
  "hasDynamicHelp": false,
@@ -1048,13 +1047,6 @@
1048
1047
  "allowNo": true,
1049
1048
  "type": "boolean"
1050
1049
  },
1051
- "routes": {
1052
- "description": "Generate routes for all pages.",
1053
- "env": "SHOPIFY_HYDROGEN_FLAG_ROUTES",
1054
- "name": "routes",
1055
- "allowNo": true,
1056
- "type": "boolean"
1057
- },
1058
1050
  "git": {
1059
1051
  "description": "Init Git and create initial commits.",
1060
1052
  "env": "SHOPIFY_HYDROGEN_FLAG_GIT",
@@ -1063,7 +1055,7 @@
1063
1055
  "type": "boolean"
1064
1056
  },
1065
1057
  "quickstart": {
1066
- "description": "Scaffolds a new Hydrogen project with a set of sensible defaults. Equivalent to `shopify hydrogen init --path hydrogen-quickstart --mock-shop --language js --shortcut --routes --markets none`",
1058
+ "description": "Scaffolds a new Hydrogen project with a set of sensible defaults. Equivalent to `shopify hydrogen init --path hydrogen-quickstart --mock-shop --language js --shortcut --markets none`",
1067
1059
  "env": "SHOPIFY_HYDROGEN_FLAG_QUICKSTART",
1068
1060
  "name": "quickstart",
1069
1061
  "allowNo": false,
@@ -1683,5 +1675,5 @@
1683
1675
  ]
1684
1676
  }
1685
1677
  },
1686
- "version": "12.0.0"
1678
+ "version": "12.0.2"
1687
1679
  }
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "access": "public",
5
5
  "@shopify:registry": "https://registry.npmjs.org"
6
6
  },
7
- "version": "12.0.0",
7
+ "version": "12.0.2",
8
8
  "license": "MIT",
9
9
  "type": "module",
10
10
  "repository": {
@@ -12,29 +12,23 @@
12
12
  "url": "git+https://github.com/Shopify/hydrogen.git",
13
13
  "directory": "packages/cli-hydrogen"
14
14
  },
15
- "scripts": {
16
- "build": "tsup && node scripts/build-check.mjs",
17
- "dev": "tsup --watch ./src --watch ../../templates/skeleton",
18
- "typecheck": "tsc --noEmit",
19
- "generate:manifest": "node scripts/generate-manifest.mjs",
20
- "test": "cross-env SHOPIFY_UNIT_TEST=1 LANG=en-US.UTF-8 vitest run --test-timeout=60000",
21
- "test:watch": "cross-env SHOPIFY_UNIT_TEST=1 LANG=en-US.UTF-8 vitest --test-timeout=60000"
22
- },
23
15
  "devDependencies": {
24
- "@react-router/dev": "7.9.2",
16
+ "@react-router/dev": "7.16.0",
25
17
  "@types/diff": "^5.0.2",
26
18
  "@types/gunzip-maybe": "^1.4.0",
19
+ "@types/node": "22.19.15",
27
20
  "@types/prettier": "^2.7.2",
28
21
  "@types/source-map-support": "^0.5.10",
29
22
  "@types/tar-fs": "^2.0.1",
30
23
  "@vitest/coverage-v8": "^1.0.4",
31
24
  "devtools-protocol": "^0.0.1177611",
25
+ "esbuild": "^0.27.0",
32
26
  "fast-glob": "^3.2.12",
33
27
  "flame-chart-js": "2.3.2",
34
28
  "get-port": "^7.0.0",
35
29
  "type-fest": "^4.33.0",
36
- "vite": "^6.2.4",
37
- "vitest": "^1.0.4"
30
+ "vite": "^8.0.1",
31
+ "vitest": "^3.2.4"
38
32
  },
39
33
  "dependencies": {
40
34
  "@ast-grep/napi": "0.34.1",
@@ -46,10 +40,11 @@
46
40
  "chokidar": "3.5.3",
47
41
  "cli-truncate": "^4.0.0",
48
42
  "diff": "^5.1.0",
43
+ "esbuild": "^0.27.0",
49
44
  "get-east-asian-width": "^1.3.0",
50
45
  "get-port": "^7.0.0",
51
46
  "gunzip-maybe": "^1.4.2",
52
- "prettier": "^2.8.4",
47
+ "prettier": "^3.4.2",
53
48
  "semver": "^7.7.1",
54
49
  "source-map": "^0.7.4",
55
50
  "source-map-support": "^0.5.21",
@@ -60,11 +55,11 @@
60
55
  },
61
56
  "peerDependencies": {
62
57
  "@graphql-codegen/cli": "^5.0.2",
63
- "@react-router/dev": "7.9.2",
64
- "@shopify/hydrogen-codegen": "^0.3.3",
65
- "@shopify/mini-oxygen": "^4.0.0",
58
+ "@react-router/dev": "~7.16.0",
66
59
  "graphql-config": "^5.0.3",
67
- "vite": "^5.1.0 || ^6.2.0"
60
+ "vite": "^5.1.0 || ^6.2.0 || ^7.0.0 || ^8.0.0",
61
+ "@shopify/hydrogen-codegen": "0.3.3",
62
+ "@shopify/mini-oxygen": "4.1.0"
68
63
  },
69
64
  "peerDependenciesMeta": {
70
65
  "@graphql-codegen/cli": {
@@ -103,7 +98,7 @@
103
98
  "oclif.manifest.json"
104
99
  ],
105
100
  "engines": {
106
- "node": ">=18.0.0"
101
+ "node": "^20 || ^22 || ^24"
107
102
  },
108
103
  "oclif": {
109
104
  "commands": "dist/commands",
@@ -130,5 +125,13 @@
130
125
  "plugins": [
131
126
  "@shopify/plugin-cloudflare"
132
127
  ]
128
+ },
129
+ "scripts": {
130
+ "build": "tsup && node scripts/build-check.mjs",
131
+ "dev": "tsup --watch ./src --watch ../../templates/skeleton",
132
+ "typecheck": "tsc --noEmit",
133
+ "generate:manifest": "node scripts/generate-manifest.mjs",
134
+ "test": "cross-env SHOPIFY_UNIT_TEST=1 LANG=en-US.UTF-8 vitest run --test-timeout=60000",
135
+ "test:watch": "cross-env SHOPIFY_UNIT_TEST=1 LANG=en-US.UTF-8 vitest --test-timeout=60000"
133
136
  }
134
- }
137
+ }
@@ -1,14 +0,0 @@
1
- import type {Route} from './+types/api.$version.[graphql.json]';
2
-
3
- export async function action({params, context, request}: Route.ActionArgs) {
4
- const response = await fetch(
5
- `https://${context.env.PUBLIC_CHECKOUT_DOMAIN}/api/${params.version}/graphql.json`,
6
- {
7
- method: 'POST',
8
- body: request.body,
9
- headers: request.headers,
10
- },
11
- );
12
-
13
- return new Response(response.body, {headers: new Headers(response.headers)});
14
- }
@@ -1,82 +0,0 @@
1
- import { readFile } from '@shopify/cli-kit/node/fs';
2
- import { joinPath } from '@shopify/cli-kit/node/path';
3
- import { renderWarning } from '@shopify/cli-kit/node/ui';
4
- import { outputDebug } from '@shopify/cli-kit/node/output';
5
- import semver from 'semver';
6
-
7
- const REACT_ROUTER_PACKAGES = [
8
- "react-router",
9
- "react-router-dom",
10
- "@react-router/dev",
11
- "@react-router/fs-routes"
12
- ];
13
- const EXPECTED_VERSION = "7.9.2";
14
- async function checkReactRouterVersions(appPath) {
15
- const mismatches = [];
16
- const packageJsonPath = joinPath(appPath, "package.json");
17
- let packageJson;
18
- try {
19
- packageJson = JSON.parse(await readFile(packageJsonPath));
20
- } catch (error) {
21
- outputDebug(
22
- `Unable to read package.json for React Router version check: ${error}`
23
- );
24
- return;
25
- }
26
- const allDeps = {
27
- ...packageJson.dependencies,
28
- ...packageJson.devDependencies,
29
- ...packageJson.peerDependencies
30
- };
31
- for (const pkg of REACT_ROUTER_PACKAGES) {
32
- const installedVersion = allDeps[pkg];
33
- if (!installedVersion) {
34
- continue;
35
- }
36
- installedVersion.replace(/^[\^~]/, "");
37
- if (!semver.satisfies(EXPECTED_VERSION, installedVersion)) {
38
- mismatches.push({
39
- package: pkg,
40
- installed: installedVersion,
41
- expected: EXPECTED_VERSION
42
- });
43
- }
44
- }
45
- if (mismatches.length > 0) {
46
- const mismatchList = mismatches.map(
47
- (m) => ` \u2022 ${m.package}: installed ${m.installed}, expected ${m.expected}`
48
- ).join("\n");
49
- const devPackages = ["@react-router/dev", "@react-router/fs-routes"];
50
- const regularMismatches = mismatches.filter(
51
- (m) => !devPackages.includes(m.package)
52
- );
53
- const devMismatches = mismatches.filter(
54
- (m) => devPackages.includes(m.package)
55
- );
56
- const commands = [];
57
- if (regularMismatches.length > 0) {
58
- const regularList = regularMismatches.map((m) => `${m.package}@${EXPECTED_VERSION}`).join(" ");
59
- commands.push(`npm install ${regularList}`);
60
- }
61
- if (devMismatches.length > 0) {
62
- const devList = devMismatches.map((m) => `${m.package}@${EXPECTED_VERSION}`).join(" ");
63
- commands.push(`npm install -D ${devList}`);
64
- }
65
- renderWarning({
66
- headline: "React Router version mismatch detected",
67
- body: [
68
- "Hydrogen requires React Router 7.9.x for proper functionality.",
69
- "",
70
- "Version mismatches found:",
71
- mismatchList,
72
- "",
73
- "To fix this issue, run:",
74
- ...commands.map((cmd) => ` ${cmd}`),
75
- "",
76
- "This may cause issues with routing, code splitting, and other features."
77
- ].join("\n")
78
- });
79
- }
80
- }
81
-
82
- export { checkReactRouterVersions };