@doswiftly/storefront-sdk 17.0.0 → 18.0.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 +919 -0
- package/README.md +16 -4
- package/dist/core/auth/auth-client.d.ts +39 -3
- package/dist/core/auth/auth-client.d.ts.map +1 -1
- package/dist/core/auth/auth-client.js +51 -3
- package/dist/core/auth/cookie-config.d.ts +52 -3
- package/dist/core/auth/cookie-config.d.ts.map +1 -1
- package/dist/core/auth/cookie-config.js +60 -6
- package/dist/core/auth/handlers.d.ts +46 -0
- package/dist/core/auth/handlers.d.ts.map +1 -1
- package/dist/core/auth/handlers.js +9 -2
- package/dist/core/auth/session-events.d.ts +38 -0
- package/dist/core/auth/session-events.d.ts.map +1 -0
- package/dist/core/auth/session-events.js +35 -0
- package/dist/core/cart/cart-recovery.d.ts +23 -0
- package/dist/core/cart/cart-recovery.d.ts.map +1 -1
- package/dist/core/cart/cart-recovery.js +20 -3
- package/dist/core/cart/types.d.ts +2 -1
- package/dist/core/cart/types.d.ts.map +1 -1
- package/dist/core/cart/types.js +7 -1
- package/dist/core/client/create-client.d.ts.map +1 -1
- package/dist/core/client/create-client.js +7 -3
- package/dist/core/client/execute.d.ts +29 -3
- package/dist/core/client/execute.d.ts.map +1 -1
- package/dist/core/client/execute.js +174 -3
- package/dist/core/client/types.d.ts +50 -2
- package/dist/core/client/types.d.ts.map +1 -1
- package/dist/core/errors.d.ts +6 -0
- package/dist/core/errors.d.ts.map +1 -1
- package/dist/core/errors.js +6 -0
- package/dist/core/generated/operation-types.d.ts +838 -221
- package/dist/core/generated/operation-types.d.ts.map +1 -1
- package/dist/core/generated/operation-types.js +560 -1
- package/dist/core/index.d.ts +6 -3
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +12 -2
- package/dist/core/middleware/session-retry.d.ts +47 -0
- package/dist/core/middleware/session-retry.d.ts.map +1 -0
- package/dist/core/middleware/session-retry.js +71 -0
- package/dist/core/operations/auth.d.ts.map +1 -1
- package/dist/core/operations/auth.js +1 -0
- package/dist/core/operations/cart.d.ts.map +1 -1
- package/dist/core/operations/cart.js +15 -11
- package/dist/react/components/PaymentInstrumentSection.d.ts.map +1 -1
- package/dist/react/components/PaymentInstrumentSection.js +4 -4
- package/dist/react/components/PaymentInstrumentTile.d.ts +7 -7
- package/dist/react/components/PaymentInstrumentTile.d.ts.map +1 -1
- package/dist/react/components/PaymentInstrumentTile.js +4 -3
- package/dist/react/hooks/use-cart-manager.d.ts +104 -13
- package/dist/react/hooks/use-cart-manager.d.ts.map +1 -1
- package/dist/react/hooks/use-cart-manager.js +144 -12
- package/dist/react/hooks/use-login.d.ts.map +1 -1
- package/dist/react/hooks/use-login.js +3 -3
- package/dist/react/hooks/use-refresh-token.d.ts.map +1 -1
- package/dist/react/hooks/use-refresh-token.js +6 -4
- package/dist/react/hooks/use-session-expired.d.ts +16 -0
- package/dist/react/hooks/use-session-expired.d.ts.map +1 -0
- package/dist/react/hooks/use-session-expired.js +26 -0
- package/dist/react/hooks/use-session-refresh.d.ts +32 -0
- package/dist/react/hooks/use-session-refresh.d.ts.map +1 -0
- package/dist/react/hooks/use-session-refresh.js +147 -0
- package/dist/react/index.d.ts +3 -0
- package/dist/react/index.d.ts.map +1 -1
- package/dist/react/index.js +2 -0
- package/dist/react/providers/storefront-client-provider.d.ts +10 -1
- package/dist/react/providers/storefront-client-provider.d.ts.map +1 -1
- package/dist/react/providers/storefront-client-provider.js +38 -3
- package/dist/react/providers/storefront-provider.d.ts +51 -3
- package/dist/react/providers/storefront-provider.d.ts.map +1 -1
- package/dist/react/providers/storefront-provider.js +22 -5
- package/dist/react/server/create-storefront-auth-route.d.ts +63 -0
- package/dist/react/server/create-storefront-auth-route.d.ts.map +1 -0
- package/dist/react/server/create-storefront-auth-route.js +239 -0
- package/dist/react/server/get-initial-auth.d.ts +57 -0
- package/dist/react/server/get-initial-auth.d.ts.map +1 -0
- package/dist/react/server/get-initial-auth.js +55 -0
- package/dist/react/server/index.d.ts +3 -0
- package/dist/react/server/index.d.ts.map +1 -1
- package/dist/react/server/index.js +6 -0
- package/dist/react/stores/auth.store.d.ts +46 -2
- package/dist/react/stores/auth.store.d.ts.map +1 -1
- package/dist/react/stores/auth.store.js +19 -7
- package/package.json +4 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.store.d.ts","sourceRoot":"","sources":["../../../src/react/stores/auth.store.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,SAAS;IAExB,QAAQ,EAAE,YAAY,GAAG,IAAI,CAAC;IAC9B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,eAAe,EAAE,OAAO,CAAC;IACzB,SAAS,EAAE,OAAO,CAAC;IAGnB,OAAO,EAAE,CAAC,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"auth.store.d.ts","sourceRoot":"","sources":["../../../src/react/stores/auth.store.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,iBAAiB,CAAC;AAE/C,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,SAAS;IAExB,QAAQ,EAAE,YAAY,GAAG,IAAI,CAAC;IAC9B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B;;;;;OAKG;IACH,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,eAAe,EAAE,OAAO,CAAC;IACzB,SAAS,EAAE,OAAO,CAAC;IAGnB,OAAO,EAAE,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACjG,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB;;;;OAIG;IACH,YAAY,EAAE,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACjD,cAAc,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,KAAK,IAAI,CAAC;IACzD,UAAU,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;CAC1C;AAED,MAAM,WAAW,sBAAsB;IACrC;;;;OAIG;IACH,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC;;;;;;;;OAQG;IACH,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC;AAED,eAAO,MAAM,eAAe,GAAI,UAAU,sBAAsB;;;;;sBAyExC,YAAY,GAAG,IAAI;6BACZ,OAAO;;;;;;;;sBADd,YAAY,GAAG,IAAI;6BACZ,OAAO;;;CAUnC,CAAC"}
|
|
@@ -9,21 +9,31 @@
|
|
|
9
9
|
*/
|
|
10
10
|
import { createStore } from 'zustand/vanilla';
|
|
11
11
|
import { persist } from 'zustand/middleware';
|
|
12
|
-
|
|
12
|
+
/**
|
|
13
|
+
* localStorage key for the persisted auth slice (customer + isAuthenticated only —
|
|
14
|
+
* accessToken is excluded by `partialize`, XSS hardening). Exported so tests and
|
|
15
|
+
* future migrations can reference a single source of truth.
|
|
16
|
+
*/
|
|
17
|
+
export const AUTH_STORAGE_KEY = 'auth-storage';
|
|
18
|
+
export const createAuthStore = (options) => createStore()(persist((set) => ({
|
|
13
19
|
customer: null,
|
|
14
|
-
accessToken: null,
|
|
15
|
-
|
|
20
|
+
accessToken: options?.initialAccessToken ?? null,
|
|
21
|
+
expiresAt: options?.initialExpiresAt ?? null,
|
|
22
|
+
isAuthenticated: options?.initialIsAuthenticated ?? !!options?.initialAccessToken,
|
|
16
23
|
isLoading: false,
|
|
17
|
-
setAuth: (customer, accessToken) => set({
|
|
24
|
+
setAuth: (customer, accessToken, expiresAt) => set({
|
|
18
25
|
customer,
|
|
19
26
|
accessToken,
|
|
27
|
+
expiresAt: expiresAt ?? null,
|
|
20
28
|
isAuthenticated: true,
|
|
21
29
|
}),
|
|
22
30
|
clearAuth: () => set({
|
|
23
31
|
customer: null,
|
|
24
32
|
accessToken: null,
|
|
33
|
+
expiresAt: null,
|
|
25
34
|
isAuthenticated: false,
|
|
26
35
|
}),
|
|
36
|
+
setExpiresAt: (expiresAt) => set({ expiresAt }),
|
|
27
37
|
updateCustomer: (updates) => set((state) => ({
|
|
28
38
|
customer: state.customer
|
|
29
39
|
? { ...state.customer, ...updates }
|
|
@@ -31,7 +41,7 @@ export const createAuthStore = (initialIsAuthenticated = false) => createStore()
|
|
|
31
41
|
})),
|
|
32
42
|
setLoading: (isLoading) => set({ isLoading }),
|
|
33
43
|
}), {
|
|
34
|
-
name:
|
|
44
|
+
name: AUTH_STORAGE_KEY,
|
|
35
45
|
version: 3, // v3 (Iteracja 2 — XSS fix): accessToken DROP'owany z localStorage
|
|
36
46
|
// persistence. Token żyje tylko w-memory + httpOnly cookie (browser auto-sent).
|
|
37
47
|
// Non-browser klienci (mobile native, server-to-server) ustawiają token explicit
|
|
@@ -53,8 +63,10 @@ export const createAuthStore = (initialIsAuthenticated = false) => createStore()
|
|
|
53
63
|
return {
|
|
54
64
|
...currentState,
|
|
55
65
|
customer: persisted.customer ?? currentState.customer,
|
|
56
|
-
// accessToken NIE persistowany
|
|
57
|
-
//
|
|
66
|
+
// accessToken NIE persistowany w localStorage (Inv-5 XSS hardening) — spread
|
|
67
|
+
// `...currentState` propaguje wartość z factory: `null` (default) lub seed
|
|
68
|
+
// z `options.initialAccessToken` gdy konsumer podał token server-side.
|
|
69
|
+
// Server cookie is the authority — never let stale localStorage override it.
|
|
58
70
|
isAuthenticated: currentState.isAuthenticated,
|
|
59
71
|
};
|
|
60
72
|
},
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@doswiftly/storefront-sdk",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "18.0.0",
|
|
4
4
|
"description": "Storefront runtime SDK for DoSwiftly Commerce — layered transport, middleware pipeline, React providers, Zustand stores, cache strategies. 0 runtime dependencies in core.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -84,6 +84,8 @@
|
|
|
84
84
|
"test:contract": "vitest run src/__tests__/contract/",
|
|
85
85
|
"test:coverage": "vitest run --coverage",
|
|
86
86
|
"doctor": "node scripts/doctor.cjs",
|
|
87
|
-
"validate:cart": "node scripts/validate-cart-operations.cjs --strict"
|
|
87
|
+
"validate:cart": "node scripts/validate-cart-operations.cjs --strict",
|
|
88
|
+
"yalc:push": "pnpm build && yalc publish --push",
|
|
89
|
+
"yalc:watch": "node scripts/yalc-watcher.cjs"
|
|
88
90
|
}
|
|
89
91
|
}
|