@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
@@ -0,0 +1,73 @@
1
+ import { SmessApiError } from '../errors/smess-api-error.js';
2
+ const TIMEOUT = Symbol('smess-timeout');
3
+ function linkSignals(signal, timeoutMs) {
4
+ const controller = new AbortController();
5
+ let timer;
6
+ const onAbort = () => controller.abort(signal?.reason);
7
+ if (signal?.aborted)
8
+ controller.abort(signal.reason);
9
+ else
10
+ signal?.addEventListener('abort', onAbort, { once: true });
11
+ if (timeoutMs && timeoutMs > 0 && !controller.signal.aborted) {
12
+ timer = setTimeout(() => controller.abort(TIMEOUT), timeoutMs);
13
+ }
14
+ return {
15
+ signal: controller.signal,
16
+ timedOut: () => controller.signal.aborted && controller.signal.reason === TIMEOUT,
17
+ cleanup: () => {
18
+ if (timer !== undefined)
19
+ clearTimeout(timer);
20
+ signal?.removeEventListener('abort', onAbort);
21
+ },
22
+ };
23
+ }
24
+ async function readBody(response, responseType) {
25
+ if (response.ok && responseType === 'blob')
26
+ return { data: await response.blob(), unparsable: false };
27
+ const raw = await response.text();
28
+ if (responseType === 'text' && response.ok)
29
+ return { data: raw, unparsable: false };
30
+ if (raw.trim() === '')
31
+ return { data: undefined, unparsable: false };
32
+ // Parse whatever the Content-Type says: some core subscribers send JSON without `application/json`.
33
+ try {
34
+ return { data: JSON.parse(raw), unparsable: false };
35
+ }
36
+ catch {
37
+ return { data: raw, unparsable: true };
38
+ }
39
+ }
40
+ /** The default transport, on the platform `fetch` (browsers, Node 20+, Next.js server and edge, React Native). */
41
+ export function createFetchTransport(fetchImpl) {
42
+ return async (request) => {
43
+ // Resolve at call time and call unbound-safe: `window.fetch` throws "Illegal invocation" when detached.
44
+ const doFetch = fetchImpl ?? ((input, init) => globalThis.fetch(input, init));
45
+ const link = linkSignals(request.signal, request.timeoutMs);
46
+ const info = { method: request.method, url: request.url };
47
+ try {
48
+ const response = await doFetch(request.url, {
49
+ ...request.fetchOptions,
50
+ method: request.method,
51
+ headers: request.headers,
52
+ body: request.body ?? null,
53
+ signal: link.signal,
54
+ });
55
+ const { data, unparsable } = await readBody(response, request.responseType);
56
+ return { status: response.status, ok: response.ok, headers: response.headers, url: response.url || request.url, data, unparsable };
57
+ }
58
+ catch (cause) {
59
+ if (SmessApiError.is(cause))
60
+ throw cause;
61
+ if (link.timedOut()) {
62
+ throw new SmessApiError({ kind: 'timeout', message: `Request timed out after ${request.timeoutMs} ms.`, request: info, cause });
63
+ }
64
+ if (link.signal.aborted)
65
+ throw new SmessApiError({ kind: 'aborted', request: info, cause });
66
+ throw new SmessApiError({ kind: 'network', request: info, cause });
67
+ }
68
+ finally {
69
+ link.cleanup();
70
+ }
71
+ };
72
+ }
73
+ //# sourceMappingURL=transport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transport.js","sourceRoot":"","sources":["../../src/core/transport.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /** Shared primitive types used across the transport, client and module layers. */
2
+ export type HttpMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';
3
+ /**
4
+ * How a request uses the signed-in session.
5
+ *
6
+ * - `none`: never sends `Authorization`. Required for core-services' anonymous firewalls (login, refresh,
7
+ * OTP, SSO, public catalogs): Lexik rejects any stale Bearer with 401, even on public routes.
8
+ * - `optional`: sends the access token when there is one.
9
+ * - `required`: fails with `unauthenticated` (code `no_session`) before any network call when signed out.
10
+ */
11
+ export type AuthMode = 'none' | 'optional' | 'required';
12
+ /** `json` parses the body (empty body → `undefined`); `text` and `blob` return it raw. */
13
+ export type ResponseType = 'json' | 'text' | 'blob';
14
+ export type MaybePromise<T> = T | Promise<T>;
15
+ export type QueryPrimitive = string | number | boolean | null | undefined;
16
+ /** Query values; arrays are sent PHP-style (`key[]=a&key[]=b`); `null`/`undefined` are dropped. */
17
+ export type QueryParams = Readonly<Record<string, QueryPrimitive | readonly QueryPrimitive[]>>;
18
+ /**
19
+ * Extra `fetch` options passed through untouched (`cache`, `credentials`, `keepalive`, Next.js `next`, ...).
20
+ * `method`, `headers`, `body` and `signal` are owned by the client.
21
+ */
22
+ export type FetchOptions = Omit<RequestInit, 'method' | 'headers' | 'body' | 'signal'> & Record<string, unknown>;
23
+ export type FetchFunction = (input: string, init?: RequestInit) => Promise<Response>;
24
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAElF,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAC;AAErE;;;;;;;GAOG;AACH,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,UAAU,GAAG,UAAU,CAAC;AAExD,0FAA0F;AAC1F,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAEpD,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAE7C,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC;AAE1E,mGAAmG;AACnG,MAAM,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,GAAG,SAAS,cAAc,EAAE,CAAC,CAAC,CAAC;AAE/F;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,EAAE,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,QAAQ,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEjH,MAAM,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ /** Shared primitive types used across the transport, client and module layers. */
2
+ export {};
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAAA,kFAAkF"}
@@ -0,0 +1,15 @@
1
+ import type { QueryParams } from './types.js';
2
+ type ParamNames<P extends string> = P extends `${string}{${infer Name}}${infer Rest}` ? Name | ParamNames<Rest> : never;
3
+ /** `{ id: … }` for `'/v1/things/{id}'`; an empty object type when the path has no placeholders. */
4
+ export type PathParams<P extends string> = [ParamNames<P>] extends [never] ? Record<string, never> : {
5
+ readonly [K in ParamNames<P>]: string | number;
6
+ };
7
+ export type HasPathParams<P extends string> = [ParamNames<P>] extends [never] ? false : true;
8
+ /** Fills `{name}` placeholders with URL-encoded values. Throws on a missing or empty value. */
9
+ export declare function buildPath(template: string, params?: Readonly<Record<string, string | number>>): string;
10
+ /** Serializes query params the way Symfony reads them; returns `''` or `?a=1&b[]=x`. */
11
+ export declare function serializeQuery(query: QueryParams | undefined): string;
12
+ /** Joins a base URL (optionally with a path prefix) and an absolute path. */
13
+ export declare function joinUrl(base: string, path: string): string;
14
+ export {};
15
+ //# sourceMappingURL=url.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"url.d.ts","sourceRoot":"","sources":["../../src/core/url.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAkB,MAAM,YAAY,CAAC;AAE9D,KAAK,UAAU,CAAC,CAAC,SAAS,MAAM,IAAI,CAAC,SAAS,GAAG,MAAM,IAAI,MAAM,IAAI,IAAI,MAAM,IAAI,EAAE,GAAG,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;AAExH,mGAAmG;AACnG,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,MAAM,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,GACtE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GACrB;IAAE,QAAQ,EAAE,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,MAAM;CAAE,CAAC;AAEvD,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,MAAM,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC;AAI7F,+FAA+F;AAC/F,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAM,GAAG,MAAM,CAQ1G;AAQD,wFAAwF;AACxF,wBAAgB,cAAc,CAAC,KAAK,EAAE,WAAW,GAAG,SAAS,GAAG,MAAM,CAiBrE;AAED,6EAA6E;AAC7E,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAG1D"}
@@ -0,0 +1,46 @@
1
+ const PLACEHOLDER = /\{([^}]+)\}/g;
2
+ /** Fills `{name}` placeholders with URL-encoded values. Throws on a missing or empty value. */
3
+ export function buildPath(template, params = {}) {
4
+ return template.replace(PLACEHOLDER, (_match, name) => {
5
+ const value = params[name];
6
+ if (value === undefined || value === null || String(value) === '') {
7
+ throw new TypeError(`Missing path parameter "${name}" for ${template}`);
8
+ }
9
+ return encodeURIComponent(String(value));
10
+ });
11
+ }
12
+ function stringify(value) {
13
+ if (value === undefined || value === null)
14
+ return undefined;
15
+ if (typeof value === 'boolean')
16
+ return value ? 'true' : 'false';
17
+ return String(value);
18
+ }
19
+ /** Serializes query params the way Symfony reads them; returns `''` or `?a=1&b[]=x`. */
20
+ export function serializeQuery(query) {
21
+ if (!query)
22
+ return '';
23
+ const search = new URLSearchParams();
24
+ for (const [key, raw] of Object.entries(query)) {
25
+ if (Array.isArray(raw)) {
26
+ const name = key.endsWith('[]') ? key : `${key}[]`;
27
+ for (const item of raw) {
28
+ const value = stringify(item);
29
+ if (value !== undefined)
30
+ search.append(name, value);
31
+ }
32
+ continue;
33
+ }
34
+ const value = stringify(raw);
35
+ if (value !== undefined)
36
+ search.append(key, value);
37
+ }
38
+ const text = search.toString();
39
+ return text ? `?${text}` : '';
40
+ }
41
+ /** Joins a base URL (optionally with a path prefix) and an absolute path. */
42
+ export function joinUrl(base, path) {
43
+ const trimmed = base.replace(/\/+$/, '');
44
+ return `${trimmed}${path.startsWith('/') ? path : `/${path}`}`;
45
+ }
46
+ //# sourceMappingURL=url.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"url.js","sourceRoot":"","sources":["../../src/core/url.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,GAAG,cAAc,CAAC;AAEnC,+FAA+F;AAC/F,MAAM,UAAU,SAAS,CAAC,QAAgB,EAAE,SAAoD,EAAE;IAChG,OAAO,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,MAAM,EAAE,IAAY,EAAE,EAAE;QAC5D,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QAC3B,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC;YAClE,MAAM,IAAI,SAAS,CAAC,2BAA2B,IAAI,SAAS,QAAQ,EAAE,CAAC,CAAC;QAC1E,CAAC;QACD,OAAO,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,SAAS,CAAC,KAAqB;IACtC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IAC5D,IAAI,OAAO,KAAK,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;IAChE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AAED,wFAAwF;AACxF,MAAM,UAAU,cAAc,CAAC,KAA8B;IAC3D,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IACtB,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;IACrC,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC/C,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC;YACnD,KAAK,MAAM,IAAI,IAAI,GAAgC,EAAE,CAAC;gBACpD,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;gBAC9B,IAAI,KAAK,KAAK,SAAS;oBAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACtD,CAAC;YACD,SAAS;QACX,CAAC;QACD,MAAM,KAAK,GAAG,SAAS,CAAC,GAAqB,CAAC,CAAC;QAC/C,IAAI,KAAK,KAAK,SAAS;YAAE,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACrD,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;IAC/B,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AAChC,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,OAAO,CAAC,IAAY,EAAE,IAAY;IAChD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACzC,OAAO,GAAG,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;AACjE,CAAC"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Reads every error format core-services emits into one shape:
3
+ *
4
+ * - Stripe style `{"error": {"type", "code", "message", "param"}}` (Danara, rate limits, Mobile, Payment, ...)
5
+ * - Common `{"errors": {"<field or empty>": [{"message"}]}}` (validation, auth, http, access-denied subscribers)
6
+ * - `{"code", "message"}` (Campaign, EmailCampaign, SSO user messages, Lexik JWT failures)
7
+ * - `{"is_success": false, "error_code", "error_message"}` (DefaultExceptionSubscriber, 500)
8
+ * - `{"error": "text"}` (API-key rate limit, X-Internal-Key failures)
9
+ * - `{"violations": [{"propertyPath", "message"}]}` and `{"detail"}` / `{"title"}` (API Platform style)
10
+ * - a short `text/plain` body (CORS tenant mismatch 403); HTML error pages yield nothing
11
+ */
12
+ export interface ParsedErrorBody {
13
+ message?: string;
14
+ code?: string;
15
+ type?: string;
16
+ param?: string;
17
+ fields?: Record<string, string>;
18
+ }
19
+ export declare function parseErrorBody(body: unknown): ParsedErrorBody;
20
+ //# sourceMappingURL=parse-error-body.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse-error-body.d.ts","sourceRoot":"","sources":["../../src/errors/parse-error-body.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC;AAoBD,wBAAgB,cAAc,CAAC,IAAI,EAAE,OAAO,GAAG,eAAe,CAwD7D"}
@@ -0,0 +1,73 @@
1
+ const MAX_TEXT_MESSAGE = 500;
2
+ const isRecord = (value) => typeof value === 'object' && value !== null && !Array.isArray(value);
3
+ const text = (value) => typeof value === 'string' && value.trim() !== '' ? value.trim() : undefined;
4
+ function messagesOf(value) {
5
+ const items = Array.isArray(value) ? value : [value];
6
+ const out = [];
7
+ for (const item of items) {
8
+ const message = isRecord(item) ? text(item.message) ?? text(item.title) : text(item);
9
+ if (message)
10
+ out.push(message);
11
+ }
12
+ return out;
13
+ }
14
+ export function parseErrorBody(body) {
15
+ if (typeof body === 'string') {
16
+ const trimmed = body.trim();
17
+ if (trimmed && trimmed.length <= MAX_TEXT_MESSAGE && !trimmed.startsWith('<'))
18
+ return { message: trimmed };
19
+ return {};
20
+ }
21
+ if (!isRecord(body))
22
+ return {};
23
+ const out = {};
24
+ const general = [];
25
+ const fields = {};
26
+ const error = body.error;
27
+ if (isRecord(error)) {
28
+ out.message = text(error.message);
29
+ out.code = text(error.code);
30
+ out.type = text(error.type);
31
+ out.param = text(error.param);
32
+ }
33
+ else if (text(error)) {
34
+ out.message = text(error);
35
+ }
36
+ const errors = body.errors;
37
+ if (isRecord(errors)) {
38
+ for (const [key, value] of Object.entries(errors)) {
39
+ const messages = messagesOf(value);
40
+ if (messages.length === 0)
41
+ continue;
42
+ if (key === '')
43
+ general.push(...messages);
44
+ else
45
+ fields[key] ?? (fields[key] = messages[0]);
46
+ }
47
+ }
48
+ const violations = Array.isArray(body.violations) ? body.violations : Array.isArray(errors) ? errors : undefined;
49
+ if (violations) {
50
+ for (const violation of violations) {
51
+ const message = isRecord(violation) ? text(violation.message) ?? text(violation.title) : text(violation);
52
+ if (!message)
53
+ continue;
54
+ const key = isRecord(violation)
55
+ ? text(violation.propertyPath) ?? text(violation.property_path) ?? text(violation.field)
56
+ : undefined;
57
+ if (key)
58
+ fields[key] ?? (fields[key] = message);
59
+ else
60
+ general.push(message);
61
+ }
62
+ }
63
+ out.message ?? (out.message = general[0] ?? text(body.message) ?? text(body.error_message) ?? text(body.detail) ?? text(body.title));
64
+ if (general.length > 1 && out.message === general[0])
65
+ out.message = general.join(' ');
66
+ out.code ?? (out.code = text(body.error_code) ?? text(body.code));
67
+ if (Object.keys(fields).length > 0) {
68
+ out.fields = fields;
69
+ out.message ?? (out.message = Object.values(fields).join(' '));
70
+ }
71
+ return Object.fromEntries(Object.entries(out).filter(([, value]) => value !== undefined));
72
+ }
73
+ //# sourceMappingURL=parse-error-body.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse-error-body.js","sourceRoot":"","sources":["../../src/errors/parse-error-body.ts"],"names":[],"mappings":"AAmBA,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAE7B,MAAM,QAAQ,GAAG,CAAC,KAAc,EAAoC,EAAE,CACpE,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAEvE,MAAM,IAAI,GAAG,CAAC,KAAc,EAAsB,EAAE,CAClD,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AAE9E,SAAS,UAAU,CAAC,KAAc;IAChC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACrD,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrF,IAAI,OAAO;YAAE,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAa;IAC1C,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,IAAI,gBAAgB,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;QAC3G,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IAE/B,MAAM,GAAG,GAAoB,EAAE,CAAC;IAChC,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,MAAM,GAA2B,EAAE,CAAC;IAE1C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IACzB,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACpB,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAClC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC5B,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC5B,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;SAAM,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACvB,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IAC3B,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACrB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAClD,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;YACnC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;gBAAE,SAAS;YACpC,IAAI,GAAG,KAAK,EAAE;gBAAE,OAAO,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC;;gBACrC,MAAM,CAAC,GAAG,MAAV,MAAM,CAAC,GAAG,IAAM,QAAQ,CAAC,CAAC,CAAW,EAAC;QAC7C,CAAC;IACH,CAAC;IAED,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;IACjH,IAAI,UAAU,EAAE,CAAC;QACf,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,MAAM,OAAO,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACzG,IAAI,CAAC,OAAO;gBAAE,SAAS;YACvB,MAAM,GAAG,GAAG,QAAQ,CAAC,SAAS,CAAC;gBAC7B,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;gBACxF,CAAC,CAAC,SAAS,CAAC;YACd,IAAI,GAAG;gBAAE,MAAM,CAAC,GAAG,MAAV,MAAM,CAAC,GAAG,IAAM,OAAO,EAAC;;gBAC5B,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;IAED,GAAG,CAAC,OAAO,KAAX,GAAG,CAAC,OAAO,GACT,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAC;IACxG,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC;QAAE,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACtF,GAAG,CAAC,IAAI,KAAR,GAAG,CAAC,IAAI,GAAK,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAC;IAEtD,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnC,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC;QACpB,GAAG,CAAC,OAAO,KAAX,GAAG,CAAC,OAAO,GAAK,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAC;IAClD,CAAC;IAED,OAAO,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC,CAAoB,CAAC;AAC/G,CAAC"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * What went wrong, independent of which of core-services' error formats the server used.
3
+ *
4
+ * | kind | when |
5
+ * |--------------------|-------------------------------------------------------------|
6
+ * | `network` | no response (DNS, offline, CORS, connection reset) |
7
+ * | `timeout` | the client's timeout fired |
8
+ * | `aborted` | the caller's AbortSignal fired |
9
+ * | `unauthenticated` | 401, or `auth: 'required'` while signed out (`no_session`) |
10
+ * | `forbidden` | 403 |
11
+ * | `not_found` | 404, 410 |
12
+ * | `conflict` | 409 |
13
+ * | `validation` | 400, 422 and other 4xx; field messages are in `fields` |
14
+ * | `rate_limited` | 429; `retryAfter` holds the seconds to wait when sent |
15
+ * | `upgrade_required` | 426 (mobile app version gate) |
16
+ * | `unavailable` | 502, 503, 504; core names the missing dependency on 503 |
17
+ * | `server` | other 5xx |
18
+ * | `invalid_response` | a 2xx whose body is not what the endpoint promises |
19
+ * | `config` | the client is not set up for this call (no host, no tenant) |
20
+ */
21
+ export type SmessErrorKind = 'network' | 'timeout' | 'aborted' | 'unauthenticated' | 'forbidden' | 'not_found' | 'conflict' | 'validation' | 'rate_limited' | 'upgrade_required' | 'unavailable' | 'server' | 'invalid_response' | 'config';
22
+ export interface SmessRequestInfo {
23
+ readonly method: string;
24
+ readonly url: string;
25
+ readonly service?: string;
26
+ }
27
+ export interface SmessApiErrorInit {
28
+ kind: SmessErrorKind;
29
+ /** HTTP status; 0 when no response was received. */
30
+ status?: number;
31
+ message?: string;
32
+ /** Machine code: Stripe-style `error.code` (`missing_client_id`, `email_already_registered`, ...) or a client code. */
33
+ code?: string;
34
+ /** Stripe-style `error.type` (`invalid_request_error`, `rate_limit_error`, ...). */
35
+ type?: string;
36
+ /** Stripe-style `error.param`. */
37
+ param?: string;
38
+ /** The server's own text. Can be an i18n key (`error.validation.not_blank`); the app decides how to show it. */
39
+ serverMessage?: string;
40
+ /** First message per field, keys as the server sent them (snake_case property paths). */
41
+ fields?: Record<string, string>;
42
+ /** Seconds, from `Retry-After`. */
43
+ retryAfter?: number;
44
+ /** The parsed (or raw text) error body. */
45
+ body?: unknown;
46
+ request?: SmessRequestInfo;
47
+ cause?: unknown;
48
+ }
49
+ /** The one error type every call rejects with (programming errors in app middleware excepted). */
50
+ export declare class SmessApiError extends Error {
51
+ readonly name = "SmessApiError";
52
+ readonly kind: SmessErrorKind;
53
+ readonly status: number;
54
+ readonly code?: string;
55
+ readonly type?: string;
56
+ readonly param?: string;
57
+ readonly serverMessage?: string;
58
+ readonly fields?: Readonly<Record<string, string>>;
59
+ readonly retryAfter?: number;
60
+ readonly body?: unknown;
61
+ readonly request?: SmessRequestInfo;
62
+ constructor(init: SmessApiErrorInit);
63
+ /** `instanceof` that also works when two copies of the package are bundled. */
64
+ static is(value: unknown): value is SmessApiError;
65
+ }
66
+ export declare const isSmessApiError: (value: unknown) => value is SmessApiError;
67
+ export declare function errorKindForStatus(status: number): SmessErrorKind;
68
+ /** `Retry-After` as seconds (delta-seconds or an HTTP date); undefined when absent or unreadable. */
69
+ export declare function parseRetryAfter(value: string | null, now?: number): number | undefined;
70
+ //# sourceMappingURL=smess-api-error.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"smess-api-error.d.ts","sourceRoot":"","sources":["../../src/errors/smess-api-error.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,MAAM,cAAc,GACtB,SAAS,GACT,SAAS,GACT,SAAS,GACT,iBAAiB,GACjB,WAAW,GACX,WAAW,GACX,UAAU,GACV,YAAY,GACZ,cAAc,GACd,kBAAkB,GAClB,aAAa,GACb,QAAQ,GACR,kBAAkB,GAClB,QAAQ,CAAC;AAEb,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,cAAc,CAAC;IACrB,oDAAoD;IACpD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,uHAAuH;IACvH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,oFAAoF;IACpF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kCAAkC;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gHAAgH;IAChH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,yFAAyF;IACzF,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,mCAAmC;IACnC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,2CAA2C;IAC3C,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,gBAAgB,CAAC;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAqBD,kGAAkG;AAClG,qBAAa,aAAc,SAAQ,KAAK;IACtC,SAAkB,IAAI,mBAAmB;IACzC,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACnD,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,OAAO,CAAC,EAAE,gBAAgB,CAAC;gBAExB,IAAI,EAAE,iBAAiB;IAkBnC,+EAA+E;IAC/E,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,aAAa;CAGlD;AAED,eAAO,MAAM,eAAe,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,aAAwC,CAAC;AAEnG,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,CAsBjE;AAED,qGAAqG;AACrG,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE,GAAG,GAAE,MAAmB,GAAG,MAAM,GAAG,SAAS,CAOlG"}
@@ -0,0 +1,84 @@
1
+ const BRAND = Symbol.for('@smess/networking:SmessApiError');
2
+ const DEFAULT_MESSAGES = {
3
+ network: 'The network request failed.',
4
+ timeout: 'The request timed out.',
5
+ aborted: 'The request was cancelled.',
6
+ unauthenticated: 'Sign-in is required.',
7
+ forbidden: 'Access denied.',
8
+ not_found: 'Not found.',
9
+ conflict: 'The request conflicts with the current state.',
10
+ validation: 'The request was rejected.',
11
+ rate_limited: 'Too many requests.',
12
+ upgrade_required: 'This app version is no longer supported.',
13
+ unavailable: 'The service is temporarily unavailable.',
14
+ server: 'The server failed to process the request.',
15
+ invalid_response: 'The server returned an unexpected response.',
16
+ config: 'The client is not configured for this request.',
17
+ };
18
+ /** The one error type every call rejects with (programming errors in app middleware excepted). */
19
+ export class SmessApiError extends Error {
20
+ constructor(init) {
21
+ super(init.message ?? init.serverMessage ?? DEFAULT_MESSAGES[init.kind], init.cause === undefined ? undefined : { cause: init.cause });
22
+ this.name = 'SmessApiError';
23
+ this.kind = init.kind;
24
+ this.status = init.status ?? 0;
25
+ if (init.code !== undefined)
26
+ this.code = init.code;
27
+ if (init.type !== undefined)
28
+ this.type = init.type;
29
+ if (init.param !== undefined)
30
+ this.param = init.param;
31
+ if (init.serverMessage !== undefined)
32
+ this.serverMessage = init.serverMessage;
33
+ if (init.fields !== undefined)
34
+ this.fields = Object.freeze({ ...init.fields });
35
+ if (init.retryAfter !== undefined)
36
+ this.retryAfter = init.retryAfter;
37
+ if (init.body !== undefined)
38
+ this.body = init.body;
39
+ if (init.request !== undefined)
40
+ this.request = init.request;
41
+ Object.defineProperty(this, BRAND, { value: true });
42
+ }
43
+ /** `instanceof` that also works when two copies of the package are bundled. */
44
+ static is(value) {
45
+ return typeof value === 'object' && value !== null && value[BRAND] === true;
46
+ }
47
+ }
48
+ export const isSmessApiError = (value) => SmessApiError.is(value);
49
+ export function errorKindForStatus(status) {
50
+ switch (status) {
51
+ case 401:
52
+ return 'unauthenticated';
53
+ case 403:
54
+ return 'forbidden';
55
+ case 404:
56
+ case 410:
57
+ return 'not_found';
58
+ case 409:
59
+ return 'conflict';
60
+ case 426:
61
+ return 'upgrade_required';
62
+ case 429:
63
+ return 'rate_limited';
64
+ case 502:
65
+ case 503:
66
+ case 504:
67
+ return 'unavailable';
68
+ default:
69
+ return status >= 500 ? 'server' : 'validation';
70
+ }
71
+ }
72
+ /** `Retry-After` as seconds (delta-seconds or an HTTP date); undefined when absent or unreadable. */
73
+ export function parseRetryAfter(value, now = Date.now()) {
74
+ if (!value)
75
+ return undefined;
76
+ const trimmed = value.trim();
77
+ if (/^\d+$/.test(trimmed))
78
+ return Number(trimmed);
79
+ const date = Date.parse(trimmed);
80
+ if (Number.isNaN(date))
81
+ return undefined;
82
+ return Math.max(0, Math.ceil((date - now) / 1000));
83
+ }
84
+ //# sourceMappingURL=smess-api-error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"smess-api-error.js","sourceRoot":"","sources":["../../src/errors/smess-api-error.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,25 +1,27 @@
1
- export * from "./services/user.service";
2
- export * from "./services/product.service";
3
- export * from "./services/auth.service";
4
- export * from "./services/store.service";
5
- export * from "./services/store.cart.service";
6
- export * from "./services/store.product.service";
7
- export * from "./services/customer.service";
8
- export * from "./services/employee.service";
9
- export * from "./services/order.service";
10
- export * from "./services/cache.service";
11
- export * from "./services/smess.service";
12
- export * from "./services/utils/withAuthReset";
13
- export * from "./services/storefront.product.service";
14
- export * from "./services/storefront.store.service";
15
- export * from "./services/storefront.cart.service";
16
- export * from "./services/storefront.checkout.service";
17
- export * from "./services/storefront.order.service";
18
- export * from "./services/storefront.customer.metadata.service";
19
- export * from "./core/base.provider";
20
- export * from "./core/base.service.wrapper";
21
- export * from "./core/axios.observable";
22
- export * from "./types/types";
23
- export { $logger } from "./services/logger.service";
24
- export declare const baseURL: () => string;
25
- export declare const apiVersion: () => string;
1
+ export { createSmessClient, DEFAULT_TIMEOUT_MS, DEFAULT_REFRESH_SKEW_MS } from './core/client.js';
2
+ export type { SmessClient, SmessClientConfig, RawRequest, SessionHandle } from './core/client.js';
3
+ export { defineEndpoint } from './core/endpoint.js';
4
+ export type { Endpoint, AnyEndpoint, CallOptions, CallInput, CallArgs, EndpointResult, None } from './core/endpoint.js';
5
+ export { PRODUCTION_HOSTS } from './core/hosts.js';
6
+ export type { HostMap, ServiceKey } from './core/hosts.js';
7
+ export type { Middleware, RequestContext, EndpointInfo } from './core/pipeline.js';
8
+ export { createFetchTransport } from './core/transport.js';
9
+ export type { Transport, TransportRequest, HttpResponse } from './core/transport.js';
10
+ export type { RetryOptions } from './core/retry.js';
11
+ export type { AuthMode, HttpMethod, ResponseType, QueryParams, QueryPrimitive, FetchOptions, FetchFunction, MaybePromise, } from './core/types.js';
12
+ export { buildPath, serializeQuery, joinUrl } from './core/url.js';
13
+ export type { PathParams } from './core/url.js';
14
+ export { paginate } from './core/pagination.js';
15
+ export type { ApiList, PagedList } from './core/pagination.js';
16
+ export { unwrapData, ignoreBody, emptyObjectAsNull } from './core/decoders.js';
17
+ export { SmessApiError, isSmessApiError, errorKindForStatus, parseRetryAfter } from './errors/smess-api-error.js';
18
+ export type { SmessErrorKind, SmessApiErrorInit, SmessRequestInfo } from './errors/smess-api-error.js';
19
+ export { parseErrorBody } from './errors/parse-error-body.js';
20
+ export type { ParsedErrorBody } from './errors/parse-error-body.js';
21
+ export { memorySession, staticSession, webStorageSession } from './session/stores.js';
22
+ export type { WebStorageSessionOptions } from './session/stores.js';
23
+ export { decodeJwt, tokenExpiresAt } from './session/jwt.js';
24
+ export type { SmessJwtClaims } from './session/jwt.js';
25
+ export type { RefreshStrategy } from './session/auth-middleware.js';
26
+ export type { Session, SessionStore, SessionExpiredEvent, SessionExpiredReason } from './session/types.js';
27
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAClG,YAAY,EAAE,WAAW,EAAE,iBAAiB,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAClG,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AACxH,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,YAAY,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC3D,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACnF,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,YAAY,EAAE,SAAS,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACrF,YAAY,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,YAAY,EACV,QAAQ,EACR,UAAU,EACV,YAAY,EACZ,WAAW,EACX,cAAc,EACd,YAAY,EACZ,aAAa,EACb,YAAY,GACb,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACnE,YAAY,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,YAAY,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAG/E,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAClH,YAAY,EAAE,cAAc,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AACvG,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,YAAY,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAGpE,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACtF,YAAY,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC7D,YAAY,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,YAAY,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AACpE,YAAY,EAAE,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC"}
package/dist/index.js CHANGED
@@ -1,29 +1,15 @@
1
- export * from "./services/user.service";
2
- export * from "./services/product.service";
3
- export * from "./services/auth.service";
4
- export * from "./services/store.service";
5
- export * from "./services/store.cart.service";
6
- export * from "./services/store.product.service";
7
- export * from "./services/customer.service";
8
- export * from "./services/employee.service";
9
- export * from "./services/order.service";
10
- export * from "./services/cache.service";
11
- export * from "./services/smess.service";
12
- export * from "./services/utils/withAuthReset";
13
- export * from "./services/storefront.product.service";
14
- export * from "./services/storefront.store.service";
15
- export * from "./services/storefront.cart.service";
16
- export * from "./services/storefront.checkout.service";
17
- export * from "./services/storefront.order.service";
18
- export * from "./services/storefront.customer.metadata.service";
19
- export * from "./core/base.provider";
20
- export * from "./core/base.service.wrapper";
21
- export * from "./core/axios.observable";
22
- export * from "./types/types";
23
- export { $logger } from "./services/logger.service";
24
- export const baseURL = () => {
25
- return "";
26
- };
27
- export const apiVersion = () => {
28
- return "api/v1";
29
- };
1
+ // Core: client, endpoints, transport, middleware.
2
+ export { createSmessClient, DEFAULT_TIMEOUT_MS, DEFAULT_REFRESH_SKEW_MS } from './core/client.js';
3
+ export { defineEndpoint } from './core/endpoint.js';
4
+ export { PRODUCTION_HOSTS } from './core/hosts.js';
5
+ export { createFetchTransport } from './core/transport.js';
6
+ export { buildPath, serializeQuery, joinUrl } from './core/url.js';
7
+ export { paginate } from './core/pagination.js';
8
+ export { unwrapData, ignoreBody, emptyObjectAsNull } from './core/decoders.js';
9
+ // Errors.
10
+ export { SmessApiError, isSmessApiError, errorKindForStatus, parseRetryAfter } from './errors/smess-api-error.js';
11
+ export { parseErrorBody } from './errors/parse-error-body.js';
12
+ // Session.
13
+ export { memorySession, staticSession, webStorageSession } from './session/stores.js';
14
+ export { decodeJwt, tokenExpiresAt } from './session/jwt.js';
15
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAClD,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAElG,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAGnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAa3D,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAEnE,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEhD,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAE/E,UAAU;AACV,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAElH,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAG9D,WAAW;AACX,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAEtF,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC"}