@shopify/cli 3.65.1 → 3.65.3

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 (122) hide show
  1. package/dist/assets/hydrogen/i18n/domains.ts +4 -11
  2. package/dist/assets/hydrogen/i18n/mock-i18n-types.ts +4 -2
  3. package/dist/assets/hydrogen/i18n/subdomains.ts +4 -11
  4. package/dist/assets/hydrogen/i18n/subfolders.ts +4 -11
  5. package/dist/assets/hydrogen/starter/CHANGELOG.md +165 -0
  6. package/dist/assets/hydrogen/starter/app/components/CartLineItem.tsx +5 -2
  7. package/dist/assets/hydrogen/starter/app/components/CartMain.tsx +2 -2
  8. package/dist/assets/hydrogen/starter/app/components/PageLayout.tsx +65 -19
  9. package/dist/assets/hydrogen/starter/app/components/PaginatedResourceSection.tsx +42 -0
  10. package/dist/assets/hydrogen/starter/app/components/SearchForm.tsx +68 -0
  11. package/dist/assets/hydrogen/starter/app/components/SearchFormPredictive.tsx +76 -0
  12. package/dist/assets/hydrogen/starter/app/components/SearchResults.tsx +164 -0
  13. package/dist/assets/hydrogen/starter/app/components/SearchResultsPredictive.tsx +322 -0
  14. package/dist/assets/hydrogen/starter/app/entry.client.tsx +10 -8
  15. package/dist/assets/hydrogen/starter/app/entry.server.tsx +1 -1
  16. package/dist/assets/hydrogen/starter/app/lib/context.ts +43 -0
  17. package/dist/assets/hydrogen/starter/app/lib/fragments.ts +53 -0
  18. package/dist/assets/hydrogen/starter/app/lib/search.ts +74 -24
  19. package/dist/assets/hydrogen/starter/app/root.tsx +4 -7
  20. package/dist/assets/hydrogen/starter/app/routes/account.addresses.tsx +2 -3
  21. package/dist/assets/hydrogen/starter/app/routes/account.orders._index.tsx +5 -19
  22. package/dist/assets/hydrogen/starter/app/routes/blogs.$blogHandle._index.tsx +11 -24
  23. package/dist/assets/hydrogen/starter/app/routes/blogs._index.tsx +14 -27
  24. package/dist/assets/hydrogen/starter/app/routes/collections.$handle.tsx +12 -30
  25. package/dist/assets/hydrogen/starter/app/routes/collections._index.tsx +13 -27
  26. package/dist/assets/hydrogen/starter/app/routes/collections.all.tsx +9 -31
  27. package/dist/assets/hydrogen/starter/app/routes/search.tsx +312 -73
  28. package/dist/assets/hydrogen/starter/app/styles/reset.css +12 -2
  29. package/dist/assets/hydrogen/starter/env.d.ts +11 -30
  30. package/dist/assets/hydrogen/starter/guides/predictiveSearch/predictiveSearch.jpg +0 -0
  31. package/dist/assets/hydrogen/starter/guides/predictiveSearch/predictiveSearch.md +391 -0
  32. package/dist/assets/hydrogen/starter/guides/search/search.jpg +0 -0
  33. package/dist/assets/hydrogen/starter/guides/search/search.md +333 -0
  34. package/dist/assets/hydrogen/starter/package.json +4 -4
  35. package/dist/assets/hydrogen/starter/server.ts +18 -74
  36. package/dist/assets/hydrogen/starter/storefrontapi.generated.d.ts +242 -172
  37. package/dist/assets/hydrogen/virtual-routes/components/{PageLayout.jsx → Layout.jsx} +2 -2
  38. package/dist/assets/hydrogen/virtual-routes/virtual-root.jsx +7 -6
  39. package/dist/{chunk-H42RFZDD.js → chunk-3ABSSTBQ.js} +4 -4
  40. package/dist/{chunk-M7WMYV4S.js → chunk-3D4VZQOH.js} +2 -2
  41. package/dist/{chunk-J7BYFGNJ.js → chunk-3GSKXZGY.js} +2 -2
  42. package/dist/{chunk-TDWX3KIR.js → chunk-3LDWVYMD.js} +2 -2
  43. package/dist/{chunk-N2BXKOJG.js → chunk-646BIVHE.js} +4 -4
  44. package/dist/{chunk-CZ3SHYYH.js → chunk-7WAEFADN.js} +4 -4
  45. package/dist/{chunk-EKT2GUGH.js → chunk-7WGBIPDW.js} +2 -2
  46. package/dist/{chunk-M6KGRVDD.js → chunk-AX77SAMU.js} +3 -3
  47. package/dist/{chunk-4HAEQQTQ.js → chunk-BQBBVYYU.js} +4 -4
  48. package/dist/{chunk-5YD4FDOS.js → chunk-BZLNTDGG.js} +3 -3
  49. package/dist/{chunk-VWALMO2Z.js → chunk-CSCEGIBZ.js} +3 -3
  50. package/dist/{chunk-F2Y7KYHZ.js → chunk-EIUQV76I.js} +5 -5
  51. package/dist/{chunk-MODBIZ4R.js → chunk-GN74L7IW.js} +2 -2
  52. package/dist/{chunk-5EAVIJTQ.js → chunk-HYCRESCR.js} +2 -2
  53. package/dist/{chunk-GDARYUPU.js → chunk-K7KD247K.js} +188 -243
  54. package/dist/{chunk-PZM45AUI.js → chunk-KIUXMPTX.js} +3 -3
  55. package/dist/{chunk-PYMSCBPA.js → chunk-LAJ4OEME.js} +2 -2
  56. package/dist/{chunk-YVHV3H5H.js → chunk-MIQBXNSN.js} +4 -4
  57. package/dist/{chunk-BLKDGMHM.js → chunk-MV6A3QHA.js} +4 -4
  58. package/dist/{chunk-CFFAWVDL.js → chunk-N3YORLAS.js} +2 -2
  59. package/dist/{chunk-EU5ZOEUT.js → chunk-NBTEOGQW.js} +2 -2
  60. package/dist/{chunk-ZXJU6UP4.js → chunk-O3JOUAA5.js} +4 -4
  61. package/dist/{chunk-EZ5DG73H.js → chunk-PEAIOYXD.js} +4 -4
  62. package/dist/{chunk-YDS7NZBQ.js → chunk-R5GT4GBL.js} +4 -4
  63. package/dist/{chunk-6M65VRAT.js → chunk-S7FJTFYR.js} +5 -5
  64. package/dist/{chunk-DX2RXOQ5.js → chunk-S7RH664J.js} +3 -3
  65. package/dist/{chunk-WMECC32P.js → chunk-SKF2SKWO.js} +3 -3
  66. package/dist/{chunk-27HGZPUX.js → chunk-SMKCVFDT.js} +3 -3
  67. package/dist/{chunk-EID6L4PR.js → chunk-T4Y7NDNJ.js} +2 -2
  68. package/dist/{chunk-PY33KMCK.js → chunk-TWWJNMTO.js} +2 -2
  69. package/dist/{chunk-YXPGPWR2.js → chunk-U2PN6QZ2.js} +5 -5
  70. package/dist/{chunk-3REVOIEW.js → chunk-UBCH575K.js} +5 -5
  71. package/dist/{chunk-A4NQWDPT.js → chunk-XLURAR5E.js} +3 -3
  72. package/dist/{chunk-ZZKUI3DP.js → chunk-YPG7LXPN.js} +3 -3
  73. package/dist/cli/commands/auth/logout.js +10 -10
  74. package/dist/cli/commands/auth/logout.test.js +11 -11
  75. package/dist/cli/commands/debug/command-flags.js +9 -9
  76. package/dist/cli/commands/demo/catalog.js +10 -10
  77. package/dist/cli/commands/demo/generate-file.js +10 -10
  78. package/dist/cli/commands/demo/index.js +10 -10
  79. package/dist/cli/commands/demo/print-ai-prompt.js +10 -10
  80. package/dist/cli/commands/docs/generate.js +9 -9
  81. package/dist/cli/commands/docs/generate.test.js +9 -9
  82. package/dist/cli/commands/help.js +9 -9
  83. package/dist/cli/commands/kitchen-sink/async.js +10 -10
  84. package/dist/cli/commands/kitchen-sink/async.test.js +10 -10
  85. package/dist/cli/commands/kitchen-sink/index.js +12 -12
  86. package/dist/cli/commands/kitchen-sink/index.test.js +12 -12
  87. package/dist/cli/commands/kitchen-sink/prompts.js +10 -10
  88. package/dist/cli/commands/kitchen-sink/prompts.test.js +10 -10
  89. package/dist/cli/commands/kitchen-sink/static.js +10 -10
  90. package/dist/cli/commands/kitchen-sink/static.test.js +10 -10
  91. package/dist/cli/commands/search.js +10 -10
  92. package/dist/cli/commands/upgrade.js +9 -9
  93. package/dist/cli/commands/version.js +10 -10
  94. package/dist/cli/commands/version.test.js +10 -10
  95. package/dist/cli/services/commands/search.js +2 -2
  96. package/dist/cli/services/commands/search.test.js +2 -2
  97. package/dist/cli/services/commands/version.js +4 -4
  98. package/dist/cli/services/commands/version.test.js +5 -5
  99. package/dist/cli/services/demo.js +2 -2
  100. package/dist/cli/services/demo.test.js +2 -2
  101. package/dist/cli/services/kitchen-sink/async.js +2 -2
  102. package/dist/cli/services/kitchen-sink/prompts.js +2 -2
  103. package/dist/cli/services/kitchen-sink/static.js +2 -2
  104. package/dist/cli/services/upgrade.js +3 -3
  105. package/dist/cli/services/upgrade.test.js +5 -5
  106. package/dist/{custom-oclif-loader-JHNX2EGV.js → custom-oclif-loader-BT7EH2NN.js} +3 -3
  107. package/dist/{error-handler-4UJ6363X.js → error-handler-OSEY6KVA.js} +8 -8
  108. package/dist/hooks/postrun.js +6 -6
  109. package/dist/hooks/prerun.js +4 -4
  110. package/dist/index.js +1333 -1279
  111. package/dist/{local-V7RONWNU.js → local-OQXN5NM2.js} +2 -2
  112. package/dist/{morph-DN4AZJZW.js → morph-IQTWRBBT.js} +16 -12
  113. package/dist/{node-3H4OKRLA.js → node-YQVH3Y7J.js} +13 -13
  114. package/dist/{node-package-manager-XM7EXHQA.js → node-package-manager-VW2DN7R4.js} +3 -3
  115. package/dist/{system-F63VIZ5U.js → system-347PZWVP.js} +2 -2
  116. package/dist/tsconfig.tsbuildinfo +1 -1
  117. package/dist/{ui-BXWWRIFS.js → ui-S7L55PBH.js} +2 -2
  118. package/dist/{workerd-A5NCF6UA.js → workerd-OLKE7G4X.js} +12 -12
  119. package/oclif.manifest.json +39 -2
  120. package/package.json +7 -7
  121. package/dist/assets/hydrogen/starter/app/components/Search.tsx +0 -514
  122. package/dist/assets/hydrogen/starter/app/routes/api.predictive-search.tsx +0 -318
@@ -1,318 +0,0 @@
1
- import {json, type LoaderFunctionArgs} from '@shopify/remix-oxygen';
2
- import type {
3
- NormalizedPredictiveSearch,
4
- NormalizedPredictiveSearchResults,
5
- } from '~/components/Search';
6
- import {NO_PREDICTIVE_SEARCH_RESULTS} from '~/components/Search';
7
- import {applyTrackingParams} from '~/lib/search';
8
-
9
- import type {
10
- PredictiveArticleFragment,
11
- PredictiveCollectionFragment,
12
- PredictivePageFragment,
13
- PredictiveProductFragment,
14
- PredictiveQueryFragment,
15
- PredictiveSearchQuery,
16
- } from 'storefrontapi.generated';
17
-
18
- type PredictiveSearchTypes =
19
- | 'ARTICLE'
20
- | 'COLLECTION'
21
- | 'PAGE'
22
- | 'PRODUCT'
23
- | 'QUERY';
24
-
25
- const DEFAULT_SEARCH_TYPES: PredictiveSearchTypes[] = [
26
- 'ARTICLE',
27
- 'COLLECTION',
28
- 'PAGE',
29
- 'PRODUCT',
30
- 'QUERY',
31
- ];
32
-
33
- export type PredictiveSearchAPILoader = typeof loader;
34
-
35
- /**
36
- * Fetches the search results from the predictive search API
37
- * requested by the SearchForm component
38
- */
39
- export async function loader({request, params, context}: LoaderFunctionArgs) {
40
- const search = await fetchPredictiveSearchResults({
41
- params,
42
- request,
43
- context,
44
- });
45
-
46
- return json(search, {
47
- headers: {'Cache-Control': `max-age=${search.searchTerm ? 60 : 3600}`},
48
- });
49
- }
50
-
51
- async function fetchPredictiveSearchResults({
52
- params,
53
- request,
54
- context,
55
- }: Pick<LoaderFunctionArgs, 'params' | 'context' | 'request'>) {
56
- const url = new URL(request.url);
57
- const searchParams = new URLSearchParams(url.search);
58
- const searchTerm = searchParams.get('q') || '';
59
- const limit = Number(searchParams.get('limit') || 10);
60
- const rawTypes = String(searchParams.get('type') || 'ANY');
61
-
62
- const searchTypes =
63
- rawTypes === 'ANY'
64
- ? DEFAULT_SEARCH_TYPES
65
- : rawTypes
66
- .split(',')
67
- .map((t) => t.toUpperCase() as PredictiveSearchTypes)
68
- .filter((t) => DEFAULT_SEARCH_TYPES.includes(t));
69
-
70
- if (!searchTerm) {
71
- return {
72
- searchResults: {results: null, totalResults: 0},
73
- searchTerm,
74
- searchTypes,
75
- };
76
- }
77
-
78
- const data = await context.storefront.query(PREDICTIVE_SEARCH_QUERY, {
79
- variables: {
80
- limit,
81
- limitScope: 'EACH',
82
- searchTerm,
83
- types: searchTypes,
84
- },
85
- });
86
-
87
- if (!data) {
88
- throw new Error('No data returned from Shopify API');
89
- }
90
-
91
- const searchResults = normalizePredictiveSearchResults(
92
- data.predictiveSearch,
93
- params.locale,
94
- );
95
-
96
- return {searchResults, searchTerm, searchTypes};
97
- }
98
-
99
- /**
100
- * Normalize results and apply tracking qurery parameters to each result url
101
- */
102
- export function normalizePredictiveSearchResults(
103
- predictiveSearch: PredictiveSearchQuery['predictiveSearch'],
104
- locale: LoaderFunctionArgs['params']['locale'],
105
- ): NormalizedPredictiveSearch {
106
- let totalResults = 0;
107
- if (!predictiveSearch) {
108
- return {
109
- results: NO_PREDICTIVE_SEARCH_RESULTS,
110
- totalResults,
111
- };
112
- }
113
-
114
- const localePrefix = locale ? `/${locale}` : '';
115
- const results: NormalizedPredictiveSearchResults = [];
116
-
117
- if (predictiveSearch.queries.length) {
118
- results.push({
119
- type: 'queries',
120
- items: predictiveSearch.queries.map((query: PredictiveQueryFragment) => {
121
- const trackingParams = applyTrackingParams(
122
- query,
123
- `q=${encodeURIComponent(query.text)}`,
124
- );
125
-
126
- totalResults++;
127
- return {
128
- __typename: query.__typename,
129
- handle: '',
130
- id: query.text,
131
- image: undefined,
132
- title: query.text,
133
- styledTitle: query.styledText,
134
- url: `${localePrefix}/search${trackingParams}`,
135
- };
136
- }),
137
- });
138
- }
139
-
140
- if (predictiveSearch.products.length) {
141
- results.push({
142
- type: 'products',
143
- items: predictiveSearch.products.map(
144
- (product: PredictiveProductFragment) => {
145
- totalResults++;
146
- const trackingParams = applyTrackingParams(product);
147
- return {
148
- __typename: product.__typename,
149
- handle: product.handle,
150
- id: product.id,
151
- image: product.variants?.nodes?.[0]?.image,
152
- title: product.title,
153
- url: `${localePrefix}/products/${product.handle}${trackingParams}`,
154
- price: product.variants.nodes[0].price,
155
- };
156
- },
157
- ),
158
- });
159
- }
160
-
161
- if (predictiveSearch.collections.length) {
162
- results.push({
163
- type: 'collections',
164
- items: predictiveSearch.collections.map(
165
- (collection: PredictiveCollectionFragment) => {
166
- totalResults++;
167
- const trackingParams = applyTrackingParams(collection);
168
- return {
169
- __typename: collection.__typename,
170
- handle: collection.handle,
171
- id: collection.id,
172
- image: collection.image,
173
- title: collection.title,
174
- url: `${localePrefix}/collections/${collection.handle}${trackingParams}`,
175
- };
176
- },
177
- ),
178
- });
179
- }
180
-
181
- if (predictiveSearch.pages.length) {
182
- results.push({
183
- type: 'pages',
184
- items: predictiveSearch.pages.map((page: PredictivePageFragment) => {
185
- totalResults++;
186
- const trackingParams = applyTrackingParams(page);
187
- return {
188
- __typename: page.__typename,
189
- handle: page.handle,
190
- id: page.id,
191
- image: undefined,
192
- title: page.title,
193
- url: `${localePrefix}/pages/${page.handle}${trackingParams}`,
194
- };
195
- }),
196
- });
197
- }
198
-
199
- if (predictiveSearch.articles.length) {
200
- results.push({
201
- type: 'articles',
202
- items: predictiveSearch.articles.map(
203
- (article: PredictiveArticleFragment) => {
204
- totalResults++;
205
- const trackingParams = applyTrackingParams(article);
206
- return {
207
- __typename: article.__typename,
208
- handle: article.handle,
209
- id: article.id,
210
- image: article.image,
211
- title: article.title,
212
- url: `${localePrefix}/blogs/${article.blog.handle}/${article.handle}/${trackingParams}`,
213
- };
214
- },
215
- ),
216
- });
217
- }
218
-
219
- return {results, totalResults};
220
- }
221
-
222
- const PREDICTIVE_SEARCH_QUERY = `#graphql
223
- fragment PredictiveArticle on Article {
224
- __typename
225
- id
226
- title
227
- handle
228
- blog {
229
- handle
230
- }
231
- image {
232
- url
233
- altText
234
- width
235
- height
236
- }
237
- trackingParameters
238
- }
239
- fragment PredictiveCollection on Collection {
240
- __typename
241
- id
242
- title
243
- handle
244
- image {
245
- url
246
- altText
247
- width
248
- height
249
- }
250
- trackingParameters
251
- }
252
- fragment PredictivePage on Page {
253
- __typename
254
- id
255
- title
256
- handle
257
- trackingParameters
258
- }
259
- fragment PredictiveProduct on Product {
260
- __typename
261
- id
262
- title
263
- handle
264
- trackingParameters
265
- variants(first: 1) {
266
- nodes {
267
- id
268
- image {
269
- url
270
- altText
271
- width
272
- height
273
- }
274
- price {
275
- amount
276
- currencyCode
277
- }
278
- }
279
- }
280
- }
281
- fragment PredictiveQuery on SearchQuerySuggestion {
282
- __typename
283
- text
284
- styledText
285
- trackingParameters
286
- }
287
- query predictiveSearch(
288
- $country: CountryCode
289
- $language: LanguageCode
290
- $limit: Int!
291
- $limitScope: PredictiveSearchLimitScope!
292
- $searchTerm: String!
293
- $types: [PredictiveSearchType!]
294
- ) @inContext(country: $country, language: $language) {
295
- predictiveSearch(
296
- limit: $limit,
297
- limitScope: $limitScope,
298
- query: $searchTerm,
299
- types: $types,
300
- ) {
301
- articles {
302
- ...PredictiveArticle
303
- }
304
- collections {
305
- ...PredictiveCollection
306
- }
307
- pages {
308
- ...PredictivePage
309
- }
310
- products {
311
- ...PredictiveProduct
312
- }
313
- queries {
314
- ...PredictiveQuery
315
- }
316
- }
317
- }
318
- ` as const;