@smess/networking 1.2.0 → 2.1.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.
Files changed (317) hide show
  1. package/CHANGELOG.md +221 -0
  2. package/README.md +178 -111
  3. package/dist/core/body.d.ts +10 -0
  4. package/dist/core/body.d.ts.map +1 -0
  5. package/dist/core/body.js +22 -0
  6. package/dist/core/body.js.map +1 -0
  7. package/dist/core/client.d.ts +74 -0
  8. package/dist/core/client.d.ts.map +1 -0
  9. package/dist/core/client.js +124 -0
  10. package/dist/core/client.js.map +1 -0
  11. package/dist/core/decoders.d.ts +8 -0
  12. package/dist/core/decoders.d.ts.map +1 -0
  13. package/dist/core/decoders.js +26 -0
  14. package/dist/core/decoders.js.map +1 -0
  15. package/dist/core/endpoint.d.ts +69 -0
  16. package/dist/core/endpoint.d.ts.map +1 -0
  17. package/dist/core/endpoint.js +6 -0
  18. package/dist/core/endpoint.js.map +1 -0
  19. package/dist/core/hosts.d.ts +27 -0
  20. package/dist/core/hosts.d.ts.map +1 -0
  21. package/dist/core/hosts.js +24 -0
  22. package/dist/core/hosts.js.map +1 -0
  23. package/dist/core/pagination.d.ts +33 -0
  24. package/dist/core/pagination.d.ts.map +1 -0
  25. package/dist/core/pagination.js +23 -0
  26. package/dist/core/pagination.js.map +1 -0
  27. package/dist/core/pipeline.d.ts +25 -0
  28. package/dist/core/pipeline.d.ts.map +1 -0
  29. package/dist/core/pipeline.js +12 -0
  30. package/dist/core/pipeline.js.map +1 -0
  31. package/dist/core/retry.d.ts +18 -0
  32. package/dist/core/retry.d.ts.map +1 -0
  33. package/dist/core/retry.js +47 -0
  34. package/dist/core/retry.js.map +1 -0
  35. package/dist/core/transport.d.ts +30 -0
  36. package/dist/core/transport.d.ts.map +1 -0
  37. package/dist/core/transport.js +73 -0
  38. package/dist/core/transport.js.map +1 -0
  39. package/dist/core/types.d.ts +24 -0
  40. package/dist/core/types.d.ts.map +1 -0
  41. package/dist/core/types.js +3 -0
  42. package/dist/core/types.js.map +1 -0
  43. package/dist/core/url.d.ts +15 -0
  44. package/dist/core/url.d.ts.map +1 -0
  45. package/dist/core/url.js +46 -0
  46. package/dist/core/url.js.map +1 -0
  47. package/dist/errors/parse-error-body.d.ts +20 -0
  48. package/dist/errors/parse-error-body.d.ts.map +1 -0
  49. package/dist/errors/parse-error-body.js +73 -0
  50. package/dist/errors/parse-error-body.js.map +1 -0
  51. package/dist/errors/smess-api-error.d.ts +70 -0
  52. package/dist/errors/smess-api-error.d.ts.map +1 -0
  53. package/dist/errors/smess-api-error.js +84 -0
  54. package/dist/errors/smess-api-error.js.map +1 -0
  55. package/dist/index.d.ts +27 -25
  56. package/dist/index.d.ts.map +1 -0
  57. package/dist/index.js +15 -29
  58. package/dist/index.js.map +1 -0
  59. package/dist/modules/authentication/index.d.ts +89 -0
  60. package/dist/modules/authentication/index.d.ts.map +1 -0
  61. package/dist/modules/authentication/index.js +128 -0
  62. package/dist/modules/authentication/index.js.map +1 -0
  63. package/dist/modules/campaign/index.d.ts +212 -0
  64. package/dist/modules/campaign/index.d.ts.map +1 -0
  65. package/dist/modules/campaign/index.js +193 -0
  66. package/dist/modules/campaign/index.js.map +1 -0
  67. package/dist/modules/campaign/types.d.ts +562 -0
  68. package/dist/modules/campaign/types.d.ts.map +1 -0
  69. package/dist/modules/campaign/types.js +2 -0
  70. package/dist/modules/campaign/types.js.map +1 -0
  71. package/dist/modules/danara/index.d.ts +153 -0
  72. package/dist/modules/danara/index.d.ts.map +1 -0
  73. package/dist/modules/danara/index.js +144 -0
  74. package/dist/modules/danara/index.js.map +1 -0
  75. package/dist/modules/danara/types.d.ts +479 -0
  76. package/dist/modules/danara/types.d.ts.map +1 -0
  77. package/dist/modules/danara/types.js +2 -0
  78. package/dist/modules/danara/types.js.map +1 -0
  79. package/dist/modules/messenger/index.d.ts +92 -0
  80. package/dist/modules/messenger/index.d.ts.map +1 -0
  81. package/dist/modules/messenger/index.js +44 -0
  82. package/dist/modules/messenger/index.js.map +1 -0
  83. package/dist/modules/smeup-file/index.d.ts +27 -0
  84. package/dist/modules/smeup-file/index.d.ts.map +1 -0
  85. package/dist/modules/smeup-file/index.js +17 -0
  86. package/dist/modules/smeup-file/index.js.map +1 -0
  87. package/dist/modules/sso/index.d.ts +40 -0
  88. package/dist/modules/sso/index.d.ts.map +1 -0
  89. package/dist/modules/sso/index.js +41 -0
  90. package/dist/modules/sso/index.js.map +1 -0
  91. package/dist/rx/index.d.ts +11 -0
  92. package/dist/rx/index.d.ts.map +1 -0
  93. package/dist/rx/index.js +20 -0
  94. package/dist/rx/index.js.map +1 -0
  95. package/dist/session/auth-middleware.d.ts +27 -0
  96. package/dist/session/auth-middleware.d.ts.map +1 -0
  97. package/dist/session/auth-middleware.js +122 -0
  98. package/dist/session/auth-middleware.js.map +1 -0
  99. package/dist/session/jwt.d.ts +20 -0
  100. package/dist/session/jwt.d.ts.map +1 -0
  101. package/dist/session/jwt.js +25 -0
  102. package/dist/session/jwt.js.map +1 -0
  103. package/dist/session/stores.d.ts +19 -0
  104. package/dist/session/stores.d.ts.map +1 -0
  105. package/dist/session/stores.js +103 -0
  106. package/dist/session/stores.js.map +1 -0
  107. package/dist/session/types.d.ts +28 -0
  108. package/dist/session/types.d.ts.map +1 -0
  109. package/dist/session/types.js +2 -0
  110. package/dist/session/types.js.map +1 -0
  111. package/package.json +84 -30
  112. package/dist/core/axios.d.ts +0 -51
  113. package/dist/core/axios.js +0 -65
  114. package/dist/core/axios.observable.d.ts +0 -11
  115. package/dist/core/axios.observable.js +0 -58
  116. package/dist/core/base.provider.advanced.test.d.ts +0 -1
  117. package/dist/core/base.provider.advanced.test.js +0 -29
  118. package/dist/core/base.provider.d.ts +0 -15
  119. package/dist/core/base.provider.js +0 -13
  120. package/dist/core/base.provider.test.d.ts +0 -1
  121. package/dist/core/base.provider.test.js +0 -36
  122. package/dist/core/base.service.wrapper.advanced.test.d.ts +0 -1
  123. package/dist/core/base.service.wrapper.advanced.test.js +0 -39
  124. package/dist/core/base.service.wrapper.d.ts +0 -7
  125. package/dist/core/base.service.wrapper.js +0 -11
  126. package/dist/core/base.service.wrapper.test.d.ts +0 -1
  127. package/dist/core/base.service.wrapper.test.js +0 -25
  128. package/dist/core/rx.http.service.d.ts +0 -51
  129. package/dist/core/rx.http.service.js +0 -65
  130. package/dist/services/auth.service.d.ts +0 -65
  131. package/dist/services/auth.service.js +0 -197
  132. package/dist/services/auth.service.test.d.ts +0 -1
  133. package/dist/services/auth.service.test.js +0 -334
  134. package/dist/services/cache.service.d.ts +0 -31
  135. package/dist/services/cache.service.js +0 -77
  136. package/dist/services/cache.service.test.d.ts +0 -1
  137. package/dist/services/cache.service.test.js +0 -88
  138. package/dist/services/customer.service.d.ts +0 -211
  139. package/dist/services/customer.service.js +0 -128
  140. package/dist/services/customer.service.test.d.ts +0 -1
  141. package/dist/services/customer.service.test.js +0 -430
  142. package/dist/services/employee.service.d.ts +0 -73
  143. package/dist/services/employee.service.js +0 -74
  144. package/dist/services/employee.service.test.d.ts +0 -1
  145. package/dist/services/employee.service.test.js +0 -127
  146. package/dist/services/logger.service.d.ts +0 -31
  147. package/dist/services/logger.service.js +0 -93
  148. package/dist/services/logger.service.test.d.ts +0 -1
  149. package/dist/services/logger.service.test.js +0 -31
  150. package/dist/services/order.service.d.ts +0 -73
  151. package/dist/services/order.service.js +0 -97
  152. package/dist/services/order.service.test.d.ts +0 -1
  153. package/dist/services/order.service.test.js +0 -163
  154. package/dist/services/product.service.d.ts +0 -21
  155. package/dist/services/product.service.js +0 -42
  156. package/dist/services/product.service.test.d.ts +0 -1
  157. package/dist/services/product.service.test.js +0 -61
  158. package/dist/services/smess.service.d.ts +0 -36
  159. package/dist/services/smess.service.js +0 -128
  160. package/dist/services/smess.service.test.d.ts +0 -1
  161. package/dist/services/smess.service.test.js +0 -103
  162. package/dist/services/store.cart.service.d.ts +0 -158
  163. package/dist/services/store.cart.service.js +0 -177
  164. package/dist/services/store.cart.service.test.d.ts +0 -1
  165. package/dist/services/store.cart.service.test.js +0 -394
  166. package/dist/services/store.product.service.d.ts +0 -124
  167. package/dist/services/store.product.service.js +0 -102
  168. package/dist/services/store.product.service.test.d.ts +0 -1
  169. package/dist/services/store.product.service.test.js +0 -319
  170. package/dist/services/store.service.d.ts +0 -79
  171. package/dist/services/store.service.js +0 -235
  172. package/dist/services/store.service.test.d.ts +0 -1
  173. package/dist/services/store.service.test.js +0 -274
  174. package/dist/services/storefront.cart.service.d.ts +0 -73
  175. package/dist/services/storefront.cart.service.js +0 -167
  176. package/dist/services/storefront.cart.service.test.d.ts +0 -1
  177. package/dist/services/storefront.cart.service.test.js +0 -211
  178. package/dist/services/storefront.checkout.service.d.ts +0 -62
  179. package/dist/services/storefront.checkout.service.js +0 -75
  180. package/dist/services/storefront.checkout.service.test.d.ts +0 -1
  181. package/dist/services/storefront.checkout.service.test.js +0 -158
  182. package/dist/services/storefront.customer.metadata.service.d.ts +0 -91
  183. package/dist/services/storefront.customer.metadata.service.js +0 -225
  184. package/dist/services/storefront.customer.metadata.service.test.d.ts +0 -1
  185. package/dist/services/storefront.customer.metadata.service.test.js +0 -271
  186. package/dist/services/storefront.order.service.d.ts +0 -45
  187. package/dist/services/storefront.order.service.js +0 -99
  188. package/dist/services/storefront.order.service.test.d.ts +0 -1
  189. package/dist/services/storefront.order.service.test.js +0 -158
  190. package/dist/services/storefront.product.service.d.ts +0 -52
  191. package/dist/services/storefront.product.service.js +0 -75
  192. package/dist/services/storefront.product.service.test.d.ts +0 -1
  193. package/dist/services/storefront.product.service.test.js +0 -120
  194. package/dist/services/storefront.store.service.d.ts +0 -54
  195. package/dist/services/storefront.store.service.js +0 -142
  196. package/dist/services/storefront.store.service.test.d.ts +0 -1
  197. package/dist/services/storefront.store.service.test.js +0 -90
  198. package/dist/services/user.service.d.ts +0 -16
  199. package/dist/services/user.service.js +0 -37
  200. package/dist/services/user.service.test.d.ts +0 -1
  201. package/dist/services/user.service.test.js +0 -52
  202. package/dist/services/utils/withAuthReset.d.ts +0 -3
  203. package/dist/services/utils/withAuthReset.js +0 -8
  204. package/dist/src/core/axios.d.ts +0 -51
  205. package/dist/src/core/axios.js +0 -65
  206. package/dist/src/core/axios.observable.d.ts +0 -11
  207. package/dist/src/core/axios.observable.js +0 -58
  208. package/dist/src/core/base.provider.advanced.test.d.ts +0 -1
  209. package/dist/src/core/base.provider.advanced.test.js +0 -29
  210. package/dist/src/core/base.provider.d.ts +0 -15
  211. package/dist/src/core/base.provider.js +0 -13
  212. package/dist/src/core/base.provider.test.d.ts +0 -1
  213. package/dist/src/core/base.provider.test.js +0 -36
  214. package/dist/src/core/base.service.wrapper.advanced.test.d.ts +0 -1
  215. package/dist/src/core/base.service.wrapper.advanced.test.js +0 -39
  216. package/dist/src/core/base.service.wrapper.d.ts +0 -7
  217. package/dist/src/core/base.service.wrapper.js +0 -11
  218. package/dist/src/core/base.service.wrapper.test.d.ts +0 -1
  219. package/dist/src/core/base.service.wrapper.test.js +0 -25
  220. package/dist/src/core/rx.http.service.d.ts +0 -51
  221. package/dist/src/core/rx.http.service.js +0 -65
  222. package/dist/src/index.d.ts +0 -25
  223. package/dist/src/index.js +0 -29
  224. package/dist/src/services/auth.service.d.ts +0 -65
  225. package/dist/src/services/auth.service.js +0 -197
  226. package/dist/src/services/auth.service.test.d.ts +0 -1
  227. package/dist/src/services/auth.service.test.js +0 -334
  228. package/dist/src/services/cache.service.d.ts +0 -31
  229. package/dist/src/services/cache.service.js +0 -77
  230. package/dist/src/services/cache.service.test.d.ts +0 -1
  231. package/dist/src/services/cache.service.test.js +0 -88
  232. package/dist/src/services/customer.service.d.ts +0 -199
  233. package/dist/src/services/customer.service.js +0 -114
  234. package/dist/src/services/customer.service.test.d.ts +0 -1
  235. package/dist/src/services/customer.service.test.js +0 -430
  236. package/dist/src/services/employee.service.d.ts +0 -73
  237. package/dist/src/services/employee.service.js +0 -74
  238. package/dist/src/services/employee.service.test.d.ts +0 -1
  239. package/dist/src/services/employee.service.test.js +0 -127
  240. package/dist/src/services/logger.service.d.ts +0 -31
  241. package/dist/src/services/logger.service.js +0 -93
  242. package/dist/src/services/logger.service.test.d.ts +0 -1
  243. package/dist/src/services/logger.service.test.js +0 -31
  244. package/dist/src/services/order.service.d.ts +0 -73
  245. package/dist/src/services/order.service.js +0 -97
  246. package/dist/src/services/order.service.test.d.ts +0 -1
  247. package/dist/src/services/order.service.test.js +0 -163
  248. package/dist/src/services/product.service.d.ts +0 -21
  249. package/dist/src/services/product.service.js +0 -42
  250. package/dist/src/services/product.service.test.d.ts +0 -1
  251. package/dist/src/services/product.service.test.js +0 -61
  252. package/dist/src/services/smess.service.d.ts +0 -36
  253. package/dist/src/services/smess.service.js +0 -128
  254. package/dist/src/services/smess.service.test.d.ts +0 -1
  255. package/dist/src/services/smess.service.test.js +0 -103
  256. package/dist/src/services/store.cart.service.d.ts +0 -158
  257. package/dist/src/services/store.cart.service.js +0 -177
  258. package/dist/src/services/store.cart.service.test.d.ts +0 -1
  259. package/dist/src/services/store.cart.service.test.js +0 -394
  260. package/dist/src/services/store.product.service.d.ts +0 -124
  261. package/dist/src/services/store.product.service.js +0 -102
  262. package/dist/src/services/store.product.service.test.d.ts +0 -1
  263. package/dist/src/services/store.product.service.test.js +0 -319
  264. package/dist/src/services/store.service.d.ts +0 -79
  265. package/dist/src/services/store.service.js +0 -235
  266. package/dist/src/services/store.service.test.d.ts +0 -1
  267. package/dist/src/services/store.service.test.js +0 -274
  268. package/dist/src/services/storefront.cart.service.d.ts +0 -73
  269. package/dist/src/services/storefront.cart.service.js +0 -167
  270. package/dist/src/services/storefront.cart.service.test.d.ts +0 -1
  271. package/dist/src/services/storefront.cart.service.test.js +0 -211
  272. package/dist/src/services/storefront.checkout.service.d.ts +0 -62
  273. package/dist/src/services/storefront.checkout.service.js +0 -75
  274. package/dist/src/services/storefront.checkout.service.test.d.ts +0 -1
  275. package/dist/src/services/storefront.checkout.service.test.js +0 -158
  276. package/dist/src/services/storefront.customer.metadata.service.d.ts +0 -91
  277. package/dist/src/services/storefront.customer.metadata.service.js +0 -225
  278. package/dist/src/services/storefront.customer.metadata.service.test.d.ts +0 -1
  279. package/dist/src/services/storefront.customer.metadata.service.test.js +0 -271
  280. package/dist/src/services/storefront.order.service.d.ts +0 -45
  281. package/dist/src/services/storefront.order.service.js +0 -99
  282. package/dist/src/services/storefront.order.service.test.d.ts +0 -1
  283. package/dist/src/services/storefront.order.service.test.js +0 -158
  284. package/dist/src/services/storefront.product.service.d.ts +0 -52
  285. package/dist/src/services/storefront.product.service.js +0 -75
  286. package/dist/src/services/storefront.product.service.test.d.ts +0 -1
  287. package/dist/src/services/storefront.product.service.test.js +0 -120
  288. package/dist/src/services/storefront.store.service.d.ts +0 -52
  289. package/dist/src/services/storefront.store.service.js +0 -140
  290. package/dist/src/services/storefront.store.service.test.d.ts +0 -1
  291. package/dist/src/services/storefront.store.service.test.js +0 -90
  292. package/dist/src/services/user.service.d.ts +0 -16
  293. package/dist/src/services/user.service.js +0 -37
  294. package/dist/src/services/user.service.test.d.ts +0 -1
  295. package/dist/src/services/user.service.test.js +0 -52
  296. package/dist/src/services/utils/withAuthReset.d.ts +0 -3
  297. package/dist/src/services/utils/withAuthReset.js +0 -8
  298. package/dist/src/types/types.d.ts +0 -93
  299. package/dist/src/types/types.js +0 -82
  300. package/dist/src/types/types.test.d.ts +0 -1
  301. package/dist/src/types/types.test.js +0 -25
  302. package/dist/src/utils/cache-import.d.ts +0 -3
  303. package/dist/src/utils/cache-import.js +0 -2
  304. package/dist/src/utils/networking-import.d.ts +0 -4
  305. package/dist/src/utils/networking-import.js +0 -3
  306. package/dist/src/utils/rxjs-import.d.ts +0 -5
  307. package/dist/src/utils/rxjs-import.js +0 -5
  308. package/dist/types/types.d.ts +0 -96
  309. package/dist/types/types.js +0 -82
  310. package/dist/types/types.test.d.ts +0 -1
  311. package/dist/types/types.test.js +0 -25
  312. package/dist/utils/cache-import.d.ts +0 -3
  313. package/dist/utils/cache-import.js +0 -2
  314. package/dist/utils/networking-import.d.ts +0 -4
  315. package/dist/utils/networking-import.js +0 -3
  316. package/dist/utils/rxjs-import.d.ts +0 -5
  317. package/dist/utils/rxjs-import.js +0 -5
@@ -1,91 +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 StorefrontCustomerMetadataTarget = "metadata-get" | "favorites-add" | "favorites-list" | "favorites-update-category" | "favorites-remove" | "favorites-categories" | "preferences-update" | "product-view-record" | "recent-searches" | "recently-viewed";
5
- export interface AddFavoriteRequest {
6
- productId: number;
7
- }
8
- export interface UpdateFavoriteCategoryRequest {
9
- category: string;
10
- }
11
- export interface UpdatePreferencesRequest {
12
- preferences: Record<string, unknown>;
13
- }
14
- export interface RecordProductViewRequest {
15
- productId: number;
16
- }
17
- export declare class StorefrontCustomerMetadataProvider implements ProviderType {
18
- private readonly config;
19
- private readonly target;
20
- private readonly $authToken;
21
- constructor(config: NetworkingConfig, target: StorefrontCustomerMetadataTarget, $authToken: BehaviorSubject<string | null>);
22
- get baseURL(): string;
23
- get path(): string;
24
- get method(): string;
25
- get headers(): Record<string, string>;
26
- getPath(...queryParams: unknown[]): string;
27
- }
28
- export declare class StorefrontCustomerMetadataService {
29
- private readonly config;
30
- private readonly $authToken;
31
- constructor(config: NetworkingConfig, $authToken: BehaviorSubject<string | null>);
32
- provider(target: StorefrontCustomerMetadataTarget): SmessService<StorefrontCustomerMetadataProvider>;
33
- /**
34
- * Check if user is authenticated
35
- */
36
- private checkAuthentication;
37
- /**
38
- * Create authentication required error
39
- */
40
- private createAuthRequiredError;
41
- /**
42
- * Get customer metadata
43
- * GET /storefront/customer/metadata?store_id={storeId}
44
- */
45
- getMetadata(storeId: number): Observable<NetworkingUIEventWrapped<HttpResponse>>;
46
- /**
47
- * Add favorite product
48
- * POST /storefront/customer/favorites?store_id={storeId}
49
- */
50
- addFavorite(storeId: number, payload: AddFavoriteRequest): Observable<NetworkingUIEventWrapped<HttpResponse>>;
51
- /**
52
- * List favorite products
53
- * GET /storefront/customer/favorites?store_id={storeId}&category={category}
54
- */
55
- listFavorites(storeId: number, category?: string): Observable<NetworkingUIEventWrapped<HttpResponse>>;
56
- /**
57
- * Update favorite product category
58
- * PUT /storefront/customer/favorites/{productId}/category?store_id={storeId}
59
- */
60
- updateFavoriteCategory(productId: number, storeId: number, payload: UpdateFavoriteCategoryRequest): Observable<NetworkingUIEventWrapped<HttpResponse>>;
61
- /**
62
- * Remove favorite product
63
- * DELETE /storefront/customer/favorites/{productId}?store_id={storeId}
64
- */
65
- removeFavorite(productId: number, storeId: number): Observable<NetworkingUIEventWrapped<HttpResponse>>;
66
- /**
67
- * List favorite categories
68
- * GET /storefront/customer/favorites/categories?store_id={storeId}
69
- */
70
- listFavoriteCategories(storeId: number): Observable<NetworkingUIEventWrapped<HttpResponse>>;
71
- /**
72
- * Update customer preferences
73
- * PUT /storefront/customer/preferences?store_id={storeId}
74
- */
75
- updatePreferences(storeId: number, payload: UpdatePreferencesRequest): Observable<NetworkingUIEventWrapped<HttpResponse>>;
76
- /**
77
- * Record product view
78
- * POST /storefront/customer/product-view?store_id={storeId}
79
- */
80
- recordProductView(storeId: number, payload: RecordProductViewRequest): Observable<NetworkingUIEventWrapped<HttpResponse>>;
81
- /**
82
- * Get recent searches
83
- * GET /storefront/customer/recent-searches?store_id={storeId}
84
- */
85
- getRecentSearches(storeId: number): Observable<NetworkingUIEventWrapped<HttpResponse>>;
86
- /**
87
- * Get recently viewed products
88
- * GET /storefront/customer/recently-viewed?store_id={storeId}&limit={limit}
89
- */
90
- getRecentlyViewed(storeId: number, limit?: number): Observable<NetworkingUIEventWrapped<HttpResponse>>;
91
- }
@@ -1,225 +0,0 @@
1
- import { NetworkingUIEventWrapped, AlertModel, AlertButtonModel, } from "../types/types";
2
- import { Accept, SMESSHeader, SmessService } from "./smess.service";
3
- import { of } from "rxjs";
4
- export class StorefrontCustomerMetadataProvider {
5
- constructor(config, target, $authToken) {
6
- this.config = config;
7
- this.target = target;
8
- this.$authToken = $authToken;
9
- }
10
- get baseURL() {
11
- return this.config.version
12
- ? `${this.config.baseUrl}/${this.config.version}`
13
- : this.config.baseUrl;
14
- }
15
- get path() {
16
- switch (this.target) {
17
- case "metadata-get":
18
- return "/storefront/customer/metadata";
19
- case "favorites-add":
20
- return "/storefront/customer/favorites";
21
- case "favorites-list":
22
- return "/storefront/customer/favorites";
23
- case "favorites-update-category":
24
- return "/storefront/customer/favorites/${productId}/category";
25
- case "favorites-remove":
26
- return "/storefront/customer/favorites/${productId}";
27
- case "favorites-categories":
28
- return "/storefront/customer/favorites/categories";
29
- case "preferences-update":
30
- return "/storefront/customer/preferences";
31
- case "product-view-record":
32
- return "/storefront/customer/product-view";
33
- case "recent-searches":
34
- return "/storefront/customer/recent-searches";
35
- case "recently-viewed":
36
- return "/storefront/customer/recently-viewed";
37
- default:
38
- return "/storefront/customer/metadata";
39
- }
40
- }
41
- get method() {
42
- switch (this.target) {
43
- case "metadata-get":
44
- case "favorites-list":
45
- case "favorites-categories":
46
- case "recent-searches":
47
- case "recently-viewed":
48
- return "GET";
49
- case "favorites-add":
50
- case "product-view-record":
51
- return "POST";
52
- case "favorites-update-category":
53
- case "preferences-update":
54
- return "PUT";
55
- case "favorites-remove":
56
- return "DELETE";
57
- default:
58
- return "GET";
59
- }
60
- }
61
- get headers() {
62
- let headers = SmessService.getHeaders(Accept.V1, this.$authToken.value);
63
- if (this.config.clientId) {
64
- headers[SMESSHeader.ClientId] = this.config.clientId;
65
- }
66
- if (this.config.apiKey) {
67
- headers[SMESSHeader.ApiKey] = this.config.apiKey;
68
- }
69
- return SmessService.filterHeaders(headers);
70
- }
71
- getPath(...queryParams) {
72
- let definedPath = this.path;
73
- const params = definedPath.match(/\$\{(.+?)\}/g);
74
- params?.forEach((value, index) => {
75
- definedPath = definedPath.replace(value, String(queryParams[index]));
76
- });
77
- return definedPath;
78
- }
79
- }
80
- export class StorefrontCustomerMetadataService {
81
- constructor(config, $authToken) {
82
- this.config = config;
83
- this.$authToken = $authToken;
84
- }
85
- provider(target) {
86
- const targetWrapper = new StorefrontCustomerMetadataProvider(this.config, target, this.$authToken);
87
- return new SmessService(targetWrapper);
88
- }
89
- /**
90
- * Check if user is authenticated
91
- */
92
- checkAuthentication() {
93
- return this.$authToken.value !== null && this.$authToken.value !== "";
94
- }
95
- /**
96
- * Create authentication required error
97
- */
98
- createAuthRequiredError() {
99
- const alertModel = new AlertModel("Authentication required to access customer metadata", 401, true, "Authentication Required", null, [AlertButtonModel.buttonYes()]);
100
- return of(NetworkingUIEventWrapped.failed(alertModel));
101
- }
102
- /**
103
- * Get customer metadata
104
- * GET /storefront/customer/metadata?store_id={storeId}
105
- */
106
- getMetadata(storeId) {
107
- if (!this.checkAuthentication()) {
108
- return this.createAuthRequiredError();
109
- }
110
- return this.provider("metadata-get").request({
111
- store_id: storeId,
112
- });
113
- }
114
- /**
115
- * Add favorite product
116
- * POST /storefront/customer/favorites?store_id={storeId}
117
- */
118
- addFavorite(storeId, payload) {
119
- if (!this.checkAuthentication()) {
120
- return this.createAuthRequiredError();
121
- }
122
- return this.provider("favorites-add").request({
123
- ...payload,
124
- store_id: storeId,
125
- });
126
- }
127
- /**
128
- * List favorite products
129
- * GET /storefront/customer/favorites?store_id={storeId}&category={category}
130
- */
131
- listFavorites(storeId, category) {
132
- if (!this.checkAuthentication()) {
133
- return this.createAuthRequiredError();
134
- }
135
- const params = { store_id: storeId };
136
- if (category) {
137
- params.category = category;
138
- }
139
- return this.provider("favorites-list").request(params);
140
- }
141
- /**
142
- * Update favorite product category
143
- * PUT /storefront/customer/favorites/{productId}/category?store_id={storeId}
144
- */
145
- updateFavoriteCategory(productId, storeId, payload) {
146
- if (!this.checkAuthentication()) {
147
- return this.createAuthRequiredError();
148
- }
149
- return this.provider("favorites-update-category").request({ ...payload, store_id: storeId }, undefined, productId);
150
- }
151
- /**
152
- * Remove favorite product
153
- * DELETE /storefront/customer/favorites/{productId}?store_id={storeId}
154
- */
155
- removeFavorite(productId, storeId) {
156
- if (!this.checkAuthentication()) {
157
- return this.createAuthRequiredError();
158
- }
159
- return this.provider("favorites-remove").request({ store_id: storeId }, undefined, productId);
160
- }
161
- /**
162
- * List favorite categories
163
- * GET /storefront/customer/favorites/categories?store_id={storeId}
164
- */
165
- listFavoriteCategories(storeId) {
166
- if (!this.checkAuthentication()) {
167
- return this.createAuthRequiredError();
168
- }
169
- return this.provider("favorites-categories").request({
170
- store_id: storeId,
171
- });
172
- }
173
- /**
174
- * Update customer preferences
175
- * PUT /storefront/customer/preferences?store_id={storeId}
176
- */
177
- updatePreferences(storeId, payload) {
178
- if (!this.checkAuthentication()) {
179
- return this.createAuthRequiredError();
180
- }
181
- return this.provider("preferences-update").request({
182
- ...payload,
183
- store_id: storeId,
184
- });
185
- }
186
- /**
187
- * Record product view
188
- * POST /storefront/customer/product-view?store_id={storeId}
189
- */
190
- recordProductView(storeId, payload) {
191
- if (!this.checkAuthentication()) {
192
- return this.createAuthRequiredError();
193
- }
194
- return this.provider("product-view-record").request({
195
- ...payload,
196
- store_id: storeId,
197
- });
198
- }
199
- /**
200
- * Get recent searches
201
- * GET /storefront/customer/recent-searches?store_id={storeId}
202
- */
203
- getRecentSearches(storeId) {
204
- if (!this.checkAuthentication()) {
205
- return this.createAuthRequiredError();
206
- }
207
- return this.provider("recent-searches").request({
208
- store_id: storeId,
209
- });
210
- }
211
- /**
212
- * Get recently viewed products
213
- * GET /storefront/customer/recently-viewed?store_id={storeId}&limit={limit}
214
- */
215
- getRecentlyViewed(storeId, limit) {
216
- if (!this.checkAuthentication()) {
217
- return this.createAuthRequiredError();
218
- }
219
- const params = { store_id: storeId };
220
- if (limit !== undefined) {
221
- params.limit = limit;
222
- }
223
- return this.provider("recently-viewed").request(params);
224
- }
225
- }
@@ -1,271 +0,0 @@
1
- import { StorefrontCustomerMetadataService, StorefrontCustomerMetadataProvider, } from "./storefront.customer.metadata.service";
2
- import { NetworkingUIEventWrapped, AlertModel, } from "../types/types";
3
- import { of, BehaviorSubject } from "rxjs";
4
- describe("StorefrontCustomerMetadataService", () => {
5
- const config = {
6
- baseUrl: "https://api.example.com",
7
- version: "api/v1",
8
- isProd: false,
9
- clientId: "test-client-id",
10
- apiKey: "test-api-key",
11
- };
12
- let service;
13
- let $authToken;
14
- beforeEach(() => {
15
- $authToken = new BehaviorSubject(null);
16
- service = new StorefrontCustomerMetadataService(config, $authToken);
17
- });
18
- describe("StorefrontCustomerMetadataProvider", () => {
19
- it("should generate correct path for metadata-get", () => {
20
- const provider = new StorefrontCustomerMetadataProvider(config, "metadata-get", $authToken);
21
- expect(provider.path).toBe("/storefront/customer/metadata");
22
- expect(provider.method).toBe("GET");
23
- });
24
- it("should generate correct path for favorites-add", () => {
25
- const provider = new StorefrontCustomerMetadataProvider(config, "favorites-add", $authToken);
26
- expect(provider.path).toBe("/storefront/customer/favorites");
27
- expect(provider.method).toBe("POST");
28
- });
29
- it("should generate correct path for favorites-update-category", () => {
30
- const provider = new StorefrontCustomerMetadataProvider(config, "favorites-update-category", $authToken);
31
- expect(provider.path).toBe("/storefront/customer/favorites/${productId}/category");
32
- expect(provider.method).toBe("PUT");
33
- expect(provider.getPath(123)).toBe("/storefront/customer/favorites/123/category");
34
- });
35
- it("should include auth token in headers", () => {
36
- $authToken.next("test-auth-token");
37
- const provider = new StorefrontCustomerMetadataProvider(config, "metadata-get", $authToken);
38
- const headers = provider.headers;
39
- expect(headers["Authorization"]).toBe("Bearer test-auth-token");
40
- });
41
- });
42
- describe("getMetadata", () => {
43
- it("should return authentication error when not authenticated", async () => {
44
- const result = await service.getMetadata(1).toPromise();
45
- expect(result?.hasFailed).toBe(true);
46
- expect(result?.alertModel).toBeInstanceOf(AlertModel);
47
- expect(result?.alertModel?.httpErrorCode).toBe(401);
48
- });
49
- it("should get metadata successfully when authenticated", async () => {
50
- $authToken.next("test-auth-token");
51
- const response = {
52
- data: { customerId: "123", preferences: {} },
53
- };
54
- jest.spyOn(service, "provider").mockReturnValue({
55
- request: () => of(NetworkingUIEventWrapped.succeeded(response)),
56
- });
57
- const result = await service.getMetadata(1).toPromise();
58
- expect(result?.hasSuccess).toBe(true);
59
- expect(result?.response).toEqual(response);
60
- });
61
- });
62
- describe("addFavorite", () => {
63
- it("should return authentication error when not authenticated", async () => {
64
- const payload = { productId: 123 };
65
- const result = await service.addFavorite(1, payload).toPromise();
66
- expect(result?.hasFailed).toBe(true);
67
- expect(result?.alertModel?.httpErrorCode).toBe(401);
68
- });
69
- it("should add favorite successfully when authenticated", async () => {
70
- $authToken.next("test-auth-token");
71
- const payload = { productId: 123 };
72
- const response = {
73
- data: { id: 1, productId: 123 },
74
- };
75
- jest.spyOn(service, "provider").mockReturnValue({
76
- request: () => of(NetworkingUIEventWrapped.succeeded(response)),
77
- });
78
- const result = await service.addFavorite(1, payload).toPromise();
79
- expect(result?.hasSuccess).toBe(true);
80
- expect(result?.response).toEqual(response);
81
- });
82
- });
83
- describe("listFavorites", () => {
84
- it("should return authentication error when not authenticated", async () => {
85
- const result = await service.listFavorites(1).toPromise();
86
- expect(result?.hasFailed).toBe(true);
87
- expect(result?.alertModel?.httpErrorCode).toBe(401);
88
- });
89
- it("should list favorites successfully when authenticated", async () => {
90
- $authToken.next("test-auth-token");
91
- const response = {
92
- data: { favorites: [] },
93
- };
94
- jest.spyOn(service, "provider").mockReturnValue({
95
- request: () => of(NetworkingUIEventWrapped.succeeded(response)),
96
- });
97
- const result = await service.listFavorites(1).toPromise();
98
- expect(result?.hasSuccess).toBe(true);
99
- expect(result?.response).toEqual(response);
100
- });
101
- it("should list favorites with category filter", async () => {
102
- $authToken.next("test-auth-token");
103
- const response = {
104
- data: { favorites: [] },
105
- };
106
- jest.spyOn(service, "provider").mockReturnValue({
107
- request: () => of(NetworkingUIEventWrapped.succeeded(response)),
108
- });
109
- const result = await service
110
- .listFavorites(1, "Electronics")
111
- .toPromise();
112
- expect(result?.hasSuccess).toBe(true);
113
- });
114
- });
115
- describe("updateFavoriteCategory", () => {
116
- it("should return authentication error when not authenticated", async () => {
117
- const payload = { category: "Books" };
118
- const result = await service
119
- .updateFavoriteCategory(123, 1, payload)
120
- .toPromise();
121
- expect(result?.hasFailed).toBe(true);
122
- expect(result?.alertModel?.httpErrorCode).toBe(401);
123
- });
124
- it("should update favorite category successfully when authenticated", async () => {
125
- $authToken.next("test-auth-token");
126
- const payload = { category: "Books" };
127
- const response = {
128
- data: { id: 1, category: "Books" },
129
- };
130
- jest.spyOn(service, "provider").mockReturnValue({
131
- request: (_payload, _mockResponse, productId) => of(NetworkingUIEventWrapped.succeeded(response)),
132
- });
133
- const result = await service
134
- .updateFavoriteCategory(123, 1, payload)
135
- .toPromise();
136
- expect(result?.hasSuccess).toBe(true);
137
- expect(result?.response).toEqual(response);
138
- });
139
- });
140
- describe("removeFavorite", () => {
141
- it("should return authentication error when not authenticated", async () => {
142
- const result = await service.removeFavorite(123, 1).toPromise();
143
- expect(result?.hasFailed).toBe(true);
144
- expect(result?.alertModel?.httpErrorCode).toBe(401);
145
- });
146
- it("should remove favorite successfully when authenticated", async () => {
147
- $authToken.next("test-auth-token");
148
- const response = {
149
- data: { message: "Favorite removed" },
150
- };
151
- jest.spyOn(service, "provider").mockReturnValue({
152
- request: (_payload, _mockResponse, productId) => of(NetworkingUIEventWrapped.succeeded(response)),
153
- });
154
- const result = await service.removeFavorite(123, 1).toPromise();
155
- expect(result?.hasSuccess).toBe(true);
156
- expect(result?.response).toEqual(response);
157
- });
158
- });
159
- describe("listFavoriteCategories", () => {
160
- it("should return authentication error when not authenticated", async () => {
161
- const result = await service.listFavoriteCategories(1).toPromise();
162
- expect(result?.hasFailed).toBe(true);
163
- expect(result?.alertModel?.httpErrorCode).toBe(401);
164
- });
165
- it("should list favorite categories successfully when authenticated", async () => {
166
- $authToken.next("test-auth-token");
167
- const response = {
168
- data: { categories: ["Books", "Electronics"] },
169
- };
170
- jest.spyOn(service, "provider").mockReturnValue({
171
- request: () => of(NetworkingUIEventWrapped.succeeded(response)),
172
- });
173
- const result = await service.listFavoriteCategories(1).toPromise();
174
- expect(result?.hasSuccess).toBe(true);
175
- expect(result?.response).toEqual(response);
176
- });
177
- });
178
- describe("updatePreferences", () => {
179
- it("should return authentication error when not authenticated", async () => {
180
- const payload = { preferences: {} };
181
- const result = await service.updatePreferences(1, payload).toPromise();
182
- expect(result?.hasFailed).toBe(true);
183
- expect(result?.alertModel?.httpErrorCode).toBe(401);
184
- });
185
- it("should update preferences successfully when authenticated", async () => {
186
- $authToken.next("test-auth-token");
187
- const payload = {
188
- preferences: { theme: "dark" },
189
- };
190
- const response = {
191
- data: { preferences: { theme: "dark" } },
192
- };
193
- jest.spyOn(service, "provider").mockReturnValue({
194
- request: () => of(NetworkingUIEventWrapped.succeeded(response)),
195
- });
196
- const result = await service.updatePreferences(1, payload).toPromise();
197
- expect(result?.hasSuccess).toBe(true);
198
- expect(result?.response).toEqual(response);
199
- });
200
- });
201
- describe("recordProductView", () => {
202
- it("should return authentication error when not authenticated", async () => {
203
- const payload = { productId: 123 };
204
- const result = await service.recordProductView(1, payload).toPromise();
205
- expect(result?.hasFailed).toBe(true);
206
- expect(result?.alertModel?.httpErrorCode).toBe(401);
207
- });
208
- it("should record product view successfully when authenticated", async () => {
209
- $authToken.next("test-auth-token");
210
- const payload = { productId: 123 };
211
- const response = {
212
- data: { message: "Product view recorded" },
213
- };
214
- jest.spyOn(service, "provider").mockReturnValue({
215
- request: () => of(NetworkingUIEventWrapped.succeeded(response)),
216
- });
217
- const result = await service.recordProductView(1, payload).toPromise();
218
- expect(result?.hasSuccess).toBe(true);
219
- expect(result?.response).toEqual(response);
220
- });
221
- });
222
- describe("getRecentSearches", () => {
223
- it("should return authentication error when not authenticated", async () => {
224
- const result = await service.getRecentSearches(1).toPromise();
225
- expect(result?.hasFailed).toBe(true);
226
- expect(result?.alertModel?.httpErrorCode).toBe(401);
227
- });
228
- it("should get recent searches successfully when authenticated", async () => {
229
- $authToken.next("test-auth-token");
230
- const response = {
231
- data: { searches: ["laptop", "phone"] },
232
- };
233
- jest.spyOn(service, "provider").mockReturnValue({
234
- request: () => of(NetworkingUIEventWrapped.succeeded(response)),
235
- });
236
- const result = await service.getRecentSearches(1).toPromise();
237
- expect(result?.hasSuccess).toBe(true);
238
- expect(result?.response).toEqual(response);
239
- });
240
- });
241
- describe("getRecentlyViewed", () => {
242
- it("should return authentication error when not authenticated", async () => {
243
- const result = await service.getRecentlyViewed(1).toPromise();
244
- expect(result?.hasFailed).toBe(true);
245
- expect(result?.alertModel?.httpErrorCode).toBe(401);
246
- });
247
- it("should get recently viewed successfully when authenticated", async () => {
248
- $authToken.next("test-auth-token");
249
- const response = {
250
- data: { products: [] },
251
- };
252
- jest.spyOn(service, "provider").mockReturnValue({
253
- request: () => of(NetworkingUIEventWrapped.succeeded(response)),
254
- });
255
- const result = await service.getRecentlyViewed(1).toPromise();
256
- expect(result?.hasSuccess).toBe(true);
257
- expect(result?.response).toEqual(response);
258
- });
259
- it("should get recently viewed with limit", async () => {
260
- $authToken.next("test-auth-token");
261
- const response = {
262
- data: { products: [] },
263
- };
264
- jest.spyOn(service, "provider").mockReturnValue({
265
- request: () => of(NetworkingUIEventWrapped.succeeded(response)),
266
- });
267
- const result = await service.getRecentlyViewed(1, 10).toPromise();
268
- expect(result?.hasSuccess).toBe(true);
269
- });
270
- });
271
- });
@@ -1,45 +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 StorefrontOrderTarget = "order-list" | "order-detail" | "order-track";
5
- export interface OrderListRequest {
6
- page?: number;
7
- limit?: number;
8
- status?: string;
9
- }
10
- export interface TrackOrderRequest {
11
- orderNumber: string;
12
- email: string;
13
- }
14
- export declare class StorefrontOrderProvider implements ProviderType {
15
- private readonly config;
16
- private readonly target;
17
- private readonly $authToken;
18
- constructor(config: NetworkingConfig, target: StorefrontOrderTarget, $authToken: BehaviorSubject<string | null>);
19
- get baseURL(): string;
20
- get path(): string;
21
- get method(): string;
22
- get headers(): Record<string, string>;
23
- getPath(...queryParams: unknown[]): string;
24
- }
25
- export declare class StorefrontOrderService {
26
- private readonly config;
27
- private readonly $authToken;
28
- constructor(config: NetworkingConfig, $authToken: BehaviorSubject<string | null>);
29
- provider(target: StorefrontOrderTarget): SmessService<StorefrontOrderProvider>;
30
- /**
31
- * List customer orders (requires authentication)
32
- * GET /storefront/orders
33
- */
34
- listOrders(params?: OrderListRequest): Observable<NetworkingUIEventWrapped<HttpResponse>>;
35
- /**
36
- * Get order details (requires authentication)
37
- * GET /storefront/orders/{id}
38
- */
39
- getOrderDetail(id: number): Observable<NetworkingUIEventWrapped<HttpResponse>>;
40
- /**
41
- * Track guest order (no authentication required)
42
- * POST /storefront/orders/track
43
- */
44
- trackOrder(payload: TrackOrderRequest): Observable<NetworkingUIEventWrapped<HttpResponse>>;
45
- }