@scayle/storefront-nuxt 8.32.0 → 8.33.0
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/CHANGELOG.md +141 -106
- package/dist/module.json +1 -1
- package/dist/module.mjs +1 -1
- package/package.json +22 -22
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,40 @@
|
|
|
1
1
|
# @scayle/storefront-nuxt
|
|
2
2
|
|
|
3
|
+
## 8.33.0
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Updated dependency `@scayle/storefront-core@8.32.0` to `@scayle/storefront-core@workspace:*`
|
|
8
|
+
- Updated dependency `@scayle/unstorage-compression-driver@^1.0.0` to `@scayle/unstorage-compression-driver@workspace:*`
|
|
9
|
+
- Updated dependency `@vueuse/core@13.4.0` to `@vueuse/core@13.5.0`
|
|
10
|
+
|
|
11
|
+
**Dependencies**
|
|
12
|
+
|
|
13
|
+
**@scayle/storefront-core v8.33.0**
|
|
14
|
+
|
|
15
|
+
- Minor
|
|
16
|
+
|
|
17
|
+
- Added test factories for order and all related types.
|
|
18
|
+
|
|
19
|
+
It is now possible to build orders with factory functions for testing purposes.
|
|
20
|
+
This will reduce the amount of boilerplate code needed to create test data.
|
|
21
|
+
|
|
22
|
+
- Patch
|
|
23
|
+
- Updated dependency `@scayle/storefront-api@18.9.0` to `@scayle/storefront-api@workspace:*`
|
|
24
|
+
- Updated dependency `@scayle/unstorage-scayle-kv-driver@1.0.2` to `@scayle/unstorage-scayle-kv-driver@workspace:*`
|
|
25
|
+
|
|
26
|
+
## 8.32.1
|
|
27
|
+
|
|
28
|
+
### Patch Changes
|
|
29
|
+
|
|
30
|
+
- Updated dependency `@scayle/storefront-core@8.31.0` to `@scayle/storefront-core@8.32.0`
|
|
31
|
+
|
|
32
|
+
**Dependencies**
|
|
33
|
+
|
|
34
|
+
**@scayle/storefront-core v8.32.1**
|
|
35
|
+
|
|
36
|
+
- No changes in this release.
|
|
37
|
+
|
|
3
38
|
## 8.32.0
|
|
4
39
|
|
|
5
40
|
### Patch Changes
|
|
@@ -26,23 +61,23 @@
|
|
|
26
61
|
- Added `minReduction` and `maxReduction` filter parameters to `FetchProductsByCategoryParams.where` and `FetchFiltersParams.where` types, and updated the `getProductsByCategory` and `getFilters` RPC methods to accept and handle these new reduction-based filtering conditions.
|
|
27
62
|
|
|
28
63
|
```ts
|
|
29
|
-
const { data } = useRpc(
|
|
64
|
+
const { data } = useRpc('getFilters', 'getFiltersKey', () => ({
|
|
30
65
|
where: {
|
|
31
66
|
minReduction: 10,
|
|
32
67
|
maxReduction: 20,
|
|
33
68
|
},
|
|
34
|
-
}))
|
|
69
|
+
}))
|
|
35
70
|
|
|
36
71
|
const { data } = useRpc(
|
|
37
|
-
|
|
38
|
-
|
|
72
|
+
'getProductsByCategory',
|
|
73
|
+
'getProductsByCategoryKey',
|
|
39
74
|
() => ({
|
|
40
75
|
where: {
|
|
41
76
|
minReduction: 10,
|
|
42
77
|
maxReduction: 20,
|
|
43
78
|
},
|
|
44
79
|
}),
|
|
45
|
-
)
|
|
80
|
+
)
|
|
46
81
|
```
|
|
47
82
|
|
|
48
83
|
## 8.30.3
|
|
@@ -94,28 +129,28 @@
|
|
|
94
129
|
|
|
95
130
|
```ts
|
|
96
131
|
export const existingHandlerWithoutParams = async (_context: RpcContext) => {
|
|
97
|
-
return
|
|
98
|
-
}
|
|
132
|
+
return 'existing handler'
|
|
133
|
+
}
|
|
99
134
|
|
|
100
135
|
export const existingHandlerWithParams = async (
|
|
101
136
|
{ name }: { name: string },
|
|
102
137
|
_context: RpcContext,
|
|
103
138
|
) => {
|
|
104
|
-
return name
|
|
105
|
-
}
|
|
139
|
+
return name
|
|
140
|
+
}
|
|
106
141
|
|
|
107
142
|
// will become
|
|
108
143
|
|
|
109
144
|
export const existingHandlerWithoutParams = defineRpcHandler(
|
|
110
145
|
async (_context: RpcContext) => {
|
|
111
|
-
return
|
|
146
|
+
return 'existing handler'
|
|
112
147
|
},
|
|
113
|
-
)
|
|
148
|
+
)
|
|
114
149
|
export const existingHandlerWithParams = defineRpcHandler(
|
|
115
150
|
async ({ name }: { name: string }, _context: RpcContext) => {
|
|
116
|
-
return name
|
|
151
|
+
return name
|
|
117
152
|
},
|
|
118
|
-
)
|
|
153
|
+
)
|
|
119
154
|
```
|
|
120
155
|
|
|
121
156
|
- Patch
|
|
@@ -137,15 +172,15 @@
|
|
|
137
172
|
- Added an optional `hideEmptyCategories` parameter to `getCategoryTree`. When enabled, the product count for each category is retrieved, and categories (including their children) without any products are removed. Enabling this option may increase response times, especially for large category trees.
|
|
138
173
|
|
|
139
174
|
```ts
|
|
140
|
-
import { rpcMethods } from
|
|
175
|
+
import { rpcMethods } from '@scayle/storefront-core'
|
|
141
176
|
|
|
142
|
-
rpcMethods.getCategoryTree({ hideEmptyCategories: true }, rpcContext)
|
|
177
|
+
rpcMethods.getCategoryTree({ hideEmptyCategories: true }, rpcContext)
|
|
143
178
|
```
|
|
144
179
|
|
|
145
180
|
or
|
|
146
181
|
|
|
147
182
|
```ts
|
|
148
|
-
import { useCategoryTree } from
|
|
183
|
+
import { useCategoryTree } from '#storefront/composables'
|
|
149
184
|
|
|
150
185
|
const { data: rootCategories, status } = useCategoryTree(
|
|
151
186
|
{
|
|
@@ -153,8 +188,8 @@
|
|
|
153
188
|
hideEmptyCategories: true,
|
|
154
189
|
},
|
|
155
190
|
},
|
|
156
|
-
|
|
157
|
-
)
|
|
191
|
+
'category-navigation-tree',
|
|
192
|
+
)
|
|
158
193
|
```
|
|
159
194
|
|
|
160
195
|
## 8.28.7
|
|
@@ -251,9 +286,9 @@
|
|
|
251
286
|
params: {
|
|
252
287
|
children: 10,
|
|
253
288
|
includeHidden: true,
|
|
254
|
-
properties: { withName: [
|
|
289
|
+
properties: { withName: ['sale'] },
|
|
255
290
|
},
|
|
256
|
-
})
|
|
291
|
+
})
|
|
257
292
|
```
|
|
258
293
|
|
|
259
294
|
### Patch Changes
|
|
@@ -424,16 +459,16 @@
|
|
|
424
459
|
nitro: {
|
|
425
460
|
storage: {
|
|
426
461
|
redis: {
|
|
427
|
-
driver:
|
|
428
|
-
host:
|
|
462
|
+
driver: 'redis',
|
|
463
|
+
host: 'localhost',
|
|
429
464
|
},
|
|
430
465
|
db: {
|
|
431
|
-
driver:
|
|
432
|
-
base:
|
|
466
|
+
driver: 'fs',
|
|
467
|
+
base: './.data/db',
|
|
433
468
|
},
|
|
434
469
|
},
|
|
435
470
|
},
|
|
436
|
-
})
|
|
471
|
+
})
|
|
437
472
|
```
|
|
438
473
|
|
|
439
474
|
With the introduction of the new approach for configuring storefront storage mounts, the global and shop-specific `storage` option within the `@scayle/storefront-nuxt` runtime configuration has been deprecated.
|
|
@@ -506,9 +541,9 @@
|
|
|
506
541
|
```typescript
|
|
507
542
|
const idp = useIDP({
|
|
508
543
|
authUrlParameters: {
|
|
509
|
-
theme:
|
|
544
|
+
theme: 'dark',
|
|
510
545
|
},
|
|
511
|
-
})
|
|
546
|
+
})
|
|
512
547
|
```
|
|
513
548
|
|
|
514
549
|
### Patch Changes
|
|
@@ -650,11 +685,11 @@
|
|
|
650
685
|
storefront: {
|
|
651
686
|
redirects: {
|
|
652
687
|
enabled: true,
|
|
653
|
-
strategy:
|
|
688
|
+
strategy: 'on-missing',
|
|
654
689
|
},
|
|
655
690
|
},
|
|
656
691
|
},
|
|
657
|
-
})
|
|
692
|
+
})
|
|
658
693
|
```
|
|
659
694
|
|
|
660
695
|
Also, keep in mind that when this option is enabled, the redirect logic will only be executed when the request would otherwise result in a 404. There are three ways in which a 404 can occur.
|
|
@@ -668,7 +703,7 @@
|
|
|
668
703
|
If the request handler returns a `Response` object with a `status` of 404, a 404 response will be returned to the client.
|
|
669
704
|
|
|
670
705
|
```typescript
|
|
671
|
-
return new Response(null, { status: 404 })
|
|
706
|
+
return new Response(null, { status: 404 })
|
|
672
707
|
```
|
|
673
708
|
|
|
674
709
|
3. Thrown H3Error with 404 status
|
|
@@ -676,8 +711,8 @@
|
|
|
676
711
|
If the request handler throws an H3Error with a `statusCode` 404, a 404 response will be returned to the client.
|
|
677
712
|
|
|
678
713
|
```typescript
|
|
679
|
-
import { createError } from
|
|
680
|
-
throw createError({ statusCode: 404 })
|
|
714
|
+
import { createError } from 'h3'
|
|
715
|
+
throw createError({ statusCode: 404 })
|
|
681
716
|
```
|
|
682
717
|
|
|
683
718
|
### Patch Changes
|
|
@@ -1119,28 +1154,28 @@
|
|
|
1119
1154
|
**rpc-methods.ts**
|
|
1120
1155
|
|
|
1121
1156
|
```typescript
|
|
1122
|
-
import type { RpcContext, RpcHandler } from
|
|
1157
|
+
import type { RpcContext, RpcHandler } from '@scayle/storefront-nuxt'
|
|
1123
1158
|
|
|
1124
1159
|
export const foo: RpcHandler<string, number> = function testing(
|
|
1125
1160
|
param: string,
|
|
1126
1161
|
_: RpcContext,
|
|
1127
1162
|
) {
|
|
1128
|
-
return param.length
|
|
1129
|
-
}
|
|
1163
|
+
return param.length
|
|
1164
|
+
}
|
|
1130
1165
|
```
|
|
1131
1166
|
|
|
1132
1167
|
**module.ts**
|
|
1133
1168
|
|
|
1134
1169
|
```typescript
|
|
1135
1170
|
function setup() {
|
|
1136
|
-
const resolver = createResolver(import.meta.url)
|
|
1171
|
+
const resolver = createResolver(import.meta.url)
|
|
1137
1172
|
|
|
1138
|
-
nuxt.hook(
|
|
1173
|
+
nuxt.hook('storefront:custom-rpc:extend', (customRpcImports) => {
|
|
1139
1174
|
customRpcImports.push({
|
|
1140
|
-
source: resolver.resolve(
|
|
1141
|
-
names: [
|
|
1142
|
-
})
|
|
1143
|
-
})
|
|
1175
|
+
source: resolver.resolve('./rpc-methods.ts'),
|
|
1176
|
+
names: ['foo'],
|
|
1177
|
+
})
|
|
1178
|
+
})
|
|
1144
1179
|
}
|
|
1145
1180
|
```
|
|
1146
1181
|
|
|
@@ -1362,23 +1397,23 @@
|
|
|
1362
1397
|
storefront: {
|
|
1363
1398
|
// ...
|
|
1364
1399
|
redis: {
|
|
1365
|
-
host:
|
|
1400
|
+
host: 'localhost',
|
|
1366
1401
|
port: 6379,
|
|
1367
|
-
prefix:
|
|
1368
|
-
user:
|
|
1369
|
-
password:
|
|
1402
|
+
prefix: '',
|
|
1403
|
+
user: '',
|
|
1404
|
+
password: '',
|
|
1370
1405
|
sslTransit: false,
|
|
1371
1406
|
},
|
|
1372
1407
|
// ...
|
|
1373
1408
|
session: {
|
|
1374
1409
|
// ...
|
|
1375
|
-
provider:
|
|
1410
|
+
provider: 'redis',
|
|
1376
1411
|
},
|
|
1377
1412
|
},
|
|
1378
1413
|
// ...
|
|
1379
1414
|
},
|
|
1380
1415
|
// ...
|
|
1381
|
-
})
|
|
1416
|
+
})
|
|
1382
1417
|
```
|
|
1383
1418
|
|
|
1384
1419
|
- _Current Unified Storage Approach (`nuxt.config.ts`):_
|
|
@@ -1392,13 +1427,13 @@
|
|
|
1392
1427
|
// ...
|
|
1393
1428
|
storage: {
|
|
1394
1429
|
cache: {
|
|
1395
|
-
driver:
|
|
1396
|
-
host:
|
|
1430
|
+
driver: 'redis',
|
|
1431
|
+
host: 'localhost',
|
|
1397
1432
|
port: 6379,
|
|
1398
1433
|
},
|
|
1399
1434
|
session: {
|
|
1400
|
-
driver:
|
|
1401
|
-
host:
|
|
1435
|
+
driver: 'redis',
|
|
1436
|
+
host: 'localhost',
|
|
1402
1437
|
port: 6379,
|
|
1403
1438
|
},
|
|
1404
1439
|
// ...
|
|
@@ -1408,7 +1443,7 @@
|
|
|
1408
1443
|
// ...
|
|
1409
1444
|
},
|
|
1410
1445
|
// ...
|
|
1411
|
-
})
|
|
1446
|
+
})
|
|
1412
1447
|
```
|
|
1413
1448
|
|
|
1414
1449
|
- **\[💥 BREAKING\]** The composable `useSearch` has been replaced by `useStorefrontSearch`, consolidating and transitioning to SCAYLE Search v2.
|
|
@@ -1475,9 +1510,9 @@
|
|
|
1475
1510
|
|
|
1476
1511
|
```ts
|
|
1477
1512
|
const { activeFilters, applyFilters, resetFilterUrl, productConditions } =
|
|
1478
|
-
useQueryFilterState()
|
|
1513
|
+
useQueryFilterState()
|
|
1479
1514
|
|
|
1480
|
-
applyFilters({ brand: 23, sale: true, maxPrice: 100, minPrice: 0 })
|
|
1515
|
+
applyFilters({ brand: 23, sale: true, maxPrice: 100, minPrice: 0 })
|
|
1481
1516
|
```
|
|
1482
1517
|
|
|
1483
1518
|
- _Current Usage of `useFilter` and `useAppliedFilters`:_
|
|
@@ -1490,20 +1525,20 @@
|
|
|
1490
1525
|
resetFilters,
|
|
1491
1526
|
resetPriceFilter,
|
|
1492
1527
|
resetFilter,
|
|
1493
|
-
} = useFilter()
|
|
1528
|
+
} = useFilter()
|
|
1494
1529
|
|
|
1495
|
-
applyPriceFilter([0, 100])
|
|
1496
|
-
applyBooleanFilter(
|
|
1497
|
-
applyAttributeFilter(
|
|
1530
|
+
applyPriceFilter([0, 100])
|
|
1531
|
+
applyBooleanFilter('sale', true)
|
|
1532
|
+
applyAttributeFilter('brand', 23)
|
|
1498
1533
|
|
|
1499
|
-
const route = useRoute()
|
|
1534
|
+
const route = useRoute()
|
|
1500
1535
|
const {
|
|
1501
1536
|
appliedFilter,
|
|
1502
1537
|
appliedFiltersCount,
|
|
1503
1538
|
appliedAttributeValues,
|
|
1504
1539
|
appliedBooleanValues,
|
|
1505
1540
|
areFiltersApplied,
|
|
1506
|
-
} = useAppliedFilters(route)
|
|
1541
|
+
} = useAppliedFilters(route)
|
|
1507
1542
|
```
|
|
1508
1543
|
|
|
1509
1544
|
- **\[💥 BREAKING\]** The `getBadgeLabel` helper function has been removed, giving you more control over badge label display.
|
|
@@ -1513,43 +1548,43 @@
|
|
|
1513
1548
|
|
|
1514
1549
|
```ts
|
|
1515
1550
|
const BadgeLabel = {
|
|
1516
|
-
NEW:
|
|
1517
|
-
SOLD_OUT:
|
|
1518
|
-
ONLINE_EXCLUSIVE:
|
|
1519
|
-
SUSTAINABLE:
|
|
1520
|
-
PREMIUM:
|
|
1521
|
-
DEFAULT:
|
|
1522
|
-
} as const
|
|
1551
|
+
NEW: 'new',
|
|
1552
|
+
SOLD_OUT: 'sold_out',
|
|
1553
|
+
ONLINE_EXCLUSIVE: 'online_exclusive',
|
|
1554
|
+
SUSTAINABLE: 'sustainable',
|
|
1555
|
+
PREMIUM: 'premium',
|
|
1556
|
+
DEFAULT: '',
|
|
1557
|
+
} as const
|
|
1523
1558
|
|
|
1524
1559
|
type BadgeLabelParamsKeys =
|
|
1525
|
-
|
|
|
1526
|
-
|
|
|
1527
|
-
|
|
|
1528
|
-
|
|
|
1529
|
-
|
|
|
1530
|
-
type BadgeLabelParams = Partial<Record<BadgeLabelParamsKeys, boolean
|
|
1560
|
+
| 'isNew'
|
|
1561
|
+
| 'isSoldOut'
|
|
1562
|
+
| 'isOnlineOnly'
|
|
1563
|
+
| 'isSustainable'
|
|
1564
|
+
| 'isPremium'
|
|
1565
|
+
type BadgeLabelParams = Partial<Record<BadgeLabelParamsKeys, boolean>>
|
|
1531
1566
|
|
|
1532
1567
|
const getBadgeLabel = (params: BadgeLabelParams = {}): string => {
|
|
1533
1568
|
if (!params) {
|
|
1534
|
-
return BadgeLabel.DEFAULT
|
|
1569
|
+
return BadgeLabel.DEFAULT
|
|
1535
1570
|
}
|
|
1536
1571
|
const { isNew, isSoldOut, isOnlineOnly, isSustainable, isPremium } =
|
|
1537
|
-
params
|
|
1572
|
+
params
|
|
1538
1573
|
|
|
1539
1574
|
if (isNew) {
|
|
1540
|
-
return BadgeLabel.NEW
|
|
1575
|
+
return BadgeLabel.NEW
|
|
1541
1576
|
} else if (isSoldOut) {
|
|
1542
|
-
return BadgeLabel.SOLD_OUT
|
|
1577
|
+
return BadgeLabel.SOLD_OUT
|
|
1543
1578
|
} else if (isOnlineOnly) {
|
|
1544
|
-
return BadgeLabel.ONLINE_EXCLUSIVE
|
|
1579
|
+
return BadgeLabel.ONLINE_EXCLUSIVE
|
|
1545
1580
|
} else if (isSustainable) {
|
|
1546
|
-
return BadgeLabel.SUSTAINABLE
|
|
1581
|
+
return BadgeLabel.SUSTAINABLE
|
|
1547
1582
|
} else if (isPremium) {
|
|
1548
|
-
return BadgeLabel.PREMIUM
|
|
1583
|
+
return BadgeLabel.PREMIUM
|
|
1549
1584
|
} else {
|
|
1550
|
-
return BadgeLabel.DEFAULT
|
|
1585
|
+
return BadgeLabel.DEFAULT
|
|
1551
1586
|
}
|
|
1552
|
-
}
|
|
1587
|
+
}
|
|
1553
1588
|
```
|
|
1554
1589
|
|
|
1555
1590
|
- **\[💥 BREAKING\]** The `store` option in the module configuration has been removed. `œscayle/storefront-nuxt@7.84.0` introduced the `shops` option as a replacement, but maintained backward compatibility with the `store` option. Going forward, configuring shops must be done using the `shops` keyword.
|
|
@@ -1573,7 +1608,7 @@
|
|
|
1573
1608
|
// ...
|
|
1574
1609
|
},
|
|
1575
1610
|
// ...
|
|
1576
|
-
})
|
|
1611
|
+
})
|
|
1577
1612
|
```
|
|
1578
1613
|
|
|
1579
1614
|
- _Previous Environment Variables for Store Configuration:_
|
|
@@ -1602,7 +1637,7 @@
|
|
|
1602
1637
|
// ...
|
|
1603
1638
|
},
|
|
1604
1639
|
// ...
|
|
1605
|
-
})
|
|
1640
|
+
})
|
|
1606
1641
|
```
|
|
1607
1642
|
|
|
1608
1643
|
- _Current Environment Variables for Shops Configuration:_
|
|
@@ -1622,8 +1657,8 @@
|
|
|
1622
1657
|
```ts
|
|
1623
1658
|
useProduct({
|
|
1624
1659
|
// ...
|
|
1625
|
-
key:
|
|
1626
|
-
})
|
|
1660
|
+
key: 'productKey',
|
|
1661
|
+
})
|
|
1627
1662
|
```
|
|
1628
1663
|
|
|
1629
1664
|
- _Current `key` as dedicated composables argument:_
|
|
@@ -1633,8 +1668,8 @@
|
|
|
1633
1668
|
{
|
|
1634
1669
|
// ...
|
|
1635
1670
|
},
|
|
1636
|
-
|
|
1637
|
-
)
|
|
1671
|
+
'productKey',
|
|
1672
|
+
)
|
|
1638
1673
|
```
|
|
1639
1674
|
|
|
1640
1675
|
- **\[💥 BREAKING\]** Introducing a new feature flag `storefront.legacy.enableSessionMigration` to control the automatic migration of legacy session data, set to `false` by default. Starting with `@scayle/storefront-nuxt@7.68.0` Storefront uses unique session cookie names for each shop, simplifying implementation and enhancing stability.
|
|
@@ -1651,27 +1686,27 @@
|
|
|
1651
1686
|
- _Previous Usage of `handleIDPLoginCallback`:_
|
|
1652
1687
|
|
|
1653
1688
|
```ts
|
|
1654
|
-
const { handleIDPLoginCallback } = await useIDP()
|
|
1689
|
+
const { handleIDPLoginCallback } = await useIDP()
|
|
1655
1690
|
|
|
1656
1691
|
watch(
|
|
1657
1692
|
() => route.query,
|
|
1658
1693
|
async (query) => {
|
|
1659
1694
|
if (query.code && isString(query.code)) {
|
|
1660
|
-
await handleIDPLoginCallback(query.code)
|
|
1695
|
+
await handleIDPLoginCallback(query.code)
|
|
1661
1696
|
}
|
|
1662
1697
|
},
|
|
1663
1698
|
{ immediate: true },
|
|
1664
|
-
)
|
|
1699
|
+
)
|
|
1665
1700
|
```
|
|
1666
1701
|
|
|
1667
1702
|
- _Current Usage of `loginIDP`:_
|
|
1668
1703
|
|
|
1669
1704
|
```ts
|
|
1670
|
-
const { loginIDP } = useAuthentication(
|
|
1705
|
+
const { loginIDP } = useAuthentication('login')
|
|
1671
1706
|
|
|
1672
1707
|
onMounted(async () => {
|
|
1673
|
-
await loginIDP(props.code)
|
|
1674
|
-
})
|
|
1708
|
+
await loginIDP(props.code)
|
|
1709
|
+
})
|
|
1675
1710
|
```
|
|
1676
1711
|
|
|
1677
1712
|
- **\[🧹 NON-BREAKING\]** Addressed various type resolution errors that were present when using the `@scayle/storefront-nuxt` package with different Node.js versions and module systems. These errors manifested as internal resolution errors or ESM dynamic import only warnings. With this fix, the package now more consistently resolves types correctly across Node.js 16 (CJS and ESM), and bundlers, ensuring a smoother developer experience.
|
|
@@ -1681,17 +1716,17 @@
|
|
|
1681
1716
|
- _Previous `useRpc` with `autoFetch`:_
|
|
1682
1717
|
|
|
1683
1718
|
```ts
|
|
1684
|
-
useRpc(
|
|
1719
|
+
useRpc('rpcMethod', key, params, { autoFetch: true })
|
|
1685
1720
|
|
|
1686
|
-
useUser({ autoFetch: true })
|
|
1721
|
+
useUser({ autoFetch: true })
|
|
1687
1722
|
```
|
|
1688
1723
|
|
|
1689
1724
|
- _Current `useRpc` with `immediate`:_
|
|
1690
1725
|
|
|
1691
1726
|
```ts
|
|
1692
|
-
useRpc(
|
|
1727
|
+
useRpc('rpcMethod', key, params, { immediate: true })
|
|
1693
1728
|
|
|
1694
|
-
useUser({ immediate: true })
|
|
1729
|
+
useUser({ immediate: true })
|
|
1695
1730
|
```
|
|
1696
1731
|
|
|
1697
1732
|
- **\[💥 BREAKING\]** The attribute `isCmsPreview` has been removed from `RpcContext`.
|
|
@@ -1711,18 +1746,18 @@
|
|
|
1711
1746
|
getSearchSuggestions,
|
|
1712
1747
|
fetching,
|
|
1713
1748
|
...searchData
|
|
1714
|
-
} = useStorefrontSearch(searchQuery, { key })
|
|
1749
|
+
} = useStorefrontSearch(searchQuery, { key })
|
|
1715
1750
|
|
|
1716
|
-
fetching.value
|
|
1751
|
+
fetching.value // true or false
|
|
1717
1752
|
```
|
|
1718
1753
|
|
|
1719
1754
|
- _Current `useStorefrontSearch` returning `status`:_
|
|
1720
1755
|
|
|
1721
1756
|
```ts
|
|
1722
1757
|
const { data, resolveSearch, getSearchSuggestions, status, ...searchData } =
|
|
1723
|
-
useStorefrontSearch(searchQuery, {}, key)
|
|
1758
|
+
useStorefrontSearch(searchQuery, {}, key)
|
|
1724
1759
|
|
|
1725
|
-
status.value
|
|
1760
|
+
status.value // 'idle', 'pending', 'error' or 'success'
|
|
1726
1761
|
```
|
|
1727
1762
|
|
|
1728
1763
|
- **\[💥 BREAKING\]** We've simplified composable caching and clarified the control you have over shared state behavior. The configuration option `disableDefaultGetCachedDataOverride` has been replaced with `legacy.enableDefaultGetCachedDataOverride`, and its logic has been reversed. Now, when `legacy.enableDefaultGetCachedDataOverride` is not set or set to `false`, the default behavior maintains the shared state functionality of `useRpc`, where multiple calls with the same key use the same cached data. Setting the option to `true` bypasses this shared caching, providing data isolation between calls. To maintain your existing caching behavior, simply change the value of `disableDefaultGetCachedDataOverride` to its opposite in your `nuxt.config.ts` file.
|
|
@@ -1747,7 +1782,7 @@
|
|
|
1747
1782
|
// ...
|
|
1748
1783
|
},
|
|
1749
1784
|
// ...
|
|
1750
|
-
})
|
|
1785
|
+
})
|
|
1751
1786
|
```
|
|
1752
1787
|
|
|
1753
1788
|
- _Current `enableDefaultGetCachedDataOverride`in `nuxt.config.ts`:_
|
|
@@ -1772,7 +1807,7 @@
|
|
|
1772
1807
|
// ...
|
|
1773
1808
|
},
|
|
1774
1809
|
// ...
|
|
1775
|
-
})
|
|
1810
|
+
})
|
|
1776
1811
|
```
|
|
1777
1812
|
|
|
1778
1813
|
- **\[💥 BREAKING\]** The `useRpc` composable has been updated to provide a more modern and robust data fetching experience, aligning its interface with the current and underlying [Nuxt 3 `useAsyncData`.](https://nuxt.com/docs/api/composables/use-async-data#return-values).
|
|
@@ -1794,7 +1829,7 @@
|
|
|
1794
1829
|
function myCustomRpc() {
|
|
1795
1830
|
// ...
|
|
1796
1831
|
|
|
1797
|
-
throw new BaseError(404)
|
|
1832
|
+
throw new BaseError(404)
|
|
1798
1833
|
}
|
|
1799
1834
|
```
|
|
1800
1835
|
|
|
@@ -1804,7 +1839,7 @@
|
|
|
1804
1839
|
function myCustomRpc() {
|
|
1805
1840
|
// ...
|
|
1806
1841
|
|
|
1807
|
-
return new Response(null, { status: 404 })
|
|
1842
|
+
return new Response(null, { status: 404 })
|
|
1808
1843
|
}
|
|
1809
1844
|
```
|
|
1810
1845
|
|
package/dist/module.json
CHANGED
package/dist/module.mjs
CHANGED
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@scayle/storefront-nuxt",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "8.
|
|
4
|
+
"version": "8.33.0",
|
|
5
5
|
"description": "Nuxt integration for the SCAYLE Commerce Engine and Storefront API",
|
|
6
6
|
"author": "SCAYLE Commerce Engine",
|
|
7
7
|
"license": "MIT",
|
|
@@ -61,13 +61,21 @@
|
|
|
61
61
|
"engines": {
|
|
62
62
|
"node": ">= 20.7.0"
|
|
63
63
|
},
|
|
64
|
+
"peerDependencies": {
|
|
65
|
+
"@nuxt/kit": ">=3.12.2",
|
|
66
|
+
"@scayle/storefront-api": "^18.1.0",
|
|
67
|
+
"fishery": "^2.2.2",
|
|
68
|
+
"h3": "^1.10.0",
|
|
69
|
+
"nitropack": "^2.9.7",
|
|
70
|
+
"nuxt": ">=3.10.0",
|
|
71
|
+
"unstorage": "^1.10.1",
|
|
72
|
+
"vue": "^3.4.0"
|
|
73
|
+
},
|
|
64
74
|
"dependencies": {
|
|
65
75
|
"@opentelemetry/api": "^1.9.0",
|
|
66
76
|
"@scayle/h3-session": "0.6.1",
|
|
67
|
-
"@scayle/storefront-core": "8.32.0",
|
|
68
|
-
"@scayle/unstorage-compression-driver": "^1.0.0",
|
|
69
77
|
"@vercel/nft": "0.29.4",
|
|
70
|
-
"@vueuse/core": "13.
|
|
78
|
+
"@vueuse/core": "13.5.0",
|
|
71
79
|
"consola": "^3.2.3",
|
|
72
80
|
"core-js": "^3.37.1",
|
|
73
81
|
"defu": "^6.1.4",
|
|
@@ -81,24 +89,23 @@
|
|
|
81
89
|
"unstorage": "^1.10.2",
|
|
82
90
|
"utility-types": "^3.11.0",
|
|
83
91
|
"vue-router": "^4.4.0",
|
|
84
|
-
"zod": "^3.23.8"
|
|
92
|
+
"zod": "^3.23.8",
|
|
93
|
+
"@scayle/storefront-core": "8.33.0",
|
|
94
|
+
"@scayle/unstorage-compression-driver": "1.0.0"
|
|
85
95
|
},
|
|
86
96
|
"devDependencies": {
|
|
87
97
|
"@arethetypeswrong/cli": "0.18.2",
|
|
88
98
|
"@eslint/eslintrc": "3.3.1",
|
|
89
|
-
"@nuxt/eslint": "1.
|
|
99
|
+
"@nuxt/eslint": "1.5.2",
|
|
90
100
|
"@nuxt/kit": "3.16.2",
|
|
91
101
|
"@nuxt/module-builder": "1.0.1",
|
|
92
102
|
"@nuxt/schema": "3.16.2",
|
|
93
103
|
"@nuxt/test-utils": "3.19.2",
|
|
94
|
-
"@
|
|
95
|
-
"@scayle/eslint-plugin-vue-composable": "0.2.1",
|
|
96
|
-
"@scayle/unstorage-scayle-kv-driver": "1.0.2",
|
|
97
|
-
"@types/node": "22.15.34",
|
|
104
|
+
"@types/node": "22.16.0",
|
|
98
105
|
"@vitest/coverage-v8": "3.2.4",
|
|
99
106
|
"dprint": "0.50.1",
|
|
100
107
|
"eslint-formatter-gitlab": "6.0.1",
|
|
101
|
-
"eslint": "9.30.
|
|
108
|
+
"eslint": "9.30.1",
|
|
102
109
|
"fishery": "2.3.1",
|
|
103
110
|
"h3": "1.15.3",
|
|
104
111
|
"nitro-test-utils": "0.9.2",
|
|
@@ -109,17 +116,10 @@
|
|
|
109
116
|
"typescript": "5.8.3",
|
|
110
117
|
"unbuild": "3.5.0",
|
|
111
118
|
"vitest": "3.2.4",
|
|
112
|
-
"vue-tsc": "
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
"@
|
|
116
|
-
"@scayle/storefront-api": "^18.1.0",
|
|
117
|
-
"fishery": "^2.2.2",
|
|
118
|
-
"h3": "^1.10.0",
|
|
119
|
-
"nitropack": "^2.9.7",
|
|
120
|
-
"nuxt": ">=3.10.0",
|
|
121
|
-
"unstorage": "^1.10.1",
|
|
122
|
-
"vue": "^3.4.0"
|
|
119
|
+
"vue-tsc": "3.0.1",
|
|
120
|
+
"@scayle/eslint-config-storefront": "4.5.12",
|
|
121
|
+
"@scayle/eslint-plugin-vue-composable": "0.2.1",
|
|
122
|
+
"@scayle/unstorage-scayle-kv-driver": "1.0.2"
|
|
123
123
|
},
|
|
124
124
|
"volta": {
|
|
125
125
|
"node": "22.17.0"
|