@faststore/core 4.5.1-dev.0 → 4.5.1-dev.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.
- package/.turbo/turbo-generate.log +3 -3
- package/.turbo/turbo-test.log +78 -77
- package/CHANGELOG.md +4 -0
- package/cms/faststore/base.jsonc +1 -1
- package/cms/faststore/schema.json +181 -207
- package/package.json +6 -6
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
|
|
2
|
-
> @faststore/core@4.5.0 generate /home/runner/work/faststore/faststore/packages/core
|
|
2
|
+
> @faststore/core@4.5.1-dev.0 generate /home/runner/work/faststore/faststore/packages/core
|
|
3
3
|
> pnpm run gen-types && pnpm run cache-graphql
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
> @faststore/core@4.5.0 gen-types /home/runner/work/faststore/faststore/packages/core
|
|
6
|
+
> @faststore/core@4.5.1-dev.0 gen-types /home/runner/work/faststore/faststore/packages/core
|
|
7
7
|
> node ../cli/bin/run generate-types .
|
|
8
8
|
|
|
9
9
|
[33m[STARTED][39m Parse Configuration
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
[32m[COMPLETED][39m Generate to /home/runner/work/faststore/faststore/packages/core/@generated/
|
|
20
20
|
[32m[COMPLETED][39m Generate outputs
|
|
21
21
|
|
|
22
|
-
> @faststore/core@4.5.0 cache-graphql /home/runner/work/faststore/faststore/packages/core
|
|
22
|
+
> @faststore/core@4.5.1-dev.0 cache-graphql /home/runner/work/faststore/faststore/packages/core
|
|
23
23
|
> node ../cli/bin/run cache-graphql --config=./discovery.config.default.js --queries=./@generated/persisted-documents.json
|
|
24
24
|
|
|
25
25
|
[Info] - Config file location: /home/runner/work/faststore/faststore/packages/core/discovery.config.default.js
|
package/.turbo/turbo-test.log
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
|
|
2
|
-
> @faststore/core@4.5.0 test /home/runner/work/faststore/faststore/packages/core
|
|
2
|
+
> @faststore/core@4.5.1-dev.0 test /home/runner/work/faststore/faststore/packages/core
|
|
3
3
|
> vitest run
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
[1m[46m RUN [49m[22m [36mv4.0.7 [39m[90m/home/runner/work/faststore/faststore/packages/core[39m
|
|
7
7
|
|
|
8
|
-
[32m✓[39m [30m[46m browser [49m[39m test/sdk/session/reconcileSessionLocale.browser.test.ts [2m([22m[2m5 tests[22m[2m)[22m[32m
|
|
8
|
+
[32m✓[39m [30m[46m browser [49m[39m test/sdk/session/reconcileSessionLocale.browser.test.ts [2m([22m[2m5 tests[22m[2m)[22m[32m 62[2mms[22m[39m
|
|
9
9
|
[90mstderr[2m | test/components/RecommendationShelf/RecommendationShelf.browser.test.tsx
|
|
10
10
|
[22m[39mError in optimistic validation: TypeError: Failed to parse URL from /api/graphql?operationName=ValidateCartMutation&operationHash=8199d03debb0a6751ec53d8ee8987b78d0292acb
|
|
11
11
|
[90m at node:internal/deps/undici/undici:16416:13[39m
|
|
@@ -38,9 +38,11 @@ Browserslist: browsers data (caniuse-lite) is 6 months old. Please run:
|
|
|
38
38
|
[90mstderr[2m | test/components/RecommendationShelf/RecommendationShelf.browser.test.tsx[2m > [22m[2mRecommendationShelf[2m > [22m[2mrenders nothing when there is an error
|
|
39
39
|
[22m[39mError fetching recommendations [90mundefined[39m boom for campaign vrn:recommendations:acc:rec-top-items-v2:campaign-1
|
|
40
40
|
|
|
41
|
-
[32m✓[39m [30m[46m browser [49m[39m test/components/RecommendationShelf/RecommendationShelf.browser.test.tsx [2m([22m[2m8 tests[22m[2m)[22m[32m
|
|
42
|
-
[32m✓[39m [30m[46m browser [49m[39m test/components/account/ContractSwitcher.browser.test.tsx [2m([22m[2m13 tests[22m[2m)[22m[33m
|
|
43
|
-
[33m[2m✓[22m[39m shows an error state when the list fails to load [33m
|
|
41
|
+
[32m✓[39m [30m[46m browser [49m[39m test/components/RecommendationShelf/RecommendationShelf.browser.test.tsx [2m([22m[2m8 tests[22m[2m)[22m[32m 263[2mms[22m[39m
|
|
42
|
+
[32m✓[39m [30m[46m browser [49m[39m test/components/account/ContractSwitcher.browser.test.tsx [2m([22m[2m13 tests[22m[2m)[22m[33m 2181[2mms[22m[39m
|
|
43
|
+
[33m[2m✓[22m[39m shows an error state when the list fails to load [33m 654[2mms[22m[39m
|
|
44
|
+
[33m[2m✓[22m[39m requires selecting a contract before Confirm is enabled, then switches (REQ-03) [33m 308[2mms[22m[39m
|
|
45
|
+
[32m✓[39m [30m[46m browser [49m[39m test/sdk/session/getInitialSession.browser.test.ts [2m([22m[2m6 tests[22m[2m)[22m[32m 23[2mms[22m[39m
|
|
44
46
|
[90mstderr[2m | test/pages/password-protection.browser.test.tsx[2m > [22m[2mPasswordProtectionLogin[2m > [22m[2mposts the password and redirects to the requested return path
|
|
45
47
|
[22m[39mWarning: An update to PasswordProtectionLogin inside a test was not wrapped in act(...).
|
|
46
48
|
|
|
@@ -270,14 +272,13 @@ act(() => {
|
|
|
270
272
|
This ensures that you're testing the behavior the user would see in the browser. Learn more at https://reactjs.org/link/wrap-tests-with-act
|
|
271
273
|
at PasswordProtectionLogin (/home/runner/work/faststore/faststore/packages/core/src/pages/password-protection/index.tsx:19:69)
|
|
272
274
|
|
|
273
|
-
[32m✓[39m [30m[46m browser [49m[39m test/pages/password-protection.browser.test.tsx [2m([22m[2m6 tests[22m[2m)[22m[33m
|
|
274
|
-
[33m[2m✓[22m[39m renders the password protection form [33m
|
|
275
|
-
|
|
276
|
-
[32m✓[39m [30m[46m browser [49m[39m test/sdk/account/changeContractToken.browser.test.ts [2m([22m[2m9 tests[22m[2m)[22m[32m
|
|
277
|
-
[32m✓[39m [30m[46m browser [49m[39m test/components/account/OrganizationDrawer.browser.test.tsx [2m([22m[2m5 tests[22m[2m)[22m[33m
|
|
278
|
-
[33m[2m✓[22m[39m renders the menu view with contract details and manage footer [33m
|
|
279
|
-
[33m[2m✓[22m[39m opens the contract switcher and returns to the menu on back [33m
|
|
280
|
-
[33m[2m✓[22m[39m resets to the menu when the drawer closes [33m 319[2mms[22m[39m
|
|
275
|
+
[32m✓[39m [30m[46m browser [49m[39m test/pages/password-protection.browser.test.tsx [2m([22m[2m6 tests[22m[2m)[22m[33m 2364[2mms[22m[39m
|
|
276
|
+
[33m[2m✓[22m[39m renders the password protection form [33m 1042[2mms[22m[39m
|
|
277
|
+
[33m[2m✓[22m[39m posts the password and redirects to the requested return path [33m 380[2mms[22m[39m
|
|
278
|
+
[32m✓[39m [30m[46m browser [49m[39m test/sdk/account/changeContractToken.browser.test.ts [2m([22m[2m9 tests[22m[2m)[22m[32m 83[2mms[22m[39m
|
|
279
|
+
[32m✓[39m [30m[46m browser [49m[39m test/components/account/OrganizationDrawer.browser.test.tsx [2m([22m[2m5 tests[22m[2m)[22m[33m 2231[2mms[22m[39m
|
|
280
|
+
[33m[2m✓[22m[39m renders the menu view with contract details and manage footer [33m 1175[2mms[22m[39m
|
|
281
|
+
[33m[2m✓[22m[39m opens the contract switcher and returns to the menu on back [33m 423[2mms[22m[39m
|
|
281
282
|
[90mstderr[2m | test/sdk/localization/store-url.browser.test.ts
|
|
282
283
|
[22m[39mError in optimistic validation: TypeError: Cannot read properties of undefined (reading 'read')
|
|
283
284
|
at validateCart [90m(/home/runner/work/faststore/faststore/packages/core/[39msrc/sdk/cart/index.ts:121:27[90m)[39m
|
|
@@ -285,9 +286,9 @@ This ensures that you're testing the behavior the user would see in the browser.
|
|
|
285
286
|
at a (/home/runner/work/faststore/faststore/packages/sdk/dist/es/index.mjs:354:23)
|
|
286
287
|
[90m at processTicksAndRejections (node:internal/process/task_queues:103:5)[39m
|
|
287
288
|
|
|
288
|
-
[32m✓[39m [30m[46m browser [49m[39m test/sdk/localization/store-url.browser.test.ts [2m([22m[2m3 tests[22m[2m)[22m[32m
|
|
289
|
-
[32m✓[39m [30m[46m browser [49m[39m test/sdk/account/useAvailableContracts.browser.test.ts [2m([22m[2m6 tests[22m[2m)[22m[32m
|
|
290
|
-
[32m✓[39m [30m[46m browser [49m[39m test/sdk/account/useSwitchContract.browser.test.ts [2m([22m[2m4 tests[22m[2m)[22m[32m
|
|
289
|
+
[32m✓[39m [30m[46m browser [49m[39m test/sdk/localization/store-url.browser.test.ts [2m([22m[2m3 tests[22m[2m)[22m[32m 18[2mms[22m[39m
|
|
290
|
+
[32m✓[39m [30m[46m browser [49m[39m test/sdk/account/useAvailableContracts.browser.test.ts [2m([22m[2m6 tests[22m[2m)[22m[32m 135[2mms[22m[39m
|
|
291
|
+
[32m✓[39m [30m[46m browser [49m[39m test/sdk/account/useSwitchContract.browser.test.ts [2m([22m[2m4 tests[22m[2m)[22m[32m 131[2mms[22m[39m
|
|
291
292
|
[90mstderr[2m | test/components/account/doLogout.browser.test.ts
|
|
292
293
|
[22m[39mError in optimistic validation: TypeError: Cannot read properties of undefined (reading 'read')
|
|
293
294
|
at validateCart [90m(/home/runner/work/faststore/faststore/packages/core/[39msrc/sdk/cart/index.ts:121:27[90m)[39m
|
|
@@ -295,10 +296,7 @@ This ensures that you're testing the behavior the user would see in the browser.
|
|
|
295
296
|
at a (/home/runner/work/faststore/faststore/packages/sdk/dist/es/index.mjs:354:23)
|
|
296
297
|
[90m at processTicksAndRejections (node:internal/process/task_queues:103:5)[39m
|
|
297
298
|
|
|
298
|
-
[32m✓[39m [30m[46m browser [49m[39m test/components/account/doLogout.browser.test.ts [2m([22m[2m1 test[22m[2m)[22m[32m
|
|
299
|
-
[32m✓[39m [30m[46m browser [49m[39m test/components/account/OrganizationDrawerHeader.browser.test.tsx [2m([22m[2m3 tests[22m[2m)[22m[33m 326[2mms[22m[39m
|
|
300
|
-
[32m✓[39m [30m[46m browser [49m[39m test/components/account/OrganizationDrawerFooter.browser.test.tsx [2m([22m[2m3 tests[22m[2m)[22m[32m 262[2mms[22m[39m
|
|
301
|
-
[32m✓[39m [30m[46m browser [49m[39m test/utils/isLocalHost.browser.test.ts [2m([22m[2m3 tests[22m[2m)[22m[32m 4[2mms[22m[39m
|
|
299
|
+
[32m✓[39m [30m[46m browser [49m[39m test/components/account/doLogout.browser.test.ts [2m([22m[2m1 test[22m[2m)[22m[32m 33[2mms[22m[39m
|
|
302
300
|
[90mstderr[2m | test/sdk/account/clearPersistedSessionState.browser.test.ts
|
|
303
301
|
[22m[39mError in optimistic validation: TypeError: Cannot read properties of undefined (reading 'read')
|
|
304
302
|
at validateCart [90m(/home/runner/work/faststore/faststore/packages/core/[39msrc/sdk/cart/index.ts:121:27[90m)[39m
|
|
@@ -306,11 +304,12 @@ This ensures that you're testing the behavior the user would see in the browser.
|
|
|
306
304
|
at a (/home/runner/work/faststore/faststore/packages/sdk/dist/es/index.mjs:354:23)
|
|
307
305
|
[90m at processTicksAndRejections (node:internal/process/task_queues:103:5)[39m
|
|
308
306
|
|
|
309
|
-
[32m✓[39m [30m[46m browser [49m[39m test/sdk/account/clearPersistedSessionState.browser.test.ts [2m([22m[2m1 test[22m[2m)[22m[32m
|
|
310
|
-
[32m✓[39m [30m[46m browser [49m[39m test/
|
|
311
|
-
[32m✓[39m [30m[
|
|
312
|
-
[32m✓[39m [30m[
|
|
313
|
-
[32m✓[39m [30m[
|
|
307
|
+
[32m✓[39m [30m[46m browser [49m[39m test/sdk/account/clearPersistedSessionState.browser.test.ts [2m([22m[2m1 test[22m[2m)[22m[32m 13[2mms[22m[39m
|
|
308
|
+
[32m✓[39m [30m[46m browser [49m[39m test/components/account/OrganizationDrawerHeader.browser.test.tsx [2m([22m[2m3 tests[22m[2m)[22m[32m 290[2mms[22m[39m
|
|
309
|
+
[32m✓[39m [30m[46m browser [49m[39m test/components/account/OrganizationDrawerFooter.browser.test.tsx [2m([22m[2m3 tests[22m[2m)[22m[33m 349[2mms[22m[39m
|
|
310
|
+
[32m✓[39m [30m[46m browser [49m[39m test/utils/isLocalHost.browser.test.ts [2m([22m[2m3 tests[22m[2m)[22m[32m 4[2mms[22m[39m
|
|
311
|
+
[32m✓[39m [30m[46m browser [49m[39m test/sdk/session/reconcileSessionLocale.disabled.browser.test.ts [2m([22m[2m1 test[22m[2m)[22m[32m 5[2mms[22m[39m
|
|
312
|
+
[32m✓[39m [30m[43m node [49m[39m test/utils/localization/bindingPaths.test.ts [2m([22m[2m71 tests[22m[2m)[22m[32m 29[2mms[22m[39m
|
|
314
313
|
[90mstderr[2m | test/sdk/account/refreshToken.browser.test.ts
|
|
315
314
|
[22m[39mError in optimistic validation: TypeError: Cannot read properties of undefined (reading 'read')
|
|
316
315
|
at validateCart [90m(/home/runner/work/faststore/faststore/packages/core/[39msrc/sdk/cart/index.ts:121:27[90m)[39m
|
|
@@ -318,10 +317,12 @@ This ensures that you're testing the behavior the user would see in the browser.
|
|
|
318
317
|
at a (/home/runner/work/faststore/faststore/packages/sdk/dist/es/index.mjs:354:23)
|
|
319
318
|
[90m at processTicksAndRejections (node:internal/process/task_queues:103:5)[39m
|
|
320
319
|
|
|
321
|
-
[32m✓[39m [30m[
|
|
322
|
-
[32m✓[39m [30m[
|
|
323
|
-
[32m✓[39m [30m[43m node [49m[39m test/
|
|
324
|
-
[32m✓[39m [30m[43m node [49m[39m test/pages/api/unlock.test.ts [2m([22m[2m15 tests[22m[2m)[22m[
|
|
320
|
+
[32m✓[39m [30m[43m node [49m[39m test/server/password-protection-service.test.ts [2m([22m[2m22 tests[22m[2m)[22m[32m 34[2mms[22m[39m
|
|
321
|
+
[32m✓[39m [30m[46m browser [49m[39m test/sdk/account/refreshToken.browser.test.ts [2m([22m[2m1 test[22m[2m)[22m[32m 5[2mms[22m[39m
|
|
322
|
+
[32m✓[39m [30m[43m node [49m[39m test/utils/match-url.test.ts [2m([22m[2m10 tests[22m[2m)[22m[32m 12[2mms[22m[39m
|
|
323
|
+
[32m✓[39m [30m[43m node [49m[39m test/pages/api/unlock.test.ts [2m([22m[2m15 tests[22m[2m)[22m[33m 309[2mms[22m[39m
|
|
324
|
+
[32m✓[39m [30m[43m node [49m[39m test/sdk/localization/useBindingSelector.test.tsx [2m([22m[2m22 tests[22m[2m)[22m[32m 16[2mms[22m[39m
|
|
325
|
+
[32m✓[39m [30m[43m node [49m[39m test/sdk/localization/bindingSelector.test.ts [2m([22m[2m18 tests[22m[2m)[22m[32m 11[2mms[22m[39m
|
|
325
326
|
[90mstderr[2m | test/components/search/SearchInputComponent.test.tsx
|
|
326
327
|
[22m[39mWarning: forwardRef render functions accept exactly two parameters: props and ref. Did you forget to use the ref parameter?
|
|
327
328
|
|
|
@@ -385,23 +386,23 @@ Warning: React does not recognize the `providerProps` prop on a DOM element. If
|
|
|
385
386
|
at Suspense
|
|
386
387
|
at Wrapper (/home/runner/work/faststore/faststore/packages/core/test/components/search/SearchInputComponent.test.tsx:106:20)
|
|
387
388
|
|
|
388
|
-
[32m✓[39m [30m[43m node [49m[39m test/components/search/SearchInputComponent.test.tsx [2m([22m[2m6 tests[22m[2m)[22m[32m
|
|
389
|
-
[32m✓[39m [30m[43m node [49m[39m test/utils/cookieCacheBusting.test.ts [2m([22m[2m10 tests[22m[2m)[22m[32m
|
|
390
|
-
[32m✓[39m [30m[43m node [49m[39m test/sdk/search/useSearchHistory.test.ts [2m([22m[2m13 tests[22m[2m)[22m[32m
|
|
391
|
-
[32m✓[39m [30m[43m node [49m[39m test/experimental/myAccountCmsServerSideProps.test.ts [2m([22m[2m5 tests[22m[2m)[22m[32m
|
|
392
|
-
[32m✓[39m [30m[43m node [49m[39m test/utils/clearCookies.test.ts [2m([22m[2m20 tests[22m[2m)[22m[32m
|
|
389
|
+
[32m✓[39m [30m[43m node [49m[39m test/components/search/SearchInputComponent.test.tsx [2m([22m[2m6 tests[22m[2m)[22m[32m 81[2mms[22m[39m
|
|
390
|
+
[32m✓[39m [30m[43m node [49m[39m test/utils/cookieCacheBusting.test.ts [2m([22m[2m10 tests[22m[2m)[22m[32m 16[2mms[22m[39m
|
|
391
|
+
[32m✓[39m [30m[43m node [49m[39m test/sdk/search/useSearchHistory.test.ts [2m([22m[2m13 tests[22m[2m)[22m[32m 44[2mms[22m[39m
|
|
392
|
+
[32m✓[39m [30m[43m node [49m[39m test/experimental/myAccountCmsServerSideProps.test.ts [2m([22m[2m5 tests[22m[2m)[22m[32m 11[2mms[22m[39m
|
|
393
|
+
[32m✓[39m [30m[43m node [49m[39m test/utils/clearCookies.test.ts [2m([22m[2m20 tests[22m[2m)[22m[32m 29[2mms[22m[39m
|
|
393
394
|
[90mstderr[2m | test/sdk/account/useSetPassword.test.ts[2m > [22m[2museSetPassword[2m > [22m[2mmaps wrongcredentials error responses to the existing message
|
|
394
395
|
[22m[39mSet password request failed: Bad Request
|
|
395
396
|
|
|
396
|
-
[32m✓[39m [30m[43m node [49m[39m test/sdk/account/useSetPassword.test.ts [2m([22m[2m6 tests[22m[2m)[22m[32m
|
|
397
|
-
[32m✓[39m [30m[43m node [49m[39m test/components/quotes/MyAccountListQuotesTable.test.tsx [2m([22m[2m12 tests[22m[2m)[22m[33m
|
|
397
|
+
[32m✓[39m [30m[43m node [49m[39m test/sdk/account/useSetPassword.test.ts [2m([22m[2m6 tests[22m[2m)[22m[32m 45[2mms[22m[39m
|
|
398
|
+
[32m✓[39m [30m[43m node [49m[39m test/components/quotes/MyAccountListQuotesTable.test.tsx [2m([22m[2m12 tests[22m[2m)[22m[33m 443[2mms[22m[39m
|
|
398
399
|
[32m✓[39m [30m[43m node [49m[39m test/components/quotes/quoteFilters.test.ts [2m([22m[2m23 tests[22m[2m)[22m[32m 25[2mms[22m[39m
|
|
399
400
|
[32m✓[39m [30m[43m node [49m[39m test/utils/multipleTemplates.test.ts [2m([22m[2m8 tests[22m[2m)[22m[32m 5[2mms[22m[39m
|
|
400
401
|
[32m✓[39m [30m[43m node [49m[39m test/utils/localization/localizeRedirectDestination.test.ts [2m([22m[2m11 tests[22m[2m)[22m[32m 5[2mms[22m[39m
|
|
401
|
-
[32m✓[39m [30m[43m node [49m[39m test/
|
|
402
|
-
|
|
403
|
-
[33m[2m✓[22m[39m navigates
|
|
404
|
-
|
|
402
|
+
[32m✓[39m [30m[43m node [49m[39m test/sdk/orderEntry/useOrderEntryOperation.test.ts [2m([22m[2m8 tests[22m[2m)[22m[32m 30[2mms[22m[39m
|
|
403
|
+
[32m✓[39m [30m[43m node [49m[39m test/components/quotes/MyAccountListQuotes.test.tsx [2m([22m[2m9 tests[22m[2m)[22m[33m 854[2mms[22m[39m
|
|
404
|
+
[33m[2m✓[22m[39m navigates with the search term on blur [33m 369[2mms[22m[39m
|
|
405
|
+
[33m[2m✓[22m[39m navigates without a label param when the search is cleared [33m 361[2mms[22m[39m
|
|
405
406
|
[90mstderr[2m | test/pages/api/graphql.test.ts[2m > [22m[2m/api/graphql error status propagation[2m > [22m[2mpropagates the upstream 400 from a wrapped BadRequestError instead of 500
|
|
406
407
|
[22m[39mGraphql execution returned with error: [
|
|
407
408
|
{
|
|
@@ -449,48 +450,48 @@ Warning: React does not recognize the `providerProps` prop on a DOM element. If
|
|
|
449
450
|
]
|
|
450
451
|
|
|
451
452
|
[32m✓[39m [30m[43m node [49m[39m test/pages/api/graphql.test.ts [2m([22m[2m10 tests[22m[2m)[22m[32m 29[2mms[22m[39m
|
|
452
|
-
[32m✓[39m [30m[43m node [49m[39m test/sdk/orderEntry/useOrderEntryUpload.test.ts [2m([22m[2m8 tests[22m[2m)[22m[32m
|
|
453
|
-
[32m✓[39m [30m[43m node [49m[39m test/sdk/analytics/useStartRecommendationSession.test.ts [2m([22m[2m6 tests[22m[2m)[22m[32m
|
|
454
|
-
[32m✓[39m [30m[43m node [49m[39m test/components/quotes/MyAccountQuotesFilterSlider.test.tsx [2m([22m[2m5 tests[22m[2m)[22m[32m
|
|
455
|
-
[32m✓[39m [30m[43m node [49m[39m test/proxy.localization.test.ts [2m([22m[2m5 tests[22m[2m)[22m[32m
|
|
456
|
-
[32m✓[39m [30m[43m node [49m[39m test/
|
|
457
|
-
|
|
458
|
-
[33m[2m✓[22m[39m should
|
|
459
|
-
|
|
460
|
-
[32m✓[39m [30m[43m node [49m[39m test/sdk/orderEntry/useOrderEntry.test.ts [2m([22m[2m8 tests[22m[2m)[22m[32m
|
|
461
|
-
[32m✓[39m [30m[43m node [49m[39m test/proxy.test.ts [2m([22m[2m4 tests[22m[2m)[22m[32m
|
|
462
|
-
[32m✓[39m [30m[43m node [49m[39m test/server/webops-api.test.ts [2m([22m[2m9 tests[22m[2m)[22m[32m
|
|
463
|
-
[32m✓[39m [30m[43m node [49m[39m test/components/quotes/MyAccountQuotesSelectedTags.test.tsx [2m([22m[2m8 tests[22m[2m)[22m[32m
|
|
464
|
-
[32m✓[39m [30m[43m node [49m[39m test/sdk/orderEntry/useOrderFormItems.test.ts [2m([22m[2m7 tests[22m[2m)[22m[32m
|
|
465
|
-
[32m✓[39m [30m[43m node [49m[39m test/
|
|
466
|
-
[32m✓[39m [30m[43m node [49m[39m test/
|
|
467
|
-
[32m✓[39m [30m[43m node [49m[39m test/server/
|
|
468
|
-
[32m✓[39m [30m[43m node [49m[39m test/sdk/localization/store-url.test.ts [2m([22m[2m1 test[22m[2m)[22m[32m
|
|
453
|
+
[32m✓[39m [30m[43m node [49m[39m test/sdk/orderEntry/useOrderEntryUpload.test.ts [2m([22m[2m8 tests[22m[2m)[22m[32m 61[2mms[22m[39m
|
|
454
|
+
[32m✓[39m [30m[43m node [49m[39m test/sdk/analytics/useStartRecommendationSession.test.ts [2m([22m[2m6 tests[22m[2m)[22m[32m 41[2mms[22m[39m
|
|
455
|
+
[32m✓[39m [30m[43m node [49m[39m test/components/quotes/MyAccountQuotesFilterSlider.test.tsx [2m([22m[2m5 tests[22m[2m)[22m[32m 161[2mms[22m[39m
|
|
456
|
+
[32m✓[39m [30m[43m node [49m[39m test/proxy.localization.test.ts [2m([22m[2m5 tests[22m[2m)[22m[32m 43[2mms[22m[39m
|
|
457
|
+
[32m✓[39m [30m[43m node [49m[39m test/server/index.test.ts [2m([22m[2m7 tests[22m[2m)[22m[33m 1015[2mms[22m[39m
|
|
458
|
+
[33m[2m✓[22m[39m should return a valid merged GraphQL schema [33m 319[2mms[22m[39m
|
|
459
|
+
[33m[2m✓[22m[39m should handle options and execute [33m 431[2mms[22m[39m
|
|
460
|
+
[32m✓[39m [30m[43m node [49m[39m test/sdk/account/getMyAccountRoutes.test.ts [2m([22m[2m10 tests[22m[2m)[22m[32m 14[2mms[22m[39m
|
|
461
|
+
[32m✓[39m [30m[43m node [49m[39m test/sdk/orderEntry/useOrderEntry.test.ts [2m([22m[2m8 tests[22m[2m)[22m[32m 44[2mms[22m[39m
|
|
462
|
+
[32m✓[39m [30m[43m node [49m[39m test/proxy.test.ts [2m([22m[2m4 tests[22m[2m)[22m[32m 20[2mms[22m[39m
|
|
463
|
+
[32m✓[39m [30m[43m node [49m[39m test/server/webops-api.test.ts [2m([22m[2m9 tests[22m[2m)[22m[32m 21[2mms[22m[39m
|
|
464
|
+
[32m✓[39m [30m[43m node [49m[39m test/components/quotes/MyAccountQuotesSelectedTags.test.tsx [2m([22m[2m8 tests[22m[2m)[22m[32m 108[2mms[22m[39m
|
|
465
|
+
[32m✓[39m [30m[43m node [49m[39m test/sdk/orderEntry/useOrderFormItems.test.ts [2m([22m[2m7 tests[22m[2m)[22m[32m 42[2mms[22m[39m
|
|
466
|
+
[32m✓[39m [30m[43m node [49m[39m test/server/content/service.test.ts [2m([22m[2m5 tests[22m[2m)[22m[32m 6[2mms[22m[39m
|
|
467
|
+
[32m✓[39m [30m[43m node [49m[39m test/sdk/account/refreshToken.test.ts [2m([22m[2m5 tests[22m[2m)[22m[32m 8[2mms[22m[39m
|
|
468
|
+
[32m✓[39m [30m[43m node [49m[39m test/server/cms/global.test.ts [2m([22m[2m3 tests[22m[2m)[22m[32m 4[2mms[22m[39m
|
|
469
|
+
[32m✓[39m [30m[43m node [49m[39m test/sdk/localization/store-url.test.ts [2m([22m[2m1 test[22m[2m)[22m[32m 5[2mms[22m[39m
|
|
469
470
|
[32m✓[39m [30m[43m node [49m[39m test/sdk/analytics/hasEnabledRecommendationShelf.test.ts [2m([22m[2m6 tests[22m[2m)[22m[32m 5[2mms[22m[39m
|
|
470
|
-
[32m✓[39m [30m[43m node [49m[39m test/utils/getRequestHostname.test.ts [2m([22m[2m12 tests[22m[2m)[22m[32m
|
|
471
|
-
[32m✓[39m [30m[43m node [49m[39m test/sdk/auth/useAuth.test.ts [2m([22m[2m5 tests[22m[2m)[22m[32m
|
|
472
|
-
[32m✓[39m [30m[43m node [49m[39m test/components/quotes/MyAccountQuotesStatusSelector.test.tsx [2m([22m[2m6 tests[22m[2m)[22m[32m
|
|
473
|
-
[32m✓[39m [30m[43m node [49m[39m test/pages/api/preview.test.ts [2m([22m[2m2 tests[22m[2m)[22m[32m 10[2mms[22m[39m
|
|
471
|
+
[32m✓[39m [30m[43m node [49m[39m test/utils/getRequestHostname.test.ts [2m([22m[2m12 tests[22m[2m)[22m[32m 6[2mms[22m[39m
|
|
472
|
+
[32m✓[39m [30m[43m node [49m[39m test/sdk/auth/useAuth.test.ts [2m([22m[2m5 tests[22m[2m)[22m[32m 33[2mms[22m[39m
|
|
473
|
+
[32m✓[39m [30m[43m node [49m[39m test/components/quotes/MyAccountQuotesStatusSelector.test.tsx [2m([22m[2m6 tests[22m[2m)[22m[32m 140[2mms[22m[39m
|
|
474
474
|
[32m✓[39m [30m[43m node [49m[39m test/utils/validateSessionRefreshToken.test.ts [2m([22m[2m6 tests[22m[2m)[22m[32m 6[2mms[22m[39m
|
|
475
|
-
[32m✓[39m [30m[43m node [49m[39m test/
|
|
476
|
-
[32m✓[39m [30m[43m node [49m[39m test/components/
|
|
477
|
-
[32m✓[39m [30m[43m node [49m[39m test/
|
|
475
|
+
[32m✓[39m [30m[43m node [49m[39m test/pages/api/preview.test.ts [2m([22m[2m2 tests[22m[2m)[22m[32m 11[2mms[22m[39m
|
|
476
|
+
[32m✓[39m [30m[43m node [49m[39m test/components/search/SearchInput.test.ts [2m([22m[2m6 tests[22m[2m)[22m[32m 8[2mms[22m[39m
|
|
477
|
+
[32m✓[39m [30m[43m node [49m[39m test/components/RecommendationShelf/vrn.test.ts [2m([22m[2m5 tests[22m[2m)[22m[32m 6[2mms[22m[39m
|
|
478
|
+
[32m✓[39m [30m[43m node [49m[39m test/server/cms/index.test.ts [2m([22m[2m2 tests[22m[2m)[22m[32m 5[2mms[22m[39m
|
|
478
479
|
[32m✓[39m [30m[43m node [49m[39m test/utils/retry.test.ts [2m([22m[2m5 tests[22m[2m)[22m[32m 15[2mms[22m[39m
|
|
479
|
-
[32m✓[39m [30m[43m node [49m[39m test/components/
|
|
480
|
-
[32m✓[39m [30m[43m node [49m[39m test/components/
|
|
481
|
-
[32m✓[39m [30m[43m node [49m[39m test/
|
|
482
|
-
[32m✓[39m [30m[43m node [49m[39m test/
|
|
483
|
-
[32m✓[39m [30m[43m node [49m[39m test/components/RecommendationShelf/useRecommendations.test.ts [2m([22m[2m2 tests[22m[2m)[22m[32m
|
|
484
|
-
[32m✓[39m [30m[43m node [49m[39m test/utils/isLocalHost.test.ts [2m([22m[2m7 tests[22m[2m)[22m[32m
|
|
485
|
-
[32m✓[39m [30m[43m node [49m[39m test/utils/userOrderStatus.test.ts [2m([22m[2m3 tests[22m[2m)[22m[32m
|
|
486
|
-
[32m✓[39m [30m[43m node [49m[39m test/components/account/OrganizationDrawerBody.test.tsx [2m([22m[2m3 tests[22m[2m)[22m[32m
|
|
480
|
+
[32m✓[39m [30m[43m node [49m[39m test/components/account/Layout.test.tsx [2m([22m[2m4 tests[22m[2m)[22m[32m 42[2mms[22m[39m
|
|
481
|
+
[32m✓[39m [30m[43m node [49m[39m test/components/RecommendationShelf/useRecommendationUserId.test.ts [2m([22m[2m4 tests[22m[2m)[22m[32m 195[2mms[22m[39m
|
|
482
|
+
[32m✓[39m [30m[43m node [49m[39m test/utils/unlockResponse.test.ts [2m([22m[2m11 tests[22m[2m)[22m[32m 7[2mms[22m[39m
|
|
483
|
+
[32m✓[39m [30m[43m node [49m[39m test/server/cms/myAccountDefaultSections.test.ts [2m([22m[2m5 tests[22m[2m)[22m[32m 5[2mms[22m[39m
|
|
484
|
+
[32m✓[39m [30m[43m node [49m[39m test/components/RecommendationShelf/useRecommendations.test.ts [2m([22m[2m2 tests[22m[2m)[22m[32m 5[2mms[22m[39m
|
|
485
|
+
[32m✓[39m [30m[43m node [49m[39m test/utils/isLocalHost.test.ts [2m([22m[2m7 tests[22m[2m)[22m[32m 5[2mms[22m[39m
|
|
486
|
+
[32m✓[39m [30m[43m node [49m[39m test/utils/userOrderStatus.test.ts [2m([22m[2m3 tests[22m[2m)[22m[32m 5[2mms[22m[39m
|
|
487
|
+
[32m✓[39m [30m[43m node [49m[39m test/components/account/OrganizationDrawerBody.test.tsx [2m([22m[2m3 tests[22m[2m)[22m[32m 38[2mms[22m[39m
|
|
487
488
|
[32m✓[39m [30m[43m node [49m[39m test/sdk/analytics/utils.test.ts [2m([22m[2m2 tests[22m[2m)[22m[32m 3[2mms[22m[39m
|
|
488
|
-
[32m✓[39m [30m[43m node [49m[39m test/components/auth/ProfileChallenge.test.tsx [2m([22m[2m3 tests[22m[2m)[22m[32m
|
|
489
|
-
[32m✓[39m [30m[43m node [49m[39m test/sdk/account/clearPersistedSessionState.test.ts [2m([22m[2m1 test[22m[2m)[22m[32m
|
|
490
|
-
[32m✓[39m [30m[43m node [49m[39m test/components/quotes/MyAccountQuoteStatusBadge.test.tsx [2m([22m[2m2 tests[22m[2m)[22m[32m
|
|
489
|
+
[32m✓[39m [30m[43m node [49m[39m test/components/auth/ProfileChallenge.test.tsx [2m([22m[2m3 tests[22m[2m)[22m[32m 42[2mms[22m[39m
|
|
490
|
+
[32m✓[39m [30m[43m node [49m[39m test/sdk/account/clearPersistedSessionState.test.ts [2m([22m[2m1 test[22m[2m)[22m[32m 12[2mms[22m[39m
|
|
491
|
+
[32m✓[39m [30m[43m node [49m[39m test/components/quotes/MyAccountQuoteStatusBadge.test.tsx [2m([22m[2m2 tests[22m[2m)[22m[32m 26[2mms[22m[39m
|
|
491
492
|
|
|
492
493
|
[2m Test Files [22m [1m[32m73 passed[39m[22m[90m (73)[39m
|
|
493
494
|
[2m Tests [22m [1m[32m570 passed[39m[22m[90m (570)[39m
|
|
494
|
-
[2m Start at [22m
|
|
495
|
-
[2m Duration [22m
|
|
495
|
+
[2m Start at [22m 15:41:47
|
|
496
|
+
[2m Duration [22m 38.79s[2m (transform 9.13s, setup 0ms, collect 32.09s, tests 12.43s, environment 50.66s, prepare 1.37s)[22m
|
|
496
497
|
|
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,10 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [4.5.1-dev.1](https://github.com/vtex/faststore/compare/v4.5.1-dev.0...v4.5.1-dev.1) (2026-08-04)
|
|
7
|
+
|
|
8
|
+
**Note:** Version bump only for package @faststore/core
|
|
9
|
+
|
|
6
10
|
## [4.5.1-dev.0](https://github.com/vtex/faststore/compare/v4.5.0...v4.5.1-dev.0) (2026-08-03)
|
|
7
11
|
|
|
8
12
|
**Note:** Version bump only for package @faststore/core
|
package/cms/faststore/base.jsonc
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
// This should be automatically updated and point to Schema Registry.
|
|
3
|
-
"$id": "vtex.
|
|
3
|
+
"$id": "vtex.faststore",
|
|
4
4
|
"title": "FastStore Schema",
|
|
5
5
|
"description": "Collection of default schemas for FastStore.",
|
|
6
6
|
// Default content-types available in FastStore can be added here.
|
|
@@ -1,126 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"title": "FastStore Schema",
|
|
3
3
|
"description": "Collection of default schemas for FastStore.",
|
|
4
|
-
"$defs": {
|
|
5
|
-
"base-component": {
|
|
6
|
-
"$singleton": false,
|
|
7
|
-
"$abstract": false,
|
|
8
|
-
"properties": {},
|
|
9
|
-
"definitions": {},
|
|
10
|
-
"$recursiveAnchor": false,
|
|
11
|
-
"uniqueItems": false,
|
|
12
|
-
"required": [],
|
|
13
|
-
"type": "object",
|
|
14
|
-
"deprecated": false,
|
|
15
|
-
"readOnly": false,
|
|
16
|
-
"writeOnly": false
|
|
17
|
-
},
|
|
18
|
-
"base-page-template": {
|
|
19
|
-
"$singleton": false,
|
|
20
|
-
"$abstract": false,
|
|
21
|
-
"properties": {
|
|
22
|
-
"sections": {
|
|
23
|
-
"$ref": "#/$defs/$ALLOW_ALL_COMPONENTS",
|
|
24
|
-
"$singleton": false,
|
|
25
|
-
"$abstract": false,
|
|
26
|
-
"definitions": {},
|
|
27
|
-
"$recursiveAnchor": false,
|
|
28
|
-
"uniqueItems": false,
|
|
29
|
-
"required": [],
|
|
30
|
-
"deprecated": false,
|
|
31
|
-
"readOnly": false,
|
|
32
|
-
"writeOnly": false
|
|
33
|
-
}
|
|
34
|
-
},
|
|
35
|
-
"definitions": {},
|
|
36
|
-
"$recursiveAnchor": false,
|
|
37
|
-
"uniqueItems": false,
|
|
38
|
-
"required": [],
|
|
39
|
-
"type": "object",
|
|
40
|
-
"deprecated": false,
|
|
41
|
-
"readOnly": false,
|
|
42
|
-
"writeOnly": false
|
|
43
|
-
},
|
|
44
|
-
"$ALLOW_ALL_COMPONENTS": {
|
|
45
|
-
"type": "array",
|
|
46
|
-
"items": {
|
|
47
|
-
"anyOf": [
|
|
48
|
-
{
|
|
49
|
-
"$ref": "#/components/Alert"
|
|
50
|
-
},
|
|
51
|
-
{
|
|
52
|
-
"$ref": "#/components/BannerNewsletter"
|
|
53
|
-
},
|
|
54
|
-
{
|
|
55
|
-
"$ref": "#/components/BannerText"
|
|
56
|
-
},
|
|
57
|
-
{
|
|
58
|
-
"$ref": "#/components/Breadcrumb"
|
|
59
|
-
},
|
|
60
|
-
{
|
|
61
|
-
"$ref": "#/components/CartSidebar"
|
|
62
|
-
},
|
|
63
|
-
{
|
|
64
|
-
"$ref": "#/components/Children"
|
|
65
|
-
},
|
|
66
|
-
{
|
|
67
|
-
"$ref": "#/components/CrossSellingShelf"
|
|
68
|
-
},
|
|
69
|
-
{
|
|
70
|
-
"$ref": "#/components/EmptyState"
|
|
71
|
-
},
|
|
72
|
-
{
|
|
73
|
-
"$ref": "#/components/Footer"
|
|
74
|
-
},
|
|
75
|
-
{
|
|
76
|
-
"$ref": "#/components/Hero"
|
|
77
|
-
},
|
|
78
|
-
{
|
|
79
|
-
"$ref": "#/components/Incentives"
|
|
80
|
-
},
|
|
81
|
-
{
|
|
82
|
-
"$ref": "#/components/Navbar"
|
|
83
|
-
},
|
|
84
|
-
{
|
|
85
|
-
"$ref": "#/components/Newsletter"
|
|
86
|
-
},
|
|
87
|
-
{
|
|
88
|
-
"$ref": "#/components/ProductDetails"
|
|
89
|
-
},
|
|
90
|
-
{
|
|
91
|
-
"$ref": "#/components/ProductGallery"
|
|
92
|
-
},
|
|
93
|
-
{
|
|
94
|
-
"$ref": "#/components/ProductShelf"
|
|
95
|
-
},
|
|
96
|
-
{
|
|
97
|
-
"$ref": "#/components/ProductTiles"
|
|
98
|
-
},
|
|
99
|
-
{
|
|
100
|
-
"$ref": "#/components/RegionBar"
|
|
101
|
-
},
|
|
102
|
-
{
|
|
103
|
-
"$ref": "#/components/RegionModal"
|
|
104
|
-
},
|
|
105
|
-
{
|
|
106
|
-
"$ref": "#/components/RegionPopover"
|
|
107
|
-
},
|
|
108
|
-
{
|
|
109
|
-
"$ref": "#/components/ScrollToTopButton"
|
|
110
|
-
},
|
|
111
|
-
{
|
|
112
|
-
"$ref": "#/components/Search"
|
|
113
|
-
},
|
|
114
|
-
{
|
|
115
|
-
"$ref": "#/components/ShoppingAssistant"
|
|
116
|
-
},
|
|
117
|
-
{
|
|
118
|
-
"$ref": "#/components/RecommendationShelf"
|
|
119
|
-
}
|
|
120
|
-
]
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
},
|
|
124
4
|
"content-types": {
|
|
125
5
|
"404": {
|
|
126
6
|
"$extends": ["#/components/base-page-template"],
|
|
@@ -3987,6 +3867,98 @@
|
|
|
3987
3867
|
"deprecated": false,
|
|
3988
3868
|
"$abstract": false
|
|
3989
3869
|
},
|
|
3870
|
+
"RecommendationShelf": {
|
|
3871
|
+
"$extends": ["#/$defs/base-component"],
|
|
3872
|
+
"$componentKey": "RecommendationShelf",
|
|
3873
|
+
"$componentTitle": "Recommendation Shelf",
|
|
3874
|
+
"title": "Recommendation Shelf",
|
|
3875
|
+
"description": "Display a carousel of personalized product recommendations from a VTEX Recommendations campaign. Enable the shelf with the Enable recommendations toggle (off by default).",
|
|
3876
|
+
"type": "object",
|
|
3877
|
+
"required": ["campaignVrn"],
|
|
3878
|
+
"properties": {
|
|
3879
|
+
"enableRecommendations": {
|
|
3880
|
+
"title": "Enable recommendations?",
|
|
3881
|
+
"description": "When enabled, starts the VTEX Recommendations personalization session (once per browser session) and fetches personalized products for this shelf. Off by default so stores that do not use Recommendations never hit the Recommendations API.",
|
|
3882
|
+
"type": "boolean",
|
|
3883
|
+
"default": false
|
|
3884
|
+
},
|
|
3885
|
+
"title": {
|
|
3886
|
+
"title": "Title",
|
|
3887
|
+
"description": "Override the shelf title. If not set, the campaign title will be used.",
|
|
3888
|
+
"type": "string"
|
|
3889
|
+
},
|
|
3890
|
+
"campaignVrn": {
|
|
3891
|
+
"title": "Campaign VRN",
|
|
3892
|
+
"description": "Recommendation campaign VRN (e.g. vrn:recommendations:my-account:rec-persona-v2:abc123).",
|
|
3893
|
+
"type": "string",
|
|
3894
|
+
"pattern": "^vrn:recommendations:[^:]+:(rec-cross-v2|rec-similar-v2|rec-persona-v2|rec-last-v2|rec-top-items-v2|rec-search-v2|rec-next-v2|rec-visual-v2):[^:]+$"
|
|
3895
|
+
},
|
|
3896
|
+
"itemsContext": {
|
|
3897
|
+
"title": "Items context",
|
|
3898
|
+
"description": "Source of the products used as context for the recommendation request. 'Product page' uses the product currently being viewed; 'Cart' uses the items currently in the cart (useful for cross-sell shelves on the cart page). Only affects context-based campaigns such as cross-sell, similar items, visual similarity and next interaction.",
|
|
3899
|
+
"type": "string",
|
|
3900
|
+
"default": "PDP",
|
|
3901
|
+
"enum": ["PDP", "CART"],
|
|
3902
|
+
"enumNames": ["Product page", "Cart"]
|
|
3903
|
+
},
|
|
3904
|
+
"carouselConfiguration": {
|
|
3905
|
+
"title": "Carousel Configuration",
|
|
3906
|
+
"type": "object",
|
|
3907
|
+
"properties": {
|
|
3908
|
+
"itemsPerPageDesktop": {
|
|
3909
|
+
"title": "Items per page (desktop)",
|
|
3910
|
+
"description": "Number of products shown per page on desktop viewports.",
|
|
3911
|
+
"type": "number",
|
|
3912
|
+
"default": 4
|
|
3913
|
+
},
|
|
3914
|
+
"itemsPerPageMobile": {
|
|
3915
|
+
"title": "Items per page (mobile)",
|
|
3916
|
+
"description": "Number of products shown per page on mobile and tablet viewports.",
|
|
3917
|
+
"type": "number",
|
|
3918
|
+
"default": 2
|
|
3919
|
+
},
|
|
3920
|
+
"variant": {
|
|
3921
|
+
"title": "Carousel track variant",
|
|
3922
|
+
"description": "How the carousel navigates between items.",
|
|
3923
|
+
"type": "string",
|
|
3924
|
+
"default": "scroll",
|
|
3925
|
+
"enum": ["slide", "scroll"],
|
|
3926
|
+
"enumNames": ["Slide", "Scroll"]
|
|
3927
|
+
},
|
|
3928
|
+
"infiniteMode": {
|
|
3929
|
+
"title": "Infinite navigation?",
|
|
3930
|
+
"description": "Only applies to the 'slide' variant.",
|
|
3931
|
+
"type": "boolean",
|
|
3932
|
+
"default": false
|
|
3933
|
+
},
|
|
3934
|
+
"controls": {
|
|
3935
|
+
"title": "Navigation controls",
|
|
3936
|
+
"description": "Which navigation elements should be visible.",
|
|
3937
|
+
"type": "string",
|
|
3938
|
+
"default": "complete",
|
|
3939
|
+
"enum": ["complete", "navigationArrows", "paginationBullets"],
|
|
3940
|
+
"enumNames": ["Arrows and bullets", "Arrows only", "Bullets only"]
|
|
3941
|
+
}
|
|
3942
|
+
}
|
|
3943
|
+
},
|
|
3944
|
+
"productCardConfiguration": {
|
|
3945
|
+
"title": "Product Card Configuration",
|
|
3946
|
+
"type": "object",
|
|
3947
|
+
"properties": {
|
|
3948
|
+
"showDiscountBadge": {
|
|
3949
|
+
"title": "Show discount badge?",
|
|
3950
|
+
"type": "boolean",
|
|
3951
|
+
"default": true
|
|
3952
|
+
},
|
|
3953
|
+
"bordered": {
|
|
3954
|
+
"title": "Cards should be bordered?",
|
|
3955
|
+
"type": "boolean",
|
|
3956
|
+
"default": true
|
|
3957
|
+
}
|
|
3958
|
+
}
|
|
3959
|
+
}
|
|
3960
|
+
}
|
|
3961
|
+
},
|
|
3990
3962
|
"RegionBar": {
|
|
3991
3963
|
"$extends": ["#/$defs/base-component"],
|
|
3992
3964
|
"$componentKey": "RegionBar",
|
|
@@ -4428,98 +4400,100 @@
|
|
|
4428
4400
|
"writeOnly": false,
|
|
4429
4401
|
"deprecated": false,
|
|
4430
4402
|
"$abstract": false
|
|
4403
|
+
}
|
|
4404
|
+
},
|
|
4405
|
+
"$defs": {
|
|
4406
|
+
"base-component": {
|
|
4407
|
+
"type": "object",
|
|
4408
|
+
"required": [],
|
|
4409
|
+
"properties": {}
|
|
4431
4410
|
},
|
|
4432
|
-
"
|
|
4433
|
-
"$extends": ["#/$defs/base-component"],
|
|
4434
|
-
"$componentKey": "RecommendationShelf",
|
|
4435
|
-
"$componentTitle": "Recommendation Shelf",
|
|
4436
|
-
"title": "Recommendation Shelf",
|
|
4437
|
-
"description": "Display a carousel of personalized product recommendations from a VTEX Recommendations campaign. Enable the shelf with the Enable recommendations toggle (off by default).",
|
|
4411
|
+
"base-page-template": {
|
|
4438
4412
|
"type": "object",
|
|
4439
|
-
"required": ["campaignVrn"],
|
|
4440
4413
|
"properties": {
|
|
4441
|
-
"
|
|
4442
|
-
"
|
|
4443
|
-
"description": "When enabled, starts the VTEX Recommendations personalization session (once per browser session) and fetches personalized products for this shelf. Off by default so stores that do not use Recommendations never hit the Recommendations API.",
|
|
4444
|
-
"type": "boolean",
|
|
4445
|
-
"default": false
|
|
4446
|
-
},
|
|
4447
|
-
"title": {
|
|
4448
|
-
"title": "Title",
|
|
4449
|
-
"description": "Override the shelf title. If not set, the campaign title will be used.",
|
|
4450
|
-
"type": "string"
|
|
4451
|
-
},
|
|
4452
|
-
"campaignVrn": {
|
|
4453
|
-
"title": "Campaign VRN",
|
|
4454
|
-
"description": "Recommendation campaign VRN (e.g. vrn:recommendations:my-account:rec-persona-v2:abc123).",
|
|
4455
|
-
"type": "string",
|
|
4456
|
-
"pattern": "^vrn:recommendations:[^:]+:(rec-cross-v2|rec-similar-v2|rec-persona-v2|rec-last-v2|rec-top-items-v2|rec-search-v2|rec-next-v2|rec-visual-v2):[^:]+$"
|
|
4457
|
-
},
|
|
4458
|
-
"itemsContext": {
|
|
4459
|
-
"title": "Items context",
|
|
4460
|
-
"description": "Source of the products used as context for the recommendation request. 'Product page' uses the product currently being viewed; 'Cart' uses the items currently in the cart (useful for cross-sell shelves on the cart page). Only affects context-based campaigns such as cross-sell, similar items, visual similarity and next interaction.",
|
|
4461
|
-
"type": "string",
|
|
4462
|
-
"default": "PDP",
|
|
4463
|
-
"enum": ["PDP", "CART"],
|
|
4464
|
-
"enumNames": ["Product page", "Cart"]
|
|
4465
|
-
},
|
|
4466
|
-
"carouselConfiguration": {
|
|
4467
|
-
"title": "Carousel Configuration",
|
|
4468
|
-
"type": "object",
|
|
4469
|
-
"properties": {
|
|
4470
|
-
"itemsPerPageDesktop": {
|
|
4471
|
-
"title": "Items per page (desktop)",
|
|
4472
|
-
"description": "Number of products shown per page on desktop viewports.",
|
|
4473
|
-
"type": "number",
|
|
4474
|
-
"default": 4
|
|
4475
|
-
},
|
|
4476
|
-
"itemsPerPageMobile": {
|
|
4477
|
-
"title": "Items per page (mobile)",
|
|
4478
|
-
"description": "Number of products shown per page on mobile and tablet viewports.",
|
|
4479
|
-
"type": "number",
|
|
4480
|
-
"default": 2
|
|
4481
|
-
},
|
|
4482
|
-
"variant": {
|
|
4483
|
-
"title": "Carousel track variant",
|
|
4484
|
-
"description": "How the carousel navigates between items.",
|
|
4485
|
-
"type": "string",
|
|
4486
|
-
"default": "scroll",
|
|
4487
|
-
"enum": ["slide", "scroll"],
|
|
4488
|
-
"enumNames": ["Slide", "Scroll"]
|
|
4489
|
-
},
|
|
4490
|
-
"infiniteMode": {
|
|
4491
|
-
"title": "Infinite navigation?",
|
|
4492
|
-
"description": "Only applies to the 'slide' variant.",
|
|
4493
|
-
"type": "boolean",
|
|
4494
|
-
"default": false
|
|
4495
|
-
},
|
|
4496
|
-
"controls": {
|
|
4497
|
-
"title": "Navigation controls",
|
|
4498
|
-
"description": "Which navigation elements should be visible.",
|
|
4499
|
-
"type": "string",
|
|
4500
|
-
"default": "complete",
|
|
4501
|
-
"enum": ["complete", "navigationArrows", "paginationBullets"],
|
|
4502
|
-
"enumNames": ["Arrows and bullets", "Arrows only", "Bullets only"]
|
|
4503
|
-
}
|
|
4504
|
-
}
|
|
4505
|
-
},
|
|
4506
|
-
"productCardConfiguration": {
|
|
4507
|
-
"title": "Product Card Configuration",
|
|
4508
|
-
"type": "object",
|
|
4509
|
-
"properties": {
|
|
4510
|
-
"showDiscountBadge": {
|
|
4511
|
-
"title": "Show discount badge?",
|
|
4512
|
-
"type": "boolean",
|
|
4513
|
-
"default": true
|
|
4514
|
-
},
|
|
4515
|
-
"bordered": {
|
|
4516
|
-
"title": "Cards should be bordered?",
|
|
4517
|
-
"type": "boolean",
|
|
4518
|
-
"default": true
|
|
4519
|
-
}
|
|
4520
|
-
}
|
|
4414
|
+
"sections": {
|
|
4415
|
+
"$ref": "#/$defs/$ALLOW_ALL_COMPONENTS"
|
|
4521
4416
|
}
|
|
4522
4417
|
}
|
|
4418
|
+
},
|
|
4419
|
+
"$ALLOW_ALL_COMPONENTS": {
|
|
4420
|
+
"type": "array",
|
|
4421
|
+
"items": {
|
|
4422
|
+
"anyOf": [
|
|
4423
|
+
{
|
|
4424
|
+
"$ref": "#/components/Alert"
|
|
4425
|
+
},
|
|
4426
|
+
{
|
|
4427
|
+
"$ref": "#/components/BannerNewsletter"
|
|
4428
|
+
},
|
|
4429
|
+
{
|
|
4430
|
+
"$ref": "#/components/BannerText"
|
|
4431
|
+
},
|
|
4432
|
+
{
|
|
4433
|
+
"$ref": "#/components/Breadcrumb"
|
|
4434
|
+
},
|
|
4435
|
+
{
|
|
4436
|
+
"$ref": "#/components/CartSidebar"
|
|
4437
|
+
},
|
|
4438
|
+
{
|
|
4439
|
+
"$ref": "#/components/Children"
|
|
4440
|
+
},
|
|
4441
|
+
{
|
|
4442
|
+
"$ref": "#/components/CrossSellingShelf"
|
|
4443
|
+
},
|
|
4444
|
+
{
|
|
4445
|
+
"$ref": "#/components/EmptyState"
|
|
4446
|
+
},
|
|
4447
|
+
{
|
|
4448
|
+
"$ref": "#/components/Footer"
|
|
4449
|
+
},
|
|
4450
|
+
{
|
|
4451
|
+
"$ref": "#/components/Hero"
|
|
4452
|
+
},
|
|
4453
|
+
{
|
|
4454
|
+
"$ref": "#/components/Incentives"
|
|
4455
|
+
},
|
|
4456
|
+
{
|
|
4457
|
+
"$ref": "#/components/Navbar"
|
|
4458
|
+
},
|
|
4459
|
+
{
|
|
4460
|
+
"$ref": "#/components/Newsletter"
|
|
4461
|
+
},
|
|
4462
|
+
{
|
|
4463
|
+
"$ref": "#/components/ProductDetails"
|
|
4464
|
+
},
|
|
4465
|
+
{
|
|
4466
|
+
"$ref": "#/components/ProductGallery"
|
|
4467
|
+
},
|
|
4468
|
+
{
|
|
4469
|
+
"$ref": "#/components/ProductShelf"
|
|
4470
|
+
},
|
|
4471
|
+
{
|
|
4472
|
+
"$ref": "#/components/ProductTiles"
|
|
4473
|
+
},
|
|
4474
|
+
{
|
|
4475
|
+
"$ref": "#/components/RecommendationShelf"
|
|
4476
|
+
},
|
|
4477
|
+
{
|
|
4478
|
+
"$ref": "#/components/RegionBar"
|
|
4479
|
+
},
|
|
4480
|
+
{
|
|
4481
|
+
"$ref": "#/components/RegionModal"
|
|
4482
|
+
},
|
|
4483
|
+
{
|
|
4484
|
+
"$ref": "#/components/RegionPopover"
|
|
4485
|
+
},
|
|
4486
|
+
{
|
|
4487
|
+
"$ref": "#/components/ScrollToTopButton"
|
|
4488
|
+
},
|
|
4489
|
+
{
|
|
4490
|
+
"$ref": "#/components/Search"
|
|
4491
|
+
},
|
|
4492
|
+
{
|
|
4493
|
+
"$ref": "#/components/ShoppingAssistant"
|
|
4494
|
+
}
|
|
4495
|
+
]
|
|
4496
|
+
}
|
|
4523
4497
|
}
|
|
4524
4498
|
}
|
|
4525
4499
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@faststore/core",
|
|
3
|
-
"version": "4.5.1-dev.
|
|
3
|
+
"version": "4.5.1-dev.1",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -71,11 +71,11 @@
|
|
|
71
71
|
"style-loader": "^3.3.1",
|
|
72
72
|
"swr": "^2.2.5",
|
|
73
73
|
"use-sync-external-store": "^1.6.0",
|
|
74
|
-
"@faststore/api": "4.5.1-dev.
|
|
75
|
-
"@faststore/
|
|
76
|
-
"@faststore/
|
|
77
|
-
"@faststore/ui": "4.5.1-dev.
|
|
78
|
-
"@faststore/
|
|
74
|
+
"@faststore/api": "4.5.1-dev.1",
|
|
75
|
+
"@faststore/diagnostics": "4.5.1-dev.1",
|
|
76
|
+
"@faststore/sdk": "4.5.1-dev.1",
|
|
77
|
+
"@faststore/ui": "4.5.1-dev.1",
|
|
78
|
+
"@faststore/lighthouse": "4.5.1-dev.1"
|
|
79
79
|
},
|
|
80
80
|
"devDependencies": {
|
|
81
81
|
"@cypress/code-coverage": "^3.12.1",
|