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,179 @@
1
+ import { e as JoopKeyVaultAdapter, f as JoopBiometricAdapter, g as JoopPushAdapter, h as JoopPushPayload, i as JoopLifecycleAdapter, J as JoopAppState, j as JoopNetworkAdapter, a as JoopNetworkState, b as JoopNetworkType } from './adapters-B6slG6hQ.mjs';
2
+ import { J as JoopObservable } from './index-Dz0gOur2.mjs';
3
+
4
+ interface JoopDeviceInfo {
5
+ fingerprint: string;
6
+ userAgent: string;
7
+ language: string;
8
+ timezone: string;
9
+ screenResolution: string;
10
+ colorDepth: number;
11
+ platform: string;
12
+ hardwareConcurrency: number;
13
+ maxTouchPoints: number;
14
+ }
15
+ declare class JoopDeviceFingerprintService {
16
+ collect(): Omit<JoopDeviceInfo, 'fingerprint'>;
17
+ generate(): Promise<string>;
18
+ getStableId(): Promise<string>;
19
+ }
20
+
21
+ interface JoopKeyVaultConfig {
22
+ /** AES-GCM encryption password. If omitted, values are base64-encoded only (no encryption). */
23
+ encryptionKey?: string;
24
+ /** localStorage key prefix. Default: 'joop_vault_' */
25
+ prefix?: string;
26
+ /** Override platform adapter (e.g. react-native-keychain wrapper) */
27
+ adapter?: JoopKeyVaultAdapter;
28
+ }
29
+ declare class JoopKeyVault {
30
+ private _prefix;
31
+ private _encKey;
32
+ private _adapter;
33
+ private _cryptoKey;
34
+ constructor(config?: JoopKeyVaultConfig);
35
+ /** Store a secret. On web: AES-GCM encrypted if `encryptionKey` was provided. */
36
+ set(key: string, value: string): Promise<void>;
37
+ /** Retrieve a secret, or null if not found. */
38
+ get(key: string): Promise<string | null>;
39
+ remove(key: string): Promise<void>;
40
+ clear(): Promise<void>;
41
+ has(key: string): Promise<boolean>;
42
+ /** Rotate the encryption key: re-encrypts all known entries with a new key. */
43
+ rotateKey(newEncryptionKey: string, keys: string[]): Promise<void>;
44
+ private _key;
45
+ }
46
+
47
+ interface JoopBiometricConfig {
48
+ /** WebAuthn relying-party ID (default: current hostname) */
49
+ rpId?: string;
50
+ /** WebAuthn relying-party name */
51
+ rpName?: string;
52
+ /** Override platform adapter (e.g. react-native-biometrics wrapper) */
53
+ adapter?: JoopBiometricAdapter;
54
+ }
55
+ interface JoopEnrollResult {
56
+ credentialId: string;
57
+ publicKey?: string;
58
+ }
59
+ interface JoopAuthenticateOptions {
60
+ credentialId?: string;
61
+ reason?: string;
62
+ timeout?: number;
63
+ }
64
+ declare class JoopBiometricAuth {
65
+ private _rpId;
66
+ private _rpName;
67
+ private _adapter;
68
+ constructor(config?: JoopBiometricConfig);
69
+ /** True when a platform authenticator is available. */
70
+ isAvailable(): Promise<boolean>;
71
+ /**
72
+ * Enroll a new credential for the given user.
73
+ * Web: creates a WebAuthn passkey via navigator.credentials.create().
74
+ * React Native: delegates to the injected adapter.
75
+ */
76
+ enroll(userId: string, displayName: string): Promise<JoopEnrollResult>;
77
+ /**
78
+ * Verify identity against an existing credential.
79
+ * Web: navigator.credentials.get() with WebAuthn assertion.
80
+ * React Native: delegates to the injected adapter.
81
+ */
82
+ authenticate(options?: JoopAuthenticateOptions): Promise<boolean>;
83
+ /**
84
+ * Quick check — asks the platform if biometrics can be used right now.
85
+ * Does not prompt the user.
86
+ */
87
+ canAuthenticate(): Promise<boolean>;
88
+ }
89
+
90
+ type JoopPushPermission = 'granted' | 'denied' | 'default' | 'unsupported';
91
+ interface JoopPushConfig {
92
+ /** VAPID public key (base64url) for web push subscription */
93
+ vapidPublicKey?: string;
94
+ /** Path to the service worker file (default: '/sw.js') */
95
+ serviceWorkerPath?: string;
96
+ /** Override platform adapter (e.g. FCM / APNs wrapper) */
97
+ adapter?: JoopPushAdapter;
98
+ }
99
+ interface JoopPushSubscriptionInfo {
100
+ endpoint: string;
101
+ p256dh: string;
102
+ auth: string;
103
+ }
104
+ declare class JoopPushService {
105
+ private _cfg;
106
+ private _adapter;
107
+ private _messageHandlers;
108
+ private _adapterUnsub;
109
+ constructor(config?: JoopPushConfig);
110
+ /** Request push notification permission from the user. */
111
+ requestPermission(): Promise<JoopPushPermission>;
112
+ /** Get the current permission status without prompting. */
113
+ getPermission(): JoopPushPermission;
114
+ /**
115
+ * Subscribe to web push and return subscription info to send to your server.
116
+ * Requires a service worker and a VAPID key.
117
+ */
118
+ subscribe(options?: {
119
+ vapidPublicKey?: string;
120
+ }): Promise<JoopPushSubscriptionInfo | null>;
121
+ /** Unsubscribe from web push. */
122
+ unsubscribe(): Promise<boolean>;
123
+ /** Display an immediate local notification (no server push required). */
124
+ show(payload: JoopPushPayload): Promise<void>;
125
+ /** Set the app badge count (mobile only via adapter). */
126
+ setBadgeCount(count: number): Promise<void>;
127
+ /** Clear the app badge. */
128
+ clearBadge(): Promise<void>;
129
+ /** Register a handler for incoming push payloads (foreground messages). */
130
+ onMessage(handler: (payload: JoopPushPayload) => void): () => void;
131
+ destroy(): void;
132
+ private _emit;
133
+ }
134
+
135
+ interface JoopLifecycleConfig {
136
+ /** Override platform adapter (e.g. RN AppState wrapper) */
137
+ adapter?: JoopLifecycleAdapter;
138
+ }
139
+ declare class JoopAppLifecycle {
140
+ private _state$;
141
+ private _cleanup;
142
+ private _adapter;
143
+ constructor(config?: JoopLifecycleConfig);
144
+ private _init;
145
+ getState(): JoopAppState;
146
+ state$(): JoopObservable<JoopAppState>;
147
+ isActive(): boolean;
148
+ /** Call fn each time the app comes to the foreground (background → active). */
149
+ onForeground(fn: () => void): () => void;
150
+ /** Call fn each time the app goes to the background (active → background). */
151
+ onBackground(fn: () => void): () => void;
152
+ destroy(): void;
153
+ }
154
+
155
+ interface JoopNetworkMonitorConfig {
156
+ /** Override platform adapter (e.g. RN NetInfo wrapper) */
157
+ adapter?: JoopNetworkAdapter;
158
+ }
159
+ declare class JoopNetworkMonitor {
160
+ private _adapter;
161
+ private _state$;
162
+ private _cleanup;
163
+ constructor(config?: JoopNetworkMonitorConfig);
164
+ private _init;
165
+ private _read;
166
+ getState(): JoopNetworkState;
167
+ state$(): JoopObservable<JoopNetworkState>;
168
+ isOnline(): boolean;
169
+ isMetered(): boolean;
170
+ /** Call fn when connectivity is regained. */
171
+ onOnline(fn: () => void): () => void;
172
+ /** Call fn when connectivity is lost. */
173
+ onOffline(fn: () => void): () => void;
174
+ /** Call fn when the connection type changes (e.g. wifi → cellular). */
175
+ onTypeChange(fn: (type: JoopNetworkType) => void): () => void;
176
+ destroy(): void;
177
+ }
178
+
179
+ export { JoopNetworkMonitor as J, JoopKeyVault as a, JoopDeviceFingerprintService as b, JoopBiometricAuth as c, JoopPushService as d, JoopAppLifecycle as e, type JoopAuthenticateOptions as f, type JoopBiometricConfig as g, type JoopDeviceInfo as h, type JoopEnrollResult as i, type JoopKeyVaultConfig as j, type JoopLifecycleConfig as k, type JoopNetworkMonitorConfig as l, type JoopPushConfig as m, type JoopPushPermission as n, type JoopPushSubscriptionInfo as o };
@@ -0,0 +1,179 @@
1
+ import { e as JoopKeyVaultAdapter, f as JoopBiometricAdapter, g as JoopPushAdapter, h as JoopPushPayload, i as JoopLifecycleAdapter, J as JoopAppState, j as JoopNetworkAdapter, a as JoopNetworkState, b as JoopNetworkType } from './adapters-B6slG6hQ.js';
2
+ import { J as JoopObservable } from './index-Dz0gOur2.js';
3
+
4
+ interface JoopDeviceInfo {
5
+ fingerprint: string;
6
+ userAgent: string;
7
+ language: string;
8
+ timezone: string;
9
+ screenResolution: string;
10
+ colorDepth: number;
11
+ platform: string;
12
+ hardwareConcurrency: number;
13
+ maxTouchPoints: number;
14
+ }
15
+ declare class JoopDeviceFingerprintService {
16
+ collect(): Omit<JoopDeviceInfo, 'fingerprint'>;
17
+ generate(): Promise<string>;
18
+ getStableId(): Promise<string>;
19
+ }
20
+
21
+ interface JoopKeyVaultConfig {
22
+ /** AES-GCM encryption password. If omitted, values are base64-encoded only (no encryption). */
23
+ encryptionKey?: string;
24
+ /** localStorage key prefix. Default: 'joop_vault_' */
25
+ prefix?: string;
26
+ /** Override platform adapter (e.g. react-native-keychain wrapper) */
27
+ adapter?: JoopKeyVaultAdapter;
28
+ }
29
+ declare class JoopKeyVault {
30
+ private _prefix;
31
+ private _encKey;
32
+ private _adapter;
33
+ private _cryptoKey;
34
+ constructor(config?: JoopKeyVaultConfig);
35
+ /** Store a secret. On web: AES-GCM encrypted if `encryptionKey` was provided. */
36
+ set(key: string, value: string): Promise<void>;
37
+ /** Retrieve a secret, or null if not found. */
38
+ get(key: string): Promise<string | null>;
39
+ remove(key: string): Promise<void>;
40
+ clear(): Promise<void>;
41
+ has(key: string): Promise<boolean>;
42
+ /** Rotate the encryption key: re-encrypts all known entries with a new key. */
43
+ rotateKey(newEncryptionKey: string, keys: string[]): Promise<void>;
44
+ private _key;
45
+ }
46
+
47
+ interface JoopBiometricConfig {
48
+ /** WebAuthn relying-party ID (default: current hostname) */
49
+ rpId?: string;
50
+ /** WebAuthn relying-party name */
51
+ rpName?: string;
52
+ /** Override platform adapter (e.g. react-native-biometrics wrapper) */
53
+ adapter?: JoopBiometricAdapter;
54
+ }
55
+ interface JoopEnrollResult {
56
+ credentialId: string;
57
+ publicKey?: string;
58
+ }
59
+ interface JoopAuthenticateOptions {
60
+ credentialId?: string;
61
+ reason?: string;
62
+ timeout?: number;
63
+ }
64
+ declare class JoopBiometricAuth {
65
+ private _rpId;
66
+ private _rpName;
67
+ private _adapter;
68
+ constructor(config?: JoopBiometricConfig);
69
+ /** True when a platform authenticator is available. */
70
+ isAvailable(): Promise<boolean>;
71
+ /**
72
+ * Enroll a new credential for the given user.
73
+ * Web: creates a WebAuthn passkey via navigator.credentials.create().
74
+ * React Native: delegates to the injected adapter.
75
+ */
76
+ enroll(userId: string, displayName: string): Promise<JoopEnrollResult>;
77
+ /**
78
+ * Verify identity against an existing credential.
79
+ * Web: navigator.credentials.get() with WebAuthn assertion.
80
+ * React Native: delegates to the injected adapter.
81
+ */
82
+ authenticate(options?: JoopAuthenticateOptions): Promise<boolean>;
83
+ /**
84
+ * Quick check — asks the platform if biometrics can be used right now.
85
+ * Does not prompt the user.
86
+ */
87
+ canAuthenticate(): Promise<boolean>;
88
+ }
89
+
90
+ type JoopPushPermission = 'granted' | 'denied' | 'default' | 'unsupported';
91
+ interface JoopPushConfig {
92
+ /** VAPID public key (base64url) for web push subscription */
93
+ vapidPublicKey?: string;
94
+ /** Path to the service worker file (default: '/sw.js') */
95
+ serviceWorkerPath?: string;
96
+ /** Override platform adapter (e.g. FCM / APNs wrapper) */
97
+ adapter?: JoopPushAdapter;
98
+ }
99
+ interface JoopPushSubscriptionInfo {
100
+ endpoint: string;
101
+ p256dh: string;
102
+ auth: string;
103
+ }
104
+ declare class JoopPushService {
105
+ private _cfg;
106
+ private _adapter;
107
+ private _messageHandlers;
108
+ private _adapterUnsub;
109
+ constructor(config?: JoopPushConfig);
110
+ /** Request push notification permission from the user. */
111
+ requestPermission(): Promise<JoopPushPermission>;
112
+ /** Get the current permission status without prompting. */
113
+ getPermission(): JoopPushPermission;
114
+ /**
115
+ * Subscribe to web push and return subscription info to send to your server.
116
+ * Requires a service worker and a VAPID key.
117
+ */
118
+ subscribe(options?: {
119
+ vapidPublicKey?: string;
120
+ }): Promise<JoopPushSubscriptionInfo | null>;
121
+ /** Unsubscribe from web push. */
122
+ unsubscribe(): Promise<boolean>;
123
+ /** Display an immediate local notification (no server push required). */
124
+ show(payload: JoopPushPayload): Promise<void>;
125
+ /** Set the app badge count (mobile only via adapter). */
126
+ setBadgeCount(count: number): Promise<void>;
127
+ /** Clear the app badge. */
128
+ clearBadge(): Promise<void>;
129
+ /** Register a handler for incoming push payloads (foreground messages). */
130
+ onMessage(handler: (payload: JoopPushPayload) => void): () => void;
131
+ destroy(): void;
132
+ private _emit;
133
+ }
134
+
135
+ interface JoopLifecycleConfig {
136
+ /** Override platform adapter (e.g. RN AppState wrapper) */
137
+ adapter?: JoopLifecycleAdapter;
138
+ }
139
+ declare class JoopAppLifecycle {
140
+ private _state$;
141
+ private _cleanup;
142
+ private _adapter;
143
+ constructor(config?: JoopLifecycleConfig);
144
+ private _init;
145
+ getState(): JoopAppState;
146
+ state$(): JoopObservable<JoopAppState>;
147
+ isActive(): boolean;
148
+ /** Call fn each time the app comes to the foreground (background → active). */
149
+ onForeground(fn: () => void): () => void;
150
+ /** Call fn each time the app goes to the background (active → background). */
151
+ onBackground(fn: () => void): () => void;
152
+ destroy(): void;
153
+ }
154
+
155
+ interface JoopNetworkMonitorConfig {
156
+ /** Override platform adapter (e.g. RN NetInfo wrapper) */
157
+ adapter?: JoopNetworkAdapter;
158
+ }
159
+ declare class JoopNetworkMonitor {
160
+ private _adapter;
161
+ private _state$;
162
+ private _cleanup;
163
+ constructor(config?: JoopNetworkMonitorConfig);
164
+ private _init;
165
+ private _read;
166
+ getState(): JoopNetworkState;
167
+ state$(): JoopObservable<JoopNetworkState>;
168
+ isOnline(): boolean;
169
+ isMetered(): boolean;
170
+ /** Call fn when connectivity is regained. */
171
+ onOnline(fn: () => void): () => void;
172
+ /** Call fn when connectivity is lost. */
173
+ onOffline(fn: () => void): () => void;
174
+ /** Call fn when the connection type changes (e.g. wifi → cellular). */
175
+ onTypeChange(fn: (type: JoopNetworkType) => void): () => void;
176
+ destroy(): void;
177
+ }
178
+
179
+ export { JoopNetworkMonitor as J, JoopKeyVault as a, JoopDeviceFingerprintService as b, JoopBiometricAuth as c, JoopPushService as d, JoopAppLifecycle as e, type JoopAuthenticateOptions as f, type JoopBiometricConfig as g, type JoopDeviceInfo as h, type JoopEnrollResult as i, type JoopKeyVaultConfig as j, type JoopLifecycleConfig as k, type JoopNetworkMonitorConfig as l, type JoopPushConfig as m, type JoopPushPermission as n, type JoopPushSubscriptionInfo as o };
@@ -0,0 +1,25 @@
1
+ import { J as JoopObservable } from './index-Dz0gOur2.mjs';
2
+
3
+ type JoopNotificationPermission = 'default' | 'granted' | 'denied';
4
+ interface JoopNotificationOptions extends NotificationOptions {
5
+ tag?: string;
6
+ requireInteraction?: boolean;
7
+ }
8
+ declare class JoopNotificationService {
9
+ private _permission$;
10
+ private _messageHandlers;
11
+ private _swReg;
12
+ isSupported(): boolean;
13
+ getPermission(): JoopNotificationPermission;
14
+ permission$(): JoopObservable<JoopNotificationPermission>;
15
+ requestPermission(): Promise<JoopNotificationPermission>;
16
+ show(title: string, options?: JoopNotificationOptions): Promise<Notification | null>;
17
+ setServiceWorker(reg: ServiceWorkerRegistration): Promise<void>;
18
+ subscribe(vapidPublicKey: string): Promise<PushSubscription | null>;
19
+ unsubscribe(): Promise<boolean>;
20
+ getSubscription(): Promise<PushSubscription | null>;
21
+ onMessage(handler: (event: MessageEvent) => void): () => void;
22
+ destroy(): void;
23
+ }
24
+
25
+ export { JoopNotificationService as J, type JoopNotificationOptions as a, type JoopNotificationPermission as b };
@@ -0,0 +1,25 @@
1
+ import { J as JoopObservable } from './index-Dz0gOur2.js';
2
+
3
+ type JoopNotificationPermission = 'default' | 'granted' | 'denied';
4
+ interface JoopNotificationOptions extends NotificationOptions {
5
+ tag?: string;
6
+ requireInteraction?: boolean;
7
+ }
8
+ declare class JoopNotificationService {
9
+ private _permission$;
10
+ private _messageHandlers;
11
+ private _swReg;
12
+ isSupported(): boolean;
13
+ getPermission(): JoopNotificationPermission;
14
+ permission$(): JoopObservable<JoopNotificationPermission>;
15
+ requestPermission(): Promise<JoopNotificationPermission>;
16
+ show(title: string, options?: JoopNotificationOptions): Promise<Notification | null>;
17
+ setServiceWorker(reg: ServiceWorkerRegistration): Promise<void>;
18
+ subscribe(vapidPublicKey: string): Promise<PushSubscription | null>;
19
+ unsubscribe(): Promise<boolean>;
20
+ getSubscription(): Promise<PushSubscription | null>;
21
+ onMessage(handler: (event: MessageEvent) => void): () => void;
22
+ destroy(): void;
23
+ }
24
+
25
+ export { JoopNotificationService as J, type JoopNotificationOptions as a, type JoopNotificationPermission as b };
@@ -0,0 +1,179 @@
1
+ import { J as JoopObservable } from '../index-Dz0gOur2.mjs';
2
+
3
+ declare class JoopCorrelationService {
4
+ private _correlationId;
5
+ private _requestId;
6
+ newCorrelation(): string;
7
+ newRequest(): string;
8
+ getCorrelationId(): string;
9
+ getRequestId(): string;
10
+ headers(): Record<string, string>;
11
+ clear(): void;
12
+ }
13
+
14
+ type JoopAuditAction = 'login' | 'logout' | 'session-timeout' | 'session-extended' | 'transfer-initiated' | 'transfer-confirmed' | 'transfer-failed' | 'profile-updated' | 'password-changed' | 'settings-changed' | 'document-viewed' | 'statement-downloaded' | 'otp-sent' | 'otp-verified' | 'biometric-registered' | 'biometric-authenticated' | string;
15
+ interface JoopAuditEntry {
16
+ id: string;
17
+ action: JoopAuditAction;
18
+ timestamp: number;
19
+ userId?: string;
20
+ sessionId?: string;
21
+ correlationId?: string;
22
+ metadata?: Record<string, unknown>;
23
+ success: boolean;
24
+ }
25
+ type JoopAuditListener = (entry: JoopAuditEntry) => void;
26
+ declare class JoopAuditLog {
27
+ private _maxEntries;
28
+ private _entries;
29
+ private _listeners;
30
+ constructor(_maxEntries?: number);
31
+ record(action: JoopAuditAction, options?: {
32
+ userId?: string;
33
+ sessionId?: string;
34
+ correlationId?: string;
35
+ metadata?: Record<string, unknown>;
36
+ success?: boolean;
37
+ }): JoopAuditEntry;
38
+ getAll(): JoopAuditEntry[];
39
+ getByAction(action: JoopAuditAction): JoopAuditEntry[];
40
+ getBySession(sessionId: string): JoopAuditEntry[];
41
+ getByUser(userId: string): JoopAuditEntry[];
42
+ onRecord(listener: JoopAuditListener): () => void;
43
+ clear(): void;
44
+ export(): string;
45
+ }
46
+
47
+ interface JoopPerfMark {
48
+ name: string;
49
+ startTime: number;
50
+ endTime?: number;
51
+ duration?: number;
52
+ metadata?: Record<string, unknown>;
53
+ }
54
+ declare class JoopPerformanceService {
55
+ private _marks;
56
+ private _completed;
57
+ mark(name: string, metadata?: Record<string, unknown>): void;
58
+ measure(name: string): JoopPerfMark | null;
59
+ timeAsync<T>(name: string, fn: () => Promise<T>): Promise<T>;
60
+ timeSync<T>(name: string, fn: () => T): T;
61
+ getCompleted(): JoopPerfMark[];
62
+ getByName(name: string): JoopPerfMark[];
63
+ getAverage(name: string): number | null;
64
+ clear(): void;
65
+ }
66
+
67
+ interface JoopErrorReport {
68
+ id: string;
69
+ message: string;
70
+ stack?: string;
71
+ context?: Record<string, unknown>;
72
+ timestamp: number;
73
+ userId?: string;
74
+ sessionId?: string;
75
+ }
76
+ type JoopErrorHandler = (report: JoopErrorReport) => void | Promise<void>;
77
+ declare class JoopErrorReporter {
78
+ private _handlers;
79
+ private _userId;
80
+ private _sessionId;
81
+ private _context;
82
+ setUser(userId: string): void;
83
+ setSession(sessionId: string): void;
84
+ setContext(ctx: Record<string, unknown>): void;
85
+ addHandler(handler: JoopErrorHandler): () => void;
86
+ capture(error: unknown, extra?: Record<string, unknown>): JoopErrorReport;
87
+ captureMessage(message: string, extra?: Record<string, unknown>): JoopErrorReport;
88
+ clear(): void;
89
+ }
90
+
91
+ interface JoopVitalsSnapshot {
92
+ lcp: number | null;
93
+ fid: number | null;
94
+ inp: number | null;
95
+ cls: number | null;
96
+ ttfb: number | null;
97
+ fcp: number | null;
98
+ capturedAt: number;
99
+ }
100
+ interface JoopVitalUpdate {
101
+ metric: keyof Omit<JoopVitalsSnapshot, 'capturedAt'>;
102
+ value: number;
103
+ rating: 'good' | 'needs-improvement' | 'poor';
104
+ }
105
+ declare class JoopWebVitals {
106
+ private _vitals;
107
+ private _vitals$;
108
+ private _snapshot$;
109
+ private _observers;
110
+ private _running;
111
+ start(): void;
112
+ stop(): void;
113
+ snapshot(): JoopVitalsSnapshot;
114
+ vitals$(): JoopObservable<JoopVitalUpdate>;
115
+ snapshot$(): JoopObservable<JoopVitalsSnapshot>;
116
+ getLCP(): number | null;
117
+ getCLS(): number | null;
118
+ getINP(): number | null;
119
+ getTTFB(): number | null;
120
+ getFCP(): number | null;
121
+ getFID(): number | null;
122
+ getRating(metric: string): 'good' | 'needs-improvement' | 'poor';
123
+ private _record;
124
+ private _observe;
125
+ private _observeLCP;
126
+ private _observeFID;
127
+ private _observeINP;
128
+ private _observeCLS;
129
+ private _observeTTFB;
130
+ private _observeFCP;
131
+ private _buildSnapshot;
132
+ }
133
+
134
+ type JoopRecordedEventType = 'dom-mutation' | 'click' | 'input' | 'scroll' | 'resize' | 'navigation' | 'custom';
135
+ interface JoopRecordedEvent {
136
+ type: JoopRecordedEventType;
137
+ timestamp: number;
138
+ selector?: string;
139
+ value?: string;
140
+ data?: Record<string, unknown>;
141
+ }
142
+ interface JoopSessionRecord {
143
+ startedAt: number;
144
+ stoppedAt: number;
145
+ events: JoopRecordedEvent[];
146
+ url: string;
147
+ userAgent: string;
148
+ }
149
+ interface JoopSessionRecorderOptions {
150
+ maskSelectors?: string[];
151
+ ignoreSelectors?: string[];
152
+ redactInputs?: boolean;
153
+ maxEvents?: number;
154
+ captureScroll?: boolean;
155
+ captureResize?: boolean;
156
+ }
157
+ declare class JoopSessionRecorder {
158
+ private _events;
159
+ private _running;
160
+ private _paused;
161
+ private _startedAt;
162
+ private _opts;
163
+ private _cleanup;
164
+ private _mutationObserver;
165
+ private _scrollTimer;
166
+ start(options?: JoopSessionRecorderOptions): void;
167
+ pause(): void;
168
+ resume(): void;
169
+ stop(): JoopSessionRecord;
170
+ events(): JoopRecordedEvent[];
171
+ export(format?: 'json' | 'compressed'): string;
172
+ addEvent(type: JoopRecordedEventType, data?: Record<string, unknown>): void;
173
+ private _push;
174
+ private _attachListeners;
175
+ private _detach;
176
+ private _shouldIgnore;
177
+ }
178
+
179
+ export { type JoopAuditAction, type JoopAuditEntry, type JoopAuditListener, JoopAuditLog, JoopCorrelationService, type JoopErrorHandler, type JoopErrorReport, JoopErrorReporter, type JoopPerfMark, JoopPerformanceService, type JoopRecordedEvent, type JoopSessionRecord, JoopSessionRecorder, type JoopSessionRecorderOptions, type JoopVitalUpdate, type JoopVitalsSnapshot, JoopWebVitals };