@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.
Files changed (313) hide show
  1. package/CHANGELOG.md +211 -0
  2. package/README.md +165 -114
  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 +25 -0
  20. package/dist/core/hosts.d.ts.map +1 -0
  21. package/dist/core/hosts.js +22 -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/smeup-file/index.d.ts +27 -0
  80. package/dist/modules/smeup-file/index.d.ts.map +1 -0
  81. package/dist/modules/smeup-file/index.js +17 -0
  82. package/dist/modules/smeup-file/index.js.map +1 -0
  83. package/dist/modules/sso/index.d.ts +40 -0
  84. package/dist/modules/sso/index.d.ts.map +1 -0
  85. package/dist/modules/sso/index.js +41 -0
  86. package/dist/modules/sso/index.js.map +1 -0
  87. package/dist/rx/index.d.ts +11 -0
  88. package/dist/rx/index.d.ts.map +1 -0
  89. package/dist/rx/index.js +20 -0
  90. package/dist/rx/index.js.map +1 -0
  91. package/dist/session/auth-middleware.d.ts +27 -0
  92. package/dist/session/auth-middleware.d.ts.map +1 -0
  93. package/dist/session/auth-middleware.js +122 -0
  94. package/dist/session/auth-middleware.js.map +1 -0
  95. package/dist/session/jwt.d.ts +20 -0
  96. package/dist/session/jwt.d.ts.map +1 -0
  97. package/dist/session/jwt.js +25 -0
  98. package/dist/session/jwt.js.map +1 -0
  99. package/dist/session/stores.d.ts +19 -0
  100. package/dist/session/stores.d.ts.map +1 -0
  101. package/dist/session/stores.js +103 -0
  102. package/dist/session/stores.js.map +1 -0
  103. package/dist/session/types.d.ts +28 -0
  104. package/dist/session/types.d.ts.map +1 -0
  105. package/dist/session/types.js +2 -0
  106. package/dist/session/types.js.map +1 -0
  107. package/package.json +80 -30
  108. package/dist/core/axios.d.ts +0 -51
  109. package/dist/core/axios.js +0 -65
  110. package/dist/core/axios.observable.d.ts +0 -11
  111. package/dist/core/axios.observable.js +0 -58
  112. package/dist/core/base.provider.advanced.test.d.ts +0 -1
  113. package/dist/core/base.provider.advanced.test.js +0 -29
  114. package/dist/core/base.provider.d.ts +0 -15
  115. package/dist/core/base.provider.js +0 -13
  116. package/dist/core/base.provider.test.d.ts +0 -1
  117. package/dist/core/base.provider.test.js +0 -36
  118. package/dist/core/base.service.wrapper.advanced.test.d.ts +0 -1
  119. package/dist/core/base.service.wrapper.advanced.test.js +0 -39
  120. package/dist/core/base.service.wrapper.d.ts +0 -7
  121. package/dist/core/base.service.wrapper.js +0 -11
  122. package/dist/core/base.service.wrapper.test.d.ts +0 -1
  123. package/dist/core/base.service.wrapper.test.js +0 -25
  124. package/dist/core/rx.http.service.d.ts +0 -51
  125. package/dist/core/rx.http.service.js +0 -65
  126. package/dist/services/auth.service.d.ts +0 -69
  127. package/dist/services/auth.service.js +0 -197
  128. package/dist/services/auth.service.test.d.ts +0 -1
  129. package/dist/services/auth.service.test.js +0 -340
  130. package/dist/services/cache.service.d.ts +0 -31
  131. package/dist/services/cache.service.js +0 -77
  132. package/dist/services/cache.service.test.d.ts +0 -1
  133. package/dist/services/cache.service.test.js +0 -88
  134. package/dist/services/customer.service.d.ts +0 -213
  135. package/dist/services/customer.service.js +0 -128
  136. package/dist/services/customer.service.test.d.ts +0 -1
  137. package/dist/services/customer.service.test.js +0 -430
  138. package/dist/services/employee.service.d.ts +0 -73
  139. package/dist/services/employee.service.js +0 -74
  140. package/dist/services/employee.service.test.d.ts +0 -1
  141. package/dist/services/employee.service.test.js +0 -127
  142. package/dist/services/logger.service.d.ts +0 -31
  143. package/dist/services/logger.service.js +0 -93
  144. package/dist/services/logger.service.test.d.ts +0 -1
  145. package/dist/services/logger.service.test.js +0 -31
  146. package/dist/services/order.service.d.ts +0 -73
  147. package/dist/services/order.service.js +0 -97
  148. package/dist/services/order.service.test.d.ts +0 -1
  149. package/dist/services/order.service.test.js +0 -163
  150. package/dist/services/product.service.d.ts +0 -21
  151. package/dist/services/product.service.js +0 -42
  152. package/dist/services/product.service.test.d.ts +0 -1
  153. package/dist/services/product.service.test.js +0 -61
  154. package/dist/services/smess.service.d.ts +0 -36
  155. package/dist/services/smess.service.js +0 -128
  156. package/dist/services/smess.service.test.d.ts +0 -1
  157. package/dist/services/smess.service.test.js +0 -103
  158. package/dist/services/store.cart.service.d.ts +0 -158
  159. package/dist/services/store.cart.service.js +0 -177
  160. package/dist/services/store.cart.service.test.d.ts +0 -1
  161. package/dist/services/store.cart.service.test.js +0 -394
  162. package/dist/services/store.product.service.d.ts +0 -124
  163. package/dist/services/store.product.service.js +0 -102
  164. package/dist/services/store.product.service.test.d.ts +0 -1
  165. package/dist/services/store.product.service.test.js +0 -319
  166. package/dist/services/store.service.d.ts +0 -79
  167. package/dist/services/store.service.js +0 -235
  168. package/dist/services/store.service.test.d.ts +0 -1
  169. package/dist/services/store.service.test.js +0 -274
  170. package/dist/services/storefront.cart.service.d.ts +0 -73
  171. package/dist/services/storefront.cart.service.js +0 -167
  172. package/dist/services/storefront.cart.service.test.d.ts +0 -1
  173. package/dist/services/storefront.cart.service.test.js +0 -211
  174. package/dist/services/storefront.checkout.service.d.ts +0 -62
  175. package/dist/services/storefront.checkout.service.js +0 -75
  176. package/dist/services/storefront.checkout.service.test.d.ts +0 -1
  177. package/dist/services/storefront.checkout.service.test.js +0 -158
  178. package/dist/services/storefront.customer.metadata.service.d.ts +0 -91
  179. package/dist/services/storefront.customer.metadata.service.js +0 -225
  180. package/dist/services/storefront.customer.metadata.service.test.d.ts +0 -1
  181. package/dist/services/storefront.customer.metadata.service.test.js +0 -271
  182. package/dist/services/storefront.order.service.d.ts +0 -45
  183. package/dist/services/storefront.order.service.js +0 -99
  184. package/dist/services/storefront.order.service.test.d.ts +0 -1
  185. package/dist/services/storefront.order.service.test.js +0 -158
  186. package/dist/services/storefront.product.service.d.ts +0 -52
  187. package/dist/services/storefront.product.service.js +0 -75
  188. package/dist/services/storefront.product.service.test.d.ts +0 -1
  189. package/dist/services/storefront.product.service.test.js +0 -120
  190. package/dist/services/storefront.store.service.d.ts +0 -54
  191. package/dist/services/storefront.store.service.js +0 -142
  192. package/dist/services/storefront.store.service.test.d.ts +0 -1
  193. package/dist/services/storefront.store.service.test.js +0 -90
  194. package/dist/services/user.service.d.ts +0 -16
  195. package/dist/services/user.service.js +0 -37
  196. package/dist/services/user.service.test.d.ts +0 -1
  197. package/dist/services/user.service.test.js +0 -52
  198. package/dist/services/utils/withAuthReset.d.ts +0 -3
  199. package/dist/services/utils/withAuthReset.js +0 -8
  200. package/dist/src/core/axios.d.ts +0 -51
  201. package/dist/src/core/axios.js +0 -65
  202. package/dist/src/core/axios.observable.d.ts +0 -11
  203. package/dist/src/core/axios.observable.js +0 -58
  204. package/dist/src/core/base.provider.advanced.test.d.ts +0 -1
  205. package/dist/src/core/base.provider.advanced.test.js +0 -29
  206. package/dist/src/core/base.provider.d.ts +0 -15
  207. package/dist/src/core/base.provider.js +0 -13
  208. package/dist/src/core/base.provider.test.d.ts +0 -1
  209. package/dist/src/core/base.provider.test.js +0 -36
  210. package/dist/src/core/base.service.wrapper.advanced.test.d.ts +0 -1
  211. package/dist/src/core/base.service.wrapper.advanced.test.js +0 -39
  212. package/dist/src/core/base.service.wrapper.d.ts +0 -7
  213. package/dist/src/core/base.service.wrapper.js +0 -11
  214. package/dist/src/core/base.service.wrapper.test.d.ts +0 -1
  215. package/dist/src/core/base.service.wrapper.test.js +0 -25
  216. package/dist/src/core/rx.http.service.d.ts +0 -51
  217. package/dist/src/core/rx.http.service.js +0 -65
  218. package/dist/src/index.d.ts +0 -25
  219. package/dist/src/index.js +0 -29
  220. package/dist/src/services/auth.service.d.ts +0 -69
  221. package/dist/src/services/auth.service.js +0 -197
  222. package/dist/src/services/auth.service.test.d.ts +0 -1
  223. package/dist/src/services/auth.service.test.js +0 -340
  224. package/dist/src/services/cache.service.d.ts +0 -31
  225. package/dist/src/services/cache.service.js +0 -77
  226. package/dist/src/services/cache.service.test.d.ts +0 -1
  227. package/dist/src/services/cache.service.test.js +0 -88
  228. package/dist/src/services/customer.service.d.ts +0 -199
  229. package/dist/src/services/customer.service.js +0 -114
  230. package/dist/src/services/customer.service.test.d.ts +0 -1
  231. package/dist/src/services/customer.service.test.js +0 -430
  232. package/dist/src/services/employee.service.d.ts +0 -73
  233. package/dist/src/services/employee.service.js +0 -74
  234. package/dist/src/services/employee.service.test.d.ts +0 -1
  235. package/dist/src/services/employee.service.test.js +0 -127
  236. package/dist/src/services/logger.service.d.ts +0 -31
  237. package/dist/src/services/logger.service.js +0 -93
  238. package/dist/src/services/logger.service.test.d.ts +0 -1
  239. package/dist/src/services/logger.service.test.js +0 -31
  240. package/dist/src/services/order.service.d.ts +0 -73
  241. package/dist/src/services/order.service.js +0 -97
  242. package/dist/src/services/order.service.test.d.ts +0 -1
  243. package/dist/src/services/order.service.test.js +0 -163
  244. package/dist/src/services/product.service.d.ts +0 -21
  245. package/dist/src/services/product.service.js +0 -42
  246. package/dist/src/services/product.service.test.d.ts +0 -1
  247. package/dist/src/services/product.service.test.js +0 -61
  248. package/dist/src/services/smess.service.d.ts +0 -36
  249. package/dist/src/services/smess.service.js +0 -128
  250. package/dist/src/services/smess.service.test.d.ts +0 -1
  251. package/dist/src/services/smess.service.test.js +0 -103
  252. package/dist/src/services/store.cart.service.d.ts +0 -158
  253. package/dist/src/services/store.cart.service.js +0 -177
  254. package/dist/src/services/store.cart.service.test.d.ts +0 -1
  255. package/dist/src/services/store.cart.service.test.js +0 -394
  256. package/dist/src/services/store.product.service.d.ts +0 -124
  257. package/dist/src/services/store.product.service.js +0 -102
  258. package/dist/src/services/store.product.service.test.d.ts +0 -1
  259. package/dist/src/services/store.product.service.test.js +0 -319
  260. package/dist/src/services/store.service.d.ts +0 -79
  261. package/dist/src/services/store.service.js +0 -235
  262. package/dist/src/services/store.service.test.d.ts +0 -1
  263. package/dist/src/services/store.service.test.js +0 -274
  264. package/dist/src/services/storefront.cart.service.d.ts +0 -73
  265. package/dist/src/services/storefront.cart.service.js +0 -167
  266. package/dist/src/services/storefront.cart.service.test.d.ts +0 -1
  267. package/dist/src/services/storefront.cart.service.test.js +0 -211
  268. package/dist/src/services/storefront.checkout.service.d.ts +0 -62
  269. package/dist/src/services/storefront.checkout.service.js +0 -75
  270. package/dist/src/services/storefront.checkout.service.test.d.ts +0 -1
  271. package/dist/src/services/storefront.checkout.service.test.js +0 -158
  272. package/dist/src/services/storefront.customer.metadata.service.d.ts +0 -91
  273. package/dist/src/services/storefront.customer.metadata.service.js +0 -225
  274. package/dist/src/services/storefront.customer.metadata.service.test.d.ts +0 -1
  275. package/dist/src/services/storefront.customer.metadata.service.test.js +0 -271
  276. package/dist/src/services/storefront.order.service.d.ts +0 -45
  277. package/dist/src/services/storefront.order.service.js +0 -99
  278. package/dist/src/services/storefront.order.service.test.d.ts +0 -1
  279. package/dist/src/services/storefront.order.service.test.js +0 -158
  280. package/dist/src/services/storefront.product.service.d.ts +0 -52
  281. package/dist/src/services/storefront.product.service.js +0 -75
  282. package/dist/src/services/storefront.product.service.test.d.ts +0 -1
  283. package/dist/src/services/storefront.product.service.test.js +0 -120
  284. package/dist/src/services/storefront.store.service.d.ts +0 -52
  285. package/dist/src/services/storefront.store.service.js +0 -140
  286. package/dist/src/services/storefront.store.service.test.d.ts +0 -1
  287. package/dist/src/services/storefront.store.service.test.js +0 -90
  288. package/dist/src/services/user.service.d.ts +0 -16
  289. package/dist/src/services/user.service.js +0 -37
  290. package/dist/src/services/user.service.test.d.ts +0 -1
  291. package/dist/src/services/user.service.test.js +0 -52
  292. package/dist/src/services/utils/withAuthReset.d.ts +0 -3
  293. package/dist/src/services/utils/withAuthReset.js +0 -8
  294. package/dist/src/types/types.d.ts +0 -93
  295. package/dist/src/types/types.js +0 -82
  296. package/dist/src/types/types.test.d.ts +0 -1
  297. package/dist/src/types/types.test.js +0 -25
  298. package/dist/src/utils/cache-import.d.ts +0 -3
  299. package/dist/src/utils/cache-import.js +0 -2
  300. package/dist/src/utils/networking-import.d.ts +0 -4
  301. package/dist/src/utils/networking-import.js +0 -3
  302. package/dist/src/utils/rxjs-import.d.ts +0 -5
  303. package/dist/src/utils/rxjs-import.js +0 -5
  304. package/dist/types/types.d.ts +0 -96
  305. package/dist/types/types.js +0 -82
  306. package/dist/types/types.test.d.ts +0 -1
  307. package/dist/types/types.test.js +0 -25
  308. package/dist/utils/cache-import.d.ts +0 -3
  309. package/dist/utils/cache-import.js +0 -2
  310. package/dist/utils/networking-import.d.ts +0 -4
  311. package/dist/utils/networking-import.js +0 -3
  312. package/dist/utils/rxjs-import.d.ts +0 -5
  313. package/dist/utils/rxjs-import.js +0 -5
@@ -1,167 +0,0 @@
1
- import { Accept, SMESSHeader, SmessService } from "./smess.service";
2
- import { BehaviorSubject } from "rxjs";
3
- import { tap } from "rxjs/operators";
4
- export class StorefrontCartProvider {
5
- constructor(config, target, $sessionToken, $authToken) {
6
- this.config = config;
7
- this.target = target;
8
- this.$sessionToken = $sessionToken;
9
- this.$authToken = $authToken;
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 "cart-add-item":
19
- return "/storefront/cart/items";
20
- case "cart-get":
21
- return "/storefront/cart";
22
- case "cart-update-item":
23
- return "/storefront/cart/items/${id}";
24
- case "cart-remove-item":
25
- return "/storefront/cart/items/${id}";
26
- case "cart-calculate-shipping":
27
- return "/storefront/cart/calculate-shipping";
28
- default:
29
- return "/storefront/cart";
30
- }
31
- }
32
- get method() {
33
- switch (this.target) {
34
- case "cart-add-item":
35
- return "POST";
36
- case "cart-get":
37
- return "GET";
38
- case "cart-update-item":
39
- return "PUT";
40
- case "cart-remove-item":
41
- return "DELETE";
42
- case "cart-calculate-shipping":
43
- return "POST";
44
- default:
45
- return "GET";
46
- }
47
- }
48
- get headers() {
49
- let headers = SmessService.getHeaders(Accept.V1, this.$authToken.value);
50
- if (this.config.clientId) {
51
- headers[SMESSHeader.ClientId] = this.config.clientId;
52
- }
53
- if (this.config.apiKey) {
54
- headers[SMESSHeader.ApiKey] = this.config.apiKey;
55
- }
56
- const filteredHeaders = SmessService.filterHeaders(headers);
57
- // Add X-Session-Token header if sessionToken is available and not authenticated
58
- if (!this.$authToken.value && this.$sessionToken.value) {
59
- filteredHeaders["X-Session-Token"] = this.$sessionToken.value;
60
- }
61
- return filteredHeaders;
62
- }
63
- getPath(...queryParams) {
64
- let definedPath = this.path;
65
- const params = definedPath.match(/\$\{(.+?)\}/g);
66
- params?.forEach((value, index) => {
67
- definedPath = definedPath.replace(value, String(queryParams[index]));
68
- });
69
- return definedPath;
70
- }
71
- }
72
- export class StorefrontCartService {
73
- constructor(config, $authToken) {
74
- this.config = config;
75
- this.$authToken = $authToken;
76
- this.$sessionToken = new BehaviorSubject(null);
77
- }
78
- provider(target) {
79
- const targetWrapper = new StorefrontCartProvider(this.config, target, this.$sessionToken, this.$authToken);
80
- return new SmessService(targetWrapper);
81
- }
82
- /**
83
- * Add item to cart
84
- * POST /storefront/cart/items
85
- */
86
- addToCart(payload) {
87
- // If sessionToken is provided in payload, use it
88
- if (payload.sessionToken) {
89
- this.setSessionToken(payload.sessionToken);
90
- }
91
- return this.provider("cart-add-item")
92
- .request(payload)
93
- .pipe(tap((response) => {
94
- if (response.response) {
95
- this.extractAndStoreSessionToken(response.response);
96
- }
97
- }));
98
- }
99
- /**
100
- * Get current cart
101
- * GET /storefront/cart
102
- */
103
- getCart() {
104
- return this.provider("cart-get")
105
- .request()
106
- .pipe(tap((response) => {
107
- if (response.response) {
108
- this.extractAndStoreSessionToken(response.response);
109
- }
110
- }));
111
- }
112
- /**
113
- * Update cart item quantity
114
- * PUT /storefront/cart/items/{cartItemId}
115
- */
116
- updateCartItem(cartItemId, payload) {
117
- return this.provider("cart-update-item")
118
- .request(payload, undefined, cartItemId)
119
- .pipe(tap((response) => {
120
- if (response.response) {
121
- this.extractAndStoreSessionToken(response.response);
122
- }
123
- }));
124
- }
125
- /**
126
- * Remove cart item
127
- * DELETE /storefront/cart/items/{cartItemId}
128
- */
129
- removeCartItem(cartItemId) {
130
- return this.provider("cart-remove-item")
131
- .request(null, undefined, cartItemId)
132
- .pipe(tap((response) => {
133
- if (response.response) {
134
- this.extractAndStoreSessionToken(response.response);
135
- }
136
- }));
137
- }
138
- /**
139
- * Calculate shipping costs
140
- * POST /storefront/cart/calculate-shipping
141
- */
142
- calculateShipping(payload) {
143
- return this.provider("cart-calculate-shipping").request(payload);
144
- }
145
- /**
146
- * Set the session token
147
- */
148
- setSessionToken(token) {
149
- this.$sessionToken.next(token);
150
- }
151
- /**
152
- * Get the current session token
153
- */
154
- get currentSessionToken() {
155
- return this.$sessionToken.value;
156
- }
157
- /**
158
- * Extract and store session token from cart responses
159
- */
160
- extractAndStoreSessionToken(response) {
161
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
162
- const data = response.data;
163
- if (data && data.sessionToken) {
164
- this.setSessionToken(data.sessionToken);
165
- }
166
- }
167
- }
@@ -1 +0,0 @@
1
- export {};
@@ -1,211 +0,0 @@
1
- import { StorefrontCartService, StorefrontCartProvider, } from "./storefront.cart.service";
2
- import { NetworkingUIEventWrapped, AlertModel, } from "../types/types";
3
- import { of, BehaviorSubject } from "rxjs";
4
- describe("StorefrontCartService", () => {
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 StorefrontCartService(config, $authToken);
17
- });
18
- describe("StorefrontCartProvider", () => {
19
- it("should generate correct path for cart-add-item", () => {
20
- const $sessionToken = new BehaviorSubject(null);
21
- const provider = new StorefrontCartProvider(config, "cart-add-item", $sessionToken, $authToken);
22
- expect(provider.path).toBe("/storefront/cart/items");
23
- expect(provider.method).toBe("POST");
24
- });
25
- it("should generate correct path for cart-get", () => {
26
- const $sessionToken = new BehaviorSubject(null);
27
- const provider = new StorefrontCartProvider(config, "cart-get", $sessionToken, $authToken);
28
- expect(provider.path).toBe("/storefront/cart");
29
- expect(provider.method).toBe("GET");
30
- });
31
- it("should generate correct path for cart-update-item", () => {
32
- const $sessionToken = new BehaviorSubject(null);
33
- const provider = new StorefrontCartProvider(config, "cart-update-item", $sessionToken, $authToken);
34
- expect(provider.path).toBe("/storefront/cart/items/${id}");
35
- expect(provider.method).toBe("PUT");
36
- expect(provider.getPath(123)).toBe("/storefront/cart/items/123");
37
- });
38
- it("should include session token in headers when not authenticated", () => {
39
- const $sessionToken = new BehaviorSubject("test-session");
40
- const provider = new StorefrontCartProvider(config, "cart-get", $sessionToken, $authToken);
41
- const headers = provider.headers;
42
- expect(headers["X-Session-Token"]).toBe("test-session");
43
- });
44
- it("should include auth token in headers when authenticated", () => {
45
- $authToken.next("test-auth-token");
46
- const $sessionToken = new BehaviorSubject("test-session");
47
- const provider = new StorefrontCartProvider(config, "cart-get", $sessionToken, $authToken);
48
- const headers = provider.headers;
49
- expect(headers["Authorization"]).toBe("Bearer test-auth-token");
50
- expect(headers["X-Session-Token"]).toBeUndefined();
51
- });
52
- });
53
- describe("addToCart", () => {
54
- it("should add to cart successfully", async () => {
55
- const payload = {
56
- productId: 123,
57
- quantity: 2,
58
- };
59
- const response = {
60
- data: { sessionToken: "new-session-token", items: [] },
61
- };
62
- jest.spyOn(service, "provider").mockReturnValue({
63
- request: () => of(NetworkingUIEventWrapped.succeeded(response)),
64
- });
65
- const result = await service.addToCart(payload).toPromise();
66
- expect(result?.hasSuccess).toBe(true);
67
- expect(result?.response).toEqual(response);
68
- expect(service.currentSessionToken).toBe("new-session-token");
69
- });
70
- it("should handle add to cart error", async () => {
71
- const payload = {
72
- productId: 123,
73
- quantity: 2,
74
- };
75
- jest.spyOn(service, "provider").mockReturnValue({
76
- request: () => of(NetworkingUIEventWrapped.failed(AlertModel.default())),
77
- });
78
- const result = await service.addToCart(payload).toPromise();
79
- expect(result?.hasFailed).toBe(true);
80
- expect(result?.alertModel).toBeInstanceOf(AlertModel);
81
- });
82
- it("should use provided session token", async () => {
83
- const payload = {
84
- productId: 123,
85
- quantity: 2,
86
- sessionToken: "provided-token",
87
- };
88
- const response = {
89
- data: { items: [] },
90
- };
91
- jest.spyOn(service, "provider").mockReturnValue({
92
- request: () => of(NetworkingUIEventWrapped.succeeded(response)),
93
- });
94
- await service.addToCart(payload).toPromise();
95
- expect(service.currentSessionToken).toBe("provided-token");
96
- });
97
- });
98
- describe("getCart", () => {
99
- it("should get cart successfully", async () => {
100
- const response = {
101
- data: { sessionToken: "session-token", items: [] },
102
- };
103
- jest.spyOn(service, "provider").mockReturnValue({
104
- request: () => of(NetworkingUIEventWrapped.succeeded(response)),
105
- });
106
- const result = await service.getCart().toPromise();
107
- expect(result?.hasSuccess).toBe(true);
108
- expect(result?.response).toEqual(response);
109
- });
110
- it("should handle get cart error", async () => {
111
- jest.spyOn(service, "provider").mockReturnValue({
112
- request: () => of(NetworkingUIEventWrapped.failed(AlertModel.default())),
113
- });
114
- const result = await service.getCart().toPromise();
115
- expect(result?.hasFailed).toBe(true);
116
- expect(result?.alertModel).toBeInstanceOf(AlertModel);
117
- });
118
- });
119
- describe("updateCartItem", () => {
120
- it("should update cart item successfully", async () => {
121
- const payload = {
122
- quantity: 5,
123
- };
124
- const response = {
125
- data: { items: [] },
126
- };
127
- jest.spyOn(service, "provider").mockReturnValue({
128
- request: (_payload, _mockResponse, cartItemId) => of(NetworkingUIEventWrapped.succeeded(response)),
129
- });
130
- const result = await service.updateCartItem(123, payload).toPromise();
131
- expect(result?.hasSuccess).toBe(true);
132
- expect(result?.response).toEqual(response);
133
- });
134
- it("should handle update cart item error", async () => {
135
- const payload = {
136
- quantity: 5,
137
- };
138
- jest.spyOn(service, "provider").mockReturnValue({
139
- request: (_payload, _mockResponse, cartItemId) => of(NetworkingUIEventWrapped.failed(AlertModel.default())),
140
- });
141
- const result = await service.updateCartItem(123, payload).toPromise();
142
- expect(result?.hasFailed).toBe(true);
143
- expect(result?.alertModel).toBeInstanceOf(AlertModel);
144
- });
145
- });
146
- describe("removeCartItem", () => {
147
- it("should remove cart item successfully", async () => {
148
- const response = {
149
- data: { items: [] },
150
- };
151
- jest.spyOn(service, "provider").mockReturnValue({
152
- request: (_payload, _mockResponse, cartItemId) => of(NetworkingUIEventWrapped.succeeded(response)),
153
- });
154
- const result = await service.removeCartItem(123).toPromise();
155
- expect(result?.hasSuccess).toBe(true);
156
- expect(result?.response).toEqual(response);
157
- });
158
- it("should handle remove cart item error", async () => {
159
- jest.spyOn(service, "provider").mockReturnValue({
160
- request: (_payload, _mockResponse, cartItemId) => of(NetworkingUIEventWrapped.failed(AlertModel.default())),
161
- });
162
- const result = await service.removeCartItem(123).toPromise();
163
- expect(result?.hasFailed).toBe(true);
164
- expect(result?.alertModel).toBeInstanceOf(AlertModel);
165
- });
166
- });
167
- describe("calculateShipping", () => {
168
- it("should calculate shipping successfully", async () => {
169
- const payload = {
170
- postalCode: "12345",
171
- deliveryType: "delivery",
172
- };
173
- const response = {
174
- data: { shippingFee: 10.0, isAvailable: true },
175
- };
176
- jest.spyOn(service, "provider").mockReturnValue({
177
- request: () => of(NetworkingUIEventWrapped.succeeded(response)),
178
- });
179
- const result = await service.calculateShipping(payload).toPromise();
180
- expect(result?.hasSuccess).toBe(true);
181
- expect(result?.response).toEqual(response);
182
- });
183
- it("should handle calculate shipping error", async () => {
184
- const payload = {
185
- postalCode: "12345",
186
- deliveryType: "pickup",
187
- };
188
- jest.spyOn(service, "provider").mockReturnValue({
189
- request: () => of(NetworkingUIEventWrapped.failed(AlertModel.default())),
190
- });
191
- const result = await service.calculateShipping(payload).toPromise();
192
- expect(result?.hasFailed).toBe(true);
193
- expect(result?.alertModel).toBeInstanceOf(AlertModel);
194
- });
195
- });
196
- describe("session token management", () => {
197
- it("should set session token", () => {
198
- service.setSessionToken("test-token");
199
- expect(service.currentSessionToken).toBe("test-token");
200
- });
201
- it("should get current session token", () => {
202
- service.setSessionToken("test-token");
203
- expect(service.currentSessionToken).toBe("test-token");
204
- });
205
- it("should clear session token", () => {
206
- service.setSessionToken("test-token");
207
- service.setSessionToken(null);
208
- expect(service.currentSessionToken).toBeNull();
209
- });
210
- });
211
- });
@@ -1,62 +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 StorefrontCheckoutTarget = "checkout-validate" | "checkout-process";
5
- export type PaymentMethod = "cash" | "card" | "bank_transfer" | "check";
6
- export interface StorefrontBillingInformation {
7
- email?: string;
8
- phone_number?: string;
9
- street?: string;
10
- city?: string;
11
- postal_code?: string;
12
- state?: string;
13
- country?: string;
14
- [key: string]: unknown;
15
- }
16
- export interface StorefrontShippingInformation {
17
- email?: string;
18
- phone_number?: string;
19
- street?: string;
20
- city?: string;
21
- postal_code?: string;
22
- state?: string;
23
- country?: string;
24
- [key: string]: unknown;
25
- }
26
- export interface CheckoutRequest {
27
- billingInformation: StorefrontBillingInformation;
28
- shippingInformation: StorefrontShippingInformation;
29
- paymentMethod: PaymentMethod;
30
- paymentDetails?: Record<string, unknown>;
31
- customerNote?: string;
32
- deliveryType: "pickup" | "delivery";
33
- }
34
- export declare class StorefrontCheckoutProvider implements ProviderType {
35
- private readonly config;
36
- private readonly target;
37
- private readonly $sessionToken;
38
- private readonly $authToken;
39
- constructor(config: NetworkingConfig, target: StorefrontCheckoutTarget, $sessionToken: BehaviorSubject<string | null>, $authToken: BehaviorSubject<string | null>);
40
- get baseURL(): string;
41
- get path(): string;
42
- get method(): string;
43
- get headers(): Record<string, string>;
44
- getPath(...queryParams: unknown[]): string;
45
- }
46
- export declare class StorefrontCheckoutService {
47
- private readonly config;
48
- private readonly $authToken;
49
- private readonly $sessionToken;
50
- constructor(config: NetworkingConfig, $authToken: BehaviorSubject<string | null>, $sessionToken: BehaviorSubject<string | null>);
51
- provider(target: StorefrontCheckoutTarget): SmessService<StorefrontCheckoutProvider>;
52
- /**
53
- * Validate cart before checkout
54
- * POST /storefront/checkout/validate
55
- */
56
- validateCheckout(): Observable<NetworkingUIEventWrapped<HttpResponse>>;
57
- /**
58
- * Process checkout
59
- * POST /storefront/checkout/process
60
- */
61
- processCheckout(payload: CheckoutRequest): Observable<NetworkingUIEventWrapped<HttpResponse>>;
62
- }
@@ -1,75 +0,0 @@
1
- import { Accept, SMESSHeader, SmessService } from "./smess.service";
2
- export class StorefrontCheckoutProvider {
3
- constructor(config, target, $sessionToken, $authToken) {
4
- this.config = config;
5
- this.target = target;
6
- this.$sessionToken = $sessionToken;
7
- this.$authToken = $authToken;
8
- }
9
- get baseURL() {
10
- return this.config.version
11
- ? `${this.config.baseUrl}/${this.config.version}`
12
- : this.config.baseUrl;
13
- }
14
- get path() {
15
- switch (this.target) {
16
- case "checkout-validate":
17
- return "/storefront/checkout/validate";
18
- case "checkout-process":
19
- return "/storefront/checkout/process";
20
- default:
21
- return "/storefront/checkout/validate";
22
- }
23
- }
24
- get method() {
25
- return "POST";
26
- }
27
- get headers() {
28
- let headers = SmessService.getHeaders(Accept.V1, this.$authToken.value);
29
- if (this.config.clientId) {
30
- headers[SMESSHeader.ClientId] = this.config.clientId;
31
- }
32
- if (this.config.apiKey) {
33
- headers[SMESSHeader.ApiKey] = this.config.apiKey;
34
- }
35
- const filteredHeaders = SmessService.filterHeaders(headers);
36
- // Add X-Session-Token header if sessionToken is available and not authenticated
37
- if (!this.$authToken.value && this.$sessionToken.value) {
38
- filteredHeaders["X-Session-Token"] = this.$sessionToken.value;
39
- }
40
- return filteredHeaders;
41
- }
42
- getPath(...queryParams) {
43
- let definedPath = this.path;
44
- const params = definedPath.match(/\$\{(.+?)\}/g);
45
- params?.forEach((value, index) => {
46
- definedPath = definedPath.replace(value, String(queryParams[index]));
47
- });
48
- return definedPath;
49
- }
50
- }
51
- export class StorefrontCheckoutService {
52
- constructor(config, $authToken, $sessionToken) {
53
- this.config = config;
54
- this.$authToken = $authToken;
55
- this.$sessionToken = $sessionToken;
56
- }
57
- provider(target) {
58
- const targetWrapper = new StorefrontCheckoutProvider(this.config, target, this.$sessionToken, this.$authToken);
59
- return new SmessService(targetWrapper);
60
- }
61
- /**
62
- * Validate cart before checkout
63
- * POST /storefront/checkout/validate
64
- */
65
- validateCheckout() {
66
- return this.provider("checkout-validate").request();
67
- }
68
- /**
69
- * Process checkout
70
- * POST /storefront/checkout/process
71
- */
72
- processCheckout(payload) {
73
- return this.provider("checkout-process").request(payload);
74
- }
75
- }
@@ -1,158 +0,0 @@
1
- import { StorefrontCheckoutService, StorefrontCheckoutProvider, } from "./storefront.checkout.service";
2
- import { NetworkingUIEventWrapped, AlertModel, } from "../types/types";
3
- import { of, BehaviorSubject } from "rxjs";
4
- describe("StorefrontCheckoutService", () => {
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
- let $sessionToken;
15
- beforeEach(() => {
16
- $authToken = new BehaviorSubject(null);
17
- $sessionToken = new BehaviorSubject(null);
18
- service = new StorefrontCheckoutService(config, $authToken, $sessionToken);
19
- });
20
- describe("StorefrontCheckoutProvider", () => {
21
- it("should generate correct path for checkout-validate", () => {
22
- const provider = new StorefrontCheckoutProvider(config, "checkout-validate", $sessionToken, $authToken);
23
- expect(provider.path).toBe("/storefront/checkout/validate");
24
- expect(provider.method).toBe("POST");
25
- });
26
- it("should generate correct path for checkout-process", () => {
27
- const provider = new StorefrontCheckoutProvider(config, "checkout-process", $sessionToken, $authToken);
28
- expect(provider.path).toBe("/storefront/checkout/process");
29
- expect(provider.method).toBe("POST");
30
- });
31
- it("should include session token in headers when not authenticated", () => {
32
- $sessionToken.next("test-session");
33
- const provider = new StorefrontCheckoutProvider(config, "checkout-validate", $sessionToken, $authToken);
34
- const headers = provider.headers;
35
- expect(headers["X-Session-Token"]).toBe("test-session");
36
- });
37
- it("should include auth token in headers when authenticated", () => {
38
- $authToken.next("test-auth-token");
39
- $sessionToken.next("test-session");
40
- const provider = new StorefrontCheckoutProvider(config, "checkout-validate", $sessionToken, $authToken);
41
- const headers = provider.headers;
42
- expect(headers["Authorization"]).toBe("Bearer test-auth-token");
43
- expect(headers["X-Session-Token"]).toBeUndefined();
44
- });
45
- });
46
- describe("validateCheckout", () => {
47
- it("should validate checkout successfully", async () => {
48
- const response = {
49
- data: { isValid: true, errors: [], warnings: [] },
50
- };
51
- jest.spyOn(service, "provider").mockReturnValue({
52
- request: () => of(NetworkingUIEventWrapped.succeeded(response)),
53
- });
54
- const result = await service.validateCheckout().toPromise();
55
- expect(result?.hasSuccess).toBe(true);
56
- expect(result?.response).toEqual(response);
57
- });
58
- it("should handle validate checkout error", async () => {
59
- jest.spyOn(service, "provider").mockReturnValue({
60
- request: () => of(NetworkingUIEventWrapped.failed(AlertModel.default())),
61
- });
62
- const result = await service.validateCheckout().toPromise();
63
- expect(result?.hasFailed).toBe(true);
64
- expect(result?.alertModel).toBeInstanceOf(AlertModel);
65
- });
66
- });
67
- describe("processCheckout", () => {
68
- it("should process checkout successfully", async () => {
69
- const payload = {
70
- billingInformation: {
71
- email: "test@example.com",
72
- street: "123 Main St",
73
- city: "Test City",
74
- postal_code: "12345",
75
- },
76
- shippingInformation: {
77
- email: "test@example.com",
78
- street: "123 Main St",
79
- city: "Test City",
80
- postal_code: "12345",
81
- },
82
- paymentMethod: "card",
83
- deliveryType: "delivery",
84
- };
85
- const response = {
86
- data: { orderId: 123, status: "completed" },
87
- };
88
- jest.spyOn(service, "provider").mockReturnValue({
89
- request: () => of(NetworkingUIEventWrapped.succeeded(response)),
90
- });
91
- const result = await service.processCheckout(payload).toPromise();
92
- expect(result?.hasSuccess).toBe(true);
93
- expect(result?.response).toEqual(response);
94
- });
95
- it("should handle process checkout error", async () => {
96
- const payload = {
97
- billingInformation: {
98
- email: "test@example.com",
99
- },
100
- shippingInformation: {
101
- email: "test@example.com",
102
- },
103
- paymentMethod: "cash",
104
- deliveryType: "pickup",
105
- };
106
- jest.spyOn(service, "provider").mockReturnValue({
107
- request: () => of(NetworkingUIEventWrapped.failed(AlertModel.default())),
108
- });
109
- const result = await service.processCheckout(payload).toPromise();
110
- expect(result?.hasFailed).toBe(true);
111
- expect(result?.alertModel).toBeInstanceOf(AlertModel);
112
- });
113
- it("should process checkout with guest session token", async () => {
114
- $sessionToken.next("guest-session-token");
115
- const payload = {
116
- billingInformation: {
117
- email: "guest@example.com",
118
- },
119
- shippingInformation: {
120
- email: "guest@example.com",
121
- },
122
- paymentMethod: "card",
123
- deliveryType: "delivery",
124
- };
125
- const response = {
126
- data: { orderId: 456, status: "completed" },
127
- };
128
- jest.spyOn(service, "provider").mockReturnValue({
129
- request: () => of(NetworkingUIEventWrapped.succeeded(response)),
130
- });
131
- const result = await service.processCheckout(payload).toPromise();
132
- expect(result?.hasSuccess).toBe(true);
133
- expect(result?.response).toEqual(response);
134
- });
135
- it("should process checkout with authenticated user", async () => {
136
- $authToken.next("auth-token");
137
- const payload = {
138
- billingInformation: {
139
- email: "user@example.com",
140
- },
141
- shippingInformation: {
142
- email: "user@example.com",
143
- },
144
- paymentMethod: "bank_transfer",
145
- deliveryType: "pickup",
146
- };
147
- const response = {
148
- data: { orderId: 789, status: "completed" },
149
- };
150
- jest.spyOn(service, "provider").mockReturnValue({
151
- request: () => of(NetworkingUIEventWrapped.succeeded(response)),
152
- });
153
- const result = await service.processCheckout(payload).toPromise();
154
- expect(result?.hasSuccess).toBe(true);
155
- expect(result?.response).toEqual(response);
156
- });
157
- });
158
- });