@shopify/cli 3.61.0 → 3.61.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 (119) hide show
  1. package/dist/assets/hydrogen/starter/.eslintrc.cjs +1 -0
  2. package/dist/assets/hydrogen/starter/CHANGELOG.md +12 -74
  3. package/dist/assets/hydrogen/starter/app/components/Footer.tsx +3 -3
  4. package/dist/assets/hydrogen/starter/app/components/PageLayout.tsx +1 -1
  5. package/dist/assets/hydrogen/starter/app/root.tsx +77 -37
  6. package/dist/assets/hydrogen/starter/app/routes/_index.tsx +62 -25
  7. package/dist/assets/hydrogen/starter/app/routes/blogs.$blogHandle.$articleHandle.tsx +32 -6
  8. package/dist/assets/hydrogen/starter/app/routes/blogs.$blogHandle._index.tsx +36 -10
  9. package/dist/assets/hydrogen/starter/app/routes/blogs._index.tsx +35 -12
  10. package/dist/assets/hydrogen/starter/app/routes/collections.$handle.tsx +40 -7
  11. package/dist/assets/hydrogen/starter/app/routes/collections._index.tsx +32 -6
  12. package/dist/assets/hydrogen/starter/app/routes/collections.all.tsx +31 -6
  13. package/dist/assets/hydrogen/starter/app/routes/pages.$handle.tsx +36 -8
  14. package/dist/assets/hydrogen/starter/app/routes/products.$handle.tsx +50 -11
  15. package/dist/assets/hydrogen/starter/package.json +6 -7
  16. package/dist/assets/hydrogen/virtual-routes/components/RequestDetails.jsx +1 -2
  17. package/dist/assets/hydrogen/virtual-routes/components/RequestTable.jsx +1 -2
  18. package/dist/assets/hydrogen/virtual-routes/routes/index.jsx +1 -2
  19. package/dist/{chunk-LXXUWZRO.js → chunk-2OLSNRWX.js} +2 -2
  20. package/dist/{chunk-FFHJRSIP.js → chunk-4IJQUE7S.js} +1 -1
  21. package/dist/{chunk-2RKUO75O.js → chunk-4L5RRXWK.js} +129 -124
  22. package/dist/{chunk-75BJ33EP.js → chunk-5AOK2Y6Y.js} +2 -2
  23. package/dist/{chunk-4IXC46ZA.js → chunk-5CMD3IOB.js} +4 -4
  24. package/dist/{chunk-QX3YP6O5.js → chunk-5KRK4DLX.js} +2598 -795
  25. package/dist/{chunk-463OPQAS.js → chunk-72B3OWJW.js} +1 -1
  26. package/dist/{chunk-FWKRA64T.js → chunk-APKJSJ7J.js} +3 -3
  27. package/dist/{chunk-Q7PY7LVL.js → chunk-BV7GMWB6.js} +3 -3
  28. package/dist/{chunk-ABZKHSZ5.js → chunk-CJDUY6SJ.js} +1 -1
  29. package/dist/{chunk-7YJH7P7B.js → chunk-CWYZA7C7.js} +1 -1
  30. package/dist/{chunk-AL4KPZUN.js → chunk-CZ3HSQWY.js} +2 -2
  31. package/dist/{chunk-XRFOYWYI.js → chunk-D6WPLX6I.js} +2 -2
  32. package/dist/{chunk-EFL5CN6M.js → chunk-DDSNKVSE.js} +4 -4
  33. package/dist/{chunk-63QEL3SZ.js → chunk-EE47RXD7.js} +4 -4
  34. package/dist/{chunk-RW6YXHBL.js → chunk-FAJJWN6E.js} +12 -12
  35. package/dist/{chunk-OOAZSPYS.js → chunk-IH7T5JPW.js} +3 -3
  36. package/dist/{chunk-DWXXFI3U.js → chunk-IHBQYIUZ.js} +6 -6
  37. package/dist/{chunk-WNXHHHLZ.js → chunk-ITNVIYE3.js} +3 -3
  38. package/dist/{chunk-CMFKWJDJ.js → chunk-IWPRI3XU.js} +3 -3
  39. package/dist/{chunk-EDVQGTOL.js → chunk-K7AOF3FH.js} +4 -4
  40. package/dist/{chunk-2Q7SKRRM.js → chunk-K7RRB5XV.js} +162 -131
  41. package/dist/{chunk-3W2QB2OC.js → chunk-KKVOR377.js} +2 -2
  42. package/dist/{chunk-LY6UIYOG.js → chunk-KNQWUKO7.js} +2 -2
  43. package/dist/{chunk-ZOTASNQ2.js → chunk-MOWOUC6B.js} +1 -1
  44. package/dist/{chunk-ONJCU4C5.js → chunk-MUSUHPY2.js} +2 -2
  45. package/dist/{chunk-O53XNGJU.js → chunk-MVPEKELJ.js} +1 -1
  46. package/dist/{chunk-YZIPQNOG.js → chunk-MZ2TTN37.js} +2 -2
  47. package/dist/{chunk-2AH5EBXL.js → chunk-NNUPTNLQ.js} +4 -4
  48. package/dist/{chunk-UJQBYPRO.js → chunk-OC4AY5G7.js} +1 -1
  49. package/dist/{chunk-V67RXPI6.js → chunk-PMW2LD65.js} +3 -3
  50. package/dist/{chunk-5NBS5LAW.js → chunk-Q5FUGUDS.js} +1 -1
  51. package/dist/{chunk-TXDYKQZT.js → chunk-QMWGTSUE.js} +4 -4
  52. package/dist/{chunk-JZ5DN7RX.js → chunk-WLP3ZOM3.js} +2509 -728
  53. package/dist/{chunk-IIVL4DYB.js → chunk-WVPWWPI5.js} +2 -2
  54. package/dist/{chunk-XDCNK2SU.js → chunk-WZTRJKOI.js} +2 -2
  55. package/dist/{chunk-B4KDQK3X.js → chunk-XMZ6YUCX.js} +2 -2
  56. package/dist/{chunk-LUGC3D2G.js → chunk-YWPV7MV2.js} +6 -6
  57. package/dist/{chunk-HJ2JCW7E.js → chunk-Z5LDVTOK.js} +2 -2
  58. package/dist/cli/commands/auth/logout.js +18 -18
  59. package/dist/cli/commands/auth/logout.test.js +19 -19
  60. package/dist/cli/commands/debug/command-flags.js +17 -17
  61. package/dist/cli/commands/demo/catalog.js +18 -18
  62. package/dist/cli/commands/demo/generate-file.js +18 -18
  63. package/dist/cli/commands/demo/index.js +17 -17
  64. package/dist/cli/commands/demo/print-ai-prompt.js +18 -18
  65. package/dist/cli/commands/docs/generate.js +17 -17
  66. package/dist/cli/commands/docs/generate.test.js +17 -17
  67. package/dist/cli/commands/help.js +17 -17
  68. package/dist/cli/commands/kitchen-sink/async.js +18 -18
  69. package/dist/cli/commands/kitchen-sink/async.test.js +18 -18
  70. package/dist/cli/commands/kitchen-sink/index.js +20 -20
  71. package/dist/cli/commands/kitchen-sink/index.test.js +20 -20
  72. package/dist/cli/commands/kitchen-sink/prompts.js +18 -18
  73. package/dist/cli/commands/kitchen-sink/prompts.test.js +18 -18
  74. package/dist/cli/commands/kitchen-sink/static.js +18 -18
  75. package/dist/cli/commands/kitchen-sink/static.test.js +18 -18
  76. package/dist/cli/commands/search.js +18 -18
  77. package/dist/cli/commands/upgrade.js +17 -17
  78. package/dist/cli/commands/version.js +18 -18
  79. package/dist/cli/commands/version.test.js +18 -18
  80. package/dist/cli/services/commands/search.js +8 -8
  81. package/dist/cli/services/commands/search.test.js +8 -8
  82. package/dist/cli/services/commands/version.js +11 -11
  83. package/dist/cli/services/commands/version.test.js +12 -12
  84. package/dist/cli/services/demo.js +8 -8
  85. package/dist/cli/services/demo.test.js +8 -8
  86. package/dist/cli/services/kitchen-sink/async.js +8 -8
  87. package/dist/cli/services/kitchen-sink/prompts.js +8 -8
  88. package/dist/cli/services/kitchen-sink/static.js +8 -8
  89. package/dist/cli/services/upgrade.js +10 -10
  90. package/dist/cli/services/upgrade.test.js +11 -11
  91. package/dist/{chunk-5R5656YY.js → custom-oclif-loader-FPNRMQLJ.js} +18 -3
  92. package/dist/{custom-oclif-loader-KLTAWG4B-VOMMA3PO.js → custom-oclif-loader-RLNBRURI-YQ7IWI5Q.js} +4 -4
  93. package/dist/{error-handler-UJK7WNJE.js → error-handler-5ZOJ546L.js} +10 -10
  94. package/dist/{error-handler-ND7WBMC3-CRFJKAS4.js → error-handler-764JJPWK-SOMSJP6S.js} +6 -6
  95. package/dist/{error-handler-FUQWOW4J.js → error-handler-EOKEDDHC.js} +15 -15
  96. package/dist/hooks/postrun.js +13 -13
  97. package/dist/hooks/prerun.js +10 -10
  98. package/dist/index.js +309 -241
  99. package/dist/{lib-76RCE6WZ-AR3SQY6Y.js → lib-76RCE6WZ-5IYGTKKK.js} +2 -2
  100. package/dist/{lib-MWSNLG5P.js → lib-UYK3ZLZK.js} +3 -3
  101. package/dist/{local-3LWDOA7J-UFWE2V6L.js → local-GRWHBAAP-GLATK6HY.js} +4 -4
  102. package/dist/{local-5OND5PI5.js → local-S7EXCS5E.js} +7 -7
  103. package/dist/{morph-FQNWYET7.js → morph-XX23WEJZ.js} +25 -8
  104. package/dist/{node-WNJUHXTR.js → node-SSGKCHRY.js} +14 -14
  105. package/dist/{node-package-manager-ISP2P5R3.js → node-package-manager-V7QQWFES.js} +9 -9
  106. package/dist/{node-package-manager-TFY2ROCP-DDJAU44T.js → node-package-manager-VZCY35QS-AGCABGK7.js} +5 -5
  107. package/dist/{system-G445DF53.js → system-P6PSEW7S.js} +7 -7
  108. package/dist/tsconfig.tsbuildinfo +1 -1
  109. package/dist/{ui-ITQVVPJU.js → ui-JSBDAFMV.js} +7 -7
  110. package/dist/{ui-MUGCNPLG-UG4N3GMV.js → ui-P6NP425V-CKQLZD3E.js} +4 -4
  111. package/dist/{workerd-EZVOCUQW.js → workerd-3U2NNCIK.js} +13 -13
  112. package/oclif.manifest.json +1 -1
  113. package/package.json +4 -5
  114. package/dist/custom-oclif-loader-PJJ3H2WB.js +0 -28
  115. package/dist/hooks/init.d.ts +0 -12
  116. package/dist/hooks/init.js +0 -66
  117. package/dist/hooks/init.js.map +0 -1
  118. package/dist/{chunk-67MDUPX5.js → chunk-I434ZJQI.js} +7 -7
  119. package/dist/{chunk-74JT4RJX.js → chunk-VF4VWJWS.js} +3 -3
@@ -1,4 +1,4 @@
1
- import {json, redirect, type LoaderFunctionArgs} from '@shopify/remix-oxygen';
1
+ import {defer, redirect, type LoaderFunctionArgs} from '@shopify/remix-oxygen';
2
2
  import {useLoaderData, Link, type MetaFunction} from '@remix-run/react';
3
3
  import {
4
4
  Pagination,
@@ -14,7 +14,25 @@ export const meta: MetaFunction<typeof loader> = ({data}) => {
14
14
  return [{title: `Hydrogen | ${data?.collection.title ?? ''} Collection`}];
15
15
  };
16
16
 
17
- export async function loader({request, params, context}: LoaderFunctionArgs) {
17
+ export async function loader(args: LoaderFunctionArgs) {
18
+ // Start fetching non-critical data without blocking time to first byte
19
+ const deferredData = loadDeferredData(args);
20
+
21
+ // Await the critical data required to render initial state of the page
22
+ const criticalData = await loadCriticalData(args);
23
+
24
+ return defer({...deferredData, ...criticalData});
25
+ }
26
+
27
+ /**
28
+ * Load data necessary for rendering content above the fold. This is the critical data
29
+ * needed to render the page. If it's unavailable, the whole page should 400 or 500 error.
30
+ */
31
+ async function loadCriticalData({
32
+ context,
33
+ params,
34
+ request,
35
+ }: LoaderFunctionArgs) {
18
36
  const {handle} = params;
19
37
  const {storefront} = context;
20
38
  const paginationVariables = getPaginationVariables(request, {
@@ -22,19 +40,34 @@ export async function loader({request, params, context}: LoaderFunctionArgs) {
22
40
  });
23
41
 
24
42
  if (!handle) {
25
- return redirect('/collections');
43
+ throw redirect('/collections');
26
44
  }
27
45
 
28
- const {collection} = await storefront.query(COLLECTION_QUERY, {
29
- variables: {handle, ...paginationVariables},
30
- });
46
+ const [{collection}] = await Promise.all([
47
+ storefront.query(COLLECTION_QUERY, {
48
+ variables: {handle, ...paginationVariables},
49
+ // Add other queries here, so that they are loaded in parallel
50
+ }),
51
+ ]);
31
52
 
32
53
  if (!collection) {
33
54
  throw new Response(`Collection ${handle} not found`, {
34
55
  status: 404,
35
56
  });
36
57
  }
37
- return json({collection});
58
+
59
+ return {
60
+ collection,
61
+ };
62
+ }
63
+
64
+ /**
65
+ * Load data for rendering content below the fold. This data is deferred and will be
66
+ * fetched after the initial page load. If it's unavailable, the page should still 200.
67
+ * Make sure to not throw any errors here, as it will cause the page to 500.
68
+ */
69
+ function loadDeferredData({context}: LoaderFunctionArgs) {
70
+ return {};
38
71
  }
39
72
 
40
73
  export default function Collection() {
@@ -1,18 +1,44 @@
1
1
  import {useLoaderData, Link} from '@remix-run/react';
2
- import {json, type LoaderFunctionArgs} from '@shopify/remix-oxygen';
2
+ import {defer, type LoaderFunctionArgs} from '@shopify/remix-oxygen';
3
3
  import {Pagination, getPaginationVariables, Image} from '@shopify/hydrogen';
4
4
  import type {CollectionFragment} from 'storefrontapi.generated';
5
5
 
6
- export async function loader({context, request}: LoaderFunctionArgs) {
6
+ export async function loader(args: LoaderFunctionArgs) {
7
+ // Start fetching non-critical data without blocking time to first byte
8
+ const deferredData = loadDeferredData(args);
9
+
10
+ // Await the critical data required to render initial state of the page
11
+ const criticalData = await loadCriticalData(args);
12
+
13
+ return defer({...deferredData, ...criticalData});
14
+ }
15
+
16
+ /**
17
+ * Load data necessary for rendering content above the fold. This is the critical data
18
+ * needed to render the page. If it's unavailable, the whole page should 400 or 500 error.
19
+ */
20
+ async function loadCriticalData({context, request}: LoaderFunctionArgs) {
7
21
  const paginationVariables = getPaginationVariables(request, {
8
22
  pageBy: 4,
9
23
  });
10
24
 
11
- const {collections} = await context.storefront.query(COLLECTIONS_QUERY, {
12
- variables: paginationVariables,
13
- });
25
+ const [{collections}] = await Promise.all([
26
+ context.storefront.query(COLLECTIONS_QUERY, {
27
+ variables: paginationVariables,
28
+ }),
29
+ // Add other queries here, so that they are loaded in parallel
30
+ ]);
31
+
32
+ return {collections};
33
+ }
14
34
 
15
- return json({collections});
35
+ /**
36
+ * Load data for rendering content below the fold. This data is deferred and will be
37
+ * fetched after the initial page load. If it's unavailable, the page should still 200.
38
+ * Make sure to not throw any errors here, as it will cause the page to 500.
39
+ */
40
+ function loadDeferredData({context}: LoaderFunctionArgs) {
41
+ return {};
16
42
  }
17
43
 
18
44
  export default function Collections() {
@@ -1,4 +1,4 @@
1
- import {json, type LoaderFunctionArgs} from '@shopify/remix-oxygen';
1
+ import {defer, type LoaderFunctionArgs} from '@shopify/remix-oxygen';
2
2
  import {useLoaderData, Link, type MetaFunction} from '@remix-run/react';
3
3
  import {
4
4
  Pagination,
@@ -13,17 +13,42 @@ export const meta: MetaFunction<typeof loader> = () => {
13
13
  return [{title: `Hydrogen | Products`}];
14
14
  };
15
15
 
16
- export async function loader({request, context}: LoaderFunctionArgs) {
16
+ export async function loader(args: LoaderFunctionArgs) {
17
+ // Start fetching non-critical data without blocking time to first byte
18
+ const deferredData = loadDeferredData(args);
19
+
20
+ // Await the critical data required to render initial state of the page
21
+ const criticalData = await loadCriticalData(args);
22
+
23
+ return defer({...deferredData, ...criticalData});
24
+ }
25
+
26
+ /**
27
+ * Load data necessary for rendering content above the fold. This is the critical data
28
+ * needed to render the page. If it's unavailable, the whole page should 400 or 500 error.
29
+ */
30
+ async function loadCriticalData({context, request}: LoaderFunctionArgs) {
17
31
  const {storefront} = context;
18
32
  const paginationVariables = getPaginationVariables(request, {
19
33
  pageBy: 8,
20
34
  });
21
35
 
22
- const {products} = await storefront.query(CATALOG_QUERY, {
23
- variables: {...paginationVariables},
24
- });
36
+ const [{products}] = await Promise.all([
37
+ storefront.query(CATALOG_QUERY, {
38
+ variables: {...paginationVariables},
39
+ }),
40
+ // Add other queries here, so that they are loaded in parallel
41
+ ]);
42
+ return {products};
43
+ }
25
44
 
26
- return json({products});
45
+ /**
46
+ * Load data for rendering content below the fold. This data is deferred and will be
47
+ * fetched after the initial page load. If it's unavailable, the page should still 200.
48
+ * Make sure to not throw any errors here, as it will cause the page to 500.
49
+ */
50
+ function loadDeferredData({context}: LoaderFunctionArgs) {
51
+ return {};
27
52
  }
28
53
 
29
54
  export default function Collection() {
@@ -1,26 +1,54 @@
1
- import {json, type LoaderFunctionArgs} from '@shopify/remix-oxygen';
1
+ import {defer, type LoaderFunctionArgs} from '@shopify/remix-oxygen';
2
2
  import {useLoaderData, type MetaFunction} from '@remix-run/react';
3
3
 
4
4
  export const meta: MetaFunction<typeof loader> = ({data}) => {
5
5
  return [{title: `Hydrogen | ${data?.page.title ?? ''}`}];
6
6
  };
7
7
 
8
- export async function loader({params, context}: LoaderFunctionArgs) {
8
+ export async function loader(args: LoaderFunctionArgs) {
9
+ // Start fetching non-critical data without blocking time to first byte
10
+ const deferredData = loadDeferredData(args);
11
+
12
+ // Await the critical data required to render initial state of the page
13
+ const criticalData = await loadCriticalData(args);
14
+
15
+ return defer({...deferredData, ...criticalData});
16
+ }
17
+
18
+ /**
19
+ * Load data necessary for rendering content above the fold. This is the critical data
20
+ * needed to render the page. If it's unavailable, the whole page should 400 or 500 error.
21
+ */
22
+ async function loadCriticalData({context, params}: LoaderFunctionArgs) {
9
23
  if (!params.handle) {
10
24
  throw new Error('Missing page handle');
11
25
  }
12
26
 
13
- const {page} = await context.storefront.query(PAGE_QUERY, {
14
- variables: {
15
- handle: params.handle,
16
- },
17
- });
27
+ const [{page}] = await Promise.all([
28
+ context.storefront.query(PAGE_QUERY, {
29
+ variables: {
30
+ handle: params.handle,
31
+ },
32
+ }),
33
+ // Add other queries here, so that they are loaded in parallel
34
+ ]);
18
35
 
19
36
  if (!page) {
20
37
  throw new Response('Not Found', {status: 404});
21
38
  }
22
39
 
23
- return json({page});
40
+ return {
41
+ page,
42
+ };
43
+ }
44
+
45
+ /**
46
+ * Load data for rendering content below the fold. This data is deferred and will be
47
+ * fetched after the initial page load. If it's unavailable, the page should still 200.
48
+ * Make sure to not throw any errors here, as it will cause the page to 500.
49
+ */
50
+ function loadDeferredData({context}: LoaderFunctionArgs) {
51
+ return {};
24
52
  }
25
53
 
26
54
  export default function Page() {
@@ -32,7 +32,25 @@ export const meta: MetaFunction<typeof loader> = ({data}) => {
32
32
  return [{title: `Hydrogen | ${data?.product.title ?? ''}`}];
33
33
  };
34
34
 
35
- export async function loader({params, request, context}: LoaderFunctionArgs) {
35
+ export async function loader(args: LoaderFunctionArgs) {
36
+ // Start fetching non-critical data without blocking time to first byte
37
+ const deferredData = loadDeferredData(args);
38
+
39
+ // Await the critical data required to render initial state of the page
40
+ const criticalData = await loadCriticalData(args);
41
+
42
+ return defer({...deferredData, ...criticalData});
43
+ }
44
+
45
+ /**
46
+ * Load data necessary for rendering content above the fold. This is the critical data
47
+ * needed to render the page. If it's unavailable, the whole page should 400 or 500 error.
48
+ */
49
+ async function loadCriticalData({
50
+ context,
51
+ params,
52
+ request,
53
+ }: LoaderFunctionArgs) {
36
54
  const {handle} = params;
37
55
  const {storefront} = context;
38
56
 
@@ -40,10 +58,12 @@ export async function loader({params, request, context}: LoaderFunctionArgs) {
40
58
  throw new Error('Expected product handle to be defined');
41
59
  }
42
60
 
43
- // await the query for the critical product data
44
- const {product} = await storefront.query(PRODUCT_QUERY, {
45
- variables: {handle, selectedOptions: getSelectedProductOptions(request)},
46
- });
61
+ const [{product}] = await Promise.all([
62
+ storefront.query(PRODUCT_QUERY, {
63
+ variables: {handle, selectedOptions: getSelectedProductOptions(request)},
64
+ }),
65
+ // Add other queries here, so that they are loaded in parallel
66
+ ]);
47
67
 
48
68
  if (!product?.id) {
49
69
  throw new Response(null, {status: 404});
@@ -67,16 +87,35 @@ export async function loader({params, request, context}: LoaderFunctionArgs) {
67
87
  }
68
88
  }
69
89
 
90
+ return {
91
+ product,
92
+ };
93
+ }
94
+
95
+ /**
96
+ * Load data for rendering content below the fold. This data is deferred and will be
97
+ * fetched after the initial page load. If it's unavailable, the page should still 200.
98
+ * Make sure to not throw any errors here, as it will cause the page to 500.
99
+ */
100
+ function loadDeferredData({context, params}: LoaderFunctionArgs) {
70
101
  // In order to show which variants are available in the UI, we need to query
71
102
  // all of them. But there might be a *lot*, so instead separate the variants
72
103
  // into it's own separate query that is deferred. So there's a brief moment
73
104
  // where variant options might show as available when they're not, but after
74
105
  // this deffered query resolves, the UI will update.
75
- const variants = storefront.query(VARIANTS_QUERY, {
76
- variables: {handle},
77
- });
106
+ const variants = context.storefront
107
+ .query(VARIANTS_QUERY, {
108
+ variables: {handle: params.handle!},
109
+ })
110
+ .catch((error) => {
111
+ // Log query errors, but don't throw them so the page can still render
112
+ console.error(error);
113
+ return null;
114
+ });
78
115
 
79
- return defer({product, variants});
116
+ return {
117
+ variants,
118
+ };
80
119
  }
81
120
 
82
121
  function redirectToFirstVariant({
@@ -156,7 +195,7 @@ function ProductMain({
156
195
  }: {
157
196
  product: ProductFragment;
158
197
  selectedVariant: ProductFragment['selectedVariant'];
159
- variants: Promise<ProductVariantsQuery>;
198
+ variants: Promise<ProductVariantsQuery | null>;
160
199
  }) {
161
200
  const {title, descriptionHtml} = product;
162
201
  return (
@@ -181,7 +220,7 @@ function ProductMain({
181
220
  <ProductForm
182
221
  product={product}
183
222
  selectedVariant={selectedVariant}
184
- variants={data.product?.variants.nodes || []}
223
+ variants={data?.product?.variants.nodes || []}
185
224
  />
186
225
  )}
187
226
  </Await>
@@ -2,7 +2,7 @@
2
2
  "name": "skeleton",
3
3
  "private": true,
4
4
  "sideEffects": false,
5
- "version": "0.0.0-next-ca7f288-20240530103543",
5
+ "version": "0.0.0-next-a8b9c6c-20240606114114",
6
6
  "type": "module",
7
7
  "scripts": {
8
8
  "build": "shopify hydrogen build --codegen",
@@ -16,10 +16,9 @@
16
16
  "dependencies": {
17
17
  "@remix-run/react": "^2.9.2",
18
18
  "@remix-run/server-runtime": "^2.9.2",
19
- "@shopify/cli": "3.60.0",
20
- "@shopify/cli-hydrogen": "0.0.0-next-ca7f288-20240530103543",
21
- "@shopify/hydrogen": "0.0.0-next-ca7f288-20240530103543",
22
- "@shopify/remix-oxygen": "0.0.0-next-ca7f288-20240530103543",
19
+ "@shopify/cli": "3.61.0",
20
+ "@shopify/hydrogen": "0.0.0-next-a8b9c6c-20240606114114",
21
+ "@shopify/remix-oxygen": "0.0.0-next-a8b9c6c-20240606114114",
23
22
  "graphql": "^16.6.0",
24
23
  "graphql-tag": "^2.12.6",
25
24
  "isbot": "^3.8.0",
@@ -30,8 +29,8 @@
30
29
  "@graphql-codegen/cli": "5.0.2",
31
30
  "@remix-run/dev": "^2.9.2",
32
31
  "@remix-run/eslint-config": "^2.9.2",
33
- "@shopify/hydrogen-codegen": "0.0.0-next-ca7f288-20240530103543",
34
- "@shopify/mini-oxygen": "0.0.0-next-ca7f288-20240530103543",
32
+ "@shopify/hydrogen-codegen": "0.0.0-next-a8b9c6c-20240606114114",
33
+ "@shopify/mini-oxygen": "^3.0.3",
35
34
  "@shopify/oxygen-workers-types": "^4.0.0",
36
35
  "@shopify/prettier-config": "^1.1.2",
37
36
  "@total-typescript/ts-reset": "^0.4.2",
@@ -34,8 +34,7 @@ function RequestDetails({
34
34
  className: `tab${activeTabClass(key)}`,
35
35
  onClick: () => setActiveTab(key),
36
36
  onKeyUp: (event) => {
37
- if (event.code === "Space")
38
- setActiveTab(key);
37
+ if (event.code === "Space") setActiveTab(key);
39
38
  },
40
39
  children: TABS[key]
41
40
  }
@@ -61,8 +61,7 @@ function RequestTable({
61
61
  className: `grid-row${activeEventId === row.id ? " active" : ""}${row.status >= 400 ? " error" : ""}`,
62
62
  onClick: () => setActiveEventId(row.id),
63
63
  onKeyUp: (event) => {
64
- if (event.code === "Space")
65
- setActiveEventId(row.id);
64
+ if (event.code === "Space") setActiveEventId(row.id);
66
65
  },
67
66
  children: [
68
67
  /* @__PURE__ */ jsx("div", { className: "grid-cell", children: row.url }),
@@ -47,8 +47,7 @@ function Index() {
47
47
  } = useLoaderData();
48
48
  let { name: shopName, id: shopId } = shop;
49
49
  const configDone = shopId !== HYDROGEN_SHOP_ID && !isMockShop;
50
- if (isMockShop || !shopName)
51
- shopName = "Hydrogen";
50
+ if (isMockShop || !shopName) shopName = "Hydrogen";
52
51
  return /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsxs(Layout, { shopName, children: [
53
52
  configDone ? /* @__PURE__ */ jsx(HydrogenLogoBaseColor, {}) : /* @__PURE__ */ jsx(HydrogenLogoBaseBW, {}),
54
53
  /* @__PURE__ */ jsxs("h1", { children: [
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  versionService
3
- } from "./chunk-OOAZSPYS.js";
3
+ } from "./chunk-IH7T5JPW.js";
4
4
  import {
5
5
  base_command_default
6
- } from "./chunk-EDVQGTOL.js";
6
+ } from "./chunk-K7AOF3FH.js";
7
7
  import {
8
8
  init_cjs_shims
9
9
  } from "./chunk-M63RTPGR.js";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  clearCollectedLogs,
3
3
  collectedLogs
4
- } from "./chunk-4IXC46ZA.js";
4
+ } from "./chunk-5CMD3IOB.js";
5
5
  import {
6
6
  init_cjs_shims
7
7
  } from "./chunk-M63RTPGR.js";