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,206 @@
1
+ export { e as JoopAnomalyEvent, J as JoopBehavioralBiometrics, f as JoopBiometricProfile, g as JoopBiometricScore, d as JoopDifferentialPrivacy, h as JoopPIIFinding, i as JoopPIIPattern, b as JoopPIIScanner, j as JoopRiskContext, a as JoopRiskEngine, k as JoopRiskFactor, l as JoopRiskScore, c as JoopSecretSharing, m as JoopShare } from '../differential-privacy-BcAv1G80.mjs';
2
+ import { J as JoopObservable } from '../index-Dz0gOur2.mjs';
3
+
4
+ interface JoopSecureStorageConfig {
5
+ namespace?: string;
6
+ backend?: 'localStorage' | 'sessionStorage' | 'memory';
7
+ salt?: string;
8
+ }
9
+ declare class JoopSecureStorage {
10
+ private readonly ns;
11
+ private readonly salt;
12
+ private readonly backend;
13
+ private _key?;
14
+ constructor(config?: JoopSecureStorageConfig);
15
+ private cryptoKey;
16
+ private storageKey;
17
+ setItem(key: string, value: unknown): Promise<void>;
18
+ getItem<T>(key: string): Promise<T | null>;
19
+ removeItem(key: string): Promise<void>;
20
+ has(key: string): Promise<boolean>;
21
+ keys(): Promise<string[]>;
22
+ clear(): Promise<void>;
23
+ setItems(entries: Record<string, unknown>): Promise<void>;
24
+ getAll(): Promise<Record<string, unknown>>;
25
+ }
26
+
27
+ interface JoopScreenSecurityConfig {
28
+ blurOnTabSwitch?: boolean;
29
+ clipboardProtection?: boolean;
30
+ devtoolsDetection?: boolean;
31
+ screenshotWarning?: boolean;
32
+ }
33
+ type JoopScreenSecurityEvent = 'devtools-open' | 'screenshot-attempt' | 'tab-hidden' | 'tab-visible' | 'clipboard-blocked';
34
+ declare class JoopScreenSecurityService {
35
+ private _config;
36
+ private _listeners;
37
+ private _active;
38
+ private _devtoolsTimer;
39
+ private _sensitiveElements;
40
+ private _blurOverlay;
41
+ constructor(config?: JoopScreenSecurityConfig);
42
+ activate(): void;
43
+ deactivate(): void;
44
+ registerSensitive(element: Element): () => void;
45
+ unregisterSensitive(element: Element): void;
46
+ on(event: JoopScreenSecurityEvent, handler: () => void): () => void;
47
+ isDevtoolsOpen(): boolean;
48
+ destroy(): void;
49
+ private _onVisibilityChange;
50
+ private _onKeyUp;
51
+ private _blockCopy;
52
+ private _startDevtoolsDetection;
53
+ private _showOverlay;
54
+ private _removeOverlay;
55
+ private _emit;
56
+ }
57
+
58
+ interface JoopSignedPayload<T = unknown> {
59
+ data: T;
60
+ nonce: string;
61
+ timestamp: number;
62
+ signature: string;
63
+ }
64
+ interface JoopRequestSigningConfig {
65
+ /** Shared secret (ideally per-session key derived from server handshake) */
66
+ secret: string;
67
+ /** Max age of a request in milliseconds — server rejects older requests (default 30000 = 30s) */
68
+ maxAgeMs?: number;
69
+ /** Algorithm (only SHA-256 currently) */
70
+ algorithm?: 'SHA-256';
71
+ }
72
+ declare class JoopRequestSigningService {
73
+ private readonly _secret;
74
+ private readonly _maxAgeMs;
75
+ constructor(config: JoopRequestSigningConfig);
76
+ /** Sign a payload. Returns the signed envelope to send in the request body. */
77
+ sign<T>(data: T): Promise<JoopSignedPayload<T>>;
78
+ /** Verify a signed payload (for testing/debugging — production verification runs server-side). */
79
+ verify<T>(payload: JoopSignedPayload<T>): Promise<{
80
+ valid: boolean;
81
+ reason?: string;
82
+ }>;
83
+ /** Add the signed envelope as the request body, returning updated fetch init. */
84
+ signRequest<T>(data: T, init?: RequestInit): Promise<RequestInit>;
85
+ }
86
+
87
+ interface JoopClipboardEntry {
88
+ text: string;
89
+ copiedAt: number;
90
+ expiresAt: number;
91
+ label?: string;
92
+ isSensitive: boolean;
93
+ }
94
+ interface JoopClipboardEvent {
95
+ type: 'copied' | 'cleared' | 'expired';
96
+ entry?: JoopClipboardEntry;
97
+ }
98
+ interface JoopSecureClipboardConfig {
99
+ defaultTtlMs?: number;
100
+ sensitivePatterns?: RegExp[];
101
+ autoClearOnHide?: boolean;
102
+ }
103
+ declare class JoopSecureClipboard {
104
+ private _config;
105
+ private _current;
106
+ private _timer;
107
+ private _event$;
108
+ private _visibilityHandler;
109
+ constructor(config?: JoopSecureClipboardConfig);
110
+ copy(text: string, options?: {
111
+ ttlMs?: number;
112
+ label?: string;
113
+ }): Promise<void>;
114
+ read(): Promise<string | null>;
115
+ clear(reason?: 'manual' | 'expired'): Promise<void>;
116
+ getCurrent(): JoopClipboardEntry | null;
117
+ isExpired(): boolean;
118
+ getRemainingMs(): number;
119
+ isSensitive(text: string): boolean;
120
+ events$(): JoopObservable<JoopClipboardEvent>;
121
+ destroy(): void;
122
+ private _detectSensitive;
123
+ private _cancelTimer;
124
+ }
125
+
126
+ type JoopTamperType = 'devtools' | 'dom-injection' | 'prototype-pollution' | 'debugger-pause' | 'console-override' | 'function-override';
127
+ type JoopTamperSeverity = 'low' | 'medium' | 'high' | 'critical';
128
+ interface JoopTamperCheck {
129
+ type: JoopTamperType;
130
+ detected: boolean;
131
+ severity: JoopTamperSeverity;
132
+ detail?: string;
133
+ }
134
+ interface JoopTamperReport {
135
+ timestamp: number;
136
+ checks: JoopTamperCheck[];
137
+ threatCount: number;
138
+ highestSeverity: JoopTamperSeverity | null;
139
+ }
140
+ declare class JoopAntiTamperService {
141
+ private _monitor;
142
+ private _tamper$;
143
+ private _alertHandlers;
144
+ private _lastReport;
145
+ private _nativeFetch;
146
+ private _nativeConsoleLog;
147
+ checkDevTools(): JoopTamperCheck;
148
+ checkDomInjection(): JoopTamperCheck;
149
+ checkPrototypePollution(): JoopTamperCheck;
150
+ checkConsoleOverride(): JoopTamperCheck;
151
+ checkFunctionOverride(): JoopTamperCheck;
152
+ checkIntegrity(): JoopTamperReport;
153
+ isTampered(): boolean;
154
+ getLastReport(): JoopTamperReport | null;
155
+ startMonitoring(intervalMs?: number): void;
156
+ stopMonitoring(): void;
157
+ isMonitoring(): boolean;
158
+ onTamperDetected(handler: (report: JoopTamperReport) => void): () => void;
159
+ tamper$(): JoopObservable<JoopTamperReport>;
160
+ destroy(): void;
161
+ }
162
+
163
+ interface JoopCertPin {
164
+ hostname: string;
165
+ fingerprints: string[];
166
+ algorithm: 'sha256' | 'sha1';
167
+ addedAt: number;
168
+ expiresAt?: number;
169
+ notes?: string;
170
+ }
171
+ interface JoopPinViolation {
172
+ hostname: string;
173
+ receivedFingerprint: string;
174
+ expectedFingerprints: string[];
175
+ timestamp: number;
176
+ url: string;
177
+ }
178
+ interface JoopPinValidationResult {
179
+ valid: boolean;
180
+ pinned: boolean;
181
+ violation?: JoopPinViolation;
182
+ pin?: JoopCertPin;
183
+ }
184
+ declare class JoopCertPinningService {
185
+ private _pins;
186
+ private _violations;
187
+ private _violation$;
188
+ private _violationHandlers;
189
+ addPin(pin: Omit<JoopCertPin, 'addedAt'>): void;
190
+ removePin(hostname: string): void;
191
+ getPin(hostname: string): JoopCertPin | undefined;
192
+ getAllPins(): JoopCertPin[];
193
+ validate(url: string, fingerprint: string): JoopPinValidationResult;
194
+ validateResponse(url: string, response: Response): JoopPinValidationResult;
195
+ getExpiring(withinMs?: number): JoopCertPin[];
196
+ isExpired(hostname: string): boolean;
197
+ getViolations(): JoopPinViolation[];
198
+ clearViolations(): void;
199
+ onViolation(handler: (v: JoopPinViolation) => void): () => void;
200
+ violations$(): JoopObservable<JoopPinViolation>;
201
+ private _normalizeHostname;
202
+ private _hostnameFromUrl;
203
+ private _findPin;
204
+ }
205
+
206
+ export { JoopAntiTamperService, type JoopCertPin, JoopCertPinningService, type JoopClipboardEntry, type JoopClipboardEvent, type JoopPinValidationResult, type JoopPinViolation, type JoopRequestSigningConfig, JoopRequestSigningService, type JoopScreenSecurityConfig, type JoopScreenSecurityEvent, JoopScreenSecurityService, JoopSecureClipboard, type JoopSecureClipboardConfig, JoopSecureStorage, type JoopSecureStorageConfig, type JoopSignedPayload, type JoopTamperCheck, type JoopTamperReport, type JoopTamperSeverity, type JoopTamperType };
@@ -0,0 +1,206 @@
1
+ export { e as JoopAnomalyEvent, J as JoopBehavioralBiometrics, f as JoopBiometricProfile, g as JoopBiometricScore, d as JoopDifferentialPrivacy, h as JoopPIIFinding, i as JoopPIIPattern, b as JoopPIIScanner, j as JoopRiskContext, a as JoopRiskEngine, k as JoopRiskFactor, l as JoopRiskScore, c as JoopSecretSharing, m as JoopShare } from '../differential-privacy-C8mAUjZr.js';
2
+ import { J as JoopObservable } from '../index-Dz0gOur2.js';
3
+
4
+ interface JoopSecureStorageConfig {
5
+ namespace?: string;
6
+ backend?: 'localStorage' | 'sessionStorage' | 'memory';
7
+ salt?: string;
8
+ }
9
+ declare class JoopSecureStorage {
10
+ private readonly ns;
11
+ private readonly salt;
12
+ private readonly backend;
13
+ private _key?;
14
+ constructor(config?: JoopSecureStorageConfig);
15
+ private cryptoKey;
16
+ private storageKey;
17
+ setItem(key: string, value: unknown): Promise<void>;
18
+ getItem<T>(key: string): Promise<T | null>;
19
+ removeItem(key: string): Promise<void>;
20
+ has(key: string): Promise<boolean>;
21
+ keys(): Promise<string[]>;
22
+ clear(): Promise<void>;
23
+ setItems(entries: Record<string, unknown>): Promise<void>;
24
+ getAll(): Promise<Record<string, unknown>>;
25
+ }
26
+
27
+ interface JoopScreenSecurityConfig {
28
+ blurOnTabSwitch?: boolean;
29
+ clipboardProtection?: boolean;
30
+ devtoolsDetection?: boolean;
31
+ screenshotWarning?: boolean;
32
+ }
33
+ type JoopScreenSecurityEvent = 'devtools-open' | 'screenshot-attempt' | 'tab-hidden' | 'tab-visible' | 'clipboard-blocked';
34
+ declare class JoopScreenSecurityService {
35
+ private _config;
36
+ private _listeners;
37
+ private _active;
38
+ private _devtoolsTimer;
39
+ private _sensitiveElements;
40
+ private _blurOverlay;
41
+ constructor(config?: JoopScreenSecurityConfig);
42
+ activate(): void;
43
+ deactivate(): void;
44
+ registerSensitive(element: Element): () => void;
45
+ unregisterSensitive(element: Element): void;
46
+ on(event: JoopScreenSecurityEvent, handler: () => void): () => void;
47
+ isDevtoolsOpen(): boolean;
48
+ destroy(): void;
49
+ private _onVisibilityChange;
50
+ private _onKeyUp;
51
+ private _blockCopy;
52
+ private _startDevtoolsDetection;
53
+ private _showOverlay;
54
+ private _removeOverlay;
55
+ private _emit;
56
+ }
57
+
58
+ interface JoopSignedPayload<T = unknown> {
59
+ data: T;
60
+ nonce: string;
61
+ timestamp: number;
62
+ signature: string;
63
+ }
64
+ interface JoopRequestSigningConfig {
65
+ /** Shared secret (ideally per-session key derived from server handshake) */
66
+ secret: string;
67
+ /** Max age of a request in milliseconds — server rejects older requests (default 30000 = 30s) */
68
+ maxAgeMs?: number;
69
+ /** Algorithm (only SHA-256 currently) */
70
+ algorithm?: 'SHA-256';
71
+ }
72
+ declare class JoopRequestSigningService {
73
+ private readonly _secret;
74
+ private readonly _maxAgeMs;
75
+ constructor(config: JoopRequestSigningConfig);
76
+ /** Sign a payload. Returns the signed envelope to send in the request body. */
77
+ sign<T>(data: T): Promise<JoopSignedPayload<T>>;
78
+ /** Verify a signed payload (for testing/debugging — production verification runs server-side). */
79
+ verify<T>(payload: JoopSignedPayload<T>): Promise<{
80
+ valid: boolean;
81
+ reason?: string;
82
+ }>;
83
+ /** Add the signed envelope as the request body, returning updated fetch init. */
84
+ signRequest<T>(data: T, init?: RequestInit): Promise<RequestInit>;
85
+ }
86
+
87
+ interface JoopClipboardEntry {
88
+ text: string;
89
+ copiedAt: number;
90
+ expiresAt: number;
91
+ label?: string;
92
+ isSensitive: boolean;
93
+ }
94
+ interface JoopClipboardEvent {
95
+ type: 'copied' | 'cleared' | 'expired';
96
+ entry?: JoopClipboardEntry;
97
+ }
98
+ interface JoopSecureClipboardConfig {
99
+ defaultTtlMs?: number;
100
+ sensitivePatterns?: RegExp[];
101
+ autoClearOnHide?: boolean;
102
+ }
103
+ declare class JoopSecureClipboard {
104
+ private _config;
105
+ private _current;
106
+ private _timer;
107
+ private _event$;
108
+ private _visibilityHandler;
109
+ constructor(config?: JoopSecureClipboardConfig);
110
+ copy(text: string, options?: {
111
+ ttlMs?: number;
112
+ label?: string;
113
+ }): Promise<void>;
114
+ read(): Promise<string | null>;
115
+ clear(reason?: 'manual' | 'expired'): Promise<void>;
116
+ getCurrent(): JoopClipboardEntry | null;
117
+ isExpired(): boolean;
118
+ getRemainingMs(): number;
119
+ isSensitive(text: string): boolean;
120
+ events$(): JoopObservable<JoopClipboardEvent>;
121
+ destroy(): void;
122
+ private _detectSensitive;
123
+ private _cancelTimer;
124
+ }
125
+
126
+ type JoopTamperType = 'devtools' | 'dom-injection' | 'prototype-pollution' | 'debugger-pause' | 'console-override' | 'function-override';
127
+ type JoopTamperSeverity = 'low' | 'medium' | 'high' | 'critical';
128
+ interface JoopTamperCheck {
129
+ type: JoopTamperType;
130
+ detected: boolean;
131
+ severity: JoopTamperSeverity;
132
+ detail?: string;
133
+ }
134
+ interface JoopTamperReport {
135
+ timestamp: number;
136
+ checks: JoopTamperCheck[];
137
+ threatCount: number;
138
+ highestSeverity: JoopTamperSeverity | null;
139
+ }
140
+ declare class JoopAntiTamperService {
141
+ private _monitor;
142
+ private _tamper$;
143
+ private _alertHandlers;
144
+ private _lastReport;
145
+ private _nativeFetch;
146
+ private _nativeConsoleLog;
147
+ checkDevTools(): JoopTamperCheck;
148
+ checkDomInjection(): JoopTamperCheck;
149
+ checkPrototypePollution(): JoopTamperCheck;
150
+ checkConsoleOverride(): JoopTamperCheck;
151
+ checkFunctionOverride(): JoopTamperCheck;
152
+ checkIntegrity(): JoopTamperReport;
153
+ isTampered(): boolean;
154
+ getLastReport(): JoopTamperReport | null;
155
+ startMonitoring(intervalMs?: number): void;
156
+ stopMonitoring(): void;
157
+ isMonitoring(): boolean;
158
+ onTamperDetected(handler: (report: JoopTamperReport) => void): () => void;
159
+ tamper$(): JoopObservable<JoopTamperReport>;
160
+ destroy(): void;
161
+ }
162
+
163
+ interface JoopCertPin {
164
+ hostname: string;
165
+ fingerprints: string[];
166
+ algorithm: 'sha256' | 'sha1';
167
+ addedAt: number;
168
+ expiresAt?: number;
169
+ notes?: string;
170
+ }
171
+ interface JoopPinViolation {
172
+ hostname: string;
173
+ receivedFingerprint: string;
174
+ expectedFingerprints: string[];
175
+ timestamp: number;
176
+ url: string;
177
+ }
178
+ interface JoopPinValidationResult {
179
+ valid: boolean;
180
+ pinned: boolean;
181
+ violation?: JoopPinViolation;
182
+ pin?: JoopCertPin;
183
+ }
184
+ declare class JoopCertPinningService {
185
+ private _pins;
186
+ private _violations;
187
+ private _violation$;
188
+ private _violationHandlers;
189
+ addPin(pin: Omit<JoopCertPin, 'addedAt'>): void;
190
+ removePin(hostname: string): void;
191
+ getPin(hostname: string): JoopCertPin | undefined;
192
+ getAllPins(): JoopCertPin[];
193
+ validate(url: string, fingerprint: string): JoopPinValidationResult;
194
+ validateResponse(url: string, response: Response): JoopPinValidationResult;
195
+ getExpiring(withinMs?: number): JoopCertPin[];
196
+ isExpired(hostname: string): boolean;
197
+ getViolations(): JoopPinViolation[];
198
+ clearViolations(): void;
199
+ onViolation(handler: (v: JoopPinViolation) => void): () => void;
200
+ violations$(): JoopObservable<JoopPinViolation>;
201
+ private _normalizeHostname;
202
+ private _hostnameFromUrl;
203
+ private _findPin;
204
+ }
205
+
206
+ export { JoopAntiTamperService, type JoopCertPin, JoopCertPinningService, type JoopClipboardEntry, type JoopClipboardEvent, type JoopPinValidationResult, type JoopPinViolation, type JoopRequestSigningConfig, JoopRequestSigningService, type JoopScreenSecurityConfig, type JoopScreenSecurityEvent, JoopScreenSecurityService, JoopSecureClipboard, type JoopSecureClipboardConfig, JoopSecureStorage, type JoopSecureStorageConfig, type JoopSignedPayload, type JoopTamperCheck, type JoopTamperReport, type JoopTamperSeverity, type JoopTamperType };