@smess/networking 1.1.5 → 2.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 +211 -0
- package/README.md +165 -114
- package/dist/core/body.d.ts +10 -0
- package/dist/core/body.d.ts.map +1 -0
- package/dist/core/body.js +22 -0
- package/dist/core/body.js.map +1 -0
- package/dist/core/client.d.ts +74 -0
- package/dist/core/client.d.ts.map +1 -0
- package/dist/core/client.js +124 -0
- package/dist/core/client.js.map +1 -0
- package/dist/core/decoders.d.ts +8 -0
- package/dist/core/decoders.d.ts.map +1 -0
- package/dist/core/decoders.js +26 -0
- package/dist/core/decoders.js.map +1 -0
- package/dist/core/endpoint.d.ts +69 -0
- package/dist/core/endpoint.d.ts.map +1 -0
- package/dist/core/endpoint.js +6 -0
- package/dist/core/endpoint.js.map +1 -0
- package/dist/core/hosts.d.ts +25 -0
- package/dist/core/hosts.d.ts.map +1 -0
- package/dist/core/hosts.js +22 -0
- package/dist/core/hosts.js.map +1 -0
- package/dist/core/pagination.d.ts +33 -0
- package/dist/core/pagination.d.ts.map +1 -0
- package/dist/core/pagination.js +23 -0
- package/dist/core/pagination.js.map +1 -0
- package/dist/core/pipeline.d.ts +25 -0
- package/dist/core/pipeline.d.ts.map +1 -0
- package/dist/core/pipeline.js +12 -0
- package/dist/core/pipeline.js.map +1 -0
- package/dist/core/retry.d.ts +18 -0
- package/dist/core/retry.d.ts.map +1 -0
- package/dist/core/retry.js +47 -0
- package/dist/core/retry.js.map +1 -0
- package/dist/core/transport.d.ts +30 -0
- package/dist/core/transport.d.ts.map +1 -0
- package/dist/core/transport.js +73 -0
- package/dist/core/transport.js.map +1 -0
- package/dist/core/types.d.ts +24 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +3 -0
- package/dist/core/types.js.map +1 -0
- package/dist/core/url.d.ts +15 -0
- package/dist/core/url.d.ts.map +1 -0
- package/dist/core/url.js +46 -0
- package/dist/core/url.js.map +1 -0
- package/dist/errors/parse-error-body.d.ts +20 -0
- package/dist/errors/parse-error-body.d.ts.map +1 -0
- package/dist/errors/parse-error-body.js +73 -0
- package/dist/errors/parse-error-body.js.map +1 -0
- package/dist/errors/smess-api-error.d.ts +70 -0
- package/dist/errors/smess-api-error.d.ts.map +1 -0
- package/dist/errors/smess-api-error.js +84 -0
- package/dist/errors/smess-api-error.js.map +1 -0
- package/dist/index.d.ts +27 -25
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +15 -29
- package/dist/index.js.map +1 -0
- package/dist/modules/authentication/index.d.ts +89 -0
- package/dist/modules/authentication/index.d.ts.map +1 -0
- package/dist/modules/authentication/index.js +128 -0
- package/dist/modules/authentication/index.js.map +1 -0
- package/dist/modules/campaign/index.d.ts +212 -0
- package/dist/modules/campaign/index.d.ts.map +1 -0
- package/dist/modules/campaign/index.js +193 -0
- package/dist/modules/campaign/index.js.map +1 -0
- package/dist/modules/campaign/types.d.ts +562 -0
- package/dist/modules/campaign/types.d.ts.map +1 -0
- package/dist/modules/campaign/types.js +2 -0
- package/dist/modules/campaign/types.js.map +1 -0
- package/dist/modules/danara/index.d.ts +153 -0
- package/dist/modules/danara/index.d.ts.map +1 -0
- package/dist/modules/danara/index.js +144 -0
- package/dist/modules/danara/index.js.map +1 -0
- package/dist/modules/danara/types.d.ts +479 -0
- package/dist/modules/danara/types.d.ts.map +1 -0
- package/dist/modules/danara/types.js +2 -0
- package/dist/modules/danara/types.js.map +1 -0
- package/dist/modules/smeup-file/index.d.ts +27 -0
- package/dist/modules/smeup-file/index.d.ts.map +1 -0
- package/dist/modules/smeup-file/index.js +17 -0
- package/dist/modules/smeup-file/index.js.map +1 -0
- package/dist/modules/sso/index.d.ts +40 -0
- package/dist/modules/sso/index.d.ts.map +1 -0
- package/dist/modules/sso/index.js +41 -0
- package/dist/modules/sso/index.js.map +1 -0
- package/dist/rx/index.d.ts +11 -0
- package/dist/rx/index.d.ts.map +1 -0
- package/dist/rx/index.js +20 -0
- package/dist/rx/index.js.map +1 -0
- package/dist/session/auth-middleware.d.ts +27 -0
- package/dist/session/auth-middleware.d.ts.map +1 -0
- package/dist/session/auth-middleware.js +122 -0
- package/dist/session/auth-middleware.js.map +1 -0
- package/dist/session/jwt.d.ts +20 -0
- package/dist/session/jwt.d.ts.map +1 -0
- package/dist/session/jwt.js +25 -0
- package/dist/session/jwt.js.map +1 -0
- package/dist/session/stores.d.ts +19 -0
- package/dist/session/stores.d.ts.map +1 -0
- package/dist/session/stores.js +103 -0
- package/dist/session/stores.js.map +1 -0
- package/dist/session/types.d.ts +28 -0
- package/dist/session/types.d.ts.map +1 -0
- package/dist/session/types.js +2 -0
- package/dist/session/types.js.map +1 -0
- package/package.json +80 -30
- package/dist/core/axios.d.ts +0 -51
- package/dist/core/axios.js +0 -65
- package/dist/core/axios.observable.d.ts +0 -11
- package/dist/core/axios.observable.js +0 -58
- package/dist/core/base.provider.advanced.test.d.ts +0 -1
- package/dist/core/base.provider.advanced.test.js +0 -29
- package/dist/core/base.provider.d.ts +0 -15
- package/dist/core/base.provider.js +0 -13
- package/dist/core/base.provider.test.d.ts +0 -1
- package/dist/core/base.provider.test.js +0 -36
- package/dist/core/base.service.wrapper.advanced.test.d.ts +0 -1
- package/dist/core/base.service.wrapper.advanced.test.js +0 -39
- package/dist/core/base.service.wrapper.d.ts +0 -7
- package/dist/core/base.service.wrapper.js +0 -11
- package/dist/core/base.service.wrapper.test.d.ts +0 -1
- package/dist/core/base.service.wrapper.test.js +0 -25
- package/dist/core/rx.http.service.d.ts +0 -51
- package/dist/core/rx.http.service.js +0 -65
- package/dist/services/auth.service.d.ts +0 -69
- package/dist/services/auth.service.js +0 -197
- package/dist/services/auth.service.test.d.ts +0 -1
- package/dist/services/auth.service.test.js +0 -340
- package/dist/services/cache.service.d.ts +0 -31
- package/dist/services/cache.service.js +0 -77
- package/dist/services/cache.service.test.d.ts +0 -1
- package/dist/services/cache.service.test.js +0 -88
- package/dist/services/customer.service.d.ts +0 -213
- package/dist/services/customer.service.js +0 -128
- package/dist/services/customer.service.test.d.ts +0 -1
- package/dist/services/customer.service.test.js +0 -430
- package/dist/services/employee.service.d.ts +0 -73
- package/dist/services/employee.service.js +0 -74
- package/dist/services/employee.service.test.d.ts +0 -1
- package/dist/services/employee.service.test.js +0 -127
- package/dist/services/logger.service.d.ts +0 -31
- package/dist/services/logger.service.js +0 -93
- package/dist/services/logger.service.test.d.ts +0 -1
- package/dist/services/logger.service.test.js +0 -31
- package/dist/services/order.service.d.ts +0 -73
- package/dist/services/order.service.js +0 -97
- package/dist/services/order.service.test.d.ts +0 -1
- package/dist/services/order.service.test.js +0 -163
- package/dist/services/product.service.d.ts +0 -21
- package/dist/services/product.service.js +0 -42
- package/dist/services/product.service.test.d.ts +0 -1
- package/dist/services/product.service.test.js +0 -61
- package/dist/services/smess.service.d.ts +0 -36
- package/dist/services/smess.service.js +0 -128
- package/dist/services/smess.service.test.d.ts +0 -1
- package/dist/services/smess.service.test.js +0 -103
- package/dist/services/store.cart.service.d.ts +0 -158
- package/dist/services/store.cart.service.js +0 -177
- package/dist/services/store.cart.service.test.d.ts +0 -1
- package/dist/services/store.cart.service.test.js +0 -394
- package/dist/services/store.product.service.d.ts +0 -124
- package/dist/services/store.product.service.js +0 -102
- package/dist/services/store.product.service.test.d.ts +0 -1
- package/dist/services/store.product.service.test.js +0 -319
- package/dist/services/store.service.d.ts +0 -79
- package/dist/services/store.service.js +0 -235
- package/dist/services/store.service.test.d.ts +0 -1
- package/dist/services/store.service.test.js +0 -274
- package/dist/services/storefront.cart.service.d.ts +0 -73
- package/dist/services/storefront.cart.service.js +0 -167
- package/dist/services/storefront.cart.service.test.d.ts +0 -1
- package/dist/services/storefront.cart.service.test.js +0 -211
- package/dist/services/storefront.checkout.service.d.ts +0 -62
- package/dist/services/storefront.checkout.service.js +0 -75
- package/dist/services/storefront.checkout.service.test.d.ts +0 -1
- package/dist/services/storefront.checkout.service.test.js +0 -158
- package/dist/services/storefront.customer.metadata.service.d.ts +0 -91
- package/dist/services/storefront.customer.metadata.service.js +0 -225
- package/dist/services/storefront.customer.metadata.service.test.d.ts +0 -1
- package/dist/services/storefront.customer.metadata.service.test.js +0 -271
- package/dist/services/storefront.order.service.d.ts +0 -45
- package/dist/services/storefront.order.service.js +0 -99
- package/dist/services/storefront.order.service.test.d.ts +0 -1
- package/dist/services/storefront.order.service.test.js +0 -158
- package/dist/services/storefront.product.service.d.ts +0 -52
- package/dist/services/storefront.product.service.js +0 -75
- package/dist/services/storefront.product.service.test.d.ts +0 -1
- package/dist/services/storefront.product.service.test.js +0 -120
- package/dist/services/storefront.store.service.d.ts +0 -54
- package/dist/services/storefront.store.service.js +0 -142
- package/dist/services/storefront.store.service.test.d.ts +0 -1
- package/dist/services/storefront.store.service.test.js +0 -90
- package/dist/services/user.service.d.ts +0 -16
- package/dist/services/user.service.js +0 -37
- package/dist/services/user.service.test.d.ts +0 -1
- package/dist/services/user.service.test.js +0 -52
- package/dist/services/utils/withAuthReset.d.ts +0 -3
- package/dist/services/utils/withAuthReset.js +0 -8
- package/dist/src/core/axios.d.ts +0 -51
- package/dist/src/core/axios.js +0 -65
- package/dist/src/core/axios.observable.d.ts +0 -11
- package/dist/src/core/axios.observable.js +0 -58
- package/dist/src/core/base.provider.advanced.test.d.ts +0 -1
- package/dist/src/core/base.provider.advanced.test.js +0 -29
- package/dist/src/core/base.provider.d.ts +0 -15
- package/dist/src/core/base.provider.js +0 -13
- package/dist/src/core/base.provider.test.d.ts +0 -1
- package/dist/src/core/base.provider.test.js +0 -36
- package/dist/src/core/base.service.wrapper.advanced.test.d.ts +0 -1
- package/dist/src/core/base.service.wrapper.advanced.test.js +0 -39
- package/dist/src/core/base.service.wrapper.d.ts +0 -7
- package/dist/src/core/base.service.wrapper.js +0 -11
- package/dist/src/core/base.service.wrapper.test.d.ts +0 -1
- package/dist/src/core/base.service.wrapper.test.js +0 -25
- package/dist/src/core/rx.http.service.d.ts +0 -51
- package/dist/src/core/rx.http.service.js +0 -65
- package/dist/src/index.d.ts +0 -25
- package/dist/src/index.js +0 -29
- package/dist/src/services/auth.service.d.ts +0 -69
- package/dist/src/services/auth.service.js +0 -197
- package/dist/src/services/auth.service.test.d.ts +0 -1
- package/dist/src/services/auth.service.test.js +0 -340
- package/dist/src/services/cache.service.d.ts +0 -31
- package/dist/src/services/cache.service.js +0 -77
- package/dist/src/services/cache.service.test.d.ts +0 -1
- package/dist/src/services/cache.service.test.js +0 -88
- package/dist/src/services/customer.service.d.ts +0 -199
- package/dist/src/services/customer.service.js +0 -114
- package/dist/src/services/customer.service.test.d.ts +0 -1
- package/dist/src/services/customer.service.test.js +0 -430
- package/dist/src/services/employee.service.d.ts +0 -73
- package/dist/src/services/employee.service.js +0 -74
- package/dist/src/services/employee.service.test.d.ts +0 -1
- package/dist/src/services/employee.service.test.js +0 -127
- package/dist/src/services/logger.service.d.ts +0 -31
- package/dist/src/services/logger.service.js +0 -93
- package/dist/src/services/logger.service.test.d.ts +0 -1
- package/dist/src/services/logger.service.test.js +0 -31
- package/dist/src/services/order.service.d.ts +0 -73
- package/dist/src/services/order.service.js +0 -97
- package/dist/src/services/order.service.test.d.ts +0 -1
- package/dist/src/services/order.service.test.js +0 -163
- package/dist/src/services/product.service.d.ts +0 -21
- package/dist/src/services/product.service.js +0 -42
- package/dist/src/services/product.service.test.d.ts +0 -1
- package/dist/src/services/product.service.test.js +0 -61
- package/dist/src/services/smess.service.d.ts +0 -36
- package/dist/src/services/smess.service.js +0 -128
- package/dist/src/services/smess.service.test.d.ts +0 -1
- package/dist/src/services/smess.service.test.js +0 -103
- package/dist/src/services/store.cart.service.d.ts +0 -158
- package/dist/src/services/store.cart.service.js +0 -177
- package/dist/src/services/store.cart.service.test.d.ts +0 -1
- package/dist/src/services/store.cart.service.test.js +0 -394
- package/dist/src/services/store.product.service.d.ts +0 -124
- package/dist/src/services/store.product.service.js +0 -102
- package/dist/src/services/store.product.service.test.d.ts +0 -1
- package/dist/src/services/store.product.service.test.js +0 -319
- package/dist/src/services/store.service.d.ts +0 -79
- package/dist/src/services/store.service.js +0 -235
- package/dist/src/services/store.service.test.d.ts +0 -1
- package/dist/src/services/store.service.test.js +0 -274
- package/dist/src/services/storefront.cart.service.d.ts +0 -73
- package/dist/src/services/storefront.cart.service.js +0 -167
- package/dist/src/services/storefront.cart.service.test.d.ts +0 -1
- package/dist/src/services/storefront.cart.service.test.js +0 -211
- package/dist/src/services/storefront.checkout.service.d.ts +0 -62
- package/dist/src/services/storefront.checkout.service.js +0 -75
- package/dist/src/services/storefront.checkout.service.test.d.ts +0 -1
- package/dist/src/services/storefront.checkout.service.test.js +0 -158
- package/dist/src/services/storefront.customer.metadata.service.d.ts +0 -91
- package/dist/src/services/storefront.customer.metadata.service.js +0 -225
- package/dist/src/services/storefront.customer.metadata.service.test.d.ts +0 -1
- package/dist/src/services/storefront.customer.metadata.service.test.js +0 -271
- package/dist/src/services/storefront.order.service.d.ts +0 -45
- package/dist/src/services/storefront.order.service.js +0 -99
- package/dist/src/services/storefront.order.service.test.d.ts +0 -1
- package/dist/src/services/storefront.order.service.test.js +0 -158
- package/dist/src/services/storefront.product.service.d.ts +0 -52
- package/dist/src/services/storefront.product.service.js +0 -75
- package/dist/src/services/storefront.product.service.test.d.ts +0 -1
- package/dist/src/services/storefront.product.service.test.js +0 -120
- package/dist/src/services/storefront.store.service.d.ts +0 -52
- package/dist/src/services/storefront.store.service.js +0 -140
- package/dist/src/services/storefront.store.service.test.d.ts +0 -1
- package/dist/src/services/storefront.store.service.test.js +0 -90
- package/dist/src/services/user.service.d.ts +0 -16
- package/dist/src/services/user.service.js +0 -37
- package/dist/src/services/user.service.test.d.ts +0 -1
- package/dist/src/services/user.service.test.js +0 -52
- package/dist/src/services/utils/withAuthReset.d.ts +0 -3
- package/dist/src/services/utils/withAuthReset.js +0 -8
- package/dist/src/types/types.d.ts +0 -93
- package/dist/src/types/types.js +0 -82
- package/dist/src/types/types.test.d.ts +0 -1
- package/dist/src/types/types.test.js +0 -25
- package/dist/src/utils/cache-import.d.ts +0 -3
- package/dist/src/utils/cache-import.js +0 -2
- package/dist/src/utils/networking-import.d.ts +0 -4
- package/dist/src/utils/networking-import.js +0 -3
- package/dist/src/utils/rxjs-import.d.ts +0 -5
- package/dist/src/utils/rxjs-import.js +0 -5
- package/dist/types/types.d.ts +0 -96
- package/dist/types/types.js +0 -82
- package/dist/types/types.test.d.ts +0 -1
- package/dist/types/types.test.js +0 -25
- package/dist/utils/cache-import.d.ts +0 -3
- package/dist/utils/cache-import.js +0 -2
- package/dist/utils/networking-import.d.ts +0 -4
- package/dist/utils/networking-import.js +0 -3
- package/dist/utils/rxjs-import.d.ts +0 -5
- package/dist/utils/rxjs-import.js +0 -5
|
@@ -1,235 +0,0 @@
|
|
|
1
|
-
import { NetworkingUIEventWrapped, } from "../types/types";
|
|
2
|
-
import { Accept, SMESSHeader, SmessService } from "./smess.service";
|
|
3
|
-
import { BehaviorSubject, from, of } from "rxjs";
|
|
4
|
-
import { map, switchMap, catchError } from "rxjs/operators";
|
|
5
|
-
import { GenericIndexedDBService } from "./cache.service";
|
|
6
|
-
export class StoreProvider {
|
|
7
|
-
constructor(config, target) {
|
|
8
|
-
this.config = config;
|
|
9
|
-
this.target = target;
|
|
10
|
-
}
|
|
11
|
-
get baseURL() {
|
|
12
|
-
return this.config.version
|
|
13
|
-
? `${this.config.baseUrl}/${this.config.version}`
|
|
14
|
-
: this.config.baseUrl;
|
|
15
|
-
}
|
|
16
|
-
get path() {
|
|
17
|
-
switch (this.target) {
|
|
18
|
-
case "store-get":
|
|
19
|
-
return "/store/${id}/information";
|
|
20
|
-
case "store-list":
|
|
21
|
-
return "/store/list";
|
|
22
|
-
case "store-product-category-list":
|
|
23
|
-
return "/store/product-category-list";
|
|
24
|
-
case "store-product-collection":
|
|
25
|
-
return "/store/${id}/product-collection";
|
|
26
|
-
case "store-featured-product-list":
|
|
27
|
-
return "/store/${id}/featured-product-list";
|
|
28
|
-
default:
|
|
29
|
-
return "/store/${id}";
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
get method() {
|
|
33
|
-
return "GET";
|
|
34
|
-
}
|
|
35
|
-
get headers() {
|
|
36
|
-
let headers = SmessService.getHeaders(Accept.V1, null);
|
|
37
|
-
if (this.config.clientId) {
|
|
38
|
-
headers[SMESSHeader.ClientId] = this.config.clientId;
|
|
39
|
-
}
|
|
40
|
-
if (this.config.apiKey) {
|
|
41
|
-
headers[SMESSHeader.ApiKey] = this.config.apiKey;
|
|
42
|
-
}
|
|
43
|
-
return SmessService.filterHeaders(headers);
|
|
44
|
-
}
|
|
45
|
-
getPath(...queryParams) {
|
|
46
|
-
let definedPath = this.path;
|
|
47
|
-
const params = definedPath.match(/\$\{(.+?)\}/g);
|
|
48
|
-
params?.forEach((value, index) => {
|
|
49
|
-
definedPath = definedPath.replace(value, String(queryParams[index]));
|
|
50
|
-
});
|
|
51
|
-
return definedPath;
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
export class StoreService {
|
|
55
|
-
constructor(config) {
|
|
56
|
-
this.config = config;
|
|
57
|
-
this.$selectedStoreId = new BehaviorSubject(null);
|
|
58
|
-
// Initialize cache services for different data types
|
|
59
|
-
this.cacheService = new GenericIndexedDBService("StoreCache", "id, timestamp", (data) => data, (data) => data);
|
|
60
|
-
this.storeListCache = new GenericIndexedDBService("StoreListCache", "timestamp", (data) => data, (data) => data);
|
|
61
|
-
this.productCollectionCache = new GenericIndexedDBService("ProductCollectionCache", "storeId, timestamp", (data) => data, (data) => data);
|
|
62
|
-
this.productCategoryCache = new GenericIndexedDBService("ProductCategoryCache", "timestamp", (data) => data, (data) => data);
|
|
63
|
-
this.featuredProductCache = new GenericIndexedDBService("FeaturedProductCache", "storeId, timestamp", (data) => data, (data) => data);
|
|
64
|
-
}
|
|
65
|
-
provider(target) {
|
|
66
|
-
const targetWrapper = new StoreProvider(this.config, target);
|
|
67
|
-
return new SmessService(targetWrapper);
|
|
68
|
-
}
|
|
69
|
-
/**
|
|
70
|
-
* Set the selected store ID
|
|
71
|
-
*/
|
|
72
|
-
setSelectedStoreId(storeId) {
|
|
73
|
-
this.$selectedStoreId.next(storeId);
|
|
74
|
-
}
|
|
75
|
-
/**
|
|
76
|
-
* Get the current selected store ID
|
|
77
|
-
*/
|
|
78
|
-
get currentSelectedStoreId() {
|
|
79
|
-
return this.$selectedStoreId.value;
|
|
80
|
-
}
|
|
81
|
-
get(id) {
|
|
82
|
-
return from(this.cacheService.getOne(id)).pipe(switchMap((cachedData) => {
|
|
83
|
-
if (cachedData && this.isCacheValid(cachedData.timestamp)) {
|
|
84
|
-
// Return cached data if valid
|
|
85
|
-
return of(NetworkingUIEventWrapped.succeeded(cachedData.data));
|
|
86
|
-
}
|
|
87
|
-
// Fetch from network if no cache or expired
|
|
88
|
-
return this.provider("store-get")
|
|
89
|
-
.request(null, undefined, id)
|
|
90
|
-
.pipe(map((response) => {
|
|
91
|
-
// Cache the successful response
|
|
92
|
-
if (response.response) {
|
|
93
|
-
this.cacheService.saveOne({
|
|
94
|
-
id,
|
|
95
|
-
data: response.response,
|
|
96
|
-
timestamp: Date.now(),
|
|
97
|
-
});
|
|
98
|
-
}
|
|
99
|
-
return response;
|
|
100
|
-
}), catchError((error) => {
|
|
101
|
-
// If network fails and we have stale cache, return it
|
|
102
|
-
if (cachedData) {
|
|
103
|
-
return of(NetworkingUIEventWrapped.succeeded(cachedData.data));
|
|
104
|
-
}
|
|
105
|
-
throw error;
|
|
106
|
-
}));
|
|
107
|
-
}));
|
|
108
|
-
}
|
|
109
|
-
list() {
|
|
110
|
-
return from(this.storeListCache.getAll("store-list")).pipe(switchMap((cachedData) => {
|
|
111
|
-
if (cachedData &&
|
|
112
|
-
cachedData.length > 0 &&
|
|
113
|
-
this.isCacheValid(cachedData[0].timestamp)) {
|
|
114
|
-
return of(NetworkingUIEventWrapped.succeeded(cachedData[0].data));
|
|
115
|
-
}
|
|
116
|
-
return this.provider("store-list")
|
|
117
|
-
.request()
|
|
118
|
-
.pipe(map((response) => {
|
|
119
|
-
if (response.response) {
|
|
120
|
-
this.storeListCache.saveAll([
|
|
121
|
-
{
|
|
122
|
-
data: response.response,
|
|
123
|
-
timestamp: Date.now(),
|
|
124
|
-
},
|
|
125
|
-
], "store-list");
|
|
126
|
-
}
|
|
127
|
-
return response;
|
|
128
|
-
}), catchError((error) => {
|
|
129
|
-
if (cachedData && cachedData.length > 0) {
|
|
130
|
-
return of(NetworkingUIEventWrapped.succeeded(cachedData[0].data));
|
|
131
|
-
}
|
|
132
|
-
throw error;
|
|
133
|
-
}));
|
|
134
|
-
}));
|
|
135
|
-
}
|
|
136
|
-
productCategoryList() {
|
|
137
|
-
return from(this.productCategoryCache.getAll("product-category-list")).pipe(switchMap((cachedData) => {
|
|
138
|
-
if (cachedData &&
|
|
139
|
-
cachedData.length > 0 &&
|
|
140
|
-
this.isCacheValid(cachedData[0].timestamp)) {
|
|
141
|
-
return of(NetworkingUIEventWrapped.succeeded(cachedData[0].data));
|
|
142
|
-
}
|
|
143
|
-
return this.provider("store-product-category-list")
|
|
144
|
-
.request()
|
|
145
|
-
.pipe(map((response) => {
|
|
146
|
-
if (response.response) {
|
|
147
|
-
this.productCategoryCache.saveAll([
|
|
148
|
-
{
|
|
149
|
-
data: response.response,
|
|
150
|
-
timestamp: Date.now(),
|
|
151
|
-
},
|
|
152
|
-
], "product-category-list");
|
|
153
|
-
}
|
|
154
|
-
return response;
|
|
155
|
-
}), catchError((error) => {
|
|
156
|
-
if (cachedData && cachedData.length > 0) {
|
|
157
|
-
return of(NetworkingUIEventWrapped.succeeded(cachedData[0].data));
|
|
158
|
-
}
|
|
159
|
-
throw error;
|
|
160
|
-
}));
|
|
161
|
-
}));
|
|
162
|
-
}
|
|
163
|
-
productCollection(id, payload) {
|
|
164
|
-
const cacheKey = `${id}-${JSON.stringify(payload)}`;
|
|
165
|
-
return from(this.productCollectionCache.getOne(cacheKey)).pipe(switchMap((cachedData) => {
|
|
166
|
-
if (cachedData && this.isCacheValid(cachedData.timestamp)) {
|
|
167
|
-
return of(NetworkingUIEventWrapped.succeeded(cachedData.data));
|
|
168
|
-
}
|
|
169
|
-
return this.provider("store-product-collection")
|
|
170
|
-
.request(payload, undefined, id)
|
|
171
|
-
.pipe(map((response) => {
|
|
172
|
-
if (response.response) {
|
|
173
|
-
this.productCollectionCache.saveOne({
|
|
174
|
-
storeId: cacheKey,
|
|
175
|
-
request: payload,
|
|
176
|
-
data: response.response,
|
|
177
|
-
timestamp: Date.now(),
|
|
178
|
-
});
|
|
179
|
-
}
|
|
180
|
-
return response;
|
|
181
|
-
}), catchError((error) => {
|
|
182
|
-
if (cachedData) {
|
|
183
|
-
return of(NetworkingUIEventWrapped.succeeded(cachedData.data));
|
|
184
|
-
}
|
|
185
|
-
throw error;
|
|
186
|
-
}));
|
|
187
|
-
}));
|
|
188
|
-
}
|
|
189
|
-
featuredProductList(id) {
|
|
190
|
-
return from(this.featuredProductCache.getOne(id)).pipe(switchMap((cachedData) => {
|
|
191
|
-
if (cachedData && this.isCacheValid(cachedData.timestamp)) {
|
|
192
|
-
return of(NetworkingUIEventWrapped.succeeded(cachedData.data));
|
|
193
|
-
}
|
|
194
|
-
return this.provider("store-featured-product-list")
|
|
195
|
-
.request(null, undefined, id)
|
|
196
|
-
.pipe(map((response) => {
|
|
197
|
-
if (response.response) {
|
|
198
|
-
this.featuredProductCache.saveOne({
|
|
199
|
-
storeId: id,
|
|
200
|
-
data: response.response,
|
|
201
|
-
timestamp: Date.now(),
|
|
202
|
-
});
|
|
203
|
-
}
|
|
204
|
-
return response;
|
|
205
|
-
}), catchError((error) => {
|
|
206
|
-
if (cachedData) {
|
|
207
|
-
return of(NetworkingUIEventWrapped.succeeded(cachedData.data));
|
|
208
|
-
}
|
|
209
|
-
throw error;
|
|
210
|
-
}));
|
|
211
|
-
}));
|
|
212
|
-
}
|
|
213
|
-
// Cache management methods
|
|
214
|
-
clearCache() {
|
|
215
|
-
return Promise.all([
|
|
216
|
-
this.cacheService.clearAll(),
|
|
217
|
-
this.storeListCache.clearAll(),
|
|
218
|
-
this.productCollectionCache.clearAll(),
|
|
219
|
-
this.productCategoryCache.clearAll(),
|
|
220
|
-
this.featuredProductCache.clearAll(),
|
|
221
|
-
]).then(() => { });
|
|
222
|
-
}
|
|
223
|
-
clearStoreCache(id) {
|
|
224
|
-
return this.cacheService.delete(id);
|
|
225
|
-
}
|
|
226
|
-
clearProductCollectionCache(id) {
|
|
227
|
-
// This would need to be implemented with a more sophisticated approach
|
|
228
|
-
// to clear all product collection cache entries for a specific store
|
|
229
|
-
return Promise.resolve();
|
|
230
|
-
}
|
|
231
|
-
isCacheValid(timestamp) {
|
|
232
|
-
const CACHE_DURATION = 24 * 60 * 60 * 1000; // 24 hours for testing
|
|
233
|
-
return Date.now() - timestamp < CACHE_DURATION;
|
|
234
|
-
}
|
|
235
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import "fake-indexeddb/auto";
|
|
@@ -1,274 +0,0 @@
|
|
|
1
|
-
import "fake-indexeddb/auto";
|
|
2
|
-
import { StoreService, } from "./store.service";
|
|
3
|
-
import { NetworkingUIEventWrapped, AlertModel, } from "../types/types";
|
|
4
|
-
import { of } from "rxjs";
|
|
5
|
-
describe("StoreService", () => {
|
|
6
|
-
const config = {
|
|
7
|
-
baseUrl: "https://api.example.com",
|
|
8
|
-
isProd: false,
|
|
9
|
-
clientId: "test-client-id",
|
|
10
|
-
apiKey: "test-api-key",
|
|
11
|
-
};
|
|
12
|
-
let service;
|
|
13
|
-
beforeEach(() => {
|
|
14
|
-
service = new StoreService(config);
|
|
15
|
-
});
|
|
16
|
-
afterEach(async () => {
|
|
17
|
-
await service.clearCache();
|
|
18
|
-
});
|
|
19
|
-
it("should create service instance", () => {
|
|
20
|
-
expect(service).toBeDefined();
|
|
21
|
-
});
|
|
22
|
-
it("should get store from network when no cache", async () => {
|
|
23
|
-
const response = { data: { id: "1", name: "Store" } };
|
|
24
|
-
const mockProvider = {
|
|
25
|
-
request: jest
|
|
26
|
-
.fn()
|
|
27
|
-
.mockReturnValue(of(NetworkingUIEventWrapped.succeeded(response))),
|
|
28
|
-
};
|
|
29
|
-
jest
|
|
30
|
-
.spyOn(service, "provider")
|
|
31
|
-
.mockReturnValue(mockProvider);
|
|
32
|
-
const result = await service.get("1").toPromise();
|
|
33
|
-
expect(result?.hasSuccess).toBe(true);
|
|
34
|
-
expect(result?.response).toEqual(response);
|
|
35
|
-
});
|
|
36
|
-
it("should get store from cache when available", async () => {
|
|
37
|
-
const response = { data: { id: "1", name: "Store" } };
|
|
38
|
-
// First call to populate cache
|
|
39
|
-
const mockProvider1 = {
|
|
40
|
-
request: jest
|
|
41
|
-
.fn()
|
|
42
|
-
.mockReturnValue(of(NetworkingUIEventWrapped.succeeded(response))),
|
|
43
|
-
};
|
|
44
|
-
jest
|
|
45
|
-
.spyOn(service, "provider")
|
|
46
|
-
.mockReturnValue(mockProvider1);
|
|
47
|
-
await service.get("1").toPromise();
|
|
48
|
-
// Second call should use cache (even if network fails)
|
|
49
|
-
const mockProvider2 = {
|
|
50
|
-
request: jest
|
|
51
|
-
.fn()
|
|
52
|
-
.mockReturnValue(of(NetworkingUIEventWrapped.failed(AlertModel.default()))),
|
|
53
|
-
};
|
|
54
|
-
jest
|
|
55
|
-
.spyOn(service, "provider")
|
|
56
|
-
.mockReturnValue(mockProvider2);
|
|
57
|
-
const result = await service.get("1").toPromise();
|
|
58
|
-
expect(result?.hasSuccess).toBe(true);
|
|
59
|
-
expect(result?.response).toEqual(response);
|
|
60
|
-
});
|
|
61
|
-
it("should handle network error when no cache", async () => {
|
|
62
|
-
const mockProvider = {
|
|
63
|
-
request: jest
|
|
64
|
-
.fn()
|
|
65
|
-
.mockReturnValue(of(NetworkingUIEventWrapped.failed(AlertModel.default()))),
|
|
66
|
-
};
|
|
67
|
-
jest
|
|
68
|
-
.spyOn(service, "provider")
|
|
69
|
-
.mockReturnValue(mockProvider);
|
|
70
|
-
const result = await service.get("1").toPromise();
|
|
71
|
-
expect(result?.hasFailed).toBe(true);
|
|
72
|
-
expect(result?.alertModel).toBeInstanceOf(AlertModel);
|
|
73
|
-
});
|
|
74
|
-
it("should get store list from network when no cache", async () => {
|
|
75
|
-
const response = { data: [{ id: "1", name: "Store" }] };
|
|
76
|
-
const mockProvider = {
|
|
77
|
-
request: jest
|
|
78
|
-
.fn()
|
|
79
|
-
.mockReturnValue(of(NetworkingUIEventWrapped.succeeded(response))),
|
|
80
|
-
};
|
|
81
|
-
jest
|
|
82
|
-
.spyOn(service, "provider")
|
|
83
|
-
.mockReturnValue(mockProvider);
|
|
84
|
-
const result = await service.list().toPromise();
|
|
85
|
-
expect(result?.hasSuccess).toBe(true);
|
|
86
|
-
expect(result?.response).toEqual(response);
|
|
87
|
-
});
|
|
88
|
-
it("should get store list from cache when available", async () => {
|
|
89
|
-
const response = { data: [{ id: "1", name: "Store" }] };
|
|
90
|
-
// First call to populate cache
|
|
91
|
-
const mockProvider1 = {
|
|
92
|
-
request: jest
|
|
93
|
-
.fn()
|
|
94
|
-
.mockReturnValue(of(NetworkingUIEventWrapped.succeeded(response))),
|
|
95
|
-
};
|
|
96
|
-
jest
|
|
97
|
-
.spyOn(service, "provider")
|
|
98
|
-
.mockReturnValue(mockProvider1);
|
|
99
|
-
await service.list().toPromise();
|
|
100
|
-
// Second call should use cache
|
|
101
|
-
const mockProvider2 = {
|
|
102
|
-
request: jest
|
|
103
|
-
.fn()
|
|
104
|
-
.mockReturnValue(of(NetworkingUIEventWrapped.failed(AlertModel.default()))),
|
|
105
|
-
};
|
|
106
|
-
jest
|
|
107
|
-
.spyOn(service, "provider")
|
|
108
|
-
.mockReturnValue(mockProvider2);
|
|
109
|
-
const result = await service.list().toPromise();
|
|
110
|
-
expect(result?.hasSuccess).toBe(true);
|
|
111
|
-
expect(result?.response).toEqual(response);
|
|
112
|
-
});
|
|
113
|
-
it("should get product category list from network when no cache", async () => {
|
|
114
|
-
const response = { data: [{ id: "cat1", name: "Category" }] };
|
|
115
|
-
const mockProvider = {
|
|
116
|
-
request: jest
|
|
117
|
-
.fn()
|
|
118
|
-
.mockReturnValue(of(NetworkingUIEventWrapped.succeeded(response))),
|
|
119
|
-
};
|
|
120
|
-
jest
|
|
121
|
-
.spyOn(service, "provider")
|
|
122
|
-
.mockReturnValue(mockProvider);
|
|
123
|
-
const result = await service.productCategoryList().toPromise();
|
|
124
|
-
expect(result?.hasSuccess).toBe(true);
|
|
125
|
-
expect(result?.response).toEqual(response);
|
|
126
|
-
});
|
|
127
|
-
it("should get product category list from cache when available", async () => {
|
|
128
|
-
const response = { data: [{ id: "cat1", name: "Category" }] };
|
|
129
|
-
// First call to populate cache
|
|
130
|
-
const mockProvider1 = {
|
|
131
|
-
request: jest
|
|
132
|
-
.fn()
|
|
133
|
-
.mockReturnValue(of(NetworkingUIEventWrapped.succeeded(response))),
|
|
134
|
-
};
|
|
135
|
-
jest
|
|
136
|
-
.spyOn(service, "provider")
|
|
137
|
-
.mockReturnValue(mockProvider1);
|
|
138
|
-
await service.productCategoryList().toPromise();
|
|
139
|
-
// Second call should use cache
|
|
140
|
-
const mockProvider2 = {
|
|
141
|
-
request: jest
|
|
142
|
-
.fn()
|
|
143
|
-
.mockReturnValue(of(NetworkingUIEventWrapped.failed(AlertModel.default()))),
|
|
144
|
-
};
|
|
145
|
-
jest
|
|
146
|
-
.spyOn(service, "provider")
|
|
147
|
-
.mockReturnValue(mockProvider2);
|
|
148
|
-
const result = await service.productCategoryList().toPromise();
|
|
149
|
-
expect(result?.hasSuccess).toBe(true);
|
|
150
|
-
expect(result?.response).toEqual(response);
|
|
151
|
-
});
|
|
152
|
-
it("should get product collection from network when no cache", async () => {
|
|
153
|
-
const response = { data: [{ id: "prod1", name: "Product" }] };
|
|
154
|
-
const payload = { page: 1, per_page: 10 };
|
|
155
|
-
const mockProvider = {
|
|
156
|
-
request: jest
|
|
157
|
-
.fn()
|
|
158
|
-
.mockReturnValue(of(NetworkingUIEventWrapped.succeeded(response))),
|
|
159
|
-
};
|
|
160
|
-
jest
|
|
161
|
-
.spyOn(service, "provider")
|
|
162
|
-
.mockReturnValue(mockProvider);
|
|
163
|
-
const result = await service.productCollection("1", payload).toPromise();
|
|
164
|
-
expect(result?.hasSuccess).toBe(true);
|
|
165
|
-
expect(result?.response).toEqual(response);
|
|
166
|
-
});
|
|
167
|
-
it("should get product collection from cache when available", async () => {
|
|
168
|
-
const response = { data: [{ id: "prod1", name: "Product" }] };
|
|
169
|
-
const payload = { page: 1, per_page: 10 };
|
|
170
|
-
// First call to populate cache
|
|
171
|
-
const mockProvider1 = {
|
|
172
|
-
request: jest
|
|
173
|
-
.fn()
|
|
174
|
-
.mockReturnValue(of(NetworkingUIEventWrapped.succeeded(response))),
|
|
175
|
-
};
|
|
176
|
-
jest
|
|
177
|
-
.spyOn(service, "provider")
|
|
178
|
-
.mockReturnValue(mockProvider1);
|
|
179
|
-
await service.productCollection("1", payload).toPromise();
|
|
180
|
-
// Second call should use cache
|
|
181
|
-
const mockProvider2 = {
|
|
182
|
-
request: jest
|
|
183
|
-
.fn()
|
|
184
|
-
.mockReturnValue(of(NetworkingUIEventWrapped.failed(AlertModel.default()))),
|
|
185
|
-
};
|
|
186
|
-
jest
|
|
187
|
-
.spyOn(service, "provider")
|
|
188
|
-
.mockReturnValue(mockProvider2);
|
|
189
|
-
const result = await service.productCollection("1", payload).toPromise();
|
|
190
|
-
expect(result?.hasSuccess).toBe(true);
|
|
191
|
-
expect(result?.response).toEqual(response);
|
|
192
|
-
});
|
|
193
|
-
it("should get featured product list from network when no cache", async () => {
|
|
194
|
-
const response = {
|
|
195
|
-
data: [{ id: "feat1", name: "Featured" }],
|
|
196
|
-
};
|
|
197
|
-
const mockProvider = {
|
|
198
|
-
request: jest
|
|
199
|
-
.fn()
|
|
200
|
-
.mockReturnValue(of(NetworkingUIEventWrapped.succeeded(response))),
|
|
201
|
-
};
|
|
202
|
-
jest
|
|
203
|
-
.spyOn(service, "provider")
|
|
204
|
-
.mockReturnValue(mockProvider);
|
|
205
|
-
const result = await service.featuredProductList("1").toPromise();
|
|
206
|
-
expect(result?.hasSuccess).toBe(true);
|
|
207
|
-
expect(result?.response).toEqual(response);
|
|
208
|
-
});
|
|
209
|
-
it("should get featured product list from cache when available", async () => {
|
|
210
|
-
const response = {
|
|
211
|
-
data: [{ id: "feat1", name: "Featured" }],
|
|
212
|
-
};
|
|
213
|
-
// First call to populate cache
|
|
214
|
-
const mockProvider1 = {
|
|
215
|
-
request: jest
|
|
216
|
-
.fn()
|
|
217
|
-
.mockReturnValue(of(NetworkingUIEventWrapped.succeeded(response))),
|
|
218
|
-
};
|
|
219
|
-
jest
|
|
220
|
-
.spyOn(service, "provider")
|
|
221
|
-
.mockReturnValue(mockProvider1);
|
|
222
|
-
await service.featuredProductList("1").toPromise();
|
|
223
|
-
// Second call should use cache
|
|
224
|
-
const mockProvider2 = {
|
|
225
|
-
request: jest
|
|
226
|
-
.fn()
|
|
227
|
-
.mockReturnValue(of(NetworkingUIEventWrapped.failed(AlertModel.default()))),
|
|
228
|
-
};
|
|
229
|
-
jest
|
|
230
|
-
.spyOn(service, "provider")
|
|
231
|
-
.mockReturnValue(mockProvider2);
|
|
232
|
-
const result = await service.featuredProductList("1").toPromise();
|
|
233
|
-
expect(result?.hasSuccess).toBe(true);
|
|
234
|
-
expect(result?.response).toEqual(response);
|
|
235
|
-
});
|
|
236
|
-
it("should clear cache successfully", async () => {
|
|
237
|
-
const response = { data: { id: "1", name: "Store" } };
|
|
238
|
-
const mockProvider = {
|
|
239
|
-
request: jest
|
|
240
|
-
.fn()
|
|
241
|
-
.mockReturnValue(of(NetworkingUIEventWrapped.succeeded(response))),
|
|
242
|
-
};
|
|
243
|
-
jest
|
|
244
|
-
.spyOn(service, "provider")
|
|
245
|
-
.mockReturnValue(mockProvider);
|
|
246
|
-
// Populate cache
|
|
247
|
-
await service.get("1").toPromise();
|
|
248
|
-
// Clear cache
|
|
249
|
-
await service.clearCache();
|
|
250
|
-
// Should call network again after cache clear
|
|
251
|
-
const result = await service.get("1").toPromise();
|
|
252
|
-
expect(result?.hasSuccess).toBe(true);
|
|
253
|
-
expect(mockProvider.request).toHaveBeenCalledTimes(2); // Once before clear, once after
|
|
254
|
-
});
|
|
255
|
-
it("should clear specific store cache", async () => {
|
|
256
|
-
const response = { data: { id: "1", name: "Store" } };
|
|
257
|
-
const mockProvider = {
|
|
258
|
-
request: jest
|
|
259
|
-
.fn()
|
|
260
|
-
.mockReturnValue(of(NetworkingUIEventWrapped.succeeded(response))),
|
|
261
|
-
};
|
|
262
|
-
jest
|
|
263
|
-
.spyOn(service, "provider")
|
|
264
|
-
.mockReturnValue(mockProvider);
|
|
265
|
-
// Populate cache for store '1'
|
|
266
|
-
await service.get("1").toPromise();
|
|
267
|
-
// Clear specific store cache
|
|
268
|
-
await service.clearStoreCache("1");
|
|
269
|
-
// Should call network again after cache clear
|
|
270
|
-
const result = await service.get("1").toPromise();
|
|
271
|
-
expect(result?.hasSuccess).toBe(true);
|
|
272
|
-
expect(mockProvider.request).toHaveBeenCalledTimes(2);
|
|
273
|
-
});
|
|
274
|
-
});
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
import { ProviderType, NetworkingConfig, NetworkingUIEventWrapped, HttpResponse } from "../types/types";
|
|
2
|
-
import { SmessService } from "./smess.service";
|
|
3
|
-
import { BehaviorSubject, Observable } from "rxjs";
|
|
4
|
-
export type StorefrontCartTarget = "cart-add-item" | "cart-get" | "cart-update-item" | "cart-remove-item" | "cart-calculate-shipping";
|
|
5
|
-
export type DeliveryType = "pickup" | "delivery";
|
|
6
|
-
export interface AddToCartRequest {
|
|
7
|
-
productId: number;
|
|
8
|
-
quantity: number;
|
|
9
|
-
sessionToken?: string;
|
|
10
|
-
}
|
|
11
|
-
export interface UpdateCartItemRequest {
|
|
12
|
-
quantity: number;
|
|
13
|
-
}
|
|
14
|
-
export interface CalculateShippingRequest {
|
|
15
|
-
postalCode: string;
|
|
16
|
-
deliveryType: DeliveryType;
|
|
17
|
-
}
|
|
18
|
-
export declare class StorefrontCartProvider implements ProviderType {
|
|
19
|
-
private readonly config;
|
|
20
|
-
private readonly target;
|
|
21
|
-
private readonly $sessionToken;
|
|
22
|
-
private readonly $authToken;
|
|
23
|
-
constructor(config: NetworkingConfig, target: StorefrontCartTarget, $sessionToken: BehaviorSubject<string | null>, $authToken: BehaviorSubject<string | null>);
|
|
24
|
-
get baseURL(): string;
|
|
25
|
-
get path(): string;
|
|
26
|
-
get method(): string;
|
|
27
|
-
get headers(): Record<string, string>;
|
|
28
|
-
getPath(...queryParams: unknown[]): string;
|
|
29
|
-
}
|
|
30
|
-
export declare class StorefrontCartService {
|
|
31
|
-
private readonly config;
|
|
32
|
-
private readonly $authToken;
|
|
33
|
-
readonly $sessionToken: BehaviorSubject<string | null>;
|
|
34
|
-
constructor(config: NetworkingConfig, $authToken: BehaviorSubject<string | null>);
|
|
35
|
-
provider(target: StorefrontCartTarget): SmessService<StorefrontCartProvider>;
|
|
36
|
-
/**
|
|
37
|
-
* Add item to cart
|
|
38
|
-
* POST /storefront/cart/items
|
|
39
|
-
*/
|
|
40
|
-
addToCart(payload: AddToCartRequest): Observable<NetworkingUIEventWrapped<HttpResponse>>;
|
|
41
|
-
/**
|
|
42
|
-
* Get current cart
|
|
43
|
-
* GET /storefront/cart
|
|
44
|
-
*/
|
|
45
|
-
getCart(): Observable<NetworkingUIEventWrapped<HttpResponse>>;
|
|
46
|
-
/**
|
|
47
|
-
* Update cart item quantity
|
|
48
|
-
* PUT /storefront/cart/items/{cartItemId}
|
|
49
|
-
*/
|
|
50
|
-
updateCartItem(cartItemId: number, payload: UpdateCartItemRequest): Observable<NetworkingUIEventWrapped<HttpResponse>>;
|
|
51
|
-
/**
|
|
52
|
-
* Remove cart item
|
|
53
|
-
* DELETE /storefront/cart/items/{cartItemId}
|
|
54
|
-
*/
|
|
55
|
-
removeCartItem(cartItemId: number): Observable<NetworkingUIEventWrapped<HttpResponse>>;
|
|
56
|
-
/**
|
|
57
|
-
* Calculate shipping costs
|
|
58
|
-
* POST /storefront/cart/calculate-shipping
|
|
59
|
-
*/
|
|
60
|
-
calculateShipping(payload: CalculateShippingRequest): Observable<NetworkingUIEventWrapped<HttpResponse>>;
|
|
61
|
-
/**
|
|
62
|
-
* Set the session token
|
|
63
|
-
*/
|
|
64
|
-
setSessionToken(token: string | null): void;
|
|
65
|
-
/**
|
|
66
|
-
* Get the current session token
|
|
67
|
-
*/
|
|
68
|
-
get currentSessionToken(): string | null;
|
|
69
|
-
/**
|
|
70
|
-
* Extract and store session token from cart responses
|
|
71
|
-
*/
|
|
72
|
-
private extractAndStoreSessionToken;
|
|
73
|
-
}
|