@scayle/storefront-nuxt 8.30.3 → 8.32.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 +146 -101
- package/dist/module.json +1 -1
- package/dist/module.mjs +1 -1
- package/dist/runtime/plugin/log.client.d.ts +2 -2
- package/dist/runtime/plugin/log.server.d.ts +2 -2
- package/dist/runtime/plugin/shop.d.ts +2 -2
- package/dist/test/factories.mjs +1 -0
- package/package.json +28 -28
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,50 @@
|
|
|
1
1
|
# @scayle/storefront-nuxt
|
|
2
2
|
|
|
3
|
+
## 8.32.0
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
**Dependencies**
|
|
8
|
+
|
|
9
|
+
**@scayle/storefront-core v8.32.0**
|
|
10
|
+
|
|
11
|
+
- Minor
|
|
12
|
+
- Added `minReduction` and `maxReduction` filter parameters to the `FetchProductsCountParams.where` type and updated the `getProductsCount` RPC method to accept and handle these new reduction-based filtering conditions.
|
|
13
|
+
- Patch
|
|
14
|
+
- Fixed the `getFilters` RPC method to properly apply `minReduction` and `maxReduction` filter parameters when fetching product counts.
|
|
15
|
+
|
|
16
|
+
## 8.31.0
|
|
17
|
+
|
|
18
|
+
### Patch Changes
|
|
19
|
+
|
|
20
|
+
**Dependencies**
|
|
21
|
+
|
|
22
|
+
**@scayle/storefront-core v8.31.0**
|
|
23
|
+
|
|
24
|
+
- Minor
|
|
25
|
+
|
|
26
|
+
- 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
|
+
|
|
28
|
+
```ts
|
|
29
|
+
const { data } = useRpc("getFilters", "getFiltersKey", () => ({
|
|
30
|
+
where: {
|
|
31
|
+
minReduction: 10,
|
|
32
|
+
maxReduction: 20,
|
|
33
|
+
},
|
|
34
|
+
}));
|
|
35
|
+
|
|
36
|
+
const { data } = useRpc(
|
|
37
|
+
"getProductsByCategory",
|
|
38
|
+
"getProductsByCategoryKey",
|
|
39
|
+
() => ({
|
|
40
|
+
where: {
|
|
41
|
+
minReduction: 10,
|
|
42
|
+
maxReduction: 20,
|
|
43
|
+
},
|
|
44
|
+
}),
|
|
45
|
+
);
|
|
46
|
+
```
|
|
47
|
+
|
|
3
48
|
## 8.30.3
|
|
4
49
|
|
|
5
50
|
### Patch Changes
|
|
@@ -49,28 +94,28 @@
|
|
|
49
94
|
|
|
50
95
|
```ts
|
|
51
96
|
export const existingHandlerWithoutParams = async (_context: RpcContext) => {
|
|
52
|
-
return
|
|
53
|
-
}
|
|
97
|
+
return "existing handler";
|
|
98
|
+
};
|
|
54
99
|
|
|
55
100
|
export const existingHandlerWithParams = async (
|
|
56
101
|
{ name }: { name: string },
|
|
57
102
|
_context: RpcContext,
|
|
58
103
|
) => {
|
|
59
|
-
return name
|
|
60
|
-
}
|
|
104
|
+
return name;
|
|
105
|
+
};
|
|
61
106
|
|
|
62
107
|
// will become
|
|
63
108
|
|
|
64
109
|
export const existingHandlerWithoutParams = defineRpcHandler(
|
|
65
110
|
async (_context: RpcContext) => {
|
|
66
|
-
return
|
|
111
|
+
return "existing handler";
|
|
67
112
|
},
|
|
68
|
-
)
|
|
113
|
+
);
|
|
69
114
|
export const existingHandlerWithParams = defineRpcHandler(
|
|
70
115
|
async ({ name }: { name: string }, _context: RpcContext) => {
|
|
71
|
-
return name
|
|
116
|
+
return name;
|
|
72
117
|
},
|
|
73
|
-
)
|
|
118
|
+
);
|
|
74
119
|
```
|
|
75
120
|
|
|
76
121
|
- Patch
|
|
@@ -92,15 +137,15 @@
|
|
|
92
137
|
- 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.
|
|
93
138
|
|
|
94
139
|
```ts
|
|
95
|
-
import { rpcMethods } from
|
|
140
|
+
import { rpcMethods } from "@scayle/storefront-core";
|
|
96
141
|
|
|
97
|
-
rpcMethods.getCategoryTree({ hideEmptyCategories: true }, rpcContext)
|
|
142
|
+
rpcMethods.getCategoryTree({ hideEmptyCategories: true }, rpcContext);
|
|
98
143
|
```
|
|
99
144
|
|
|
100
145
|
or
|
|
101
146
|
|
|
102
147
|
```ts
|
|
103
|
-
import { useCategoryTree } from
|
|
148
|
+
import { useCategoryTree } from "#storefront/composables";
|
|
104
149
|
|
|
105
150
|
const { data: rootCategories, status } = useCategoryTree(
|
|
106
151
|
{
|
|
@@ -108,8 +153,8 @@
|
|
|
108
153
|
hideEmptyCategories: true,
|
|
109
154
|
},
|
|
110
155
|
},
|
|
111
|
-
|
|
112
|
-
)
|
|
156
|
+
"category-navigation-tree",
|
|
157
|
+
);
|
|
113
158
|
```
|
|
114
159
|
|
|
115
160
|
## 8.28.7
|
|
@@ -206,9 +251,9 @@
|
|
|
206
251
|
params: {
|
|
207
252
|
children: 10,
|
|
208
253
|
includeHidden: true,
|
|
209
|
-
properties: { withName: [
|
|
254
|
+
properties: { withName: ["sale"] },
|
|
210
255
|
},
|
|
211
|
-
})
|
|
256
|
+
});
|
|
212
257
|
```
|
|
213
258
|
|
|
214
259
|
### Patch Changes
|
|
@@ -379,16 +424,16 @@
|
|
|
379
424
|
nitro: {
|
|
380
425
|
storage: {
|
|
381
426
|
redis: {
|
|
382
|
-
driver:
|
|
383
|
-
host:
|
|
427
|
+
driver: "redis",
|
|
428
|
+
host: "localhost",
|
|
384
429
|
},
|
|
385
430
|
db: {
|
|
386
|
-
driver:
|
|
387
|
-
base:
|
|
431
|
+
driver: "fs",
|
|
432
|
+
base: "./.data/db",
|
|
388
433
|
},
|
|
389
434
|
},
|
|
390
435
|
},
|
|
391
|
-
})
|
|
436
|
+
});
|
|
392
437
|
```
|
|
393
438
|
|
|
394
439
|
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.
|
|
@@ -461,9 +506,9 @@
|
|
|
461
506
|
```typescript
|
|
462
507
|
const idp = useIDP({
|
|
463
508
|
authUrlParameters: {
|
|
464
|
-
theme:
|
|
509
|
+
theme: "dark",
|
|
465
510
|
},
|
|
466
|
-
})
|
|
511
|
+
});
|
|
467
512
|
```
|
|
468
513
|
|
|
469
514
|
### Patch Changes
|
|
@@ -605,11 +650,11 @@
|
|
|
605
650
|
storefront: {
|
|
606
651
|
redirects: {
|
|
607
652
|
enabled: true,
|
|
608
|
-
strategy:
|
|
653
|
+
strategy: "on-missing",
|
|
609
654
|
},
|
|
610
655
|
},
|
|
611
656
|
},
|
|
612
|
-
})
|
|
657
|
+
});
|
|
613
658
|
```
|
|
614
659
|
|
|
615
660
|
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.
|
|
@@ -623,7 +668,7 @@
|
|
|
623
668
|
If the request handler returns a `Response` object with a `status` of 404, a 404 response will be returned to the client.
|
|
624
669
|
|
|
625
670
|
```typescript
|
|
626
|
-
return new Response(null, { status: 404 })
|
|
671
|
+
return new Response(null, { status: 404 });
|
|
627
672
|
```
|
|
628
673
|
|
|
629
674
|
3. Thrown H3Error with 404 status
|
|
@@ -631,8 +676,8 @@
|
|
|
631
676
|
If the request handler throws an H3Error with a `statusCode` 404, a 404 response will be returned to the client.
|
|
632
677
|
|
|
633
678
|
```typescript
|
|
634
|
-
import { createError } from
|
|
635
|
-
throw createError({ statusCode: 404 })
|
|
679
|
+
import { createError } from "h3";
|
|
680
|
+
throw createError({ statusCode: 404 });
|
|
636
681
|
```
|
|
637
682
|
|
|
638
683
|
### Patch Changes
|
|
@@ -1074,28 +1119,28 @@
|
|
|
1074
1119
|
**rpc-methods.ts**
|
|
1075
1120
|
|
|
1076
1121
|
```typescript
|
|
1077
|
-
import type { RpcContext, RpcHandler } from
|
|
1122
|
+
import type { RpcContext, RpcHandler } from "@scayle/storefront-nuxt";
|
|
1078
1123
|
|
|
1079
1124
|
export const foo: RpcHandler<string, number> = function testing(
|
|
1080
1125
|
param: string,
|
|
1081
1126
|
_: RpcContext,
|
|
1082
1127
|
) {
|
|
1083
|
-
return param.length
|
|
1084
|
-
}
|
|
1128
|
+
return param.length;
|
|
1129
|
+
};
|
|
1085
1130
|
```
|
|
1086
1131
|
|
|
1087
1132
|
**module.ts**
|
|
1088
1133
|
|
|
1089
1134
|
```typescript
|
|
1090
1135
|
function setup() {
|
|
1091
|
-
const resolver = createResolver(import.meta.url)
|
|
1136
|
+
const resolver = createResolver(import.meta.url);
|
|
1092
1137
|
|
|
1093
|
-
nuxt.hook(
|
|
1138
|
+
nuxt.hook("storefront:custom-rpc:extend", (customRpcImports) => {
|
|
1094
1139
|
customRpcImports.push({
|
|
1095
|
-
source: resolver.resolve(
|
|
1096
|
-
names: [
|
|
1097
|
-
})
|
|
1098
|
-
})
|
|
1140
|
+
source: resolver.resolve("./rpc-methods.ts"),
|
|
1141
|
+
names: ["foo"],
|
|
1142
|
+
});
|
|
1143
|
+
});
|
|
1099
1144
|
}
|
|
1100
1145
|
```
|
|
1101
1146
|
|
|
@@ -1317,23 +1362,23 @@
|
|
|
1317
1362
|
storefront: {
|
|
1318
1363
|
// ...
|
|
1319
1364
|
redis: {
|
|
1320
|
-
host:
|
|
1365
|
+
host: "localhost",
|
|
1321
1366
|
port: 6379,
|
|
1322
|
-
prefix:
|
|
1323
|
-
user:
|
|
1324
|
-
password:
|
|
1367
|
+
prefix: "",
|
|
1368
|
+
user: "",
|
|
1369
|
+
password: "",
|
|
1325
1370
|
sslTransit: false,
|
|
1326
1371
|
},
|
|
1327
1372
|
// ...
|
|
1328
1373
|
session: {
|
|
1329
1374
|
// ...
|
|
1330
|
-
provider:
|
|
1375
|
+
provider: "redis",
|
|
1331
1376
|
},
|
|
1332
1377
|
},
|
|
1333
1378
|
// ...
|
|
1334
1379
|
},
|
|
1335
1380
|
// ...
|
|
1336
|
-
})
|
|
1381
|
+
});
|
|
1337
1382
|
```
|
|
1338
1383
|
|
|
1339
1384
|
- _Current Unified Storage Approach (`nuxt.config.ts`):_
|
|
@@ -1347,13 +1392,13 @@
|
|
|
1347
1392
|
// ...
|
|
1348
1393
|
storage: {
|
|
1349
1394
|
cache: {
|
|
1350
|
-
driver:
|
|
1351
|
-
host:
|
|
1395
|
+
driver: "redis",
|
|
1396
|
+
host: "localhost",
|
|
1352
1397
|
port: 6379,
|
|
1353
1398
|
},
|
|
1354
1399
|
session: {
|
|
1355
|
-
driver:
|
|
1356
|
-
host:
|
|
1400
|
+
driver: "redis",
|
|
1401
|
+
host: "localhost",
|
|
1357
1402
|
port: 6379,
|
|
1358
1403
|
},
|
|
1359
1404
|
// ...
|
|
@@ -1363,7 +1408,7 @@
|
|
|
1363
1408
|
// ...
|
|
1364
1409
|
},
|
|
1365
1410
|
// ...
|
|
1366
|
-
})
|
|
1411
|
+
});
|
|
1367
1412
|
```
|
|
1368
1413
|
|
|
1369
1414
|
- **\[💥 BREAKING\]** The composable `useSearch` has been replaced by `useStorefrontSearch`, consolidating and transitioning to SCAYLE Search v2.
|
|
@@ -1430,9 +1475,9 @@
|
|
|
1430
1475
|
|
|
1431
1476
|
```ts
|
|
1432
1477
|
const { activeFilters, applyFilters, resetFilterUrl, productConditions } =
|
|
1433
|
-
useQueryFilterState()
|
|
1478
|
+
useQueryFilterState();
|
|
1434
1479
|
|
|
1435
|
-
applyFilters({ brand: 23, sale: true, maxPrice: 100, minPrice: 0 })
|
|
1480
|
+
applyFilters({ brand: 23, sale: true, maxPrice: 100, minPrice: 0 });
|
|
1436
1481
|
```
|
|
1437
1482
|
|
|
1438
1483
|
- _Current Usage of `useFilter` and `useAppliedFilters`:_
|
|
@@ -1445,20 +1490,20 @@
|
|
|
1445
1490
|
resetFilters,
|
|
1446
1491
|
resetPriceFilter,
|
|
1447
1492
|
resetFilter,
|
|
1448
|
-
} = useFilter()
|
|
1493
|
+
} = useFilter();
|
|
1449
1494
|
|
|
1450
|
-
applyPriceFilter([0, 100])
|
|
1451
|
-
applyBooleanFilter(
|
|
1452
|
-
applyAttributeFilter(
|
|
1495
|
+
applyPriceFilter([0, 100]);
|
|
1496
|
+
applyBooleanFilter("sale", true);
|
|
1497
|
+
applyAttributeFilter("brand", 23);
|
|
1453
1498
|
|
|
1454
|
-
const route = useRoute()
|
|
1499
|
+
const route = useRoute();
|
|
1455
1500
|
const {
|
|
1456
1501
|
appliedFilter,
|
|
1457
1502
|
appliedFiltersCount,
|
|
1458
1503
|
appliedAttributeValues,
|
|
1459
1504
|
appliedBooleanValues,
|
|
1460
1505
|
areFiltersApplied,
|
|
1461
|
-
} = useAppliedFilters(route)
|
|
1506
|
+
} = useAppliedFilters(route);
|
|
1462
1507
|
```
|
|
1463
1508
|
|
|
1464
1509
|
- **\[💥 BREAKING\]** The `getBadgeLabel` helper function has been removed, giving you more control over badge label display.
|
|
@@ -1468,43 +1513,43 @@
|
|
|
1468
1513
|
|
|
1469
1514
|
```ts
|
|
1470
1515
|
const BadgeLabel = {
|
|
1471
|
-
NEW:
|
|
1472
|
-
SOLD_OUT:
|
|
1473
|
-
ONLINE_EXCLUSIVE:
|
|
1474
|
-
SUSTAINABLE:
|
|
1475
|
-
PREMIUM:
|
|
1476
|
-
DEFAULT:
|
|
1477
|
-
} as const
|
|
1516
|
+
NEW: "new",
|
|
1517
|
+
SOLD_OUT: "sold_out",
|
|
1518
|
+
ONLINE_EXCLUSIVE: "online_exclusive",
|
|
1519
|
+
SUSTAINABLE: "sustainable",
|
|
1520
|
+
PREMIUM: "premium",
|
|
1521
|
+
DEFAULT: "",
|
|
1522
|
+
} as const;
|
|
1478
1523
|
|
|
1479
1524
|
type BadgeLabelParamsKeys =
|
|
1480
|
-
|
|
|
1481
|
-
|
|
|
1482
|
-
|
|
|
1483
|
-
|
|
|
1484
|
-
|
|
|
1485
|
-
type BadgeLabelParams = Partial<Record<BadgeLabelParamsKeys, boolean
|
|
1525
|
+
| "isNew"
|
|
1526
|
+
| "isSoldOut"
|
|
1527
|
+
| "isOnlineOnly"
|
|
1528
|
+
| "isSustainable"
|
|
1529
|
+
| "isPremium";
|
|
1530
|
+
type BadgeLabelParams = Partial<Record<BadgeLabelParamsKeys, boolean>>;
|
|
1486
1531
|
|
|
1487
1532
|
const getBadgeLabel = (params: BadgeLabelParams = {}): string => {
|
|
1488
1533
|
if (!params) {
|
|
1489
|
-
return BadgeLabel.DEFAULT
|
|
1534
|
+
return BadgeLabel.DEFAULT;
|
|
1490
1535
|
}
|
|
1491
1536
|
const { isNew, isSoldOut, isOnlineOnly, isSustainable, isPremium } =
|
|
1492
|
-
params
|
|
1537
|
+
params;
|
|
1493
1538
|
|
|
1494
1539
|
if (isNew) {
|
|
1495
|
-
return BadgeLabel.NEW
|
|
1540
|
+
return BadgeLabel.NEW;
|
|
1496
1541
|
} else if (isSoldOut) {
|
|
1497
|
-
return BadgeLabel.SOLD_OUT
|
|
1542
|
+
return BadgeLabel.SOLD_OUT;
|
|
1498
1543
|
} else if (isOnlineOnly) {
|
|
1499
|
-
return BadgeLabel.ONLINE_EXCLUSIVE
|
|
1544
|
+
return BadgeLabel.ONLINE_EXCLUSIVE;
|
|
1500
1545
|
} else if (isSustainable) {
|
|
1501
|
-
return BadgeLabel.SUSTAINABLE
|
|
1546
|
+
return BadgeLabel.SUSTAINABLE;
|
|
1502
1547
|
} else if (isPremium) {
|
|
1503
|
-
return BadgeLabel.PREMIUM
|
|
1548
|
+
return BadgeLabel.PREMIUM;
|
|
1504
1549
|
} else {
|
|
1505
|
-
return BadgeLabel.DEFAULT
|
|
1550
|
+
return BadgeLabel.DEFAULT;
|
|
1506
1551
|
}
|
|
1507
|
-
}
|
|
1552
|
+
};
|
|
1508
1553
|
```
|
|
1509
1554
|
|
|
1510
1555
|
- **\[💥 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.
|
|
@@ -1528,7 +1573,7 @@
|
|
|
1528
1573
|
// ...
|
|
1529
1574
|
},
|
|
1530
1575
|
// ...
|
|
1531
|
-
})
|
|
1576
|
+
});
|
|
1532
1577
|
```
|
|
1533
1578
|
|
|
1534
1579
|
- _Previous Environment Variables for Store Configuration:_
|
|
@@ -1557,7 +1602,7 @@
|
|
|
1557
1602
|
// ...
|
|
1558
1603
|
},
|
|
1559
1604
|
// ...
|
|
1560
|
-
})
|
|
1605
|
+
});
|
|
1561
1606
|
```
|
|
1562
1607
|
|
|
1563
1608
|
- _Current Environment Variables for Shops Configuration:_
|
|
@@ -1577,8 +1622,8 @@
|
|
|
1577
1622
|
```ts
|
|
1578
1623
|
useProduct({
|
|
1579
1624
|
// ...
|
|
1580
|
-
key:
|
|
1581
|
-
})
|
|
1625
|
+
key: "productKey",
|
|
1626
|
+
});
|
|
1582
1627
|
```
|
|
1583
1628
|
|
|
1584
1629
|
- _Current `key` as dedicated composables argument:_
|
|
@@ -1588,8 +1633,8 @@
|
|
|
1588
1633
|
{
|
|
1589
1634
|
// ...
|
|
1590
1635
|
},
|
|
1591
|
-
|
|
1592
|
-
)
|
|
1636
|
+
"productKey",
|
|
1637
|
+
);
|
|
1593
1638
|
```
|
|
1594
1639
|
|
|
1595
1640
|
- **\[💥 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.
|
|
@@ -1606,27 +1651,27 @@
|
|
|
1606
1651
|
- _Previous Usage of `handleIDPLoginCallback`:_
|
|
1607
1652
|
|
|
1608
1653
|
```ts
|
|
1609
|
-
const { handleIDPLoginCallback } = await useIDP()
|
|
1654
|
+
const { handleIDPLoginCallback } = await useIDP();
|
|
1610
1655
|
|
|
1611
1656
|
watch(
|
|
1612
1657
|
() => route.query,
|
|
1613
1658
|
async (query) => {
|
|
1614
1659
|
if (query.code && isString(query.code)) {
|
|
1615
|
-
await handleIDPLoginCallback(query.code)
|
|
1660
|
+
await handleIDPLoginCallback(query.code);
|
|
1616
1661
|
}
|
|
1617
1662
|
},
|
|
1618
1663
|
{ immediate: true },
|
|
1619
|
-
)
|
|
1664
|
+
);
|
|
1620
1665
|
```
|
|
1621
1666
|
|
|
1622
1667
|
- _Current Usage of `loginIDP`:_
|
|
1623
1668
|
|
|
1624
1669
|
```ts
|
|
1625
|
-
const { loginIDP } = useAuthentication(
|
|
1670
|
+
const { loginIDP } = useAuthentication("login");
|
|
1626
1671
|
|
|
1627
1672
|
onMounted(async () => {
|
|
1628
|
-
await loginIDP(props.code)
|
|
1629
|
-
})
|
|
1673
|
+
await loginIDP(props.code);
|
|
1674
|
+
});
|
|
1630
1675
|
```
|
|
1631
1676
|
|
|
1632
1677
|
- **\[🧹 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.
|
|
@@ -1636,17 +1681,17 @@
|
|
|
1636
1681
|
- _Previous `useRpc` with `autoFetch`:_
|
|
1637
1682
|
|
|
1638
1683
|
```ts
|
|
1639
|
-
useRpc(
|
|
1684
|
+
useRpc("rpcMethod", key, params, { autoFetch: true });
|
|
1640
1685
|
|
|
1641
|
-
useUser({ autoFetch: true })
|
|
1686
|
+
useUser({ autoFetch: true });
|
|
1642
1687
|
```
|
|
1643
1688
|
|
|
1644
1689
|
- _Current `useRpc` with `immediate`:_
|
|
1645
1690
|
|
|
1646
1691
|
```ts
|
|
1647
|
-
useRpc(
|
|
1692
|
+
useRpc("rpcMethod", key, params, { immediate: true });
|
|
1648
1693
|
|
|
1649
|
-
useUser({ immediate: true })
|
|
1694
|
+
useUser({ immediate: true });
|
|
1650
1695
|
```
|
|
1651
1696
|
|
|
1652
1697
|
- **\[💥 BREAKING\]** The attribute `isCmsPreview` has been removed from `RpcContext`.
|
|
@@ -1666,18 +1711,18 @@
|
|
|
1666
1711
|
getSearchSuggestions,
|
|
1667
1712
|
fetching,
|
|
1668
1713
|
...searchData
|
|
1669
|
-
} = useStorefrontSearch(searchQuery, { key })
|
|
1714
|
+
} = useStorefrontSearch(searchQuery, { key });
|
|
1670
1715
|
|
|
1671
|
-
fetching.value // true or false
|
|
1716
|
+
fetching.value; // true or false
|
|
1672
1717
|
```
|
|
1673
1718
|
|
|
1674
1719
|
- _Current `useStorefrontSearch` returning `status`:_
|
|
1675
1720
|
|
|
1676
1721
|
```ts
|
|
1677
1722
|
const { data, resolveSearch, getSearchSuggestions, status, ...searchData } =
|
|
1678
|
-
useStorefrontSearch(searchQuery, {}, key)
|
|
1723
|
+
useStorefrontSearch(searchQuery, {}, key);
|
|
1679
1724
|
|
|
1680
|
-
status.value // 'idle', 'pending', 'error' or 'success'
|
|
1725
|
+
status.value; // 'idle', 'pending', 'error' or 'success'
|
|
1681
1726
|
```
|
|
1682
1727
|
|
|
1683
1728
|
- **\[💥 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.
|
|
@@ -1702,7 +1747,7 @@
|
|
|
1702
1747
|
// ...
|
|
1703
1748
|
},
|
|
1704
1749
|
// ...
|
|
1705
|
-
})
|
|
1750
|
+
});
|
|
1706
1751
|
```
|
|
1707
1752
|
|
|
1708
1753
|
- _Current `enableDefaultGetCachedDataOverride`in `nuxt.config.ts`:_
|
|
@@ -1727,7 +1772,7 @@
|
|
|
1727
1772
|
// ...
|
|
1728
1773
|
},
|
|
1729
1774
|
// ...
|
|
1730
|
-
})
|
|
1775
|
+
});
|
|
1731
1776
|
```
|
|
1732
1777
|
|
|
1733
1778
|
- **\[💥 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).
|
|
@@ -1749,7 +1794,7 @@
|
|
|
1749
1794
|
function myCustomRpc() {
|
|
1750
1795
|
// ...
|
|
1751
1796
|
|
|
1752
|
-
throw new BaseError(404)
|
|
1797
|
+
throw new BaseError(404);
|
|
1753
1798
|
}
|
|
1754
1799
|
```
|
|
1755
1800
|
|
|
@@ -1759,7 +1804,7 @@
|
|
|
1759
1804
|
function myCustomRpc() {
|
|
1760
1805
|
// ...
|
|
1761
1806
|
|
|
1762
|
-
return new Response(null, { status: 404 })
|
|
1807
|
+
return new Response(null, { status: 404 });
|
|
1763
1808
|
}
|
|
1764
1809
|
```
|
|
1765
1810
|
|
package/dist/module.json
CHANGED
package/dist/module.mjs
CHANGED
|
@@ -11,10 +11,10 @@ import type { Log } from '@scayle/storefront-core';
|
|
|
11
11
|
*
|
|
12
12
|
* @returns helper on the `NuxtApp` containing the 'log' and 'coreLog' instances.
|
|
13
13
|
*/
|
|
14
|
-
declare const _default: import("
|
|
14
|
+
declare const _default: import("nuxt/app").Plugin<{
|
|
15
15
|
log: Log;
|
|
16
16
|
coreLog: Log;
|
|
17
|
-
}> & import("
|
|
17
|
+
}> & import("nuxt/app").ObjectPlugin<{
|
|
18
18
|
log: Log;
|
|
19
19
|
coreLog: Log;
|
|
20
20
|
}>;
|
|
@@ -10,10 +10,10 @@
|
|
|
10
10
|
* @returns A helper on the `NuxtApp` containing the `log` and
|
|
11
11
|
* `coreLog`instances, or undefined if ssrContext is missing.
|
|
12
12
|
*/
|
|
13
|
-
declare const _default: import("
|
|
13
|
+
declare const _default: import("nuxt/app").Plugin<{
|
|
14
14
|
log: import("@scayle/storefront-core").Log;
|
|
15
15
|
coreLog: import("@scayle/storefront-core").Log;
|
|
16
|
-
}> & import("
|
|
16
|
+
}> & import("nuxt/app").ObjectPlugin<{
|
|
17
17
|
log: import("@scayle/storefront-core").Log;
|
|
18
18
|
coreLog: import("@scayle/storefront-core").Log;
|
|
19
19
|
}>;
|
|
@@ -13,10 +13,10 @@
|
|
|
13
13
|
* const { currentShop, availableShop } = useNuxtApp()
|
|
14
14
|
* ```
|
|
15
15
|
*/
|
|
16
|
-
declare const _default: import("
|
|
16
|
+
declare const _default: import("nuxt/app").Plugin<{
|
|
17
17
|
currentShop: import("../../index.js").PublicShopConfig;
|
|
18
18
|
availableShops: import("../../index.js").PublicShopConfig[];
|
|
19
|
-
}> & import("
|
|
19
|
+
}> & import("nuxt/app").ObjectPlugin<{
|
|
20
20
|
currentShop: import("../../index.js").PublicShopConfig;
|
|
21
21
|
availableShops: import("../../index.js").PublicShopConfig[];
|
|
22
22
|
}>;
|
package/dist/test/factories.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.32.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,27 +61,10 @@
|
|
|
61
61
|
"engines": {
|
|
62
62
|
"node": ">= 20.7.0"
|
|
63
63
|
},
|
|
64
|
-
"scripts": {
|
|
65
|
-
"build": "nuxt-module-build build",
|
|
66
|
-
"dev": "nuxt dev playground",
|
|
67
|
-
"dev:build": "nuxt build playground",
|
|
68
|
-
"prep": "nuxt-module-build prepare && nuxt prepare playground",
|
|
69
|
-
"format": "dprint check",
|
|
70
|
-
"format:fix": "dprint fmt",
|
|
71
|
-
"lint": "eslint .",
|
|
72
|
-
"lint:ci": "eslint . --format gitlab",
|
|
73
|
-
"lint:fix": "eslint . --fix",
|
|
74
|
-
"typecheck": "vue-tsc --noEmit && cd playground && vue-tsc --noEmit",
|
|
75
|
-
"package:lint": "publint",
|
|
76
|
-
"verify-packaging": "attw --pack . --profile esm-only",
|
|
77
|
-
"test": "vitest run",
|
|
78
|
-
"test:ci": "vitest --run --coverage --reporter=default --reporter=junit --outputFile=./coverage/junit.xml",
|
|
79
|
-
"test:watch": "vitest watch"
|
|
80
|
-
},
|
|
81
64
|
"dependencies": {
|
|
82
65
|
"@opentelemetry/api": "^1.9.0",
|
|
83
66
|
"@scayle/h3-session": "0.6.1",
|
|
84
|
-
"@scayle/storefront-core": "8.
|
|
67
|
+
"@scayle/storefront-core": "8.32.0",
|
|
85
68
|
"@scayle/unstorage-compression-driver": "^1.0.0",
|
|
86
69
|
"@vercel/nft": "0.29.4",
|
|
87
70
|
"@vueuse/core": "13.4.0",
|
|
@@ -107,22 +90,22 @@
|
|
|
107
90
|
"@nuxt/kit": "3.16.2",
|
|
108
91
|
"@nuxt/module-builder": "1.0.1",
|
|
109
92
|
"@nuxt/schema": "3.16.2",
|
|
110
|
-
"@nuxt/test-utils": "3.
|
|
111
|
-
"@scayle/eslint-config-storefront": "4.5.
|
|
93
|
+
"@nuxt/test-utils": "3.19.2",
|
|
94
|
+
"@scayle/eslint-config-storefront": "4.5.12",
|
|
112
95
|
"@scayle/eslint-plugin-vue-composable": "0.2.1",
|
|
113
96
|
"@scayle/unstorage-scayle-kv-driver": "1.0.2",
|
|
114
|
-
"@types/node": "22.15.
|
|
97
|
+
"@types/node": "22.15.34",
|
|
115
98
|
"@vitest/coverage-v8": "3.2.4",
|
|
116
|
-
"dprint": "0.50.
|
|
99
|
+
"dprint": "0.50.1",
|
|
117
100
|
"eslint-formatter-gitlab": "6.0.1",
|
|
118
|
-
"eslint": "9.
|
|
101
|
+
"eslint": "9.30.0",
|
|
119
102
|
"fishery": "2.3.1",
|
|
120
103
|
"h3": "1.15.3",
|
|
121
104
|
"nitro-test-utils": "0.9.2",
|
|
122
|
-
"nitropack": "2.11.
|
|
105
|
+
"nitropack": "2.11.13",
|
|
123
106
|
"node-mocks-http": "1.17.2",
|
|
124
107
|
"nuxt": "3.16.2",
|
|
125
|
-
"publint": "0.
|
|
108
|
+
"publint": "0.3.12",
|
|
126
109
|
"typescript": "5.8.3",
|
|
127
110
|
"unbuild": "3.5.0",
|
|
128
111
|
"vitest": "3.2.4",
|
|
@@ -139,6 +122,23 @@
|
|
|
139
122
|
"vue": "^3.4.0"
|
|
140
123
|
},
|
|
141
124
|
"volta": {
|
|
142
|
-
"node": "22.
|
|
125
|
+
"node": "22.17.0"
|
|
126
|
+
},
|
|
127
|
+
"scripts": {
|
|
128
|
+
"build": "nuxt-module-build build",
|
|
129
|
+
"dev": "nuxt dev playground",
|
|
130
|
+
"dev:build": "nuxt build playground",
|
|
131
|
+
"prep": "nuxt-module-build prepare && nuxt prepare playground",
|
|
132
|
+
"format": "dprint check",
|
|
133
|
+
"format:fix": "dprint fmt",
|
|
134
|
+
"lint": "eslint .",
|
|
135
|
+
"lint:ci": "eslint . --format gitlab",
|
|
136
|
+
"lint:fix": "eslint . --fix",
|
|
137
|
+
"typecheck": "vue-tsc --noEmit && cd playground && vue-tsc --noEmit",
|
|
138
|
+
"package:lint": "publint",
|
|
139
|
+
"verify-packaging": "attw --pack . --profile esm-only",
|
|
140
|
+
"test": "vitest run",
|
|
141
|
+
"test:ci": "vitest --run --coverage --reporter=default --reporter=junit --outputFile=./coverage/junit.xml",
|
|
142
|
+
"test:watch": "vitest watch"
|
|
143
143
|
}
|
|
144
|
-
}
|
|
144
|
+
}
|