@shopify/cli 3.83.1 → 3.83.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.
- package/dist/assets/hydrogen/starter/.cursor/rules/hydrogen-react-router.mdc +52 -0
- package/dist/assets/hydrogen/starter/CHANGELOG.md +35 -0
- 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 +1 -1
- package/dist/assets/hydrogen/starter/app/components/Footer.tsx +1 -1
- 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 +1 -1
- package/dist/assets/hydrogen/starter/app/components/ProductItem.tsx +1 -1
- package/dist/assets/hydrogen/starter/app/components/SearchForm.tsx +1 -1
- package/dist/assets/hydrogen/starter/app/components/SearchFormPredictive.tsx +1 -6
- package/dist/assets/hydrogen/starter/app/components/SearchResults.tsx +1 -1
- package/dist/assets/hydrogen/starter/app/components/SearchResultsPredictive.tsx +1 -1
- package/dist/assets/hydrogen/starter/app/entry.client.tsx +2 -2
- package/dist/assets/hydrogen/starter/app/entry.server.tsx +9 -4
- package/dist/assets/hydrogen/starter/app/lib/variants.ts +1 -1
- package/dist/assets/hydrogen/starter/app/root.tsx +1 -1
- package/dist/assets/hydrogen/starter/app/routes/_index.tsx +1 -1
- package/dist/assets/hydrogen/starter/app/routes/account.addresses.tsx +1 -1
- package/dist/assets/hydrogen/starter/app/routes/account.orders.$id.tsx +4 -4
- package/dist/assets/hydrogen/starter/app/routes/account.orders._index.tsx +1 -1
- package/dist/assets/hydrogen/starter/app/routes/account.profile.tsx +1 -7
- package/dist/assets/hydrogen/starter/app/routes/account.tsx +1 -1
- package/dist/assets/hydrogen/starter/app/routes/api.$version.[graphql.json].tsx +14 -0
- package/dist/assets/hydrogen/starter/app/routes/blogs.$blogHandle.$articleHandle.tsx +1 -1
- package/dist/assets/hydrogen/starter/app/routes/blogs.$blogHandle._index.tsx +1 -1
- package/dist/assets/hydrogen/starter/app/routes/blogs._index.tsx +1 -1
- package/dist/assets/hydrogen/starter/app/routes/cart.tsx +7 -2
- package/dist/assets/hydrogen/starter/app/routes/collections.$handle.tsx +1 -1
- package/dist/assets/hydrogen/starter/app/routes/collections._index.tsx +1 -1
- package/dist/assets/hydrogen/starter/app/routes/collections.all.tsx +2 -2
- package/dist/assets/hydrogen/starter/app/routes/pages.$handle.tsx +1 -1
- package/dist/assets/hydrogen/starter/app/routes/policies.$handle.tsx +1 -1
- package/dist/assets/hydrogen/starter/app/routes/policies._index.tsx +1 -1
- package/dist/assets/hydrogen/starter/app/routes/products.$handle.tsx +1 -1
- package/dist/assets/hydrogen/starter/app/routes/search.tsx +1 -1
- package/dist/assets/hydrogen/starter/app/routes.ts +2 -2
- package/dist/assets/hydrogen/starter/env.d.ts +12 -2
- package/dist/assets/hydrogen/starter/eslint.config.js +2 -0
- package/dist/assets/hydrogen/starter/package.json +11 -12
- package/dist/assets/hydrogen/starter/react-router.config.ts +7 -0
- package/dist/assets/hydrogen/starter/server.ts +2 -5
- package/dist/assets/hydrogen/starter/tsconfig.json +18 -6
- package/dist/assets/hydrogen/starter/vite.config.ts +3 -24
- package/dist/assets/hydrogen/tailwind/package.json +4 -1
- package/dist/assets/hydrogen/virtual-routes/components/RequestDetails.jsx +1 -1
- package/dist/assets/hydrogen/virtual-routes/layout.jsx +1 -7
- package/dist/assets/hydrogen/virtual-routes/routes/index.jsx +1 -1
- package/dist/assets/hydrogen/virtual-routes/routes/subrequest-profiler.jsx +1 -1
- package/dist/assets/hydrogen/virtual-routes/virtual-root-with-layout.jsx +1 -1
- package/dist/assets/hydrogen/virtual-routes/virtual-root.jsx +1 -1
- package/dist/assets/hydrogen/vite/vite.config.js +1 -1
- package/dist/{chunk-XOIMWH77.js → chunk-3P2MV54Z.js} +2 -2
- package/dist/{chunk-DVGCJLCA.js → chunk-3TBLURBG.js} +6 -6
- package/dist/{chunk-SJYNVNUB.js → chunk-3ZHC3Q7V.js} +2 -2
- package/dist/{chunk-7KLV4YSY.js → chunk-4ALAOHE7.js} +2 -2
- package/dist/{chunk-KPFBSWRK.js → chunk-4NC2NVYY.js} +3 -3
- package/dist/{chunk-QNMWKLS4.js → chunk-5YPOHZXF.js} +3 -3
- package/dist/{chunk-ARXCCKJT.js → chunk-AGY4NR7U.js} +8 -8
- package/dist/{chunk-JEW6HZHJ.js → chunk-BELVFLJN.js} +3 -3
- package/dist/{chunk-UZIJLLPI.js → chunk-BRKBA6ON.js} +3 -3
- package/dist/{chunk-4BPSIIGV.js → chunk-CK7Y3RFI.js} +3 -3
- package/dist/{chunk-A6DFWCO7.js → chunk-CPTZ34K2.js} +4 -4
- package/dist/{chunk-Y2JP6WFP.js → chunk-EG6MBBEN.js} +2 -2
- package/dist/{chunk-TB443RFG.js → chunk-FRQN52H3.js} +5 -5
- package/dist/{chunk-ZQMRVJXG.js → chunk-HU2Q5MFA.js} +3 -3
- package/dist/{chunk-KSLA767C.js → chunk-IZFYF7OE.js} +2 -2
- package/dist/{chunk-5QFLNCVR.js → chunk-JLITATNF.js} +6 -6
- package/dist/{chunk-BZFP2O66.js → chunk-KDFL67TE.js} +4 -4
- package/dist/{chunk-7EV36FNO.js → chunk-M3TVLW4G.js} +307 -475
- package/dist/{chunk-FNYLJESL.js → chunk-NHZFKFIN.js} +4 -4
- package/dist/{chunk-XI6AXLZO.js → chunk-ORFUSS73.js} +4 -4
- package/dist/{chunk-K5GF4S7D.js → chunk-P464L3K6.js} +2 -2
- package/dist/{chunk-5BJYF6FG.js → chunk-PCHFJ5CE.js} +3 -3
- package/dist/{chunk-RDAZS4FZ.js → chunk-Q3BLA5JC.js} +7 -7
- package/dist/{chunk-DFABOPSU.js → chunk-Q76H7OUL.js} +4 -4
- package/dist/{chunk-TLYRIQK7.js → chunk-QJQK26XP.js} +6 -6
- package/dist/{chunk-DDU22ZPL.js → chunk-RAC2243I.js} +3 -3
- package/dist/{chunk-NJN55E4K.js → chunk-RFX7HBFN.js} +4 -4
- package/dist/{chunk-PPDGMVCL.js → chunk-RHR64CQH.js} +4 -4
- package/dist/{chunk-XVZQHSFP.js → chunk-U6MH2KVY.js} +5 -5
- package/dist/{chunk-ASWHWSRF.js → chunk-UFC6XUMW.js} +2 -2
- package/dist/{chunk-BZBO3V3A.js → chunk-UIFPKYNE.js} +3 -3
- package/dist/{chunk-2ZA3MHM5.js → chunk-V6ZYMBVB.js} +3 -3
- package/dist/{chunk-FEMALH67.js → chunk-YF7CDH6L.js} +4 -4
- package/dist/{chunk-SUA462JY.js → chunk-YKYM3NLB.js} +5 -5
- package/dist/{chunk-57SXE5DE.js → chunk-Z2AIGIVT.js} +2 -2
- package/dist/cli/commands/auth/logout.js +12 -12
- package/dist/cli/commands/auth/logout.test.js +13 -13
- package/dist/cli/commands/cache/clear.js +11 -11
- package/dist/cli/commands/debug/command-flags.js +11 -11
- package/dist/cli/commands/docs/generate.js +11 -11
- package/dist/cli/commands/docs/generate.test.js +11 -11
- package/dist/cli/commands/help.js +11 -11
- package/dist/cli/commands/kitchen-sink/async.js +12 -12
- package/dist/cli/commands/kitchen-sink/async.test.js +12 -12
- package/dist/cli/commands/kitchen-sink/index.js +14 -14
- package/dist/cli/commands/kitchen-sink/index.test.js +14 -14
- package/dist/cli/commands/kitchen-sink/prompts.js +12 -12
- package/dist/cli/commands/kitchen-sink/prompts.test.js +12 -12
- package/dist/cli/commands/kitchen-sink/static.js +12 -12
- package/dist/cli/commands/kitchen-sink/static.test.js +12 -12
- package/dist/cli/commands/notifications/generate.js +12 -12
- package/dist/cli/commands/notifications/list.js +12 -12
- package/dist/cli/commands/search.js +12 -12
- package/dist/cli/commands/upgrade.js +12 -12
- package/dist/cli/commands/version.js +12 -12
- package/dist/cli/commands/version.test.js +12 -12
- package/dist/cli/services/commands/notifications.js +7 -7
- package/dist/cli/services/commands/search.js +3 -3
- package/dist/cli/services/commands/search.test.js +3 -3
- package/dist/cli/services/commands/version.js +4 -4
- package/dist/cli/services/commands/version.test.js +5 -5
- package/dist/cli/services/kitchen-sink/async.js +3 -3
- package/dist/cli/services/kitchen-sink/prompts.js +3 -3
- package/dist/cli/services/kitchen-sink/static.js +3 -3
- package/dist/cli/services/upgrade.js +4 -4
- package/dist/cli/services/upgrade.test.js +5 -5
- package/dist/{custom-oclif-loader-XASCYJ7O.js → custom-oclif-loader-QWOQ6IU2.js} +3 -3
- package/dist/{error-handler-HQBVO3GI.js → error-handler-WBLMZ6OH.js} +9 -9
- package/dist/hooks/postrun.js +7 -7
- package/dist/hooks/prerun.js +8 -8
- package/dist/index.js +817 -1144
- package/dist/{local-PI2REOYY.js → local-EXWDAQEX.js} +3 -3
- package/dist/{morph-5LWJDWYB.js → morph-R37HEQ7R.js} +9 -9
- package/dist/{node-package-manager-RVDETLBX.js → node-package-manager-FY6IDVTF.js} +4 -4
- package/dist/{path-COZT77T2.js → path-GB4VIEM6.js} +2 -2
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/{ui-RDFVKEJS.js → ui-GHYCWXGS.js} +3 -3
- package/dist/{workerd-XLT4ZWI5.js → workerd-GLBI5GFX.js} +14 -14
- package/oclif.manifest.json +3 -23
- package/package.json +8 -8
- package/dist/assets/hydrogen/starter/.cursor/rules/cookbook-recipe-subscriptions.mdc +0 -921
- package/dist/chunk-V67D4V7T.js +0 -107
- package/dist/node-NAYZANSZ.js +0 -162
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
---
|
|
2
|
+
description:
|
|
3
|
+
globs:
|
|
4
|
+
alwaysApply: true
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# React Router Import Rule for Hydrogen
|
|
8
|
+
|
|
9
|
+
## Overview
|
|
10
|
+
|
|
11
|
+
This Hydrogen project is based on React Router, not Remix. When working with documentation or code examples, you should always use imports from the appropriate React Router packages instead of Remix packages.
|
|
12
|
+
|
|
13
|
+
## Import Replacements
|
|
14
|
+
|
|
15
|
+
When you see imports from Remix packages, replace them with their equivalent React Router v7 packages. Here are the common replacements:
|
|
16
|
+
|
|
17
|
+
| Remix v2 Package | React Router v7 Package |
|
|
18
|
+
|------------------|-------------------------|
|
|
19
|
+
| `@remix-run/react` | `react-router` |
|
|
20
|
+
| `@remix-run/dev` | `@react-router/dev` |
|
|
21
|
+
| `@remix-run/architect` | `@react-router/architect` |
|
|
22
|
+
| `@remix-run/cloudflare` | `@react-router/cloudflare` |
|
|
23
|
+
| `@remix-run/express` | `@react-router/express` |
|
|
24
|
+
| `@remix-run/fs-routes` | `@react-router/fs-routes` |
|
|
25
|
+
| `@remix-run/node` | `@react-router/node` |
|
|
26
|
+
| `@remix-run/route-config` | `@react-router/dev` |
|
|
27
|
+
| `@remix-run/routes-option-adapter` | `@react-router/remix-routes-option-adapter` |
|
|
28
|
+
| `@remix-run/serve` | `@react-router/serve` |
|
|
29
|
+
| `@remix-run/server-runtime` | `react-router` |
|
|
30
|
+
| `@remix-run/testing` | `react-router` |
|
|
31
|
+
|
|
32
|
+
NEVER USE 'react-router-dom' imports!
|
|
33
|
+
|
|
34
|
+
## Common Import Examples
|
|
35
|
+
|
|
36
|
+
```js
|
|
37
|
+
// INCORRECT (Remix style)
|
|
38
|
+
import { useLoaderData, Link, Form, useActionData, useNavigation, useSubmit } from '@remix-run/react';
|
|
39
|
+
|
|
40
|
+
// CORRECT (React Router style)
|
|
41
|
+
import { useLoaderData, Link, Form, useActionData, useNavigation, useSubmit } from 'react-router';
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Development Guidelines
|
|
45
|
+
|
|
46
|
+
1. Always check existing code in the project to understand which specific React Router hooks and components are being used
|
|
47
|
+
2. When generating new code or modifying existing code, ensure all routing-related imports come from the correct React Router packages
|
|
48
|
+
3. If following documentation or examples based on Remix, adapt the code to use React Router equivalents
|
|
49
|
+
|
|
50
|
+
When working in this codebase, always follow the React Router patterns that are already established in the existing code.
|
|
51
|
+
|
|
52
|
+
For more information, consult the official Remix to React Router upgrade guide: https://reactrouter.com/upgrading/remix
|
|
@@ -1,5 +1,40 @@
|
|
|
1
1
|
# skeleton
|
|
2
2
|
|
|
3
|
+
## 2025.5.2
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Fixing the skeleton's Vite Config ([#2958](https://github.com/Shopify/hydrogen/pull/2958)) by [@balazsbajorics](https://github.com/balazsbajorics)
|
|
8
|
+
|
|
9
|
+
## 2025.5.1
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- Bumping the cli to 3.80.4 ([#2956](https://github.com/Shopify/hydrogen/pull/2956)) by [@balazsbajorics](https://github.com/balazsbajorics)
|
|
14
|
+
|
|
15
|
+
## 2025.5.0
|
|
16
|
+
|
|
17
|
+
### Patch Changes
|
|
18
|
+
|
|
19
|
+
- Migrating to React Router 7 ([#2866](https://github.com/Shopify/hydrogen/pull/2866)) by [@balazsbajorics](https://github.com/balazsbajorics)
|
|
20
|
+
|
|
21
|
+
- Updated dependencies [[`e9132d88`](https://github.com/Shopify/hydrogen/commit/e9132d8888ad090d3db41fe4d5d63569a30e9d8e), [`e9132d88`](https://github.com/Shopify/hydrogen/commit/e9132d8888ad090d3db41fe4d5d63569a30e9d8e)]:
|
|
22
|
+
- @shopify/remix-oxygen@3.0.0
|
|
23
|
+
- @shopify/hydrogen@2025.5.0
|
|
24
|
+
|
|
25
|
+
## 2025.4.0
|
|
26
|
+
|
|
27
|
+
### Patch Changes
|
|
28
|
+
|
|
29
|
+
- Moved the Cursor rules into more generic LLM prompt files. If you were using the Cursor rules, you will find the prompts in the `cookbook/llms` folder and they can be put into your `.cursor/rules` folder manually. LLM prompt files will be maintained moving forward, while previous Cursor rules will not be updated anymore. ([#2936](https://github.com/Shopify/hydrogen/pull/2936)) by [@ruggishop](https://github.com/ruggishop)
|
|
30
|
+
|
|
31
|
+
- Bump skeleton @shopify/cli and @shopify/mini-oxygen ([#2883](https://github.com/Shopify/hydrogen/pull/2883)) by [@juanpprieto](https://github.com/juanpprieto)
|
|
32
|
+
|
|
33
|
+
- Update SFAPI and CAAPI versions to 2025.04 ([#2886](https://github.com/Shopify/hydrogen/pull/2886)) by [@juanpprieto](https://github.com/juanpprieto)
|
|
34
|
+
|
|
35
|
+
- Updated dependencies [[`af23e710`](https://github.com/Shopify/hydrogen/commit/af23e710dac83bb57498d9c2ef1d8bcf9df55d34), [`9d8a6644`](https://github.com/Shopify/hydrogen/commit/9d8a6644a5b67dca890c6687df390aee78fc85c3)]:
|
|
36
|
+
- @shopify/hydrogen@2025.4.0
|
|
37
|
+
|
|
3
38
|
## 2025.1.7
|
|
4
39
|
|
|
5
40
|
### Patch Changes
|
|
@@ -2,7 +2,7 @@ import type {CartLineUpdateInput} from '@shopify/hydrogen/storefront-api-types';
|
|
|
2
2
|
import type {CartLayout} from '~/components/CartMain';
|
|
3
3
|
import {CartForm, Image, type OptimisticCartLine} from '@shopify/hydrogen';
|
|
4
4
|
import {useVariantUrl} from '~/lib/variants';
|
|
5
|
-
import {Link} from '
|
|
5
|
+
import { Link } from 'react-router';
|
|
6
6
|
import {ProductPrice} from './ProductPrice';
|
|
7
7
|
import {useAside} from './Aside';
|
|
8
8
|
import type {CartApiQueryFragment} from 'storefrontapi.generated';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import {useOptimisticCart} from '@shopify/hydrogen';
|
|
2
|
-
import {Link} from '
|
|
2
|
+
import { Link } from 'react-router';
|
|
3
3
|
import type {CartApiQueryFragment} from 'storefrontapi.generated';
|
|
4
4
|
import {useAside} from '~/components/Aside';
|
|
5
5
|
import {CartLineItem} from '~/components/CartLineItem';
|
|
@@ -2,7 +2,7 @@ import type {CartApiQueryFragment} from 'storefrontapi.generated';
|
|
|
2
2
|
import type {CartLayout} from '~/components/CartMain';
|
|
3
3
|
import {CartForm, Money, type OptimisticCart} from '@shopify/hydrogen';
|
|
4
4
|
import {useRef} from 'react';
|
|
5
|
-
import {FetcherWithComponents} from '
|
|
5
|
+
import { FetcherWithComponents } from 'react-router';
|
|
6
6
|
|
|
7
7
|
type CartSummaryProps = {
|
|
8
8
|
cart: OptimisticCart<CartApiQueryFragment | null>;
|
|
@@ -1,9 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
useFetcher,
|
|
3
|
-
useNavigate,
|
|
4
|
-
type FormProps,
|
|
5
|
-
type Fetcher,
|
|
6
|
-
} from '@remix-run/react';
|
|
1
|
+
import { useFetcher, useNavigate, type FormProps, type Fetcher } from 'react-router';
|
|
7
2
|
import React, {useRef, useEffect} from 'react';
|
|
8
3
|
import type {PredictiveSearchReturn} from '~/lib/search';
|
|
9
4
|
import {useAside} from './Aside';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { HydratedRouter } from 'react-router/dom';
|
|
2
2
|
import {startTransition, StrictMode} from 'react';
|
|
3
3
|
import {hydrateRoot} from 'react-dom/client';
|
|
4
4
|
|
|
@@ -7,7 +7,7 @@ if (!window.location.origin.includes('webcache.googleusercontent.com')) {
|
|
|
7
7
|
hydrateRoot(
|
|
8
8
|
document,
|
|
9
9
|
<StrictMode>
|
|
10
|
-
<
|
|
10
|
+
<HydratedRouter />
|
|
11
11
|
</StrictMode>,
|
|
12
12
|
);
|
|
13
13
|
});
|
|
@@ -1,14 +1,15 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import {
|
|
1
|
+
import type {AppLoadContext} from '@shopify/remix-oxygen';
|
|
2
|
+
import {ServerRouter} from 'react-router';
|
|
3
3
|
import {isbot} from 'isbot';
|
|
4
4
|
import {renderToReadableStream} from 'react-dom/server';
|
|
5
5
|
import {createContentSecurityPolicy} from '@shopify/hydrogen';
|
|
6
|
+
import type {EntryContext} from 'react-router';
|
|
6
7
|
|
|
7
8
|
export default async function handleRequest(
|
|
8
9
|
request: Request,
|
|
9
10
|
responseStatusCode: number,
|
|
10
11
|
responseHeaders: Headers,
|
|
11
|
-
|
|
12
|
+
reactRouterContext: EntryContext,
|
|
12
13
|
context: AppLoadContext,
|
|
13
14
|
) {
|
|
14
15
|
const {nonce, header, NonceProvider} = createContentSecurityPolicy({
|
|
@@ -20,7 +21,11 @@ export default async function handleRequest(
|
|
|
20
21
|
|
|
21
22
|
const body = await renderToReadableStream(
|
|
22
23
|
<NonceProvider>
|
|
23
|
-
<
|
|
24
|
+
<ServerRouter
|
|
25
|
+
context={reactRouterContext}
|
|
26
|
+
url={request.url}
|
|
27
|
+
nonce={nonce}
|
|
28
|
+
/>
|
|
24
29
|
</NonceProvider>,
|
|
25
30
|
{
|
|
26
31
|
nonce,
|
|
@@ -10,7 +10,7 @@ import {
|
|
|
10
10
|
Scripts,
|
|
11
11
|
ScrollRestoration,
|
|
12
12
|
useRouteLoaderData,
|
|
13
|
-
} from '
|
|
13
|
+
} from 'react-router';
|
|
14
14
|
import favicon from '~/assets/favicon.svg';
|
|
15
15
|
import {FOOTER_QUERY, HEADER_QUERY} from '~/lib/fragments';
|
|
16
16
|
import resetStyles from '~/styles/reset.css?url';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import {type LoaderFunctionArgs} from '@shopify/remix-oxygen';
|
|
2
|
-
import {Await, useLoaderData, Link, type MetaFunction} from '
|
|
2
|
+
import { Await, useLoaderData, Link, type MetaFunction } from 'react-router';
|
|
3
3
|
import {Suspense} from 'react';
|
|
4
4
|
import {Image, Money} from '@shopify/hydrogen';
|
|
5
5
|
import type {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import {redirect, type LoaderFunctionArgs} from '@shopify/remix-oxygen';
|
|
2
|
-
import {useLoaderData, type MetaFunction} from '
|
|
2
|
+
import { useLoaderData, type MetaFunction } from 'react-router';
|
|
3
3
|
import {Money, Image, flattenConnection} from '@shopify/hydrogen';
|
|
4
4
|
import type {OrderLineItemFullFragment} from 'customer-accountapi.generated';
|
|
5
5
|
import {CUSTOMER_ORDER_QUERY} from '~/graphql/customer-account/CustomerOrderQuery';
|
|
@@ -60,7 +60,7 @@ export default function OrderRoute() {
|
|
|
60
60
|
fulfillmentStatus,
|
|
61
61
|
} = useLoaderData<typeof loader>();
|
|
62
62
|
return (
|
|
63
|
-
<div className="account-order">
|
|
63
|
+
(<div className="account-order">
|
|
64
64
|
<h2>Order {order.name}</h2>
|
|
65
65
|
<p>Placed on {new Date(order.processedAt!).toDateString()}</p>
|
|
66
66
|
<br />
|
|
@@ -77,7 +77,7 @@ export default function OrderRoute() {
|
|
|
77
77
|
<tbody>
|
|
78
78
|
{lineItems.map((lineItem, lineItemIndex) => (
|
|
79
79
|
// eslint-disable-next-line react/no-array-index-key
|
|
80
|
-
<OrderLineRow key={lineItemIndex} lineItem={lineItem} />
|
|
80
|
+
(<OrderLineRow key={lineItemIndex} lineItem={lineItem} />)
|
|
81
81
|
))}
|
|
82
82
|
</tbody>
|
|
83
83
|
<tfoot>
|
|
@@ -165,7 +165,7 @@ export default function OrderRoute() {
|
|
|
165
165
|
View Order Status →
|
|
166
166
|
</a>
|
|
167
167
|
</p>
|
|
168
|
-
</div>
|
|
168
|
+
</div>)
|
|
169
169
|
);
|
|
170
170
|
}
|
|
171
171
|
|
|
@@ -6,13 +6,7 @@ import {
|
|
|
6
6
|
type ActionFunctionArgs,
|
|
7
7
|
type LoaderFunctionArgs,
|
|
8
8
|
} from '@shopify/remix-oxygen';
|
|
9
|
-
import {
|
|
10
|
-
Form,
|
|
11
|
-
useActionData,
|
|
12
|
-
useNavigation,
|
|
13
|
-
useOutletContext,
|
|
14
|
-
type MetaFunction,
|
|
15
|
-
} from '@remix-run/react';
|
|
9
|
+
import { Form, useActionData, useNavigation, useOutletContext, type MetaFunction } from 'react-router';
|
|
16
10
|
|
|
17
11
|
export type ActionResponse = {
|
|
18
12
|
error: string | null;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import {data as remixData, type LoaderFunctionArgs} from '@shopify/remix-oxygen';
|
|
2
|
-
import {Form, NavLink, Outlet, useLoaderData} from '
|
|
2
|
+
import { Form, NavLink, Outlet, useLoaderData } from 'react-router';
|
|
3
3
|
import {CUSTOMER_DETAILS_QUERY} from '~/graphql/customer-account/CustomerDetailsQuery';
|
|
4
4
|
|
|
5
5
|
export function shouldRevalidate() {
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import {LoaderFunctionArgs} from 'react-router';
|
|
2
|
+
|
|
3
|
+
export async function action({params, context, request}: LoaderFunctionArgs) {
|
|
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,5 +1,5 @@
|
|
|
1
1
|
import {type LoaderFunctionArgs} from '@shopify/remix-oxygen';
|
|
2
|
-
import {useLoaderData, type MetaFunction} from '
|
|
2
|
+
import { useLoaderData, type MetaFunction } from 'react-router';
|
|
3
3
|
import {Image} from '@shopify/hydrogen';
|
|
4
4
|
import {redirectIfHandleIsLocalized} from '~/lib/redirect';
|
|
5
5
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import {type LoaderFunctionArgs} from '@shopify/remix-oxygen';
|
|
2
|
-
import {Link, useLoaderData, type MetaFunction} from '
|
|
2
|
+
import { Link, useLoaderData, type MetaFunction } from 'react-router';
|
|
3
3
|
import {Image, getPaginationVariables} from '@shopify/hydrogen';
|
|
4
4
|
import type {ArticleItemFragment} from 'storefrontapi.generated';
|
|
5
5
|
import {PaginatedResourceSection} from '~/components/PaginatedResourceSection';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import {type LoaderFunctionArgs} from '@shopify/remix-oxygen';
|
|
2
|
-
import {Link, useLoaderData, type MetaFunction} from '
|
|
2
|
+
import { Link, useLoaderData, type MetaFunction } from 'react-router';
|
|
3
3
|
import {getPaginationVariables} from '@shopify/hydrogen';
|
|
4
4
|
import {PaginatedResourceSection} from '~/components/PaginatedResourceSection';
|
|
5
5
|
|
|
@@ -1,7 +1,12 @@
|
|
|
1
|
-
import {type MetaFunction, useLoaderData} from '
|
|
1
|
+
import { type MetaFunction, useLoaderData } from 'react-router';
|
|
2
2
|
import type {CartQueryDataReturn} from '@shopify/hydrogen';
|
|
3
3
|
import {CartForm} from '@shopify/hydrogen';
|
|
4
|
-
import {
|
|
4
|
+
import {
|
|
5
|
+
data,
|
|
6
|
+
type LoaderFunctionArgs,
|
|
7
|
+
type ActionFunctionArgs,
|
|
8
|
+
type HeadersFunction,
|
|
9
|
+
} from '@shopify/remix-oxygen';
|
|
5
10
|
import {CartMain} from '~/components/CartMain';
|
|
6
11
|
|
|
7
12
|
export const meta: MetaFunction = () => {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import {redirect, type LoaderFunctionArgs} from '@shopify/remix-oxygen';
|
|
2
|
-
import {useLoaderData, type MetaFunction} from '
|
|
2
|
+
import {useLoaderData, type MetaFunction} from 'react-router';
|
|
3
3
|
import {getPaginationVariables, Analytics} from '@shopify/hydrogen';
|
|
4
4
|
import {PaginatedResourceSection} from '~/components/PaginatedResourceSection';
|
|
5
5
|
import {redirectIfHandleIsLocalized} from '~/lib/redirect';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {useLoaderData, Link} from '
|
|
1
|
+
import { useLoaderData, Link } from 'react-router';
|
|
2
2
|
import {type LoaderFunctionArgs} from '@shopify/remix-oxygen';
|
|
3
3
|
import {getPaginationVariables, Image} from '@shopify/hydrogen';
|
|
4
4
|
import type {CollectionFragment} from 'storefrontapi.generated';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {type LoaderFunctionArgs} from '@shopify/remix-oxygen';
|
|
2
|
-
import {useLoaderData, type MetaFunction} from '
|
|
3
|
-
import {getPaginationVariables} from '@shopify/hydrogen';
|
|
2
|
+
import {useLoaderData, type MetaFunction} from 'react-router';
|
|
3
|
+
import {getPaginationVariables, Image, Money} from '@shopify/hydrogen';
|
|
4
4
|
import {PaginatedResourceSection} from '~/components/PaginatedResourceSection';
|
|
5
5
|
import {ProductItem} from '~/components/ProductItem';
|
|
6
6
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import {type LoaderFunctionArgs} from '@shopify/remix-oxygen';
|
|
2
|
-
import {useLoaderData, type MetaFunction} from '
|
|
2
|
+
import { useLoaderData, type MetaFunction } from 'react-router';
|
|
3
3
|
import {redirectIfHandleIsLocalized} from '~/lib/redirect';
|
|
4
4
|
|
|
5
5
|
export const meta: MetaFunction<typeof loader> = ({data}) => {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import {type LoaderFunctionArgs} from '@shopify/remix-oxygen';
|
|
2
|
-
import {Link, useLoaderData, type MetaFunction} from '
|
|
2
|
+
import { Link, useLoaderData, type MetaFunction } from 'react-router';
|
|
3
3
|
import {type Shop} from '@shopify/hydrogen/storefront-api-types';
|
|
4
4
|
|
|
5
5
|
type SelectedPolicies = keyof Pick<
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import {type LoaderFunctionArgs} from '@shopify/remix-oxygen';
|
|
2
|
-
import {useLoaderData, Link} from '
|
|
2
|
+
import { useLoaderData, Link } from 'react-router';
|
|
3
3
|
|
|
4
4
|
export async function loader({context}: LoaderFunctionArgs) {
|
|
5
5
|
const data = await context.storefront.query(POLICIES_QUERY);
|
|
@@ -2,7 +2,7 @@ import {
|
|
|
2
2
|
type LoaderFunctionArgs,
|
|
3
3
|
type ActionFunctionArgs,
|
|
4
4
|
} from '@shopify/remix-oxygen';
|
|
5
|
-
import {useLoaderData, type MetaFunction} from '
|
|
5
|
+
import { useLoaderData, type MetaFunction } from 'react-router';
|
|
6
6
|
import {getPaginationVariables, Analytics} from '@shopify/hydrogen';
|
|
7
7
|
import {SearchForm} from '~/components/SearchForm';
|
|
8
8
|
import {SearchResults} from '~/components/SearchResults';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {flatRoutes} from '@
|
|
2
|
-
import {type RouteConfig} from '@
|
|
1
|
+
import {flatRoutes} from '@react-router/fs-routes';
|
|
2
|
+
import {type RouteConfig} from '@react-router/dev/routes';
|
|
3
3
|
import {hydrogenRoutes} from '@shopify/hydrogen';
|
|
4
4
|
|
|
5
5
|
export default hydrogenRoutes([
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/// <reference types="vite/client" />
|
|
2
|
-
/// <reference types="
|
|
2
|
+
/// <reference types="react-router" />
|
|
3
3
|
/// <reference types="@shopify/oxygen-workers-types" />
|
|
4
4
|
|
|
5
5
|
// Enhance TypeScript's built-in typings.
|
|
@@ -23,12 +23,22 @@ declare global {
|
|
|
23
23
|
}
|
|
24
24
|
}
|
|
25
25
|
|
|
26
|
-
declare module '
|
|
26
|
+
declare module 'react-router' {
|
|
27
27
|
interface AppLoadContext
|
|
28
28
|
extends Awaited<ReturnType<typeof createAppLoadContext>> {
|
|
29
29
|
// to change context type, change the return of createAppLoadContext() instead
|
|
30
30
|
}
|
|
31
31
|
|
|
32
|
+
// TODO: remove this once we've migrated our loaders to `Route.LoaderArgs`
|
|
33
|
+
interface LoaderFunctionArgs {
|
|
34
|
+
context: AppLoadContext;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
// TODO: remove this once we've migrated our loaders to `Route.ActionArgs`
|
|
38
|
+
interface ActionFunctionArgs {
|
|
39
|
+
context: AppLoadContext;
|
|
40
|
+
}
|
|
41
|
+
|
|
32
42
|
interface SessionData extends HydrogenSessionData {
|
|
33
43
|
// declare local additions to the Remix session data here
|
|
34
44
|
}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "skeleton",
|
|
3
3
|
"private": true,
|
|
4
4
|
"sideEffects": false,
|
|
5
|
-
"version": "2025.
|
|
5
|
+
"version": "2025.5.2",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"scripts": {
|
|
8
8
|
"build": "shopify hydrogen build --codegen",
|
|
@@ -14,31 +14,29 @@
|
|
|
14
14
|
},
|
|
15
15
|
"prettier": "@shopify/prettier-config",
|
|
16
16
|
"dependencies": {
|
|
17
|
-
"@
|
|
18
|
-
"@remix-
|
|
17
|
+
"@shopify/hydrogen": "2025.5.0",
|
|
18
|
+
"@shopify/remix-oxygen": "^3.0.0",
|
|
19
19
|
"graphql": "^16.10.0",
|
|
20
|
-
"@shopify/hydrogen": "2025.1.4",
|
|
21
|
-
"@shopify/remix-oxygen": "^2.0.12",
|
|
22
20
|
"graphql-tag": "^2.12.6",
|
|
23
21
|
"isbot": "^5.1.22",
|
|
24
22
|
"react": "^18.2.0",
|
|
25
|
-
"react-dom": "^18.2.0"
|
|
23
|
+
"react-dom": "^18.2.0",
|
|
24
|
+
"react-router": "7.6.0",
|
|
25
|
+
"react-router-dom": "7.6.0"
|
|
26
26
|
},
|
|
27
27
|
"devDependencies": {
|
|
28
28
|
"@eslint/compat": "^1.2.5",
|
|
29
29
|
"@eslint/eslintrc": "^3.2.0",
|
|
30
30
|
"@eslint/js": "^9.18.0",
|
|
31
31
|
"@graphql-codegen/cli": "5.0.2",
|
|
32
|
-
"@
|
|
33
|
-
"@
|
|
34
|
-
"@
|
|
35
|
-
"@shopify/cli": "~3.78.1",
|
|
32
|
+
"@react-router/dev": "7.6.0",
|
|
33
|
+
"@react-router/fs-routes": "7.6.0",
|
|
34
|
+
"@shopify/cli": "~3.80.4",
|
|
36
35
|
"@shopify/hydrogen-codegen": "^0.3.3",
|
|
37
36
|
"@shopify/mini-oxygen": "^3.2.1",
|
|
38
37
|
"@shopify/oxygen-workers-types": "^4.1.6",
|
|
39
38
|
"@shopify/prettier-config": "^1.1.2",
|
|
40
39
|
"@total-typescript/ts-reset": "^0.6.1",
|
|
41
|
-
"prettier": "^3.4.2",
|
|
42
40
|
"@types/eslint": "^9.6.1",
|
|
43
41
|
"@types/react": "^18.2.22",
|
|
44
42
|
"@types/react-dom": "^18.2.7",
|
|
@@ -54,6 +52,7 @@
|
|
|
54
52
|
"eslint-plugin-react": "^7.37.4",
|
|
55
53
|
"eslint-plugin-react-hooks": "^5.1.0",
|
|
56
54
|
"globals": "^15.14.0",
|
|
55
|
+
"prettier": "^3.4.2",
|
|
57
56
|
"typescript": "^5.2.2",
|
|
58
57
|
"vite": "^6.2.4",
|
|
59
58
|
"vite-tsconfig-paths": "^4.3.1"
|
|
@@ -61,4 +60,4 @@
|
|
|
61
60
|
"engines": {
|
|
62
61
|
"node": ">=18.0.0"
|
|
63
62
|
}
|
|
64
|
-
}
|
|
63
|
+
}
|
|
@@ -1,8 +1,4 @@
|
|
|
1
1
|
// Virtual entry point for the app
|
|
2
|
-
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
3
|
-
// @ts-ignore
|
|
4
|
-
// eslint-disable-next-line import/no-unresolved
|
|
5
|
-
import * as remixBuild from 'virtual:remix/server-build';
|
|
6
2
|
import {storefrontRedirect} from '@shopify/hydrogen';
|
|
7
3
|
import {createRequestHandler} from '@shopify/remix-oxygen';
|
|
8
4
|
import {createAppLoadContext} from '~/lib/context';
|
|
@@ -28,7 +24,8 @@ export default {
|
|
|
28
24
|
* Hydrogen's Storefront client to the loader context.
|
|
29
25
|
*/
|
|
30
26
|
const handleRequest = createRequestHandler({
|
|
31
|
-
|
|
27
|
+
// eslint-disable-next-line import/no-unresolved
|
|
28
|
+
build: await import('virtual:react-router/server-build'),
|
|
32
29
|
mode: process.env.NODE_ENV,
|
|
33
30
|
getLoadContext: () => appLoadContext,
|
|
34
31
|
});
|