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,27 @@
1
+ import { J as JoopObservable } from '../index-Dz0gOur2.mjs';
2
+
3
+ interface JoopNativeMessage {
4
+ type: string;
5
+ data?: unknown;
6
+ }
7
+ type JoopNativeMessageHandler = (data: unknown) => void;
8
+ declare class JoopNativeBridgeService {
9
+ private _subject;
10
+ private _allowedOrigins;
11
+ constructor(allowedOrigins?: string[]);
12
+ /** Subscribe to native messages of a specific type */
13
+ onMessage(type: string): {
14
+ subscribe: (handler: JoopNativeMessageHandler) => () => void;
15
+ };
16
+ /** Send a message to native iOS/Android via WebView bridge */
17
+ sendToNative(target: string, method: string, data: unknown): void;
18
+ /** Dispatch an incoming message from native to all subscribers */
19
+ dispatch(message: JoopNativeMessage): void;
20
+ /** Set up a window.postMessage listener with origin validation */
21
+ startListening(): () => void;
22
+ /** Observable stream of all native messages */
23
+ allMessages$(): JoopObservable<JoopNativeMessage>;
24
+ destroy(): void;
25
+ }
26
+
27
+ export { JoopNativeBridgeService, type JoopNativeMessage, type JoopNativeMessageHandler };
@@ -0,0 +1,27 @@
1
+ import { J as JoopObservable } from '../index-Dz0gOur2.js';
2
+
3
+ interface JoopNativeMessage {
4
+ type: string;
5
+ data?: unknown;
6
+ }
7
+ type JoopNativeMessageHandler = (data: unknown) => void;
8
+ declare class JoopNativeBridgeService {
9
+ private _subject;
10
+ private _allowedOrigins;
11
+ constructor(allowedOrigins?: string[]);
12
+ /** Subscribe to native messages of a specific type */
13
+ onMessage(type: string): {
14
+ subscribe: (handler: JoopNativeMessageHandler) => () => void;
15
+ };
16
+ /** Send a message to native iOS/Android via WebView bridge */
17
+ sendToNative(target: string, method: string, data: unknown): void;
18
+ /** Dispatch an incoming message from native to all subscribers */
19
+ dispatch(message: JoopNativeMessage): void;
20
+ /** Set up a window.postMessage listener with origin validation */
21
+ startListening(): () => void;
22
+ /** Observable stream of all native messages */
23
+ allMessages$(): JoopObservable<JoopNativeMessage>;
24
+ destroy(): void;
25
+ }
26
+
27
+ export { JoopNativeBridgeService, type JoopNativeMessage, type JoopNativeMessageHandler };
@@ -0,0 +1,98 @@
1
+ 'use strict';
2
+
3
+ // src/events/index.ts
4
+ var JoopSubject = class {
5
+ _listeners = [];
6
+ subscribe(listener) {
7
+ this._listeners.push(listener);
8
+ return () => {
9
+ this._listeners = this._listeners.filter((l) => l !== listener);
10
+ };
11
+ }
12
+ next(value) {
13
+ for (const listener of this._listeners) {
14
+ listener(value);
15
+ }
16
+ }
17
+ asObservable() {
18
+ return new JoopObservable((listener) => this.subscribe(listener));
19
+ }
20
+ };
21
+ var JoopObservable = class {
22
+ constructor(_subscribeFn) {
23
+ this._subscribeFn = _subscribeFn;
24
+ }
25
+ _subscribeFn;
26
+ subscribe(listener) {
27
+ return this._subscribeFn(listener);
28
+ }
29
+ /** Returns the current value without subscribing (only meaningful for BehaviorSubject-backed observables). */
30
+ getOnce() {
31
+ let result;
32
+ const unsub = this.subscribe((v) => {
33
+ result = v;
34
+ });
35
+ unsub();
36
+ return result;
37
+ }
38
+ };
39
+
40
+ // src/native-bridge/native-bridge.service.ts
41
+ var JoopNativeBridgeService = class {
42
+ _subject = new JoopSubject();
43
+ _allowedOrigins = [];
44
+ constructor(allowedOrigins = []) {
45
+ this._allowedOrigins = allowedOrigins;
46
+ }
47
+ /** Subscribe to native messages of a specific type */
48
+ onMessage(type) {
49
+ return {
50
+ subscribe: (handler) => this._subject.subscribe((msg) => {
51
+ if (msg.type === type) handler(msg.data);
52
+ })
53
+ };
54
+ }
55
+ /** Send a message to native iOS/Android via WebView bridge */
56
+ sendToNative(target, method, data) {
57
+ const win = window;
58
+ if (win["webkit"]?.["messageHandlers"]?.[target]) {
59
+ win["webkit"]["messageHandlers"][target].postMessage({ method, data });
60
+ return;
61
+ }
62
+ if (typeof win[target]?.[method] === "function") {
63
+ win[target][method](typeof data === "string" ? data : JSON.stringify(data));
64
+ return;
65
+ }
66
+ if (typeof document !== "undefined") {
67
+ document.location.href = `${target}://${method}?data=${encodeURIComponent(JSON.stringify(data))}`;
68
+ }
69
+ }
70
+ /** Dispatch an incoming message from native to all subscribers */
71
+ dispatch(message) {
72
+ this._subject.next(message);
73
+ }
74
+ /** Set up a window.postMessage listener with origin validation */
75
+ startListening() {
76
+ const handler = (event) => {
77
+ if (this._allowedOrigins.length > 0 && !this._allowedOrigins.includes(event.origin)) return;
78
+ try {
79
+ const msg = typeof event.data === "string" ? JSON.parse(event.data) : event.data;
80
+ if (msg?.type) this._subject.next(msg);
81
+ } catch {
82
+ }
83
+ };
84
+ window.addEventListener("message", handler);
85
+ return () => window.removeEventListener("message", handler);
86
+ }
87
+ /** Observable stream of all native messages */
88
+ allMessages$() {
89
+ return this._subject.asObservable();
90
+ }
91
+ destroy() {
92
+ this._subject["_listeners"] = [];
93
+ }
94
+ };
95
+
96
+ exports.JoopNativeBridgeService = JoopNativeBridgeService;
97
+ //# sourceMappingURL=index.js.map
98
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/events/index.ts","../../src/native-bridge/native-bridge.service.ts"],"names":[],"mappings":";;;AAOO,IAAM,cAAN,MAAqB;AAAA,EAClB,aAA4B,EAAC;AAAA,EAErC,UAAU,QAAA,EAAoC;AAC5C,IAAA,IAAA,CAAK,UAAA,CAAW,KAAK,QAAQ,CAAA;AAC7B,IAAA,OAAO,MAAM;AACX,MAAA,IAAA,CAAK,aAAa,IAAA,CAAK,UAAA,CAAW,MAAA,CAAO,CAAA,CAAA,KAAK,MAAM,QAAQ,CAAA;AAAA,IAC9D,CAAA;AAAA,EACF;AAAA,EAEA,KAAK,KAAA,EAAgB;AACnB,IAAA,KAAA,MAAW,QAAA,IAAY,KAAK,UAAA,EAAY;AACtC,MAAA,QAAA,CAAS,KAAK,CAAA;AAAA,IAChB;AAAA,EACF;AAAA,EAEA,YAAA,GAAkC;AAChC,IAAA,OAAO,IAAI,cAAA,CAAkB,CAAA,QAAA,KAAY,IAAA,CAAK,SAAA,CAAU,QAAQ,CAAC,CAAA;AAAA,EACnE;AACF,CAAA;AAoCO,IAAM,iBAAN,MAAwB;AAAA,EAC7B,YAAoB,YAAA,EAAsD;AAAtD,IAAA,IAAA,CAAA,YAAA,GAAA,YAAA;AAAA,EAAuD;AAAA,EAAvD,YAAA;AAAA,EAEpB,UAAU,QAAA,EAAoC;AAC5C,IAAA,OAAO,IAAA,CAAK,aAAa,QAAQ,CAAA;AAAA,EACnC;AAAA;AAAA,EAGA,OAAA,GAAyB;AACvB,IAAA,IAAI,MAAA;AACJ,IAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,SAAA,CAAU,CAAA,CAAA,KAAK;AAAE,MAAA,MAAA,GAAS,CAAA;AAAA,IAAG,CAAC,CAAA;AACjD,IAAA,KAAA,EAAM;AACN,IAAA,OAAO,MAAA;AAAA,EACT;AACF,CAAA;;;ACnEO,IAAM,0BAAN,MAA8B;AAAA,EAC3B,QAAA,GAAW,IAAI,WAAA,EAA+B;AAAA,EAC9C,kBAA4B,EAAC;AAAA,EAErC,WAAA,CAAY,cAAA,GAA2B,EAAC,EAAG;AACzC,IAAA,IAAA,CAAK,eAAA,GAAkB,cAAA;AAAA,EACzB;AAAA;AAAA,EAGA,UAAU,IAAA,EAAgF;AACxF,IAAA,OAAO;AAAA,MACL,WAAW,CAAC,OAAA,KACV,IAAA,CAAK,QAAA,CAAS,UAAU,CAAA,GAAA,KAAO;AAC7B,QAAA,IAAI,GAAA,CAAI,IAAA,KAAS,IAAA,EAAM,OAAA,CAAQ,IAAI,IAAI,CAAA;AAAA,MACzC,CAAC;AAAA,KACL;AAAA,EACF;AAAA;AAAA,EAGA,YAAA,CAAa,MAAA,EAAgB,MAAA,EAAgB,IAAA,EAAqB;AAChE,IAAA,MAAM,GAAA,GAAM,MAAA;AAEZ,IAAA,IAAI,IAAI,QAAQ,CAAA,GAAI,iBAAiB,CAAA,GAAI,MAAM,CAAA,EAAG;AAChD,MAAA,GAAA,CAAI,QAAQ,CAAA,CAAE,iBAAiB,CAAA,CAAE,MAAM,EAAE,WAAA,CAAY,EAAE,MAAA,EAAQ,IAAA,EAAM,CAAA;AACrE,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,OAAO,GAAA,CAAI,MAAM,CAAA,GAAI,MAAM,MAAM,UAAA,EAAY;AAC/C,MAAA,GAAA,CAAI,MAAM,CAAA,CAAE,MAAM,CAAA,CAAE,OAAO,IAAA,KAAS,QAAA,GAAW,IAAA,GAAO,IAAA,CAAK,SAAA,CAAU,IAAI,CAAC,CAAA;AAC1E,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,OAAO,aAAa,WAAA,EAAa;AACnC,MAAA,QAAA,CAAS,QAAA,CAAS,IAAA,GAAO,CAAA,EAAG,MAAM,CAAA,GAAA,EAAM,MAAM,CAAA,MAAA,EAAS,kBAAA,CAAmB,IAAA,CAAK,SAAA,CAAU,IAAI,CAAC,CAAC,CAAA,CAAA;AAAA,IACjG;AAAA,EACF;AAAA;AAAA,EAGA,SAAS,OAAA,EAAkC;AACzC,IAAA,IAAA,CAAK,QAAA,CAAS,KAAK,OAAO,CAAA;AAAA,EAC5B;AAAA;AAAA,EAGA,cAAA,GAA6B;AAC3B,IAAA,MAAM,OAAA,GAAU,CAAC,KAAA,KAAwB;AACvC,MAAA,IAAI,IAAA,CAAK,eAAA,CAAgB,MAAA,GAAS,CAAA,IAAK,CAAC,KAAK,eAAA,CAAgB,QAAA,CAAS,KAAA,CAAM,MAAM,CAAA,EAAG;AACrF,MAAA,IAAI;AACF,QAAA,MAAM,GAAA,GAAyB,OAAO,KAAA,CAAM,IAAA,KAAS,QAAA,GAAW,KAAK,KAAA,CAAM,KAAA,CAAM,IAAI,CAAA,GAAI,KAAA,CAAM,IAAA;AAC/F,QAAA,IAAI,GAAA,EAAK,IAAA,EAAM,IAAA,CAAK,QAAA,CAAS,KAAK,GAAG,CAAA;AAAA,MACvC,CAAA,CAAA,MAAQ;AAAA,MAAkC;AAAA,IAC5C,CAAA;AACA,IAAA,MAAA,CAAO,gBAAA,CAAiB,WAAW,OAAO,CAAA;AAC1C,IAAA,OAAO,MAAM,MAAA,CAAO,mBAAA,CAAoB,SAAA,EAAW,OAAO,CAAA;AAAA,EAC5D;AAAA;AAAA,EAGA,YAAA,GAAe;AAAE,IAAA,OAAO,IAAA,CAAK,SAAS,YAAA,EAAa;AAAA,EAAG;AAAA,EAEtD,OAAA,GAAgB;AAAE,IAAA,IAAA,CAAK,QAAA,CAAS,YAAY,CAAA,GAAI,EAAC;AAAA,EAAG;AACtD","file":"index.js","sourcesContent":["export type Unsubscribe = () => void;\nexport type Listener<T> = (value: T) => void;\n\n/**\n * Lightweight pub/sub subject — emits to all current subscribers.\n * Replaces RxJS Subject without pulling in the full RxJS dependency.\n */\nexport class JoopSubject<T> {\n private _listeners: Listener<T>[] = [];\n\n subscribe(listener: Listener<T>): Unsubscribe {\n this._listeners.push(listener);\n return () => {\n this._listeners = this._listeners.filter(l => l !== listener);\n };\n }\n\n next(value: T): void {\n for (const listener of this._listeners) {\n listener(value);\n }\n }\n\n asObservable(): JoopObservable<T> {\n return new JoopObservable<T>(listener => this.subscribe(listener));\n }\n}\n\n/**\n * Stateful subject — replays the current value to any new subscriber immediately.\n * Replaces RxJS BehaviorSubject.\n */\nexport class JoopBehaviorSubject<T> extends JoopSubject<T> {\n private _value: T;\n\n constructor(initialValue: T) {\n super();\n this._value = initialValue;\n }\n\n getValue(): T {\n return this._value;\n }\n\n override next(value: T): void {\n this._value = value;\n super.next(value);\n }\n\n override subscribe(listener: Listener<T>): Unsubscribe {\n listener(this._value);\n return super.subscribe(listener);\n }\n\n override asObservable(): JoopObservable<T> {\n return new JoopObservable<T>(listener => this.subscribe(listener));\n }\n}\n\n/**\n * Read-only observable handle returned from asObservable().\n */\nexport class JoopObservable<T> {\n constructor(private _subscribeFn: (listener: Listener<T>) => Unsubscribe) {}\n\n subscribe(listener: Listener<T>): Unsubscribe {\n return this._subscribeFn(listener);\n }\n\n /** Returns the current value without subscribing (only meaningful for BehaviorSubject-backed observables). */\n getOnce(): T | undefined {\n let result: T | undefined;\n const unsub = this.subscribe(v => { result = v; });\n unsub();\n return result;\n }\n}\n","import { JoopSubject } from '../events';\n\nexport interface JoopNativeMessage {\n type: string;\n data?: unknown;\n}\n\nexport type JoopNativeMessageHandler = (data: unknown) => void;\n\nexport class JoopNativeBridgeService {\n private _subject = new JoopSubject<JoopNativeMessage>();\n private _allowedOrigins: string[] = [];\n\n constructor(allowedOrigins: string[] = []) {\n this._allowedOrigins = allowedOrigins;\n }\n\n /** Subscribe to native messages of a specific type */\n onMessage(type: string): { subscribe: (handler: JoopNativeMessageHandler) => () => void } {\n return {\n subscribe: (handler) =>\n this._subject.subscribe(msg => {\n if (msg.type === type) handler(msg.data);\n }),\n };\n }\n\n /** Send a message to native iOS/Android via WebView bridge */\n sendToNative(target: string, method: string, data: unknown): void {\n const win = window as Record<string, any>;\n // iOS webkit message handler\n if (win['webkit']?.['messageHandlers']?.[target]) {\n win['webkit']['messageHandlers'][target].postMessage({ method, data });\n return;\n }\n // Android JS interface\n if (typeof win[target]?.[method] === 'function') {\n win[target][method](typeof data === 'string' ? data : JSON.stringify(data));\n return;\n }\n // Fallback: document.location.href for older Android bridges\n if (typeof document !== 'undefined') {\n document.location.href = `${target}://${method}?data=${encodeURIComponent(JSON.stringify(data))}`;\n }\n }\n\n /** Dispatch an incoming message from native to all subscribers */\n dispatch(message: JoopNativeMessage): void {\n this._subject.next(message);\n }\n\n /** Set up a window.postMessage listener with origin validation */\n startListening(): () => void {\n const handler = (event: MessageEvent) => {\n if (this._allowedOrigins.length > 0 && !this._allowedOrigins.includes(event.origin)) return;\n try {\n const msg: JoopNativeMessage = typeof event.data === 'string' ? JSON.parse(event.data) : event.data;\n if (msg?.type) this._subject.next(msg);\n } catch { /* ignore malformed messages */ }\n };\n window.addEventListener('message', handler);\n return () => window.removeEventListener('message', handler);\n }\n\n /** Observable stream of all native messages */\n allMessages$() { return this._subject.asObservable(); }\n\n destroy(): void { this._subject['_listeners'] = []; }\n}\n"]}
@@ -0,0 +1,96 @@
1
+ // src/events/index.ts
2
+ var JoopSubject = class {
3
+ _listeners = [];
4
+ subscribe(listener) {
5
+ this._listeners.push(listener);
6
+ return () => {
7
+ this._listeners = this._listeners.filter((l) => l !== listener);
8
+ };
9
+ }
10
+ next(value) {
11
+ for (const listener of this._listeners) {
12
+ listener(value);
13
+ }
14
+ }
15
+ asObservable() {
16
+ return new JoopObservable((listener) => this.subscribe(listener));
17
+ }
18
+ };
19
+ var JoopObservable = class {
20
+ constructor(_subscribeFn) {
21
+ this._subscribeFn = _subscribeFn;
22
+ }
23
+ _subscribeFn;
24
+ subscribe(listener) {
25
+ return this._subscribeFn(listener);
26
+ }
27
+ /** Returns the current value without subscribing (only meaningful for BehaviorSubject-backed observables). */
28
+ getOnce() {
29
+ let result;
30
+ const unsub = this.subscribe((v) => {
31
+ result = v;
32
+ });
33
+ unsub();
34
+ return result;
35
+ }
36
+ };
37
+
38
+ // src/native-bridge/native-bridge.service.ts
39
+ var JoopNativeBridgeService = class {
40
+ _subject = new JoopSubject();
41
+ _allowedOrigins = [];
42
+ constructor(allowedOrigins = []) {
43
+ this._allowedOrigins = allowedOrigins;
44
+ }
45
+ /** Subscribe to native messages of a specific type */
46
+ onMessage(type) {
47
+ return {
48
+ subscribe: (handler) => this._subject.subscribe((msg) => {
49
+ if (msg.type === type) handler(msg.data);
50
+ })
51
+ };
52
+ }
53
+ /** Send a message to native iOS/Android via WebView bridge */
54
+ sendToNative(target, method, data) {
55
+ const win = window;
56
+ if (win["webkit"]?.["messageHandlers"]?.[target]) {
57
+ win["webkit"]["messageHandlers"][target].postMessage({ method, data });
58
+ return;
59
+ }
60
+ if (typeof win[target]?.[method] === "function") {
61
+ win[target][method](typeof data === "string" ? data : JSON.stringify(data));
62
+ return;
63
+ }
64
+ if (typeof document !== "undefined") {
65
+ document.location.href = `${target}://${method}?data=${encodeURIComponent(JSON.stringify(data))}`;
66
+ }
67
+ }
68
+ /** Dispatch an incoming message from native to all subscribers */
69
+ dispatch(message) {
70
+ this._subject.next(message);
71
+ }
72
+ /** Set up a window.postMessage listener with origin validation */
73
+ startListening() {
74
+ const handler = (event) => {
75
+ if (this._allowedOrigins.length > 0 && !this._allowedOrigins.includes(event.origin)) return;
76
+ try {
77
+ const msg = typeof event.data === "string" ? JSON.parse(event.data) : event.data;
78
+ if (msg?.type) this._subject.next(msg);
79
+ } catch {
80
+ }
81
+ };
82
+ window.addEventListener("message", handler);
83
+ return () => window.removeEventListener("message", handler);
84
+ }
85
+ /** Observable stream of all native messages */
86
+ allMessages$() {
87
+ return this._subject.asObservable();
88
+ }
89
+ destroy() {
90
+ this._subject["_listeners"] = [];
91
+ }
92
+ };
93
+
94
+ export { JoopNativeBridgeService };
95
+ //# sourceMappingURL=index.mjs.map
96
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/events/index.ts","../../src/native-bridge/native-bridge.service.ts"],"names":[],"mappings":"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","file":"index.mjs","sourcesContent":["export type Unsubscribe = () => void;\nexport type Listener<T> = (value: T) => void;\n\n/**\n * Lightweight pub/sub subject — emits to all current subscribers.\n * Replaces RxJS Subject without pulling in the full RxJS dependency.\n */\nexport class JoopSubject<T> {\n private _listeners: Listener<T>[] = [];\n\n subscribe(listener: Listener<T>): Unsubscribe {\n this._listeners.push(listener);\n return () => {\n this._listeners = this._listeners.filter(l => l !== listener);\n };\n }\n\n next(value: T): void {\n for (const listener of this._listeners) {\n listener(value);\n }\n }\n\n asObservable(): JoopObservable<T> {\n return new JoopObservable<T>(listener => this.subscribe(listener));\n }\n}\n\n/**\n * Stateful subject — replays the current value to any new subscriber immediately.\n * Replaces RxJS BehaviorSubject.\n */\nexport class JoopBehaviorSubject<T> extends JoopSubject<T> {\n private _value: T;\n\n constructor(initialValue: T) {\n super();\n this._value = initialValue;\n }\n\n getValue(): T {\n return this._value;\n }\n\n override next(value: T): void {\n this._value = value;\n super.next(value);\n }\n\n override subscribe(listener: Listener<T>): Unsubscribe {\n listener(this._value);\n return super.subscribe(listener);\n }\n\n override asObservable(): JoopObservable<T> {\n return new JoopObservable<T>(listener => this.subscribe(listener));\n }\n}\n\n/**\n * Read-only observable handle returned from asObservable().\n */\nexport class JoopObservable<T> {\n constructor(private _subscribeFn: (listener: Listener<T>) => Unsubscribe) {}\n\n subscribe(listener: Listener<T>): Unsubscribe {\n return this._subscribeFn(listener);\n }\n\n /** Returns the current value without subscribing (only meaningful for BehaviorSubject-backed observables). */\n getOnce(): T | undefined {\n let result: T | undefined;\n const unsub = this.subscribe(v => { result = v; });\n unsub();\n return result;\n }\n}\n","import { JoopSubject } from '../events';\n\nexport interface JoopNativeMessage {\n type: string;\n data?: unknown;\n}\n\nexport type JoopNativeMessageHandler = (data: unknown) => void;\n\nexport class JoopNativeBridgeService {\n private _subject = new JoopSubject<JoopNativeMessage>();\n private _allowedOrigins: string[] = [];\n\n constructor(allowedOrigins: string[] = []) {\n this._allowedOrigins = allowedOrigins;\n }\n\n /** Subscribe to native messages of a specific type */\n onMessage(type: string): { subscribe: (handler: JoopNativeMessageHandler) => () => void } {\n return {\n subscribe: (handler) =>\n this._subject.subscribe(msg => {\n if (msg.type === type) handler(msg.data);\n }),\n };\n }\n\n /** Send a message to native iOS/Android via WebView bridge */\n sendToNative(target: string, method: string, data: unknown): void {\n const win = window as Record<string, any>;\n // iOS webkit message handler\n if (win['webkit']?.['messageHandlers']?.[target]) {\n win['webkit']['messageHandlers'][target].postMessage({ method, data });\n return;\n }\n // Android JS interface\n if (typeof win[target]?.[method] === 'function') {\n win[target][method](typeof data === 'string' ? data : JSON.stringify(data));\n return;\n }\n // Fallback: document.location.href for older Android bridges\n if (typeof document !== 'undefined') {\n document.location.href = `${target}://${method}?data=${encodeURIComponent(JSON.stringify(data))}`;\n }\n }\n\n /** Dispatch an incoming message from native to all subscribers */\n dispatch(message: JoopNativeMessage): void {\n this._subject.next(message);\n }\n\n /** Set up a window.postMessage listener with origin validation */\n startListening(): () => void {\n const handler = (event: MessageEvent) => {\n if (this._allowedOrigins.length > 0 && !this._allowedOrigins.includes(event.origin)) return;\n try {\n const msg: JoopNativeMessage = typeof event.data === 'string' ? JSON.parse(event.data) : event.data;\n if (msg?.type) this._subject.next(msg);\n } catch { /* ignore malformed messages */ }\n };\n window.addEventListener('message', handler);\n return () => window.removeEventListener('message', handler);\n }\n\n /** Observable stream of all native messages */\n allMessages$() { return this._subject.asObservable(); }\n\n destroy(): void { this._subject['_listeners'] = []; }\n}\n"]}
@@ -0,0 +1,85 @@
1
+ import { J as JoopObservable } from '../index-Dz0gOur2.mjs';
2
+
3
+ type JoopWsState = 'connecting' | 'open' | 'closing' | 'closed';
4
+ interface JoopWsMessage {
5
+ type?: string;
6
+ data?: unknown;
7
+ raw?: unknown;
8
+ }
9
+ interface JoopWsConfig {
10
+ reconnectMs?: number;
11
+ maxReconnects?: number;
12
+ pingIntervalMs?: number;
13
+ pingMessage?: string;
14
+ }
15
+ declare class JoopWebSocketService {
16
+ private _ws;
17
+ private _url;
18
+ private _protocols?;
19
+ private _state$;
20
+ private _message$;
21
+ private _error$;
22
+ private _reconnects;
23
+ private _reconnectTimer;
24
+ private _pingTimer;
25
+ private _queue;
26
+ private _cfg;
27
+ constructor(config?: JoopWsConfig);
28
+ connect(url: string, protocols?: string | string[]): void;
29
+ private _open;
30
+ disconnect(): void;
31
+ send(data: string | Record<string, unknown>): void;
32
+ /** Subscribe to messages of a specific type */
33
+ on(type: string): {
34
+ subscribe: (fn: (data: unknown) => void) => () => void;
35
+ };
36
+ state$(): JoopObservable<JoopWsState>;
37
+ message$(): JoopObservable<JoopWsMessage>;
38
+ error$(): JoopObservable<Event>;
39
+ isConnected(): boolean;
40
+ getState(): JoopWsState;
41
+ private _clearPing;
42
+ }
43
+
44
+ type JoopSSEState = 'connecting' | 'open' | 'closed' | 'error';
45
+ interface JoopSSEConfig {
46
+ url: string;
47
+ headers?: Record<string, string>;
48
+ body?: unknown;
49
+ method?: 'GET' | 'POST';
50
+ reconnectMs?: number;
51
+ maxReconnects?: number;
52
+ withCredentials?: boolean;
53
+ lastEventId?: string;
54
+ }
55
+ interface JoopSSEMessage {
56
+ id?: string;
57
+ type: string;
58
+ data: string;
59
+ }
60
+ declare class JoopStreamingService {
61
+ private _state$;
62
+ private _message$;
63
+ private _error$;
64
+ private _es;
65
+ private _abortCtrl;
66
+ private _cfg;
67
+ private _reconnects;
68
+ private _reconnectTimer;
69
+ private _lastEventId;
70
+ connect(config: JoopSSEConfig): void;
71
+ disconnect(): void;
72
+ state$(): JoopObservable<JoopSSEState>;
73
+ getState(): JoopSSEState;
74
+ message$(): JoopObservable<JoopSSEMessage>;
75
+ error$(): JoopObservable<Error>;
76
+ /** Filter messages by event type */
77
+ on(type: string): JoopObservable<string>;
78
+ private _open;
79
+ private _openNative;
80
+ private _openFetch;
81
+ private _readStream;
82
+ private _scheduleReconnect;
83
+ }
84
+
85
+ export { type JoopSSEConfig, type JoopSSEMessage, type JoopSSEState, JoopStreamingService, JoopWebSocketService, type JoopWsConfig, type JoopWsMessage, type JoopWsState };
@@ -0,0 +1,85 @@
1
+ import { J as JoopObservable } from '../index-Dz0gOur2.js';
2
+
3
+ type JoopWsState = 'connecting' | 'open' | 'closing' | 'closed';
4
+ interface JoopWsMessage {
5
+ type?: string;
6
+ data?: unknown;
7
+ raw?: unknown;
8
+ }
9
+ interface JoopWsConfig {
10
+ reconnectMs?: number;
11
+ maxReconnects?: number;
12
+ pingIntervalMs?: number;
13
+ pingMessage?: string;
14
+ }
15
+ declare class JoopWebSocketService {
16
+ private _ws;
17
+ private _url;
18
+ private _protocols?;
19
+ private _state$;
20
+ private _message$;
21
+ private _error$;
22
+ private _reconnects;
23
+ private _reconnectTimer;
24
+ private _pingTimer;
25
+ private _queue;
26
+ private _cfg;
27
+ constructor(config?: JoopWsConfig);
28
+ connect(url: string, protocols?: string | string[]): void;
29
+ private _open;
30
+ disconnect(): void;
31
+ send(data: string | Record<string, unknown>): void;
32
+ /** Subscribe to messages of a specific type */
33
+ on(type: string): {
34
+ subscribe: (fn: (data: unknown) => void) => () => void;
35
+ };
36
+ state$(): JoopObservable<JoopWsState>;
37
+ message$(): JoopObservable<JoopWsMessage>;
38
+ error$(): JoopObservable<Event>;
39
+ isConnected(): boolean;
40
+ getState(): JoopWsState;
41
+ private _clearPing;
42
+ }
43
+
44
+ type JoopSSEState = 'connecting' | 'open' | 'closed' | 'error';
45
+ interface JoopSSEConfig {
46
+ url: string;
47
+ headers?: Record<string, string>;
48
+ body?: unknown;
49
+ method?: 'GET' | 'POST';
50
+ reconnectMs?: number;
51
+ maxReconnects?: number;
52
+ withCredentials?: boolean;
53
+ lastEventId?: string;
54
+ }
55
+ interface JoopSSEMessage {
56
+ id?: string;
57
+ type: string;
58
+ data: string;
59
+ }
60
+ declare class JoopStreamingService {
61
+ private _state$;
62
+ private _message$;
63
+ private _error$;
64
+ private _es;
65
+ private _abortCtrl;
66
+ private _cfg;
67
+ private _reconnects;
68
+ private _reconnectTimer;
69
+ private _lastEventId;
70
+ connect(config: JoopSSEConfig): void;
71
+ disconnect(): void;
72
+ state$(): JoopObservable<JoopSSEState>;
73
+ getState(): JoopSSEState;
74
+ message$(): JoopObservable<JoopSSEMessage>;
75
+ error$(): JoopObservable<Error>;
76
+ /** Filter messages by event type */
77
+ on(type: string): JoopObservable<string>;
78
+ private _open;
79
+ private _openNative;
80
+ private _openFetch;
81
+ private _readStream;
82
+ private _scheduleReconnect;
83
+ }
84
+
85
+ export { type JoopSSEConfig, type JoopSSEMessage, type JoopSSEState, JoopStreamingService, JoopWebSocketService, type JoopWsConfig, type JoopWsMessage, type JoopWsState };