@shopify/create-hydrogen 5.0.23 → 5.0.25
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/assets/hydrogen/bundle/analyzer.html +155 -148
- package/dist/assets/hydrogen/starter/.cursor/rules/hydrogen-react-router.mdc +5 -3
- package/dist/assets/hydrogen/starter/CHANGELOG.md +97 -9
- package/dist/assets/hydrogen/starter/app/components/AddToCartButton.tsx +1 -1
- package/dist/assets/hydrogen/starter/app/components/CartLineItem.tsx +1 -1
- package/dist/assets/hydrogen/starter/app/components/CartMain.tsx +1 -1
- package/dist/assets/hydrogen/starter/app/components/CartSummary.tsx +62 -29
- package/dist/assets/hydrogen/starter/app/components/Header.tsx +1 -1
- package/dist/assets/hydrogen/starter/app/components/PageLayout.tsx +1 -1
- package/dist/assets/hydrogen/starter/app/components/ProductForm.tsx +2 -2
- package/dist/assets/hydrogen/starter/app/components/SearchForm.tsx +1 -1
- package/dist/assets/hydrogen/starter/app/components/SearchFormPredictive.tsx +8 -3
- package/dist/assets/hydrogen/starter/app/components/SearchResults.tsx +3 -11
- package/dist/assets/hydrogen/starter/app/components/SearchResultsPredictive.tsx +2 -6
- package/dist/assets/hydrogen/starter/app/entry.client.tsx +10 -2
- package/dist/assets/hydrogen/starter/app/entry.server.tsx +5 -3
- package/dist/assets/hydrogen/starter/app/graphql/customer-account/CustomerAddressMutations.ts +7 -4
- package/dist/assets/hydrogen/starter/app/graphql/customer-account/CustomerDetailsQuery.ts +1 -1
- package/dist/assets/hydrogen/starter/app/graphql/customer-account/CustomerOrderQuery.ts +4 -1
- package/dist/assets/hydrogen/starter/app/graphql/customer-account/CustomerOrdersQuery.ts +10 -5
- package/dist/assets/hydrogen/starter/app/graphql/customer-account/CustomerUpdateMutation.ts +3 -2
- package/dist/assets/hydrogen/starter/app/lib/context.ts +34 -17
- package/dist/assets/hydrogen/starter/app/lib/fragments.ts +1 -0
- package/dist/assets/hydrogen/starter/app/lib/orderFilters.ts +90 -0
- package/dist/assets/hydrogen/starter/app/lib/redirect.ts +1 -1
- package/dist/assets/hydrogen/starter/app/lib/session.ts +1 -1
- package/dist/assets/hydrogen/starter/app/lib/variants.ts +1 -1
- package/dist/assets/hydrogen/starter/app/root.tsx +23 -18
- package/dist/assets/hydrogen/starter/app/routes/$.tsx +2 -2
- package/dist/assets/hydrogen/starter/app/routes/[robots.txt].tsx +2 -2
- package/dist/assets/hydrogen/starter/app/routes/[sitemap.xml].tsx +2 -3
- package/dist/assets/hydrogen/starter/app/routes/_index.tsx +12 -8
- package/dist/assets/hydrogen/starter/app/routes/account.$.tsx +4 -3
- package/dist/assets/hydrogen/starter/app/routes/account._index.tsx +1 -1
- package/dist/assets/hydrogen/starter/app/routes/account.addresses.tsx +15 -11
- package/dist/assets/hydrogen/starter/app/routes/account.orders.$id.tsx +47 -22
- package/dist/assets/hydrogen/starter/app/routes/account.orders._index.tsx +152 -23
- package/dist/assets/hydrogen/starter/app/routes/account.profile.tsx +11 -8
- package/dist/assets/hydrogen/starter/app/routes/account.tsx +16 -4
- package/dist/assets/hydrogen/starter/app/routes/account_.authorize.tsx +2 -2
- package/dist/assets/hydrogen/starter/app/routes/account_.login.tsx +5 -3
- package/dist/assets/hydrogen/starter/app/routes/account_.logout.tsx +3 -2
- package/dist/assets/hydrogen/starter/app/routes/api.$version.[graphql.json].tsx +2 -2
- package/dist/assets/hydrogen/starter/app/routes/blogs.$blogHandle.$articleHandle.tsx +6 -10
- package/dist/assets/hydrogen/starter/app/routes/blogs.$blogHandle._index.tsx +10 -7
- package/dist/assets/hydrogen/starter/app/routes/blogs._index.tsx +13 -7
- package/dist/assets/hydrogen/starter/app/routes/cart.$lines.tsx +3 -2
- package/dist/assets/hydrogen/starter/app/routes/cart.tsx +13 -9
- package/dist/assets/hydrogen/starter/app/routes/collections.$handle.tsx +8 -11
- package/dist/assets/hydrogen/starter/app/routes/collections._index.tsx +6 -6
- package/dist/assets/hydrogen/starter/app/routes/collections.all.tsx +10 -7
- package/dist/assets/hydrogen/starter/app/routes/discount.$code.tsx +3 -2
- package/dist/assets/hydrogen/starter/app/routes/pages.$handle.tsx +8 -6
- package/dist/assets/hydrogen/starter/app/routes/policies.$handle.tsx +7 -4
- package/dist/assets/hydrogen/starter/app/routes/policies._index.tsx +19 -13
- package/dist/assets/hydrogen/starter/app/routes/products.$handle.tsx +9 -6
- package/dist/assets/hydrogen/starter/app/routes/search.tsx +14 -14
- package/dist/assets/hydrogen/starter/app/routes/sitemap.$type.$page[.xml].tsx +2 -3
- package/dist/assets/hydrogen/starter/app/routes.ts +1 -1
- package/dist/assets/hydrogen/starter/app/styles/app.css +53 -1
- package/dist/assets/hydrogen/starter/customer-accountapi.generated.d.ts +47 -13
- package/dist/assets/hydrogen/starter/env.d.ts +1 -39
- package/dist/assets/hydrogen/starter/eslint.config.js +35 -52
- package/dist/assets/hydrogen/starter/package.json +14 -15
- package/dist/assets/hydrogen/starter/react-router.config.ts +9 -3
- package/dist/assets/hydrogen/starter/server.ts +7 -7
- package/dist/assets/hydrogen/starter/storefrontapi.generated.d.ts +1 -1
- package/dist/assets/hydrogen/starter/tsconfig.json +17 -13
- package/dist/assets/hydrogen/starter/vite.config.ts +4 -1
- package/dist/assets/hydrogen/virtual-routes/components/RequestDetails.jsx +13 -20
- package/dist/assets/hydrogen/virtual-routes/routes/[.]well-known.appspecific.com[.]chrome[.]devtools[.]json.jsx +37 -0
- package/dist/chunk-2LZQLWDR.js +1189 -0
- package/dist/{chunk-EO6F7WJJ.js → chunk-6YUUFKYO.js} +1 -1
- package/dist/chunk-AUULK6IN.js +5 -0
- package/dist/chunk-CJKPLQJ7.js +51 -0
- package/dist/{chunk-MNT4XW23.js → chunk-LBUW5UHX.js} +1 -1
- package/dist/chunk-RUCJI22O.js +3 -0
- package/dist/{chunk-PMDMUCNY.js → chunk-VXJIQGAB.js} +1 -1
- package/dist/chunk-Y5VZE2FH.js +32 -0
- package/dist/chunk-ZLNTSIDN.js +2 -0
- package/dist/create-app.js +293 -288
- package/dist/{del-72VO4HYK.js → del-VDYQZFAQ.js} +1 -1
- package/dist/devtools-3BYEW2L2.js +8 -0
- package/dist/error-handler-XRI3ZDLO.js +2 -0
- package/dist/is-wsl-52AELLDM.js +2 -0
- package/dist/{morph-3JSBLNUD.js → morph-S2LU6PQ4.js} +7 -7
- package/dist/{multipart-parser-QIHQVIZA.js → multipart-parser-MX4R5XJM.js} +1 -1
- package/dist/open-PMJ32HTM.js +2 -0
- package/dist/out-U7AI7XUQ.js +2 -0
- package/package.json +4 -2
- package/dist/chokidar-FXMI63T6.js +0 -12
- package/dist/chunk-3LZ6M5C2.js +0 -3
- package/dist/chunk-D7CI46F7.js +0 -10
- package/dist/chunk-FB327AH7.js +0 -5
- package/dist/chunk-MZPD7BFF.js +0 -23
- package/dist/chunk-NIHY2BIB.js +0 -1180
- package/dist/chunk-UASQ33JG.js +0 -45
- package/dist/chunk-VMIOG46Y.js +0 -2
- package/dist/devtools-DGRGSZU7.js +0 -8
- package/dist/error-handler-O653XSNU.js +0 -2
- package/dist/is-wsl-LL6KGQIK.js +0 -2
- package/dist/open-OD6DRFEG.js +0 -2
- package/dist/out-DXB3K325.js +0 -2
|
@@ -26,6 +26,7 @@ export default [
|
|
|
26
26
|
ignores: [
|
|
27
27
|
'**/node_modules/',
|
|
28
28
|
'**/build/',
|
|
29
|
+
'**/dist/',
|
|
29
30
|
'**/*.graphql.d.ts',
|
|
30
31
|
'**/*.graphql.ts',
|
|
31
32
|
'**/*.generated.d.ts',
|
|
@@ -152,9 +153,7 @@ export default [
|
|
|
152
153
|
languageOptions: {
|
|
153
154
|
parser: tsParser,
|
|
154
155
|
parserOptions: {
|
|
155
|
-
|
|
156
|
-
allowDefaultProject: ['.graphqlrc.ts'],
|
|
157
|
-
},
|
|
156
|
+
project: './tsconfig.json',
|
|
158
157
|
tsconfigRootDir: __dirname,
|
|
159
158
|
ecmaFeatures: {
|
|
160
159
|
jsx: true,
|
|
@@ -175,55 +174,6 @@ export default [
|
|
|
175
174
|
},
|
|
176
175
|
rules: {
|
|
177
176
|
'@typescript-eslint/ban-ts-comment': 'off',
|
|
178
|
-
'@typescript-eslint/naming-convention': 'off',
|
|
179
|
-
'@typescript-eslint/no-non-null-asserted-optional-chain': 'off',
|
|
180
|
-
},
|
|
181
|
-
},
|
|
182
|
-
{
|
|
183
|
-
files: ['**/.eslintrc.cjs'],
|
|
184
|
-
languageOptions: {
|
|
185
|
-
globals: {
|
|
186
|
-
...globals.node,
|
|
187
|
-
},
|
|
188
|
-
},
|
|
189
|
-
},
|
|
190
|
-
...compat.extends('plugin:jest/recommended').map((config) => ({
|
|
191
|
-
...config,
|
|
192
|
-
files: ['**/*.test.*'],
|
|
193
|
-
})),
|
|
194
|
-
{
|
|
195
|
-
files: ['**/*.test.*'],
|
|
196
|
-
plugins: {
|
|
197
|
-
jest,
|
|
198
|
-
},
|
|
199
|
-
languageOptions: {
|
|
200
|
-
globals: {
|
|
201
|
-
...globals.node,
|
|
202
|
-
...globals.jest,
|
|
203
|
-
},
|
|
204
|
-
},
|
|
205
|
-
},
|
|
206
|
-
{
|
|
207
|
-
files: ['**/*.server.*'],
|
|
208
|
-
rules: {
|
|
209
|
-
'react-hooks/rules-of-hooks': 'off',
|
|
210
|
-
},
|
|
211
|
-
},
|
|
212
|
-
...fixupConfigRules(
|
|
213
|
-
compat.extends(
|
|
214
|
-
'plugin:@typescript-eslint/eslint-recommended',
|
|
215
|
-
'plugin:@typescript-eslint/recommended',
|
|
216
|
-
),
|
|
217
|
-
).map((config) => ({
|
|
218
|
-
...config,
|
|
219
|
-
files: ['**/*.ts', '**/*.tsx'],
|
|
220
|
-
})),
|
|
221
|
-
{
|
|
222
|
-
files: ['**/*.ts', '**/*.tsx'],
|
|
223
|
-
languageOptions: {
|
|
224
|
-
parser: tsParser,
|
|
225
|
-
},
|
|
226
|
-
rules: {
|
|
227
177
|
'@typescript-eslint/explicit-module-boundary-types': 'off',
|
|
228
178
|
'@typescript-eslint/naming-convention': [
|
|
229
179
|
'error',
|
|
@@ -256,8 +206,41 @@ export default [
|
|
|
256
206
|
'@typescript-eslint/no-empty-object-type': 'off',
|
|
257
207
|
'@typescript-eslint/no-explicit-any': 'off',
|
|
258
208
|
'@typescript-eslint/no-non-null-assertion': 'off',
|
|
209
|
+
'@typescript-eslint/no-non-null-asserted-optional-chain': 'off',
|
|
259
210
|
'@typescript-eslint/no-unused-vars': 'off',
|
|
211
|
+
'@typescript-eslint/no-floating-promises': 'error',
|
|
212
|
+
'@typescript-eslint/no-misused-promises': 'error',
|
|
260
213
|
'react/prop-types': 'off',
|
|
261
214
|
},
|
|
262
215
|
},
|
|
216
|
+
{
|
|
217
|
+
files: ['**/.eslintrc.cjs'],
|
|
218
|
+
languageOptions: {
|
|
219
|
+
globals: {
|
|
220
|
+
...globals.node,
|
|
221
|
+
},
|
|
222
|
+
},
|
|
223
|
+
},
|
|
224
|
+
...compat.extends('plugin:jest/recommended').map((config) => ({
|
|
225
|
+
...config,
|
|
226
|
+
files: ['**/*.test.*'],
|
|
227
|
+
})),
|
|
228
|
+
{
|
|
229
|
+
files: ['**/*.test.*'],
|
|
230
|
+
plugins: {
|
|
231
|
+
jest,
|
|
232
|
+
},
|
|
233
|
+
languageOptions: {
|
|
234
|
+
globals: {
|
|
235
|
+
...globals.node,
|
|
236
|
+
...globals.jest,
|
|
237
|
+
},
|
|
238
|
+
},
|
|
239
|
+
},
|
|
240
|
+
{
|
|
241
|
+
files: ['**/*.server.*'],
|
|
242
|
+
rules: {
|
|
243
|
+
'react-hooks/rules-of-hooks': 'off',
|
|
244
|
+
},
|
|
245
|
+
},
|
|
263
246
|
];
|
|
@@ -2,38 +2,37 @@
|
|
|
2
2
|
"name": "skeleton",
|
|
3
3
|
"private": true,
|
|
4
4
|
"sideEffects": false,
|
|
5
|
-
"version": "2025.
|
|
5
|
+
"version": "2025.7.0",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"scripts": {
|
|
8
8
|
"build": "shopify hydrogen build --codegen",
|
|
9
9
|
"dev": "shopify hydrogen dev --codegen",
|
|
10
10
|
"preview": "shopify hydrogen preview --build",
|
|
11
11
|
"lint": "eslint --no-error-on-unmatched-pattern .",
|
|
12
|
-
"typecheck": "tsc --noEmit",
|
|
13
|
-
"codegen": "shopify hydrogen codegen"
|
|
12
|
+
"typecheck": "react-router typegen && tsc --noEmit",
|
|
13
|
+
"codegen": "shopify hydrogen codegen && react-router typegen"
|
|
14
14
|
},
|
|
15
15
|
"prettier": "@shopify/prettier-config",
|
|
16
16
|
"dependencies": {
|
|
17
|
-
"@shopify/hydrogen": "2025.
|
|
18
|
-
"@shopify/remix-oxygen": "^3.0.0",
|
|
17
|
+
"@shopify/hydrogen": "2025.7.0",
|
|
19
18
|
"graphql": "^16.10.0",
|
|
20
19
|
"graphql-tag": "^2.12.6",
|
|
21
20
|
"isbot": "^5.1.22",
|
|
22
|
-
"react": "
|
|
23
|
-
"react-dom": "
|
|
24
|
-
"react-router": "7.
|
|
25
|
-
"react-router-dom": "7.
|
|
21
|
+
"react": "18.3.1",
|
|
22
|
+
"react-dom": "18.3.1",
|
|
23
|
+
"react-router": "7.9.2",
|
|
24
|
+
"react-router-dom": "7.9.2"
|
|
26
25
|
},
|
|
27
26
|
"devDependencies": {
|
|
28
27
|
"@eslint/compat": "^1.2.5",
|
|
29
28
|
"@eslint/eslintrc": "^3.2.0",
|
|
30
29
|
"@eslint/js": "^9.18.0",
|
|
31
30
|
"@graphql-codegen/cli": "5.0.2",
|
|
32
|
-
"@react-router/dev": "7.
|
|
33
|
-
"@react-router/fs-routes": "7.
|
|
34
|
-
"@shopify/cli": "
|
|
31
|
+
"@react-router/dev": "7.9.2",
|
|
32
|
+
"@react-router/fs-routes": "7.9.2",
|
|
33
|
+
"@shopify/cli": "3.84.1",
|
|
35
34
|
"@shopify/hydrogen-codegen": "^0.3.3",
|
|
36
|
-
"@shopify/mini-oxygen": "^
|
|
35
|
+
"@shopify/mini-oxygen": "^4.0.0",
|
|
37
36
|
"@shopify/oxygen-workers-types": "^4.1.6",
|
|
38
37
|
"@shopify/prettier-config": "^1.1.2",
|
|
39
38
|
"@total-typescript/ts-reset": "^0.6.1",
|
|
@@ -53,11 +52,11 @@
|
|
|
53
52
|
"eslint-plugin-react-hooks": "^5.1.0",
|
|
54
53
|
"globals": "^15.14.0",
|
|
55
54
|
"prettier": "^3.4.2",
|
|
56
|
-
"typescript": "^5.
|
|
55
|
+
"typescript": "^5.9.2",
|
|
57
56
|
"vite": "^6.2.4",
|
|
58
57
|
"vite-tsconfig-paths": "^4.3.1"
|
|
59
58
|
},
|
|
60
59
|
"engines": {
|
|
61
60
|
"node": ">=18.0.0"
|
|
62
61
|
}
|
|
63
|
-
}
|
|
62
|
+
}
|
|
@@ -1,7 +1,13 @@
|
|
|
1
1
|
import type {Config} from '@react-router/dev/config';
|
|
2
|
+
import {hydrogenPreset} from '@shopify/hydrogen/react-router-preset';
|
|
2
3
|
|
|
4
|
+
/**
|
|
5
|
+
* React Router 7.9.x Configuration for Hydrogen
|
|
6
|
+
*
|
|
7
|
+
* This configuration uses the official Hydrogen preset to provide optimal
|
|
8
|
+
* React Router settings for Shopify Oxygen deployment. The preset enables
|
|
9
|
+
* validated performance optimizations while ensuring compatibility.
|
|
10
|
+
*/
|
|
3
11
|
export default {
|
|
4
|
-
|
|
5
|
-
buildDirectory: 'dist',
|
|
6
|
-
ssr: true,
|
|
12
|
+
presets: [hydrogenPreset()],
|
|
7
13
|
} satisfies Config;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// Virtual entry point for the app
|
|
2
2
|
import {storefrontRedirect} from '@shopify/hydrogen';
|
|
3
|
-
import {createRequestHandler} from '@shopify/
|
|
4
|
-
import {
|
|
3
|
+
import {createRequestHandler} from '@shopify/hydrogen/oxygen';
|
|
4
|
+
import {createHydrogenRouterContext} from '~/lib/context';
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* Export a fetch handler in module format.
|
|
@@ -13,7 +13,7 @@ export default {
|
|
|
13
13
|
executionContext: ExecutionContext,
|
|
14
14
|
): Promise<Response> {
|
|
15
15
|
try {
|
|
16
|
-
const
|
|
16
|
+
const hydrogenContext = await createHydrogenRouterContext(
|
|
17
17
|
request,
|
|
18
18
|
env,
|
|
19
19
|
executionContext,
|
|
@@ -27,15 +27,15 @@ export default {
|
|
|
27
27
|
// eslint-disable-next-line import/no-unresolved
|
|
28
28
|
build: await import('virtual:react-router/server-build'),
|
|
29
29
|
mode: process.env.NODE_ENV,
|
|
30
|
-
getLoadContext: () =>
|
|
30
|
+
getLoadContext: () => hydrogenContext,
|
|
31
31
|
});
|
|
32
32
|
|
|
33
33
|
const response = await handleRequest(request);
|
|
34
34
|
|
|
35
|
-
if (
|
|
35
|
+
if (hydrogenContext.session.isPending) {
|
|
36
36
|
response.headers.set(
|
|
37
37
|
'Set-Cookie',
|
|
38
|
-
await
|
|
38
|
+
await hydrogenContext.session.commit(),
|
|
39
39
|
);
|
|
40
40
|
}
|
|
41
41
|
|
|
@@ -48,7 +48,7 @@ export default {
|
|
|
48
48
|
return storefrontRedirect({
|
|
49
49
|
request,
|
|
50
50
|
response,
|
|
51
|
-
storefront:
|
|
51
|
+
storefront: hydrogenContext.storefront,
|
|
52
52
|
});
|
|
53
53
|
}
|
|
54
54
|
|
|
@@ -73,7 +73,7 @@ export type CartApiQueryFragment = Pick<
|
|
|
73
73
|
'updatedAt' | 'id' | 'checkoutUrl' | 'totalQuantity' | 'note'
|
|
74
74
|
> & {
|
|
75
75
|
appliedGiftCards: Array<
|
|
76
|
-
Pick<StorefrontAPI.AppliedGiftCard, 'lastCharacters'> & {
|
|
76
|
+
Pick<StorefrontAPI.AppliedGiftCard, 'id' | 'lastCharacters'> & {
|
|
77
77
|
amountUsed: Pick<StorefrontAPI.MoneyV2, 'currencyCode' | 'amount'>;
|
|
78
78
|
}
|
|
79
79
|
>;
|
|
@@ -1,16 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"include": [
|
|
3
|
-
"
|
|
4
|
-
"
|
|
5
|
-
"
|
|
3
|
+
"env.d.ts",
|
|
4
|
+
"app/**/*.ts",
|
|
5
|
+
"app/**/*.tsx",
|
|
6
|
+
"app/**/*.d.ts",
|
|
7
|
+
"*.ts",
|
|
8
|
+
"*.tsx",
|
|
9
|
+
"*.d.ts",
|
|
10
|
+
".graphqlrc.ts",
|
|
6
11
|
".react-router/types/**/*"
|
|
7
12
|
],
|
|
13
|
+
"exclude": ["node_modules", "dist", "build", "packages/**/dist/**/*"],
|
|
8
14
|
"compilerOptions": {
|
|
9
|
-
"lib": [
|
|
10
|
-
"DOM",
|
|
11
|
-
"DOM.Iterable",
|
|
12
|
-
"ES2022"
|
|
13
|
-
],
|
|
15
|
+
"lib": ["DOM", "DOM.Iterable", "ES2022"],
|
|
14
16
|
"isolatedModules": true,
|
|
15
17
|
"esModuleInterop": true,
|
|
16
18
|
"jsx": "react-jsx",
|
|
@@ -26,14 +28,16 @@
|
|
|
26
28
|
"types": [
|
|
27
29
|
"@shopify/oxygen-workers-types",
|
|
28
30
|
"react-router",
|
|
31
|
+
"@shopify/hydrogen/react-router-types",
|
|
29
32
|
"vite/client"
|
|
30
33
|
],
|
|
31
34
|
"paths": {
|
|
32
|
-
"~/*": [
|
|
33
|
-
"app/*"
|
|
34
|
-
]
|
|
35
|
+
"~/*": ["app/*"]
|
|
35
36
|
},
|
|
36
37
|
"noEmit": true,
|
|
37
|
-
"rootDirs": [".", "./.react-router/types"]
|
|
38
|
+
"rootDirs": [".", "./.react-router/types"],
|
|
39
|
+
"incremental": true,
|
|
40
|
+
"composite": false,
|
|
41
|
+
"verbatimModuleSyntax": true
|
|
38
42
|
}
|
|
39
|
-
}
|
|
43
|
+
}
|
|
@@ -23,7 +23,10 @@ export default defineConfig({
|
|
|
23
23
|
* Include 'example-dep' in the array below.
|
|
24
24
|
* @see https://vitejs.dev/config/dep-optimization-options
|
|
25
25
|
*/
|
|
26
|
-
include: [],
|
|
26
|
+
include: ['set-cookie-parser', 'cookie', 'react-router'],
|
|
27
27
|
},
|
|
28
28
|
},
|
|
29
|
+
server: {
|
|
30
|
+
allowedHosts: ['.tryhydrogen.dev'],
|
|
31
|
+
},
|
|
29
32
|
});
|
|
@@ -137,26 +137,19 @@ function TabButtonsBar({ children }) {
|
|
|
137
137
|
setFadeClass("fadeLeft");
|
|
138
138
|
}
|
|
139
139
|
}
|
|
140
|
-
return /* @__PURE__ */ jsxs(
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
children
|
|
154
|
-
}
|
|
155
|
-
),
|
|
156
|
-
/* @__PURE__ */ jsx("div", { className: `fadCover ${fadeClass}` })
|
|
157
|
-
]
|
|
158
|
-
}
|
|
159
|
-
);
|
|
140
|
+
return /* @__PURE__ */ jsxs("div", { id: "tab-buttons-wrapper", children: [
|
|
141
|
+
/* @__PURE__ */ jsx(
|
|
142
|
+
"div",
|
|
143
|
+
{
|
|
144
|
+
id: "tabButtons",
|
|
145
|
+
ref: scrollBarRef,
|
|
146
|
+
className: "flex-row gap-tiny",
|
|
147
|
+
onScroll: (event) => setFade(event.currentTarget),
|
|
148
|
+
children
|
|
149
|
+
}
|
|
150
|
+
),
|
|
151
|
+
/* @__PURE__ */ jsx("div", { className: `fadCover ${fadeClass}` })
|
|
152
|
+
] });
|
|
160
153
|
}
|
|
161
154
|
function DetailsRow({
|
|
162
155
|
rowName,
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
async function generateProjectUuid(root) {
|
|
2
|
+
const encoder = new TextEncoder();
|
|
3
|
+
const data = encoder.encode(root);
|
|
4
|
+
const hashBuffer = await crypto.subtle.digest("SHA-256", data);
|
|
5
|
+
const hashArray = Array.from(new Uint8Array(hashBuffer));
|
|
6
|
+
const hashHex = hashArray.map((b) => b.toString(16).padStart(2, "0")).join("");
|
|
7
|
+
return [
|
|
8
|
+
hashHex.slice(0, 8),
|
|
9
|
+
hashHex.slice(8, 12),
|
|
10
|
+
"4" + hashHex.slice(13, 16),
|
|
11
|
+
// Version 4
|
|
12
|
+
(parseInt(hashHex.slice(16, 18), 16) & 63 | 128).toString(16) + hashHex.slice(18, 20),
|
|
13
|
+
// Variant bits
|
|
14
|
+
hashHex.slice(20, 32)
|
|
15
|
+
].join("-");
|
|
16
|
+
}
|
|
17
|
+
async function loader({ request, context }) {
|
|
18
|
+
let root = context?.env?.HYDROGEN_PROJECT_ROOT || "/workspace/hydrogen-dev";
|
|
19
|
+
root = root.replace(/\\/g, "/");
|
|
20
|
+
const uuid = await generateProjectUuid(root);
|
|
21
|
+
const responseData = {
|
|
22
|
+
workspace: {
|
|
23
|
+
root,
|
|
24
|
+
uuid
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
return new Response(JSON.stringify(responseData), {
|
|
28
|
+
status: 200,
|
|
29
|
+
headers: {
|
|
30
|
+
"Content-Type": "application/json",
|
|
31
|
+
"Cache-Control": "no-cache"
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
export {
|
|
36
|
+
loader
|
|
37
|
+
};
|