joopjs 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 (259) hide show
  1. package/CHANGELOG.md +678 -0
  2. package/README.md +583 -0
  3. package/dist/a11y.service-C-DQQfgO.d.mts +143 -0
  4. package/dist/a11y.service-CauEJrJe.d.ts +143 -0
  5. package/dist/adapters-B6slG6hQ.d.mts +84 -0
  6. package/dist/adapters-B6slG6hQ.d.ts +84 -0
  7. package/dist/aes.service-CkoupAww.d.mts +95 -0
  8. package/dist/aes.service-CkoupAww.d.ts +95 -0
  9. package/dist/ai/index.d.mts +99 -0
  10. package/dist/ai/index.d.ts +99 -0
  11. package/dist/ai/index.js +307 -0
  12. package/dist/ai/index.js.map +1 -0
  13. package/dist/ai/index.mjs +304 -0
  14. package/dist/ai/index.mjs.map +1 -0
  15. package/dist/analytics/index.d.mts +42 -0
  16. package/dist/analytics/index.d.ts +42 -0
  17. package/dist/analytics/index.js +139 -0
  18. package/dist/analytics/index.js.map +1 -0
  19. package/dist/analytics/index.mjs +136 -0
  20. package/dist/analytics/index.mjs.map +1 -0
  21. package/dist/angular/index.d.mts +148 -0
  22. package/dist/angular/index.d.ts +148 -0
  23. package/dist/angular/index.js +122 -0
  24. package/dist/angular/index.js.map +1 -0
  25. package/dist/angular/index.mjs +101 -0
  26. package/dist/angular/index.mjs.map +1 -0
  27. package/dist/api/index.d.mts +128 -0
  28. package/dist/api/index.d.ts +128 -0
  29. package/dist/api/index.js +1358 -0
  30. package/dist/api/index.js.map +1 -0
  31. package/dist/api/index.mjs +1332 -0
  32. package/dist/api/index.mjs.map +1 -0
  33. package/dist/auth/index.d.mts +105 -0
  34. package/dist/auth/index.d.ts +105 -0
  35. package/dist/auth/index.js +989 -0
  36. package/dist/auth/index.js.map +1 -0
  37. package/dist/auth/index.mjs +979 -0
  38. package/dist/auth/index.mjs.map +1 -0
  39. package/dist/auth.service-DNVB-L4U.d.mts +16 -0
  40. package/dist/auth.service-PjUUSUIt.d.ts +16 -0
  41. package/dist/banking/index.d.mts +1530 -0
  42. package/dist/banking/index.d.ts +1530 -0
  43. package/dist/banking/index.js +4739 -0
  44. package/dist/banking/index.js.map +1 -0
  45. package/dist/banking/index.mjs +4661 -0
  46. package/dist/banking/index.mjs.map +1 -0
  47. package/dist/cache/index.d.mts +40 -0
  48. package/dist/cache/index.d.ts +40 -0
  49. package/dist/cache/index.js +174 -0
  50. package/dist/cache/index.js.map +1 -0
  51. package/dist/cache/index.mjs +172 -0
  52. package/dist/cache/index.mjs.map +1 -0
  53. package/dist/client-profile.service-BuPeXVp5.d.mts +28 -0
  54. package/dist/client-profile.service-D5bRRYQp.d.ts +28 -0
  55. package/dist/config.models-Cqg04fAQ.d.mts +84 -0
  56. package/dist/config.models-Cqg04fAQ.d.ts +84 -0
  57. package/dist/config.service-CrCvI-JS.d.ts +31 -0
  58. package/dist/config.service-Cz4QQLlf.d.mts +31 -0
  59. package/dist/core/index.d.mts +4 -0
  60. package/dist/core/index.d.ts +4 -0
  61. package/dist/core/index.js +631 -0
  62. package/dist/core/index.js.map +1 -0
  63. package/dist/core/index.mjs +619 -0
  64. package/dist/core/index.mjs.map +1 -0
  65. package/dist/crypto-utils-DriNhLdx.d.mts +30 -0
  66. package/dist/crypto-utils-DriNhLdx.d.ts +30 -0
  67. package/dist/data-storage.service-DT6xaTxE.d.ts +51 -0
  68. package/dist/data-storage.service-LvhGRCmw.d.mts +51 -0
  69. package/dist/deeplink/index.d.mts +39 -0
  70. package/dist/deeplink/index.d.ts +39 -0
  71. package/dist/deeplink/index.js +268 -0
  72. package/dist/deeplink/index.js.map +1 -0
  73. package/dist/deeplink/index.mjs +265 -0
  74. package/dist/deeplink/index.mjs.map +1 -0
  75. package/dist/deeplink.service-Ctd5u243.d.mts +35 -0
  76. package/dist/deeplink.service-uUuTnY9_.d.ts +35 -0
  77. package/dist/dev/index.d.mts +20 -0
  78. package/dist/dev/index.d.ts +20 -0
  79. package/dist/dev/index.js +51 -0
  80. package/dist/dev/index.js.map +1 -0
  81. package/dist/dev/index.mjs +49 -0
  82. package/dist/dev/index.mjs.map +1 -0
  83. package/dist/device/index.d.mts +108 -0
  84. package/dist/device/index.d.ts +108 -0
  85. package/dist/device/index.js +960 -0
  86. package/dist/device/index.js.map +1 -0
  87. package/dist/device/index.mjs +951 -0
  88. package/dist/device/index.mjs.map +1 -0
  89. package/dist/differential-privacy-BcAv1G80.d.mts +210 -0
  90. package/dist/differential-privacy-C8mAUjZr.d.ts +210 -0
  91. package/dist/encryption/index.d.mts +75 -0
  92. package/dist/encryption/index.d.ts +75 -0
  93. package/dist/encryption/index.js +605 -0
  94. package/dist/encryption/index.js.map +1 -0
  95. package/dist/encryption/index.mjs +598 -0
  96. package/dist/encryption/index.mjs.map +1 -0
  97. package/dist/form-validator-3tkmzr_o.d.mts +72 -0
  98. package/dist/form-validator-3tkmzr_o.d.ts +72 -0
  99. package/dist/forms/index.d.mts +59 -0
  100. package/dist/forms/index.d.ts +59 -0
  101. package/dist/forms/index.js +446 -0
  102. package/dist/forms/index.js.map +1 -0
  103. package/dist/forms/index.mjs +442 -0
  104. package/dist/forms/index.mjs.map +1 -0
  105. package/dist/i18n/index.d.mts +37 -0
  106. package/dist/i18n/index.d.ts +37 -0
  107. package/dist/i18n/index.js +147 -0
  108. package/dist/i18n/index.js.map +1 -0
  109. package/dist/i18n/index.mjs +145 -0
  110. package/dist/i18n/index.mjs.map +1 -0
  111. package/dist/idempotency.service-_6LqhivP.d.mts +372 -0
  112. package/dist/idempotency.service-eOKoISRD.d.ts +372 -0
  113. package/dist/index-B_ksKpS1.d.mts +202 -0
  114. package/dist/index-CqDKWTUP.d.mts +28 -0
  115. package/dist/index-CqDKWTUP.d.ts +28 -0
  116. package/dist/index-DFqEoX_l.d.ts +202 -0
  117. package/dist/index-Dz0gOur2.d.mts +36 -0
  118. package/dist/index-Dz0gOur2.d.ts +36 -0
  119. package/dist/index.d.mts +1336 -0
  120. package/dist/index.d.ts +1336 -0
  121. package/dist/index.js +19464 -0
  122. package/dist/index.js.map +1 -0
  123. package/dist/index.mjs +19155 -0
  124. package/dist/index.mjs.map +1 -0
  125. package/dist/india/index.d.mts +75 -0
  126. package/dist/india/index.d.ts +75 -0
  127. package/dist/india/index.js +325 -0
  128. package/dist/india/index.js.map +1 -0
  129. package/dist/india/index.mjs +303 -0
  130. package/dist/india/index.mjs.map +1 -0
  131. package/dist/joop-Bx7Iwj5p.d.mts +155 -0
  132. package/dist/joop-CA3DMeOO.d.ts +155 -0
  133. package/dist/native-bridge/index.d.mts +27 -0
  134. package/dist/native-bridge/index.d.ts +27 -0
  135. package/dist/native-bridge/index.js +98 -0
  136. package/dist/native-bridge/index.js.map +1 -0
  137. package/dist/native-bridge/index.mjs +96 -0
  138. package/dist/native-bridge/index.mjs.map +1 -0
  139. package/dist/network/index.d.mts +85 -0
  140. package/dist/network/index.d.ts +85 -0
  141. package/dist/network/index.js +454 -0
  142. package/dist/network/index.js.map +1 -0
  143. package/dist/network/index.mjs +451 -0
  144. package/dist/network/index.mjs.map +1 -0
  145. package/dist/network-monitor-BIwPSXme.d.mts +179 -0
  146. package/dist/network-monitor-Bqp2hvZr.d.ts +179 -0
  147. package/dist/notification.service-Dm4fvfZf.d.mts +25 -0
  148. package/dist/notification.service-tEMKatWJ.d.ts +25 -0
  149. package/dist/observability/index.d.mts +179 -0
  150. package/dist/observability/index.d.ts +179 -0
  151. package/dist/observability/index.js +559 -0
  152. package/dist/observability/index.js.map +1 -0
  153. package/dist/observability/index.mjs +552 -0
  154. package/dist/observability/index.mjs.map +1 -0
  155. package/dist/oidc-client-DIJcClmB.d.mts +190 -0
  156. package/dist/oidc-client-DxhyE59t.d.ts +190 -0
  157. package/dist/platform/index.d.mts +73 -0
  158. package/dist/platform/index.d.ts +73 -0
  159. package/dist/platform/index.js +127 -0
  160. package/dist/platform/index.js.map +1 -0
  161. package/dist/platform/index.mjs +125 -0
  162. package/dist/platform/index.mjs.map +1 -0
  163. package/dist/pwa/index.d.mts +31 -0
  164. package/dist/pwa/index.d.ts +31 -0
  165. package/dist/pwa/index.js +247 -0
  166. package/dist/pwa/index.js.map +1 -0
  167. package/dist/pwa/index.mjs +244 -0
  168. package/dist/pwa/index.mjs.map +1 -0
  169. package/dist/react/index.d.mts +133 -0
  170. package/dist/react/index.d.ts +133 -0
  171. package/dist/react/index.js +632 -0
  172. package/dist/react/index.js.map +1 -0
  173. package/dist/react/index.mjs +630 -0
  174. package/dist/react/index.mjs.map +1 -0
  175. package/dist/router/index.d.mts +39 -0
  176. package/dist/router/index.d.ts +39 -0
  177. package/dist/router/index.js +168 -0
  178. package/dist/router/index.js.map +1 -0
  179. package/dist/router/index.mjs +166 -0
  180. package/dist/router/index.mjs.map +1 -0
  181. package/dist/security/index.d.mts +206 -0
  182. package/dist/security/index.d.ts +206 -0
  183. package/dist/security/index.js +1297 -0
  184. package/dist/security/index.js.map +1 -0
  185. package/dist/security/index.mjs +1285 -0
  186. package/dist/security/index.mjs.map +1 -0
  187. package/dist/session/index.d.mts +115 -0
  188. package/dist/session/index.d.ts +115 -0
  189. package/dist/session/index.js +297 -0
  190. package/dist/session/index.js.map +1 -0
  191. package/dist/session/index.mjs +292 -0
  192. package/dist/session/index.mjs.map +1 -0
  193. package/dist/state/index.d.mts +43 -0
  194. package/dist/state/index.d.ts +43 -0
  195. package/dist/state/index.js +156 -0
  196. package/dist/state/index.js.map +1 -0
  197. package/dist/state/index.mjs +152 -0
  198. package/dist/state/index.mjs.map +1 -0
  199. package/dist/statement-parser-BHQtXwCM.d.ts +260 -0
  200. package/dist/statement-parser-C2qNmb49.d.mts +260 -0
  201. package/dist/storage/index.d.mts +40 -0
  202. package/dist/storage/index.d.ts +40 -0
  203. package/dist/storage/index.js +256 -0
  204. package/dist/storage/index.js.map +1 -0
  205. package/dist/storage/index.mjs +252 -0
  206. package/dist/storage/index.mjs.map +1 -0
  207. package/dist/sync/index.d.mts +69 -0
  208. package/dist/sync/index.d.ts +69 -0
  209. package/dist/sync/index.js +330 -0
  210. package/dist/sync/index.js.map +1 -0
  211. package/dist/sync/index.mjs +323 -0
  212. package/dist/sync/index.mjs.map +1 -0
  213. package/dist/sync-engine-DCIMRG5s.d.ts +61 -0
  214. package/dist/sync-engine-DZqyKHkK.d.mts +61 -0
  215. package/dist/theme/index.d.mts +53 -0
  216. package/dist/theme/index.d.ts +53 -0
  217. package/dist/theme/index.js +169 -0
  218. package/dist/theme/index.js.map +1 -0
  219. package/dist/theme/index.mjs +167 -0
  220. package/dist/theme/index.mjs.map +1 -0
  221. package/dist/ui/index.d.mts +66 -0
  222. package/dist/ui/index.d.ts +66 -0
  223. package/dist/ui/index.js +811 -0
  224. package/dist/ui/index.js.map +1 -0
  225. package/dist/ui/index.mjs +803 -0
  226. package/dist/ui/index.mjs.map +1 -0
  227. package/dist/utilities/index.d.mts +199 -0
  228. package/dist/utilities/index.d.ts +199 -0
  229. package/dist/utilities/index.js +1991 -0
  230. package/dist/utilities/index.js.map +1 -0
  231. package/dist/utilities/index.mjs +1923 -0
  232. package/dist/utilities/index.mjs.map +1 -0
  233. package/dist/validation/index.d.mts +60 -0
  234. package/dist/validation/index.d.ts +60 -0
  235. package/dist/validation/index.js +460 -0
  236. package/dist/validation/index.js.map +1 -0
  237. package/dist/validation/index.mjs +455 -0
  238. package/dist/validation/index.mjs.map +1 -0
  239. package/dist/vue/index.d.mts +135 -0
  240. package/dist/vue/index.d.ts +135 -0
  241. package/dist/vue/index.js +621 -0
  242. package/dist/vue/index.js.map +1 -0
  243. package/dist/vue/index.mjs +619 -0
  244. package/dist/vue/index.mjs.map +1 -0
  245. package/dist/watermark.service-Detur5tq.d.ts +235 -0
  246. package/dist/watermark.service-QNegMeQZ.d.mts +235 -0
  247. package/dist/workers/index.d.mts +42 -0
  248. package/dist/workers/index.d.ts +42 -0
  249. package/dist/workers/index.js +359 -0
  250. package/dist/workers/index.js.map +1 -0
  251. package/dist/workers/index.mjs +356 -0
  252. package/dist/workers/index.mjs.map +1 -0
  253. package/dist/workflow/index.d.mts +99 -0
  254. package/dist/workflow/index.d.ts +99 -0
  255. package/dist/workflow/index.js +282 -0
  256. package/dist/workflow/index.js.map +1 -0
  257. package/dist/workflow/index.mjs +279 -0
  258. package/dist/workflow/index.mjs.map +1 -0
  259. package/package.json +226 -0
@@ -0,0 +1,101 @@
1
+ // src/angular/index.ts
2
+ var JOOP = "JOOP_INSTANCE";
3
+ var JOOP_AUTH = "JOOP_AUTH";
4
+ var JOOP_THEME = "JOOP_THEME";
5
+ var JOOP_I18N = "JOOP_I18N";
6
+ var JOOP_HTTP = "JOOP_HTTP";
7
+ var JOOP_LOADER = "JOOP_LOADER";
8
+ var JOOP_ALERT = "JOOP_ALERT";
9
+ var JOOP_ROUTER = "JOOP_ROUTER";
10
+ var JOOP_ANALYTICS = "JOOP_ANALYTICS";
11
+ var JOOP_FEATURE_FLAGS = "JOOP_FEATURE_FLAGS";
12
+ var JOOP_AUDIT_LOG = "JOOP_AUDIT_LOG";
13
+ var JOOP_STORE = "JOOP_STORE";
14
+ var JOOP_KEY_VAULT = "JOOP_KEY_VAULT";
15
+ var JOOP_NETWORK = "JOOP_NETWORK";
16
+ var JOOP_LIFECYCLE = "JOOP_LIFECYCLE";
17
+ function provideJoop(instance) {
18
+ return [
19
+ { provide: JOOP, useValue: instance },
20
+ { provide: JOOP_AUTH, useValue: instance.auth },
21
+ { provide: JOOP_THEME, useValue: instance.theme },
22
+ { provide: JOOP_I18N, useValue: instance.i18n },
23
+ { provide: JOOP_HTTP, useValue: instance.http },
24
+ { provide: JOOP_LOADER, useValue: instance.loader },
25
+ { provide: JOOP_ALERT, useValue: instance.alert },
26
+ { provide: JOOP_ROUTER, useValue: instance.router },
27
+ { provide: JOOP_ANALYTICS, useValue: instance.analytics },
28
+ { provide: JOOP_FEATURE_FLAGS, useValue: instance.featureFlags },
29
+ { provide: JOOP_AUDIT_LOG, useValue: instance.auditLog },
30
+ { provide: JOOP_STORE, useValue: instance.store },
31
+ { provide: JOOP_KEY_VAULT, useValue: instance.keyVault },
32
+ { provide: JOOP_NETWORK, useValue: instance.network },
33
+ { provide: JOOP_LIFECYCLE, useValue: instance.lifecycle }
34
+ ];
35
+ }
36
+ var JoopModule = {
37
+ forRoot(instance) {
38
+ return { providers: provideJoop(instance) };
39
+ }
40
+ };
41
+ function fromJoop(joopObs) {
42
+ return {
43
+ subscribe(observerOrNext) {
44
+ const next = typeof observerOrNext === "function" ? observerOrNext : observerOrNext.next?.bind(observerOrNext) ?? ((_) => {
45
+ });
46
+ const unsubscribe = joopObs.subscribe(next);
47
+ return { unsubscribe };
48
+ },
49
+ pipe(...operators) {
50
+ return operators.reduce((acc, op) => op(acc), this);
51
+ }
52
+ };
53
+ }
54
+ function toJoop(rxjsObs) {
55
+ const handlers = /* @__PURE__ */ new Set();
56
+ let rxSub = null;
57
+ return {
58
+ subscribe(fn) {
59
+ handlers.add(fn);
60
+ if (!rxSub) {
61
+ rxSub = rxjsObs.subscribe((v) => handlers.forEach((h) => h(v)));
62
+ }
63
+ return () => {
64
+ handlers.delete(fn);
65
+ if (handlers.size === 0) {
66
+ rxSub?.unsubscribe();
67
+ rxSub = null;
68
+ }
69
+ };
70
+ },
71
+ pipe(transform) {
72
+ return toJoop({
73
+ subscribe: (obs) => rxjsObs.subscribe({
74
+ next: (v) => typeof obs === "function" ? obs(transform(v)) : obs.next?.(transform(v))
75
+ }),
76
+ pipe: () => {
77
+ throw new Error("pipe chaining not supported in toJoop bridge");
78
+ }
79
+ });
80
+ }
81
+ };
82
+ }
83
+ function createZonedFromJoop(zoneRun) {
84
+ return (obs) => {
85
+ return {
86
+ subscribe(observerOrNext) {
87
+ const next = typeof observerOrNext === "function" ? observerOrNext : observerOrNext.next?.bind(observerOrNext) ?? ((_) => {
88
+ });
89
+ const unsubscribe = obs.subscribe((v) => zoneRun(() => next(v)));
90
+ return { unsubscribe };
91
+ },
92
+ pipe(...operators) {
93
+ return operators.reduce((acc, op) => op(acc), this);
94
+ }
95
+ };
96
+ };
97
+ }
98
+
99
+ export { JOOP, JOOP_ALERT, JOOP_ANALYTICS, JOOP_AUDIT_LOG, JOOP_AUTH, JOOP_FEATURE_FLAGS, JOOP_HTTP, JOOP_I18N, JOOP_KEY_VAULT, JOOP_LIFECYCLE, JOOP_LOADER, JOOP_NETWORK, JOOP_ROUTER, JOOP_STORE, JOOP_THEME, JoopModule, createZonedFromJoop, fromJoop, provideJoop, toJoop };
100
+ //# sourceMappingURL=index.mjs.map
101
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/angular/index.ts"],"names":[],"mappings":"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","file":"index.mjs","sourcesContent":["/**\n * joopjs/angular — Angular integration\n *\n * @angular/core 17+ is a required peer dependency.\n *\n * Standalone (recommended):\n * bootstrapApplication(AppComponent, {\n * providers: [provideJoop(joopInstance)]\n * });\n *\n * NgModule (legacy):\n * @NgModule({ imports: [JoopModule.forRoot(joopInstance)] })\n *\n * Inject anywhere:\n * constructor(@Inject(JOOP) private joop: JoopInstance) {}\n *\n * RxJS bridge:\n * readonly theme$ = fromJoop(this.joop.theme.active$());\n */\n\nimport type { JoopInstance } from '../joop';\nimport type { JoopObservable } from '../events';\n\n// ── Injection token ───────────────────────────────────────────────────────────\n\n/**\n * InjectionToken for the JoopInstance.\n * Angular's DI accepts any object as a token — use this with @Inject(JOOP).\n *\n * Example with @angular/core InjectionToken (recommended):\n * import { InjectionToken } from '@angular/core';\n * const JOOP = new InjectionToken<JoopInstance>('JoopInstance');\n *\n * The string form below works for both class-based and object-literal tokens.\n */\nexport const JOOP = 'JOOP_INSTANCE' as const;\nexport const JOOP_AUTH = 'JOOP_AUTH' as const;\nexport const JOOP_THEME = 'JOOP_THEME' as const;\nexport const JOOP_I18N = 'JOOP_I18N' as const;\nexport const JOOP_HTTP = 'JOOP_HTTP' as const;\nexport const JOOP_LOADER = 'JOOP_LOADER' as const;\nexport const JOOP_ALERT = 'JOOP_ALERT' as const;\nexport const JOOP_ROUTER = 'JOOP_ROUTER' as const;\nexport const JOOP_ANALYTICS = 'JOOP_ANALYTICS' as const;\nexport const JOOP_FEATURE_FLAGS = 'JOOP_FEATURE_FLAGS' as const;\nexport const JOOP_AUDIT_LOG = 'JOOP_AUDIT_LOG' as const;\nexport const JOOP_STORE = 'JOOP_STORE' as const;\nexport const JOOP_KEY_VAULT = 'JOOP_KEY_VAULT' as const;\nexport const JOOP_NETWORK = 'JOOP_NETWORK' as const;\nexport const JOOP_LIFECYCLE = 'JOOP_LIFECYCLE' as const;\n\n// ── Provider types ────────────────────────────────────────────────────────────\n\nexport interface JoopProvider {\n provide: string;\n useValue: unknown;\n}\n\n// ── Provider factory ──────────────────────────────────────────────────────────\n\n/**\n * Returns an array of Angular providers for the JoopInstance and its services.\n * Use with bootstrapApplication() or provideEnvironmentInitializer().\n *\n * providers: [...provideJoop(await createJoop(config))]\n */\nexport function provideJoop(instance: JoopInstance): JoopProvider[] {\n return [\n { provide: JOOP, useValue: instance },\n { provide: JOOP_AUTH, useValue: instance.auth },\n { provide: JOOP_THEME, useValue: instance.theme },\n { provide: JOOP_I18N, useValue: instance.i18n },\n { provide: JOOP_HTTP, useValue: instance.http },\n { provide: JOOP_LOADER, useValue: instance.loader },\n { provide: JOOP_ALERT, useValue: instance.alert },\n { provide: JOOP_ROUTER, useValue: instance.router },\n { provide: JOOP_ANALYTICS, useValue: instance.analytics },\n { provide: JOOP_FEATURE_FLAGS,useValue: instance.featureFlags },\n { provide: JOOP_AUDIT_LOG, useValue: instance.auditLog },\n { provide: JOOP_STORE, useValue: instance.store },\n { provide: JOOP_KEY_VAULT, useValue: instance.keyVault },\n { provide: JOOP_NETWORK, useValue: instance.network },\n { provide: JOOP_LIFECYCLE, useValue: instance.lifecycle },\n ];\n}\n\n// ── NgModule helper ───────────────────────────────────────────────────────────\n\n/**\n * Minimal NgModule descriptor for use with @NgModule imports.\n * Call JoopModule.forRoot(instance) and spread the result into the imports array.\n *\n * @NgModule({ imports: [...JoopModule.forRoot(instance).providers ?? []] })\n *\n * For proper Angular NgModule integration, use the returned providers array\n * directly in your app's providers:\n *\n * @NgModule({ providers: JoopModule.forRoot(instance) })\n */\nexport const JoopModule = {\n forRoot(instance: JoopInstance): { providers: JoopProvider[] } {\n return { providers: provideJoop(instance) };\n },\n} as const;\n\n// ── RxJS bridge ───────────────────────────────────────────────────────────────\n\n/**\n * Converts a JoopObservable (JoopBehaviorSubject) into an RxJS-compatible\n * Observable. The returned object implements the Observable contract:\n * subscribe(observer) returns a Subscription with unsubscribe().\n *\n * readonly loading$ = fromJoop(this.joop.loader.isLoading$());\n * readonly theme$ = fromJoop(this.joop.theme.active$());\n */\nexport function fromJoop<T>(joopObs: JoopObservable<T>): RxJSLike<T> {\n return {\n subscribe(\n observerOrNext:\n | ((value: T) => void)\n | { next?: (v: T) => void; error?: (e: unknown) => void; complete?: () => void },\n ): { unsubscribe(): void } {\n const next =\n typeof observerOrNext === 'function'\n ? observerOrNext\n : (observerOrNext.next?.bind(observerOrNext) ?? ((_: T) => {}));\n const unsubscribe = joopObs.subscribe(next);\n return { unsubscribe };\n },\n pipe(...operators: Array<(obs: RxJSLike<T>) => RxJSLike<unknown>>): RxJSLike<unknown> {\n return operators.reduce((acc, op) => op(acc), this as RxJSLike<unknown>);\n },\n };\n}\n\n/**\n * Converts an RxJS Observable into a JoopObservable-compatible object.\n * Useful for bridging existing RxJS streams into JoopJS services.\n */\nexport function toJoop<T>(rxjsObs: RxJSLike<T>): JoopObservable<T> {\n const handlers = new Set<(v: T) => void>();\n let rxSub: { unsubscribe(): void } | null = null;\n\n return {\n subscribe(fn: (v: T) => void): () => void {\n handlers.add(fn);\n if (!rxSub) {\n rxSub = rxjsObs.subscribe(v => handlers.forEach(h => h(v)));\n }\n return () => {\n handlers.delete(fn);\n if (handlers.size === 0) { rxSub?.unsubscribe(); rxSub = null; }\n };\n },\n pipe(transform: (v: T) => unknown): JoopObservable<unknown> {\n return toJoop({\n subscribe: (obs) => rxjsObs.subscribe({\n next: (v) => typeof obs === 'function' ? obs(transform(v)) : obs.next?.(transform(v) as never),\n }),\n pipe: () => { throw new Error('pipe chaining not supported in toJoop bridge'); },\n }) as JoopObservable<unknown>;\n },\n } as unknown as JoopObservable<T>;\n}\n\n// ── Minimal RxJS-compatible Observable type ───────────────────────────────────\n\nexport interface RxJSLike<T> {\n subscribe(\n observerOrNext:\n | ((value: T) => void)\n | { next?: (v: T) => void; error?: (e: unknown) => void; complete?: () => void },\n ): { unsubscribe(): void };\n pipe(...operators: Array<(obs: RxJSLike<T>) => RxJSLike<unknown>>): RxJSLike<unknown>;\n}\n\n// ── Change detection helper ───────────────────────────────────────────────────\n\n/**\n * Returns a factory for wrapping JoopObservable subscriptions inside Angular's\n * change detection zone. Pass NgZone.run as the runner.\n *\n * const zonedFromJoop = createZonedFromJoop(zone.run.bind(zone));\n * readonly theme$ = zonedFromJoop(this.joop.theme.active$());\n */\nexport function createZonedFromJoop(\n zoneRun: <T>(fn: () => T) => T,\n): <T>(obs: JoopObservable<T>) => RxJSLike<T> {\n return <T>(obs: JoopObservable<T>): RxJSLike<T> => {\n return {\n subscribe(observerOrNext) {\n const next =\n typeof observerOrNext === 'function'\n ? observerOrNext\n : (observerOrNext.next?.bind(observerOrNext) ?? ((_: T) => {}));\n const unsubscribe = obs.subscribe(v => zoneRun(() => next(v)));\n return { unsubscribe };\n },\n pipe(...operators) {\n return operators.reduce((acc, op) => op(acc), this as RxJSLike<unknown>);\n },\n };\n };\n}\n"]}
@@ -0,0 +1,128 @@
1
+ import { J as JoopHttpClient, x as JoopFetchOptions, H as JoopRequestInterceptor, K as JoopResponseInterceptor, v as JoopErrorInterceptor } from '../idempotency.service-_6LqhivP.mjs';
2
+ export { b as JoopCircuitBreaker, k as JoopCircuitBreakerConfig, p as JoopCircuitState, q as JoopCsvOptions, r as JoopDownloadOptions, h as JoopExportService, f as JoopFileSaverService, z as JoopIdempotencyConfig, j as JoopIdempotencyService, a as JoopInterceptorPipeline, A as JoopLoadingState, B as JoopMappedComponent, C as JoopMappedResponse, c as JoopOfflineQueue, D as JoopPollConfig, d as JoopPollingService, O as JoopRawComponent6, E as JoopRawResponse, F as JoopRawResponse6, G as JoopRequest, e as JoopRequestService, I as JoopResponse, g as JoopResponseMapper, L as JoopWebhookOptions, M as JoopWebhookProvider, i as JoopWebhookVerifier, N as isHttpError } from '../idempotency.service-_6LqhivP.mjs';
3
+ import '../index-Dz0gOur2.mjs';
4
+ import '../index-CqDKWTUP.mjs';
5
+ import '../client-profile.service-BuPeXVp5.mjs';
6
+ import '../config.models-Cqg04fAQ.mjs';
7
+ import '../aes.service-CkoupAww.mjs';
8
+ import '../config.service-Cz4QQLlf.mjs';
9
+ import '../adapters-B6slG6hQ.mjs';
10
+
11
+ interface JoopRetryConfig {
12
+ maxAttempts: number;
13
+ baseDelayMs: number;
14
+ maxDelayMs: number;
15
+ jitter: boolean;
16
+ retryOn?: (error: unknown, attempt: number) => boolean;
17
+ }
18
+ declare function withRetry<T>(fn: () => Promise<T>, config?: Partial<JoopRetryConfig>): Promise<T>;
19
+
20
+ interface JoopParallelResult<T> {
21
+ index: number;
22
+ url: string;
23
+ data?: T;
24
+ error?: Error;
25
+ ok: boolean;
26
+ ms: number;
27
+ }
28
+ interface JoopRequestQueueConfig {
29
+ concurrency: number;
30
+ onDrain?: () => void;
31
+ }
32
+ declare class JoopHttpClientExtended extends JoopHttpClient {
33
+ /** Fire multiple GETs at once, collect all results (never throws). */
34
+ getAll<T = any>(urls: string[], options?: JoopFetchOptions): Promise<JoopParallelResult<T>[]>;
35
+ /** Post to multiple URLs in parallel (fire-and-collect). */
36
+ postAll<T = any>(requests: Array<{
37
+ url: string;
38
+ body?: any;
39
+ options?: JoopFetchOptions;
40
+ }>): Promise<JoopParallelResult<T>[]>;
41
+ /** Race multiple GET requests — resolves with the first successful response. */
42
+ race<T = any>(urls: string[], options?: JoopFetchOptions): Promise<{
43
+ data: T;
44
+ url: string;
45
+ ms: number;
46
+ }>;
47
+ /** Sequential requests — each result fed to a mapper for the next URL. */
48
+ chain<T = any>(steps: Array<(prevResult: T | undefined) => {
49
+ url: string;
50
+ body?: any;
51
+ method?: 'GET' | 'POST';
52
+ }>, options?: JoopFetchOptions): Promise<T[]>;
53
+ /** GET with request deduplication — concurrent identical URLs share one network call. */
54
+ getDedup<T = any>(url: string, options?: JoopFetchOptions): Promise<T>;
55
+ /** GET with automatic retry on failure. */
56
+ getWithRetry<T = any>(url: string, retry?: Partial<JoopRetryConfig>, options?: JoopFetchOptions): Promise<T>;
57
+ postWithRetry<T = any>(url: string, body?: any, retry?: Partial<JoopRetryConfig>, options?: JoopFetchOptions): Promise<T>;
58
+ createQueue(config?: JoopRequestQueueConfig): JoopRequestQueue;
59
+ /** GET that throws if the response does not pass a validator. */
60
+ getValidated<T>(url: string, validate: (data: unknown) => data is T, options?: JoopFetchOptions): Promise<T>;
61
+ /** GET with fallback value on error (never throws). */
62
+ getSafe<T>(url: string, fallback: T, options?: JoopFetchOptions): Promise<T>;
63
+ /** POST with fallback on error. */
64
+ postSafe<T>(url: string, body?: any, fallback?: T, options?: JoopFetchOptions): Promise<T | undefined>;
65
+ /** Set a default timeout on all subsequent requests. */
66
+ withTimeout(ms: number): JoopHttpClientExtended;
67
+ /** "Sync-style" GET — callback-based wrapper (JS is single-threaded; true sync fetch doesn't exist).
68
+ * Use only in contexts where you cannot use async/await (e.g., legacy callbacks). */
69
+ getCallback<T = any>(url: string, onSuccess: (data: T) => void, onError: (err: Error) => void, options?: JoopFetchOptions): void;
70
+ /** Batch multiple operations with concurrency limit. */
71
+ batch<T, R>(items: T[], fn: (item: T, index: number) => Promise<R>, concurrency?: number): Promise<Array<{
72
+ item: T;
73
+ result?: R;
74
+ error?: Error;
75
+ ok: boolean;
76
+ }>>;
77
+ }
78
+ declare class JoopRequestQueue {
79
+ private _queue;
80
+ private _running;
81
+ private readonly _config;
82
+ constructor(config: JoopRequestQueueConfig);
83
+ enqueue<T>(fn: () => Promise<T>): Promise<T>;
84
+ get size(): number;
85
+ get inflight(): number;
86
+ private _tick;
87
+ }
88
+
89
+ /** Injects Authorization: Bearer <token> from a synchronous token getter. */
90
+ declare function bearerAuthInterceptor(getToken: () => string | null | undefined): JoopRequestInterceptor;
91
+ interface JoopLogInterceptorOptions {
92
+ logRequest?: boolean;
93
+ logResponse?: boolean;
94
+ logErrors?: boolean;
95
+ logger?: {
96
+ log: (...a: any[]) => void;
97
+ warn: (...a: any[]) => void;
98
+ error: (...a: any[]) => void;
99
+ };
100
+ }
101
+ declare function loggingRequestInterceptor(opts?: JoopLogInterceptorOptions): JoopRequestInterceptor;
102
+ declare function loggingResponseInterceptor(opts?: JoopLogInterceptorOptions): JoopResponseInterceptor;
103
+ declare function loggingErrorInterceptor(opts?: JoopLogInterceptorOptions): JoopErrorInterceptor;
104
+ /** Injects X-Correlation-ID / X-Request-ID headers for distributed tracing. */
105
+ declare function correlationInterceptor(getCorrelationId?: () => string): JoopRequestInterceptor;
106
+ /** Prepends a base URL to all relative request URLs. */
107
+ declare function baseUrlInterceptor(baseUrl: string): JoopRequestInterceptor;
108
+ interface JoopRetryInterceptorOptions {
109
+ maxRetries?: number;
110
+ retryOn?: number[];
111
+ backoffMs?: number;
112
+ onRetry?: (attempt: number, err: any) => void;
113
+ }
114
+ /** Returns a JoopErrorInterceptor that re-throws after exponential back-off retries.
115
+ * Wire this into JoopInterceptorPipeline.addErrorInterceptor().
116
+ * Note: the interceptor itself can't retry transparently — callers use withRetry() wrapper instead.
117
+ * This interceptor adds retry metadata to errors for upstream use.
118
+ */
119
+ declare function retryErrorInterceptor(opts?: JoopRetryInterceptorOptions): JoopErrorInterceptor;
120
+ interface JoopCacheInterceptorOptions {
121
+ ttlMs?: number;
122
+ methods?: string[];
123
+ }
124
+ declare function cacheResponseInterceptor(opts?: JoopCacheInterceptorOptions): JoopResponseInterceptor;
125
+ declare function cacheRequestInterceptor(): JoopRequestInterceptor;
126
+ declare function clearCache(url?: string): void;
127
+
128
+ export { type JoopCacheInterceptorOptions, JoopErrorInterceptor, JoopFetchOptions, JoopHttpClient, JoopHttpClientExtended, type JoopLogInterceptorOptions, type JoopParallelResult, JoopRequestInterceptor, JoopRequestQueue, type JoopRequestQueueConfig, JoopResponseInterceptor, type JoopRetryConfig, type JoopRetryInterceptorOptions, baseUrlInterceptor, bearerAuthInterceptor, cacheRequestInterceptor, cacheResponseInterceptor, clearCache, correlationInterceptor, loggingErrorInterceptor, loggingRequestInterceptor, loggingResponseInterceptor, retryErrorInterceptor, withRetry };
@@ -0,0 +1,128 @@
1
+ import { J as JoopHttpClient, x as JoopFetchOptions, H as JoopRequestInterceptor, K as JoopResponseInterceptor, v as JoopErrorInterceptor } from '../idempotency.service-eOKoISRD.js';
2
+ export { b as JoopCircuitBreaker, k as JoopCircuitBreakerConfig, p as JoopCircuitState, q as JoopCsvOptions, r as JoopDownloadOptions, h as JoopExportService, f as JoopFileSaverService, z as JoopIdempotencyConfig, j as JoopIdempotencyService, a as JoopInterceptorPipeline, A as JoopLoadingState, B as JoopMappedComponent, C as JoopMappedResponse, c as JoopOfflineQueue, D as JoopPollConfig, d as JoopPollingService, O as JoopRawComponent6, E as JoopRawResponse, F as JoopRawResponse6, G as JoopRequest, e as JoopRequestService, I as JoopResponse, g as JoopResponseMapper, L as JoopWebhookOptions, M as JoopWebhookProvider, i as JoopWebhookVerifier, N as isHttpError } from '../idempotency.service-eOKoISRD.js';
3
+ import '../index-Dz0gOur2.js';
4
+ import '../index-CqDKWTUP.js';
5
+ import '../client-profile.service-D5bRRYQp.js';
6
+ import '../config.models-Cqg04fAQ.js';
7
+ import '../aes.service-CkoupAww.js';
8
+ import '../config.service-CrCvI-JS.js';
9
+ import '../adapters-B6slG6hQ.js';
10
+
11
+ interface JoopRetryConfig {
12
+ maxAttempts: number;
13
+ baseDelayMs: number;
14
+ maxDelayMs: number;
15
+ jitter: boolean;
16
+ retryOn?: (error: unknown, attempt: number) => boolean;
17
+ }
18
+ declare function withRetry<T>(fn: () => Promise<T>, config?: Partial<JoopRetryConfig>): Promise<T>;
19
+
20
+ interface JoopParallelResult<T> {
21
+ index: number;
22
+ url: string;
23
+ data?: T;
24
+ error?: Error;
25
+ ok: boolean;
26
+ ms: number;
27
+ }
28
+ interface JoopRequestQueueConfig {
29
+ concurrency: number;
30
+ onDrain?: () => void;
31
+ }
32
+ declare class JoopHttpClientExtended extends JoopHttpClient {
33
+ /** Fire multiple GETs at once, collect all results (never throws). */
34
+ getAll<T = any>(urls: string[], options?: JoopFetchOptions): Promise<JoopParallelResult<T>[]>;
35
+ /** Post to multiple URLs in parallel (fire-and-collect). */
36
+ postAll<T = any>(requests: Array<{
37
+ url: string;
38
+ body?: any;
39
+ options?: JoopFetchOptions;
40
+ }>): Promise<JoopParallelResult<T>[]>;
41
+ /** Race multiple GET requests — resolves with the first successful response. */
42
+ race<T = any>(urls: string[], options?: JoopFetchOptions): Promise<{
43
+ data: T;
44
+ url: string;
45
+ ms: number;
46
+ }>;
47
+ /** Sequential requests — each result fed to a mapper for the next URL. */
48
+ chain<T = any>(steps: Array<(prevResult: T | undefined) => {
49
+ url: string;
50
+ body?: any;
51
+ method?: 'GET' | 'POST';
52
+ }>, options?: JoopFetchOptions): Promise<T[]>;
53
+ /** GET with request deduplication — concurrent identical URLs share one network call. */
54
+ getDedup<T = any>(url: string, options?: JoopFetchOptions): Promise<T>;
55
+ /** GET with automatic retry on failure. */
56
+ getWithRetry<T = any>(url: string, retry?: Partial<JoopRetryConfig>, options?: JoopFetchOptions): Promise<T>;
57
+ postWithRetry<T = any>(url: string, body?: any, retry?: Partial<JoopRetryConfig>, options?: JoopFetchOptions): Promise<T>;
58
+ createQueue(config?: JoopRequestQueueConfig): JoopRequestQueue;
59
+ /** GET that throws if the response does not pass a validator. */
60
+ getValidated<T>(url: string, validate: (data: unknown) => data is T, options?: JoopFetchOptions): Promise<T>;
61
+ /** GET with fallback value on error (never throws). */
62
+ getSafe<T>(url: string, fallback: T, options?: JoopFetchOptions): Promise<T>;
63
+ /** POST with fallback on error. */
64
+ postSafe<T>(url: string, body?: any, fallback?: T, options?: JoopFetchOptions): Promise<T | undefined>;
65
+ /** Set a default timeout on all subsequent requests. */
66
+ withTimeout(ms: number): JoopHttpClientExtended;
67
+ /** "Sync-style" GET — callback-based wrapper (JS is single-threaded; true sync fetch doesn't exist).
68
+ * Use only in contexts where you cannot use async/await (e.g., legacy callbacks). */
69
+ getCallback<T = any>(url: string, onSuccess: (data: T) => void, onError: (err: Error) => void, options?: JoopFetchOptions): void;
70
+ /** Batch multiple operations with concurrency limit. */
71
+ batch<T, R>(items: T[], fn: (item: T, index: number) => Promise<R>, concurrency?: number): Promise<Array<{
72
+ item: T;
73
+ result?: R;
74
+ error?: Error;
75
+ ok: boolean;
76
+ }>>;
77
+ }
78
+ declare class JoopRequestQueue {
79
+ private _queue;
80
+ private _running;
81
+ private readonly _config;
82
+ constructor(config: JoopRequestQueueConfig);
83
+ enqueue<T>(fn: () => Promise<T>): Promise<T>;
84
+ get size(): number;
85
+ get inflight(): number;
86
+ private _tick;
87
+ }
88
+
89
+ /** Injects Authorization: Bearer <token> from a synchronous token getter. */
90
+ declare function bearerAuthInterceptor(getToken: () => string | null | undefined): JoopRequestInterceptor;
91
+ interface JoopLogInterceptorOptions {
92
+ logRequest?: boolean;
93
+ logResponse?: boolean;
94
+ logErrors?: boolean;
95
+ logger?: {
96
+ log: (...a: any[]) => void;
97
+ warn: (...a: any[]) => void;
98
+ error: (...a: any[]) => void;
99
+ };
100
+ }
101
+ declare function loggingRequestInterceptor(opts?: JoopLogInterceptorOptions): JoopRequestInterceptor;
102
+ declare function loggingResponseInterceptor(opts?: JoopLogInterceptorOptions): JoopResponseInterceptor;
103
+ declare function loggingErrorInterceptor(opts?: JoopLogInterceptorOptions): JoopErrorInterceptor;
104
+ /** Injects X-Correlation-ID / X-Request-ID headers for distributed tracing. */
105
+ declare function correlationInterceptor(getCorrelationId?: () => string): JoopRequestInterceptor;
106
+ /** Prepends a base URL to all relative request URLs. */
107
+ declare function baseUrlInterceptor(baseUrl: string): JoopRequestInterceptor;
108
+ interface JoopRetryInterceptorOptions {
109
+ maxRetries?: number;
110
+ retryOn?: number[];
111
+ backoffMs?: number;
112
+ onRetry?: (attempt: number, err: any) => void;
113
+ }
114
+ /** Returns a JoopErrorInterceptor that re-throws after exponential back-off retries.
115
+ * Wire this into JoopInterceptorPipeline.addErrorInterceptor().
116
+ * Note: the interceptor itself can't retry transparently — callers use withRetry() wrapper instead.
117
+ * This interceptor adds retry metadata to errors for upstream use.
118
+ */
119
+ declare function retryErrorInterceptor(opts?: JoopRetryInterceptorOptions): JoopErrorInterceptor;
120
+ interface JoopCacheInterceptorOptions {
121
+ ttlMs?: number;
122
+ methods?: string[];
123
+ }
124
+ declare function cacheResponseInterceptor(opts?: JoopCacheInterceptorOptions): JoopResponseInterceptor;
125
+ declare function cacheRequestInterceptor(): JoopRequestInterceptor;
126
+ declare function clearCache(url?: string): void;
127
+
128
+ export { type JoopCacheInterceptorOptions, JoopErrorInterceptor, JoopFetchOptions, JoopHttpClient, JoopHttpClientExtended, type JoopLogInterceptorOptions, type JoopParallelResult, JoopRequestInterceptor, JoopRequestQueue, type JoopRequestQueueConfig, JoopResponseInterceptor, type JoopRetryConfig, type JoopRetryInterceptorOptions, baseUrlInterceptor, bearerAuthInterceptor, cacheRequestInterceptor, cacheResponseInterceptor, clearCache, correlationInterceptor, loggingErrorInterceptor, loggingRequestInterceptor, loggingResponseInterceptor, retryErrorInterceptor, withRetry };