@faststore/core 4.5.1-dev.0 → 4.5.1-dev.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.
@@ -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.1 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.1 gen-types /home/runner/work/faststore/faststore/packages/core
7
7
  > node ../cli/bin/run generate-types .
8
8
 
9
9
  [STARTED] Parse Configuration
@@ -19,7 +19,7 @@
19
19
  [COMPLETED] Generate to /home/runner/work/faststore/faststore/packages/core/@generated/
20
20
  [COMPLETED] 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.1 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
@@ -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.1 test /home/runner/work/faststore/faststore/packages/core
3
3
  > vitest run
4
4
 
5
5
 
6
6
   RUN  v4.0.7 /home/runner/work/faststore/faststore/packages/core
7
7
 
8
- ✓  browser  test/sdk/session/reconcileSessionLocale.browser.test.ts (5 tests) 48ms
8
+ ✓  browser  test/sdk/session/reconcileSessionLocale.browser.test.ts (5 tests) 50ms
9
9
  stderr | test/components/RecommendationShelf/RecommendationShelf.browser.test.tsx
10
10
  Error in optimistic validation: TypeError: Failed to parse URL from /api/graphql?operationName=ValidateCartMutation&operationHash=8199d03debb0a6751ec53d8ee8987b78d0292acb
11
11
   at node:internal/deps/undici/undici:16416:13
@@ -38,9 +38,10 @@ Browserslist: browsers data (caniuse-lite) is 6 months old. Please run:
38
38
  stderr | test/components/RecommendationShelf/RecommendationShelf.browser.test.tsx > RecommendationShelf > renders nothing when there is an error
39
39
  Error fetching recommendations undefined boom for campaign vrn:recommendations:acc:rec-top-items-v2:campaign-1
40
40
 
41
- ✓  browser  test/components/RecommendationShelf/RecommendationShelf.browser.test.tsx (8 tests) 241ms
42
- ✓  browser  test/components/account/ContractSwitcher.browser.test.tsx (13 tests) 2157ms
43
- ✓ shows an error state when the list fails to load  632ms
41
+ ✓  browser  test/components/RecommendationShelf/RecommendationShelf.browser.test.tsx (8 tests) 345ms
42
+ ✓  browser  test/components/account/ContractSwitcher.browser.test.tsx (13 tests) 2351ms
43
+ ✓ shows an error state when the list fails to load  620ms
44
+ ✓ requires selecting a contract before Confirm is enabled, then switches (REQ-03)  364ms
44
45
  stderr | test/pages/password-protection.browser.test.tsx > PasswordProtectionLogin > posts the password and redirects to the requested return path
45
46
  Warning: An update to PasswordProtectionLogin inside a test was not wrapped in act(...).
46
47
 
@@ -271,13 +272,12 @@ This ensures that you're testing the behavior the user would see in the browser.
271
272
  at PasswordProtectionLogin (/home/runner/work/faststore/faststore/packages/core/src/pages/password-protection/index.tsx:19:69)
272
273
 
273
274
  ✓  browser  test/pages/password-protection.browser.test.tsx (6 tests) 1570ms
274
- ✓ renders the password protection form  554ms
275
- ✓  browser  test/sdk/session/getInitialSession.browser.test.ts (6 tests) 32ms
276
- ✓  browser  test/sdk/account/changeContractToken.browser.test.ts (9 tests) 73ms
277
- ✓  browser  test/components/account/OrganizationDrawer.browser.test.tsx (5 tests) 1777ms
278
- ✓ renders the menu view with contract details and manage footer  857ms
279
- ✓ opens the contract switcher and returns to the menu on back  301ms
280
- ✓ resets to the menu when the drawer closes  319ms
275
+ ✓ renders the password protection form  685ms
276
+ ✓  browser  test/sdk/session/getInitialSession.browser.test.ts (6 tests) 24ms
277
+ ✓  browser  test/components/account/OrganizationDrawer.browser.test.tsx (5 tests) 1771ms
278
+ ✓ renders the menu view with contract details and manage footer  951ms
279
+ ✓ opens the contract switcher and returns to the menu on back  347ms
280
+ ✓  browser  test/sdk/account/changeContractToken.browser.test.ts (9 tests) 75ms
281
281
  stderr | test/sdk/localization/store-url.browser.test.ts
282
282
  Error in optimistic validation: TypeError: Cannot read properties of undefined (reading 'read')
283
283
  at validateCart (/home/runner/work/faststore/faststore/packages/core/src/sdk/cart/index.ts:121:27)
@@ -285,9 +285,9 @@ This ensures that you're testing the behavior the user would see in the browser.
285
285
  at a (/home/runner/work/faststore/faststore/packages/sdk/dist/es/index.mjs:354:23)
286
286
   at processTicksAndRejections (node:internal/process/task_queues:103:5)
287
287
 
288
- ✓  browser  test/sdk/localization/store-url.browser.test.ts (3 tests) 11ms
289
- ✓  browser  test/sdk/account/useAvailableContracts.browser.test.ts (6 tests) 120ms
290
- ✓  browser  test/sdk/account/useSwitchContract.browser.test.ts (4 tests) 87ms
288
+ ✓  browser  test/sdk/localization/store-url.browser.test.ts (3 tests) 14ms
289
+ ✓  browser  test/sdk/account/useAvailableContracts.browser.test.ts (6 tests) 60ms
290
+ ✓  browser  test/sdk/account/useSwitchContract.browser.test.ts (4 tests) 88ms
291
291
  stderr | test/components/account/doLogout.browser.test.ts
292
292
  Error in optimistic validation: TypeError: Cannot read properties of undefined (reading 'read')
293
293
  at validateCart (/home/runner/work/faststore/faststore/packages/core/src/sdk/cart/index.ts:121:27)
@@ -295,10 +295,9 @@ This ensures that you're testing the behavior the user would see in the browser.
295
295
  at a (/home/runner/work/faststore/faststore/packages/sdk/dist/es/index.mjs:354:23)
296
296
   at processTicksAndRejections (node:internal/process/task_queues:103:5)
297
297
 
298
- ✓  browser  test/components/account/doLogout.browser.test.ts (1 test) 27ms
299
- ✓  browser  test/components/account/OrganizationDrawerHeader.browser.test.tsx (3 tests) 326ms
300
- ✓  browser  test/components/account/OrganizationDrawerFooter.browser.test.tsx (3 tests) 262ms
301
- ✓  browser  test/utils/isLocalHost.browser.test.ts (3 tests) 4ms
298
+ ✓  browser  test/components/account/doLogout.browser.test.ts (1 test) 34ms
299
+ ✓  browser  test/components/account/OrganizationDrawerHeader.browser.test.tsx (3 tests) 291ms
300
+ ✓  browser  test/components/account/OrganizationDrawerFooter.browser.test.tsx (3 tests) 279ms
302
301
  stderr | test/sdk/account/clearPersistedSessionState.browser.test.ts
303
302
  Error in optimistic validation: TypeError: Cannot read properties of undefined (reading 'read')
304
303
  at validateCart (/home/runner/work/faststore/faststore/packages/core/src/sdk/cart/index.ts:121:27)
@@ -306,11 +305,12 @@ This ensures that you're testing the behavior the user would see in the browser.
306
305
  at a (/home/runner/work/faststore/faststore/packages/sdk/dist/es/index.mjs:354:23)
307
306
   at processTicksAndRejections (node:internal/process/task_queues:103:5)
308
307
 
308
+ ✓  browser  test/utils/isLocalHost.browser.test.ts (3 tests) 3ms
309
309
  ✓  browser  test/sdk/account/clearPersistedSessionState.browser.test.ts (1 test) 9ms
310
310
  ✓  browser  test/sdk/session/reconcileSessionLocale.disabled.browser.test.ts (1 test) 2ms
311
- ✓  node  test/utils/localization/bindingPaths.test.ts (71 tests) 31ms
312
- ✓  node  test/server/password-protection-service.test.ts (22 tests) 37ms
313
- ✓  node  test/utils/match-url.test.ts (10 tests) 8ms
311
+ ✓  node  test/utils/localization/bindingPaths.test.ts (71 tests) 28ms
312
+ ✓  node  test/server/password-protection-service.test.ts (22 tests) 34ms
313
+ ✓  node  test/utils/match-url.test.ts (10 tests) 9ms
314
314
  stderr | test/sdk/account/refreshToken.browser.test.ts
315
315
  Error in optimistic validation: TypeError: Cannot read properties of undefined (reading 'read')
316
316
  at validateCart (/home/runner/work/faststore/faststore/packages/core/src/sdk/cart/index.ts:121:27)
@@ -318,10 +318,10 @@ This ensures that you're testing the behavior the user would see in the browser.
318
318
  at a (/home/runner/work/faststore/faststore/packages/sdk/dist/es/index.mjs:354:23)
319
319
   at processTicksAndRejections (node:internal/process/task_queues:103:5)
320
320
 
321
- ✓  browser  test/sdk/account/refreshToken.browser.test.ts (1 test) 6ms
322
- ✓  node  test/sdk/localization/useBindingSelector.test.tsx (22 tests) 15ms
323
- ✓  node  test/sdk/localization/bindingSelector.test.ts (18 tests) 7ms
324
- ✓  node  test/pages/api/unlock.test.ts (15 tests) 210ms
321
+ ✓  browser  test/sdk/account/refreshToken.browser.test.ts (1 test) 5ms
322
+ ✓  node  test/sdk/localization/useBindingSelector.test.tsx (22 tests) 12ms
323
+ ✓  node  test/sdk/localization/bindingSelector.test.ts (18 tests) 8ms
324
+ ✓  node  test/pages/api/unlock.test.ts (15 tests) 186ms
325
325
  stderr | test/components/search/SearchInputComponent.test.tsx
326
326
  Warning: forwardRef render functions accept exactly two parameters: props and ref. Did you forget to use the ref parameter?
327
327
 
@@ -385,23 +385,23 @@ Warning: React does not recognize the `providerProps` prop on a DOM element. If
385
385
  at Suspense
386
386
  at Wrapper (/home/runner/work/faststore/faststore/packages/core/test/components/search/SearchInputComponent.test.tsx:106:20)
387
387
 
388
- ✓  node  test/components/search/SearchInputComponent.test.tsx (6 tests) 83ms
389
- ✓  node  test/utils/cookieCacheBusting.test.ts (10 tests) 15ms
390
- ✓  node  test/sdk/search/useSearchHistory.test.ts (13 tests) 60ms
391
- ✓  node  test/experimental/myAccountCmsServerSideProps.test.ts (5 tests) 10ms
392
- ✓  node  test/utils/clearCookies.test.ts (20 tests) 28ms
388
+ ✓  node  test/components/search/SearchInputComponent.test.tsx (6 tests) 85ms
389
+ ✓  node  test/utils/cookieCacheBusting.test.ts (10 tests) 14ms
390
+ ✓  node  test/sdk/search/useSearchHistory.test.ts (13 tests) 55ms
391
+ ✓  node  test/experimental/myAccountCmsServerSideProps.test.ts (5 tests) 7ms
392
+ ✓  node  test/utils/clearCookies.test.ts (20 tests) 32ms
393
393
  stderr | test/sdk/account/useSetPassword.test.ts > useSetPassword > maps wrongcredentials error responses to the existing message
394
394
  Set password request failed: Bad Request
395
395
 
396
- ✓  node  test/sdk/account/useSetPassword.test.ts (6 tests) 58ms
397
- ✓  node  test/components/quotes/MyAccountListQuotesTable.test.tsx (12 tests) 433ms
398
- ✓  node  test/components/quotes/quoteFilters.test.ts (23 tests) 25ms
399
- ✓  node  test/utils/multipleTemplates.test.ts (8 tests) 5ms
396
+ ✓  node  test/sdk/account/useSetPassword.test.ts (6 tests) 46ms
397
+ ✓  node  test/components/quotes/MyAccountListQuotesTable.test.tsx (12 tests) 441ms
398
+ ✓  node  test/components/quotes/quoteFilters.test.ts (23 tests) 29ms
399
+ ✓  node  test/utils/multipleTemplates.test.ts (8 tests) 6ms
400
400
  ✓  node  test/utils/localization/localizeRedirectDestination.test.ts (11 tests) 5ms
401
- ✓  node  test/components/quotes/MyAccountListQuotes.test.tsx (9 tests) 855ms
402
- ✓ navigates with the search term on blur  371ms
403
- ✓ navigates without a label param when the search is cleared  358ms
404
- ✓  node  test/sdk/orderEntry/useOrderEntryOperation.test.ts (8 tests) 38ms
401
+ ✓  node  test/components/quotes/MyAccountListQuotes.test.tsx (9 tests) 856ms
402
+ ✓ navigates with the search term on blur  363ms
403
+ ✓ navigates without a label param when the search is cleared  359ms
404
+ ✓  node  test/sdk/orderEntry/useOrderEntryOperation.test.ts (8 tests) 40ms
405
405
  stderr | test/pages/api/graphql.test.ts > /api/graphql error status propagation > propagates the upstream 400 from a wrapped BadRequestError instead of 500
406
406
  Graphql execution returned with error: [
407
407
  {
@@ -448,49 +448,47 @@ Warning: React does not recognize the `providerProps` prop on a DOM element. If
448
448
  { message: 'bad', status: 400, type: 'BadRequestError' }
449
449
  ]
450
450
 
451
- ✓  node  test/pages/api/graphql.test.ts (10 tests) 29ms
452
- ✓  node  test/sdk/orderEntry/useOrderEntryUpload.test.ts (8 tests) 45ms
453
- ✓  node  test/sdk/analytics/useStartRecommendationSession.test.ts (6 tests) 64ms
454
- ✓  node  test/components/quotes/MyAccountQuotesFilterSlider.test.tsx (5 tests) 166ms
451
+ ✓  node  test/pages/api/graphql.test.ts (10 tests) 24ms
452
+ ✓  node  test/sdk/orderEntry/useOrderEntryUpload.test.ts (8 tests) 52ms
453
+ ✓  node  test/components/quotes/MyAccountQuotesFilterSlider.test.tsx (5 tests) 158ms
454
+ ✓  node  test/sdk/analytics/useStartRecommendationSession.test.ts (6 tests) 54ms
455
455
  ✓  node  test/proxy.localization.test.ts (5 tests) 41ms
456
- ✓  node  test/sdk/account/getMyAccountRoutes.test.ts (10 tests) 6ms
457
- ✓  node  test/server/index.test.ts (7 tests) 1049ms
458
- ✓ should return a valid merged GraphQL schema  341ms
459
- ✓ should handle options and execute  466ms
460
- ✓  node  test/sdk/orderEntry/useOrderEntry.test.ts (8 tests) 45ms
461
- ✓  node  test/proxy.test.ts (4 tests) 38ms
462
- ✓  node  test/server/webops-api.test.ts (9 tests) 18ms
463
- ✓  node  test/components/quotes/MyAccountQuotesSelectedTags.test.tsx (8 tests) 93ms
464
- ✓  node  test/sdk/orderEntry/useOrderFormItems.test.ts (7 tests) 41ms
465
- ✓  node  test/sdk/account/refreshToken.test.ts (5 tests) 7ms
466
- ✓  node  test/server/cms/global.test.ts (3 tests) 7ms
456
+ ✓  node  test/server/index.test.ts (7 tests) 802ms
457
+ ✓  node  test/sdk/account/getMyAccountRoutes.test.ts (10 tests) 8ms
458
+ ✓  node  test/sdk/orderEntry/useOrderEntry.test.ts (8 tests) 48ms
459
+ ✓  node  test/proxy.test.ts (4 tests) 23ms
460
+ ✓  node  test/server/webops-api.test.ts (9 tests) 25ms
461
+ ✓  node  test/components/quotes/MyAccountQuotesSelectedTags.test.tsx (8 tests) 88ms
462
+ ✓  node  test/sdk/orderEntry/useOrderFormItems.test.ts (7 tests) 42ms
463
+ ✓  node  test/sdk/account/refreshToken.test.ts (5 tests) 6ms
464
+ ✓  node  test/server/cms/global.test.ts (3 tests) 8ms
467
465
  ✓  node  test/server/content/service.test.ts (5 tests) 5ms
468
466
  ✓  node  test/sdk/localization/store-url.test.ts (1 test) 4ms
469
- ✓  node  test/sdk/analytics/hasEnabledRecommendationShelf.test.ts (6 tests) 5ms
470
- ✓  node  test/utils/getRequestHostname.test.ts (12 tests) 5ms
471
- ✓  node  test/sdk/auth/useAuth.test.ts (5 tests) 34ms
472
- ✓  node  test/components/quotes/MyAccountQuotesStatusSelector.test.tsx (6 tests) 137ms
467
+ ✓  node  test/sdk/analytics/hasEnabledRecommendationShelf.test.ts (6 tests) 4ms
468
+ ✓  node  test/utils/getRequestHostname.test.ts (12 tests) 7ms
469
+ ✓  node  test/sdk/auth/useAuth.test.ts (5 tests) 32ms
470
+ ✓  node  test/components/quotes/MyAccountQuotesStatusSelector.test.tsx (6 tests) 113ms
471
+ ✓  node  test/utils/validateSessionRefreshToken.test.ts (6 tests) 5ms
473
472
  ✓  node  test/pages/api/preview.test.ts (2 tests) 10ms
474
- ✓  node  test/utils/validateSessionRefreshToken.test.ts (6 tests) 6ms
475
- ✓  node  test/components/search/SearchInput.test.ts (6 tests) 9ms
476
- ✓  node  test/components/RecommendationShelf/vrn.test.ts (5 tests) 5ms
477
- ✓  node  test/server/cms/index.test.ts (2 tests) 6ms
478
- ✓  node  test/utils/retry.test.ts (5 tests) 15ms
479
- ✓  node  test/components/RecommendationShelf/useRecommendationUserId.test.ts (4 tests) 181ms
480
- ✓  node  test/components/account/Layout.test.tsx (4 tests) 46ms
481
- ✓  node  test/server/cms/myAccountDefaultSections.test.ts (5 tests) 6ms
482
- ✓  node  test/utils/unlockResponse.test.ts (11 tests) 5ms
473
+ ✓  node  test/components/search/SearchInput.test.ts (6 tests) 8ms
474
+ ✓  node  test/components/RecommendationShelf/vrn.test.ts (5 tests) 6ms
475
+ ✓  node  test/server/cms/index.test.ts (2 tests) 11ms
476
+ ✓  node  test/utils/retry.test.ts (5 tests) 11ms
477
+ ✓  node  test/components/RecommendationShelf/useRecommendationUserId.test.ts (4 tests) 184ms
478
+ ✓  node  test/components/account/Layout.test.tsx (4 tests) 56ms
479
+ ✓  node  test/utils/unlockResponse.test.ts (11 tests) 6ms
480
+ ✓  node  test/server/cms/myAccountDefaultSections.test.ts (5 tests) 5ms
483
481
  ✓  node  test/components/RecommendationShelf/useRecommendations.test.ts (2 tests) 4ms
484
482
  ✓  node  test/utils/isLocalHost.test.ts (7 tests) 4ms
485
483
  ✓  node  test/utils/userOrderStatus.test.ts (3 tests) 4ms
486
- ✓  node  test/components/account/OrganizationDrawerBody.test.tsx (3 tests) 55ms
487
- ✓  node  test/sdk/analytics/utils.test.ts (2 tests) 3ms
488
- ✓  node  test/components/auth/ProfileChallenge.test.tsx (3 tests) 41ms
489
- ✓  node  test/sdk/account/clearPersistedSessionState.test.ts (1 test) 10ms
490
- ✓  node  test/components/quotes/MyAccountQuoteStatusBadge.test.tsx (2 tests) 25ms
484
+ ✓  node  test/components/account/OrganizationDrawerBody.test.tsx (3 tests) 51ms
485
+ ✓  node  test/sdk/analytics/utils.test.ts (2 tests) 4ms
486
+ ✓  node  test/components/auth/ProfileChallenge.test.tsx (3 tests) 36ms
487
+ ✓  node  test/sdk/account/clearPersistedSessionState.test.ts (1 test) 11ms
488
+ ✓  node  test/components/quotes/MyAccountQuoteStatusBadge.test.tsx (2 tests) 26ms
491
489
 
492
490
   Test Files  73 passed (73)
493
491
   Tests  570 passed (570)
494
-  Start at  22:34:58
495
-  Duration  36.41s (transform 8.22s, setup 0ms, collect 30.47s, tests 10.94s, environment 47.75s, prepare 1.27s)
492
+  Start at  15:55:03
493
+  Duration  38.20s (transform 10.95s, setup 0ms, collect 32.77s, tests 10.85s, environment 50.70s, prepare 1.23s)
496
494
 
package/CHANGELOG.md CHANGED
@@ -3,6 +3,14 @@
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.2](https://github.com/vtex/faststore/compare/v4.5.1-dev.1...v4.5.1-dev.2) (2026-08-04)
7
+
8
+ **Note:** Version bump only for package @faststore/core
9
+
10
+ ## [4.5.1-dev.1](https://github.com/vtex/faststore/compare/v4.5.1-dev.0...v4.5.1-dev.1) (2026-08-04)
11
+
12
+ **Note:** Version bump only for package @faststore/core
13
+
6
14
  ## [4.5.1-dev.0](https://github.com/vtex/faststore/compare/v4.5.0...v4.5.1-dev.0) (2026-08-03)
7
15
 
8
16
  **Note:** Version bump only for package @faststore/core
@@ -1,6 +1,6 @@
1
1
  {
2
2
  // This should be automatically updated and point to Schema Registry.
3
- "$id": "vtex.faststore4",
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
- "RecommendationShelf": {
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
- "enableRecommendations": {
4442
- "title": "Enable recommendations?",
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.0",
3
+ "version": "4.5.1-dev.2",
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.0",
75
- "@faststore/lighthouse": "4.5.1-dev.0",
76
- "@faststore/diagnostics": "4.5.1-dev.0",
77
- "@faststore/ui": "4.5.1-dev.0",
78
- "@faststore/sdk": "4.5.1-dev.0"
74
+ "@faststore/api": "4.5.1-dev.2",
75
+ "@faststore/lighthouse": "4.5.1-dev.2",
76
+ "@faststore/diagnostics": "4.5.1-dev.2",
77
+ "@faststore/sdk": "4.5.1-dev.2",
78
+ "@faststore/ui": "4.5.1-dev.2"
79
79
  },
80
80
  "devDependencies": {
81
81
  "@cypress/code-coverage": "^3.12.1",