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.
- package/CHANGELOG.md +678 -0
- package/README.md +583 -0
- package/dist/a11y.service-C-DQQfgO.d.mts +143 -0
- package/dist/a11y.service-CauEJrJe.d.ts +143 -0
- package/dist/adapters-B6slG6hQ.d.mts +84 -0
- package/dist/adapters-B6slG6hQ.d.ts +84 -0
- package/dist/aes.service-CkoupAww.d.mts +95 -0
- package/dist/aes.service-CkoupAww.d.ts +95 -0
- package/dist/ai/index.d.mts +99 -0
- package/dist/ai/index.d.ts +99 -0
- package/dist/ai/index.js +307 -0
- package/dist/ai/index.js.map +1 -0
- package/dist/ai/index.mjs +304 -0
- package/dist/ai/index.mjs.map +1 -0
- package/dist/analytics/index.d.mts +42 -0
- package/dist/analytics/index.d.ts +42 -0
- package/dist/analytics/index.js +139 -0
- package/dist/analytics/index.js.map +1 -0
- package/dist/analytics/index.mjs +136 -0
- package/dist/analytics/index.mjs.map +1 -0
- package/dist/angular/index.d.mts +148 -0
- package/dist/angular/index.d.ts +148 -0
- package/dist/angular/index.js +122 -0
- package/dist/angular/index.js.map +1 -0
- package/dist/angular/index.mjs +101 -0
- package/dist/angular/index.mjs.map +1 -0
- package/dist/api/index.d.mts +128 -0
- package/dist/api/index.d.ts +128 -0
- package/dist/api/index.js +1358 -0
- package/dist/api/index.js.map +1 -0
- package/dist/api/index.mjs +1332 -0
- package/dist/api/index.mjs.map +1 -0
- package/dist/auth/index.d.mts +105 -0
- package/dist/auth/index.d.ts +105 -0
- package/dist/auth/index.js +989 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/index.mjs +979 -0
- package/dist/auth/index.mjs.map +1 -0
- package/dist/auth.service-DNVB-L4U.d.mts +16 -0
- package/dist/auth.service-PjUUSUIt.d.ts +16 -0
- package/dist/banking/index.d.mts +1530 -0
- package/dist/banking/index.d.ts +1530 -0
- package/dist/banking/index.js +4739 -0
- package/dist/banking/index.js.map +1 -0
- package/dist/banking/index.mjs +4661 -0
- package/dist/banking/index.mjs.map +1 -0
- package/dist/cache/index.d.mts +40 -0
- package/dist/cache/index.d.ts +40 -0
- package/dist/cache/index.js +174 -0
- package/dist/cache/index.js.map +1 -0
- package/dist/cache/index.mjs +172 -0
- package/dist/cache/index.mjs.map +1 -0
- package/dist/client-profile.service-BuPeXVp5.d.mts +28 -0
- package/dist/client-profile.service-D5bRRYQp.d.ts +28 -0
- package/dist/config.models-Cqg04fAQ.d.mts +84 -0
- package/dist/config.models-Cqg04fAQ.d.ts +84 -0
- package/dist/config.service-CrCvI-JS.d.ts +31 -0
- package/dist/config.service-Cz4QQLlf.d.mts +31 -0
- package/dist/core/index.d.mts +4 -0
- package/dist/core/index.d.ts +4 -0
- package/dist/core/index.js +631 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/index.mjs +619 -0
- package/dist/core/index.mjs.map +1 -0
- package/dist/crypto-utils-DriNhLdx.d.mts +30 -0
- package/dist/crypto-utils-DriNhLdx.d.ts +30 -0
- package/dist/data-storage.service-DT6xaTxE.d.ts +51 -0
- package/dist/data-storage.service-LvhGRCmw.d.mts +51 -0
- package/dist/deeplink/index.d.mts +39 -0
- package/dist/deeplink/index.d.ts +39 -0
- package/dist/deeplink/index.js +268 -0
- package/dist/deeplink/index.js.map +1 -0
- package/dist/deeplink/index.mjs +265 -0
- package/dist/deeplink/index.mjs.map +1 -0
- package/dist/deeplink.service-Ctd5u243.d.mts +35 -0
- package/dist/deeplink.service-uUuTnY9_.d.ts +35 -0
- package/dist/dev/index.d.mts +20 -0
- package/dist/dev/index.d.ts +20 -0
- package/dist/dev/index.js +51 -0
- package/dist/dev/index.js.map +1 -0
- package/dist/dev/index.mjs +49 -0
- package/dist/dev/index.mjs.map +1 -0
- package/dist/device/index.d.mts +108 -0
- package/dist/device/index.d.ts +108 -0
- package/dist/device/index.js +960 -0
- package/dist/device/index.js.map +1 -0
- package/dist/device/index.mjs +951 -0
- package/dist/device/index.mjs.map +1 -0
- package/dist/differential-privacy-BcAv1G80.d.mts +210 -0
- package/dist/differential-privacy-C8mAUjZr.d.ts +210 -0
- package/dist/encryption/index.d.mts +75 -0
- package/dist/encryption/index.d.ts +75 -0
- package/dist/encryption/index.js +605 -0
- package/dist/encryption/index.js.map +1 -0
- package/dist/encryption/index.mjs +598 -0
- package/dist/encryption/index.mjs.map +1 -0
- package/dist/form-validator-3tkmzr_o.d.mts +72 -0
- package/dist/form-validator-3tkmzr_o.d.ts +72 -0
- package/dist/forms/index.d.mts +59 -0
- package/dist/forms/index.d.ts +59 -0
- package/dist/forms/index.js +446 -0
- package/dist/forms/index.js.map +1 -0
- package/dist/forms/index.mjs +442 -0
- package/dist/forms/index.mjs.map +1 -0
- package/dist/i18n/index.d.mts +37 -0
- package/dist/i18n/index.d.ts +37 -0
- package/dist/i18n/index.js +147 -0
- package/dist/i18n/index.js.map +1 -0
- package/dist/i18n/index.mjs +145 -0
- package/dist/i18n/index.mjs.map +1 -0
- package/dist/idempotency.service-_6LqhivP.d.mts +372 -0
- package/dist/idempotency.service-eOKoISRD.d.ts +372 -0
- package/dist/index-B_ksKpS1.d.mts +202 -0
- package/dist/index-CqDKWTUP.d.mts +28 -0
- package/dist/index-CqDKWTUP.d.ts +28 -0
- package/dist/index-DFqEoX_l.d.ts +202 -0
- package/dist/index-Dz0gOur2.d.mts +36 -0
- package/dist/index-Dz0gOur2.d.ts +36 -0
- package/dist/index.d.mts +1336 -0
- package/dist/index.d.ts +1336 -0
- package/dist/index.js +19464 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +19155 -0
- package/dist/index.mjs.map +1 -0
- package/dist/india/index.d.mts +75 -0
- package/dist/india/index.d.ts +75 -0
- package/dist/india/index.js +325 -0
- package/dist/india/index.js.map +1 -0
- package/dist/india/index.mjs +303 -0
- package/dist/india/index.mjs.map +1 -0
- package/dist/joop-Bx7Iwj5p.d.mts +155 -0
- package/dist/joop-CA3DMeOO.d.ts +155 -0
- package/dist/native-bridge/index.d.mts +27 -0
- package/dist/native-bridge/index.d.ts +27 -0
- package/dist/native-bridge/index.js +98 -0
- package/dist/native-bridge/index.js.map +1 -0
- package/dist/native-bridge/index.mjs +96 -0
- package/dist/native-bridge/index.mjs.map +1 -0
- package/dist/network/index.d.mts +85 -0
- package/dist/network/index.d.ts +85 -0
- package/dist/network/index.js +454 -0
- package/dist/network/index.js.map +1 -0
- package/dist/network/index.mjs +451 -0
- package/dist/network/index.mjs.map +1 -0
- package/dist/network-monitor-BIwPSXme.d.mts +179 -0
- package/dist/network-monitor-Bqp2hvZr.d.ts +179 -0
- package/dist/notification.service-Dm4fvfZf.d.mts +25 -0
- package/dist/notification.service-tEMKatWJ.d.ts +25 -0
- package/dist/observability/index.d.mts +179 -0
- package/dist/observability/index.d.ts +179 -0
- package/dist/observability/index.js +559 -0
- package/dist/observability/index.js.map +1 -0
- package/dist/observability/index.mjs +552 -0
- package/dist/observability/index.mjs.map +1 -0
- package/dist/oidc-client-DIJcClmB.d.mts +190 -0
- package/dist/oidc-client-DxhyE59t.d.ts +190 -0
- package/dist/platform/index.d.mts +73 -0
- package/dist/platform/index.d.ts +73 -0
- package/dist/platform/index.js +127 -0
- package/dist/platform/index.js.map +1 -0
- package/dist/platform/index.mjs +125 -0
- package/dist/platform/index.mjs.map +1 -0
- package/dist/pwa/index.d.mts +31 -0
- package/dist/pwa/index.d.ts +31 -0
- package/dist/pwa/index.js +247 -0
- package/dist/pwa/index.js.map +1 -0
- package/dist/pwa/index.mjs +244 -0
- package/dist/pwa/index.mjs.map +1 -0
- package/dist/react/index.d.mts +133 -0
- package/dist/react/index.d.ts +133 -0
- package/dist/react/index.js +632 -0
- package/dist/react/index.js.map +1 -0
- package/dist/react/index.mjs +630 -0
- package/dist/react/index.mjs.map +1 -0
- package/dist/router/index.d.mts +39 -0
- package/dist/router/index.d.ts +39 -0
- package/dist/router/index.js +168 -0
- package/dist/router/index.js.map +1 -0
- package/dist/router/index.mjs +166 -0
- package/dist/router/index.mjs.map +1 -0
- package/dist/security/index.d.mts +206 -0
- package/dist/security/index.d.ts +206 -0
- package/dist/security/index.js +1297 -0
- package/dist/security/index.js.map +1 -0
- package/dist/security/index.mjs +1285 -0
- package/dist/security/index.mjs.map +1 -0
- package/dist/session/index.d.mts +115 -0
- package/dist/session/index.d.ts +115 -0
- package/dist/session/index.js +297 -0
- package/dist/session/index.js.map +1 -0
- package/dist/session/index.mjs +292 -0
- package/dist/session/index.mjs.map +1 -0
- package/dist/state/index.d.mts +43 -0
- package/dist/state/index.d.ts +43 -0
- package/dist/state/index.js +156 -0
- package/dist/state/index.js.map +1 -0
- package/dist/state/index.mjs +152 -0
- package/dist/state/index.mjs.map +1 -0
- package/dist/statement-parser-BHQtXwCM.d.ts +260 -0
- package/dist/statement-parser-C2qNmb49.d.mts +260 -0
- package/dist/storage/index.d.mts +40 -0
- package/dist/storage/index.d.ts +40 -0
- package/dist/storage/index.js +256 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/storage/index.mjs +252 -0
- package/dist/storage/index.mjs.map +1 -0
- package/dist/sync/index.d.mts +69 -0
- package/dist/sync/index.d.ts +69 -0
- package/dist/sync/index.js +330 -0
- package/dist/sync/index.js.map +1 -0
- package/dist/sync/index.mjs +323 -0
- package/dist/sync/index.mjs.map +1 -0
- package/dist/sync-engine-DCIMRG5s.d.ts +61 -0
- package/dist/sync-engine-DZqyKHkK.d.mts +61 -0
- package/dist/theme/index.d.mts +53 -0
- package/dist/theme/index.d.ts +53 -0
- package/dist/theme/index.js +169 -0
- package/dist/theme/index.js.map +1 -0
- package/dist/theme/index.mjs +167 -0
- package/dist/theme/index.mjs.map +1 -0
- package/dist/ui/index.d.mts +66 -0
- package/dist/ui/index.d.ts +66 -0
- package/dist/ui/index.js +811 -0
- package/dist/ui/index.js.map +1 -0
- package/dist/ui/index.mjs +803 -0
- package/dist/ui/index.mjs.map +1 -0
- package/dist/utilities/index.d.mts +199 -0
- package/dist/utilities/index.d.ts +199 -0
- package/dist/utilities/index.js +1991 -0
- package/dist/utilities/index.js.map +1 -0
- package/dist/utilities/index.mjs +1923 -0
- package/dist/utilities/index.mjs.map +1 -0
- package/dist/validation/index.d.mts +60 -0
- package/dist/validation/index.d.ts +60 -0
- package/dist/validation/index.js +460 -0
- package/dist/validation/index.js.map +1 -0
- package/dist/validation/index.mjs +455 -0
- package/dist/validation/index.mjs.map +1 -0
- package/dist/vue/index.d.mts +135 -0
- package/dist/vue/index.d.ts +135 -0
- package/dist/vue/index.js +621 -0
- package/dist/vue/index.js.map +1 -0
- package/dist/vue/index.mjs +619 -0
- package/dist/vue/index.mjs.map +1 -0
- package/dist/watermark.service-Detur5tq.d.ts +235 -0
- package/dist/watermark.service-QNegMeQZ.d.mts +235 -0
- package/dist/workers/index.d.mts +42 -0
- package/dist/workers/index.d.ts +42 -0
- package/dist/workers/index.js +359 -0
- package/dist/workers/index.js.map +1 -0
- package/dist/workers/index.mjs +356 -0
- package/dist/workers/index.mjs.map +1 -0
- package/dist/workflow/index.d.mts +99 -0
- package/dist/workflow/index.d.ts +99 -0
- package/dist/workflow/index.js +282 -0
- package/dist/workflow/index.js.map +1 -0
- package/dist/workflow/index.mjs +279 -0
- package/dist/workflow/index.mjs.map +1 -0
- package/package.json +226 -0
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import { J as JoopObservable } from './index-Dz0gOur2.mjs';
|
|
2
|
+
|
|
3
|
+
interface JoopLoaderConfig {
|
|
4
|
+
delayMs?: number;
|
|
5
|
+
}
|
|
6
|
+
declare class JoopLoaderService {
|
|
7
|
+
private _count;
|
|
8
|
+
private _loading$;
|
|
9
|
+
private _delayTimer;
|
|
10
|
+
private _cfg;
|
|
11
|
+
constructor(config?: JoopLoaderConfig);
|
|
12
|
+
/** Increment loader counter — shows loader when count goes 0 → 1 */
|
|
13
|
+
show(): void;
|
|
14
|
+
/** Decrement loader counter — hides loader when count reaches 0 */
|
|
15
|
+
hide(): void;
|
|
16
|
+
/** Force-show regardless of count */
|
|
17
|
+
forceShow(): void;
|
|
18
|
+
/** Force-hide and reset counter */
|
|
19
|
+
reset(): void;
|
|
20
|
+
isLoading(): boolean;
|
|
21
|
+
isLoading$(): JoopObservable<boolean>;
|
|
22
|
+
get pendingCount(): number;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
type JoopAlertType = 'success' | 'error' | 'warning' | 'info';
|
|
26
|
+
interface JoopToastOptions {
|
|
27
|
+
type?: JoopAlertType;
|
|
28
|
+
duration?: number;
|
|
29
|
+
position?: 'top' | 'bottom' | 'top-right' | 'bottom-right';
|
|
30
|
+
closeable?: boolean;
|
|
31
|
+
}
|
|
32
|
+
interface JoopDialogButton {
|
|
33
|
+
label: string;
|
|
34
|
+
action: string;
|
|
35
|
+
style?: 'primary' | 'secondary' | 'danger';
|
|
36
|
+
}
|
|
37
|
+
interface JoopDialogOptions {
|
|
38
|
+
title?: string;
|
|
39
|
+
message: string;
|
|
40
|
+
type?: JoopAlertType;
|
|
41
|
+
buttons?: JoopDialogButton[];
|
|
42
|
+
closeable?: boolean;
|
|
43
|
+
htmlContent?: boolean;
|
|
44
|
+
}
|
|
45
|
+
interface JoopInlineAlert {
|
|
46
|
+
message: string;
|
|
47
|
+
type: JoopAlertType;
|
|
48
|
+
closeable?: boolean;
|
|
49
|
+
}
|
|
50
|
+
declare class JoopAlertService {
|
|
51
|
+
private _inline$;
|
|
52
|
+
private _open$;
|
|
53
|
+
inline$(): JoopObservable<JoopInlineAlert | null>;
|
|
54
|
+
open$(): JoopObservable<string>;
|
|
55
|
+
showInline(data: JoopInlineAlert): void;
|
|
56
|
+
hideInline(): void;
|
|
57
|
+
toast(message: string, options?: JoopToastOptions): void;
|
|
58
|
+
dialog(options: JoopDialogOptions): Promise<string>;
|
|
59
|
+
dismiss(): void;
|
|
60
|
+
private _getToastContainer;
|
|
61
|
+
private _removeToast;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
interface JoopPageState {
|
|
65
|
+
page: number;
|
|
66
|
+
pageSize: number;
|
|
67
|
+
total: number;
|
|
68
|
+
totalPages: number;
|
|
69
|
+
hasPrev: boolean;
|
|
70
|
+
hasNext: boolean;
|
|
71
|
+
from: number;
|
|
72
|
+
to: number;
|
|
73
|
+
}
|
|
74
|
+
declare class JoopPaginationService {
|
|
75
|
+
private _state$;
|
|
76
|
+
private _compute;
|
|
77
|
+
private _update;
|
|
78
|
+
setTotal(total: number): void;
|
|
79
|
+
setPage(page: number): void;
|
|
80
|
+
setPageSize(size: number): void;
|
|
81
|
+
nextPage(): void;
|
|
82
|
+
prevPage(): void;
|
|
83
|
+
firstPage(): void;
|
|
84
|
+
lastPage(): void;
|
|
85
|
+
getState(): JoopPageState;
|
|
86
|
+
state$(): JoopObservable<JoopPageState>;
|
|
87
|
+
/** Returns page numbers for pagination UI — with ellipsis as -1 */
|
|
88
|
+
getPages(maxVisible?: number): number[];
|
|
89
|
+
reset(): void;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
interface JoopPrintOptions {
|
|
93
|
+
styles?: string;
|
|
94
|
+
title?: string;
|
|
95
|
+
bodyClass?: string;
|
|
96
|
+
}
|
|
97
|
+
declare class JoopPrintService {
|
|
98
|
+
/** Print the current page */
|
|
99
|
+
print(): void;
|
|
100
|
+
/** Print a specific element by ID or reference */
|
|
101
|
+
printElement(elementOrId: HTMLElement | string, options?: JoopPrintOptions): void;
|
|
102
|
+
/** Open a new window with custom HTML and print it */
|
|
103
|
+
printHtml(html: string, options?: JoopPrintOptions): void;
|
|
104
|
+
/** Print a plain-text receipt in a monospace layout */
|
|
105
|
+
printReceipt(lines: string[], options?: JoopPrintOptions): void;
|
|
106
|
+
/** Build a receipt-style text block for printing */
|
|
107
|
+
buildReceiptText(title: string, rows: Array<[label: string, value: string]>, width?: number): string[];
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
type JoopAriaLivePoliteness = 'assertive' | 'polite' | 'off';
|
|
111
|
+
interface JoopFocusTrapOptions {
|
|
112
|
+
initialFocus?: string;
|
|
113
|
+
returnFocusOnDeactivate?: boolean;
|
|
114
|
+
}
|
|
115
|
+
declare class JoopA11yService {
|
|
116
|
+
private _liveRegions;
|
|
117
|
+
private _trapStack;
|
|
118
|
+
private _skipLink;
|
|
119
|
+
private _focusHandlers;
|
|
120
|
+
private _focusListener;
|
|
121
|
+
announce(message: string, politeness?: JoopAriaLivePoliteness): void;
|
|
122
|
+
private _getOrCreateLiveRegion;
|
|
123
|
+
clearAnnouncements(): void;
|
|
124
|
+
trapFocus(container: HTMLElement, opts?: JoopFocusTrapOptions): () => void;
|
|
125
|
+
releaseFocus(): void;
|
|
126
|
+
releaseAllTraps(): void;
|
|
127
|
+
createSkipLink(targetId: string, label?: string): HTMLElement;
|
|
128
|
+
removeSkipLink(): void;
|
|
129
|
+
/** Start tracking focus changes */
|
|
130
|
+
trackFocus(): () => void;
|
|
131
|
+
onFocusChange(handler: (el: Element) => void): () => void;
|
|
132
|
+
/** Set visible page title + meta description */
|
|
133
|
+
setPageTitle(title: string, suffix?: string): void;
|
|
134
|
+
/** Make an element visually hidden but accessible */
|
|
135
|
+
visuallyHide(el: HTMLElement): void;
|
|
136
|
+
/** Get all focusable elements within a container */
|
|
137
|
+
getFocusable(container?: HTMLElement): HTMLElement[];
|
|
138
|
+
/** Check whether an element is visible and not hidden from accessibility */
|
|
139
|
+
isAccessible(el: HTMLElement): boolean;
|
|
140
|
+
destroy(): void;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
export { JoopLoaderService as J, JoopAlertService as a, JoopPaginationService as b, JoopPrintService as c, JoopA11yService as d, type JoopAlertType as e, type JoopAriaLivePoliteness as f, type JoopDialogButton as g, type JoopDialogOptions as h, type JoopFocusTrapOptions as i, type JoopInlineAlert as j, type JoopLoaderConfig as k, type JoopPageState as l, type JoopToastOptions as m, type JoopPrintOptions as n };
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import { J as JoopObservable } from './index-Dz0gOur2.js';
|
|
2
|
+
|
|
3
|
+
interface JoopLoaderConfig {
|
|
4
|
+
delayMs?: number;
|
|
5
|
+
}
|
|
6
|
+
declare class JoopLoaderService {
|
|
7
|
+
private _count;
|
|
8
|
+
private _loading$;
|
|
9
|
+
private _delayTimer;
|
|
10
|
+
private _cfg;
|
|
11
|
+
constructor(config?: JoopLoaderConfig);
|
|
12
|
+
/** Increment loader counter — shows loader when count goes 0 → 1 */
|
|
13
|
+
show(): void;
|
|
14
|
+
/** Decrement loader counter — hides loader when count reaches 0 */
|
|
15
|
+
hide(): void;
|
|
16
|
+
/** Force-show regardless of count */
|
|
17
|
+
forceShow(): void;
|
|
18
|
+
/** Force-hide and reset counter */
|
|
19
|
+
reset(): void;
|
|
20
|
+
isLoading(): boolean;
|
|
21
|
+
isLoading$(): JoopObservable<boolean>;
|
|
22
|
+
get pendingCount(): number;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
type JoopAlertType = 'success' | 'error' | 'warning' | 'info';
|
|
26
|
+
interface JoopToastOptions {
|
|
27
|
+
type?: JoopAlertType;
|
|
28
|
+
duration?: number;
|
|
29
|
+
position?: 'top' | 'bottom' | 'top-right' | 'bottom-right';
|
|
30
|
+
closeable?: boolean;
|
|
31
|
+
}
|
|
32
|
+
interface JoopDialogButton {
|
|
33
|
+
label: string;
|
|
34
|
+
action: string;
|
|
35
|
+
style?: 'primary' | 'secondary' | 'danger';
|
|
36
|
+
}
|
|
37
|
+
interface JoopDialogOptions {
|
|
38
|
+
title?: string;
|
|
39
|
+
message: string;
|
|
40
|
+
type?: JoopAlertType;
|
|
41
|
+
buttons?: JoopDialogButton[];
|
|
42
|
+
closeable?: boolean;
|
|
43
|
+
htmlContent?: boolean;
|
|
44
|
+
}
|
|
45
|
+
interface JoopInlineAlert {
|
|
46
|
+
message: string;
|
|
47
|
+
type: JoopAlertType;
|
|
48
|
+
closeable?: boolean;
|
|
49
|
+
}
|
|
50
|
+
declare class JoopAlertService {
|
|
51
|
+
private _inline$;
|
|
52
|
+
private _open$;
|
|
53
|
+
inline$(): JoopObservable<JoopInlineAlert | null>;
|
|
54
|
+
open$(): JoopObservable<string>;
|
|
55
|
+
showInline(data: JoopInlineAlert): void;
|
|
56
|
+
hideInline(): void;
|
|
57
|
+
toast(message: string, options?: JoopToastOptions): void;
|
|
58
|
+
dialog(options: JoopDialogOptions): Promise<string>;
|
|
59
|
+
dismiss(): void;
|
|
60
|
+
private _getToastContainer;
|
|
61
|
+
private _removeToast;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
interface JoopPageState {
|
|
65
|
+
page: number;
|
|
66
|
+
pageSize: number;
|
|
67
|
+
total: number;
|
|
68
|
+
totalPages: number;
|
|
69
|
+
hasPrev: boolean;
|
|
70
|
+
hasNext: boolean;
|
|
71
|
+
from: number;
|
|
72
|
+
to: number;
|
|
73
|
+
}
|
|
74
|
+
declare class JoopPaginationService {
|
|
75
|
+
private _state$;
|
|
76
|
+
private _compute;
|
|
77
|
+
private _update;
|
|
78
|
+
setTotal(total: number): void;
|
|
79
|
+
setPage(page: number): void;
|
|
80
|
+
setPageSize(size: number): void;
|
|
81
|
+
nextPage(): void;
|
|
82
|
+
prevPage(): void;
|
|
83
|
+
firstPage(): void;
|
|
84
|
+
lastPage(): void;
|
|
85
|
+
getState(): JoopPageState;
|
|
86
|
+
state$(): JoopObservable<JoopPageState>;
|
|
87
|
+
/** Returns page numbers for pagination UI — with ellipsis as -1 */
|
|
88
|
+
getPages(maxVisible?: number): number[];
|
|
89
|
+
reset(): void;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
interface JoopPrintOptions {
|
|
93
|
+
styles?: string;
|
|
94
|
+
title?: string;
|
|
95
|
+
bodyClass?: string;
|
|
96
|
+
}
|
|
97
|
+
declare class JoopPrintService {
|
|
98
|
+
/** Print the current page */
|
|
99
|
+
print(): void;
|
|
100
|
+
/** Print a specific element by ID or reference */
|
|
101
|
+
printElement(elementOrId: HTMLElement | string, options?: JoopPrintOptions): void;
|
|
102
|
+
/** Open a new window with custom HTML and print it */
|
|
103
|
+
printHtml(html: string, options?: JoopPrintOptions): void;
|
|
104
|
+
/** Print a plain-text receipt in a monospace layout */
|
|
105
|
+
printReceipt(lines: string[], options?: JoopPrintOptions): void;
|
|
106
|
+
/** Build a receipt-style text block for printing */
|
|
107
|
+
buildReceiptText(title: string, rows: Array<[label: string, value: string]>, width?: number): string[];
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
type JoopAriaLivePoliteness = 'assertive' | 'polite' | 'off';
|
|
111
|
+
interface JoopFocusTrapOptions {
|
|
112
|
+
initialFocus?: string;
|
|
113
|
+
returnFocusOnDeactivate?: boolean;
|
|
114
|
+
}
|
|
115
|
+
declare class JoopA11yService {
|
|
116
|
+
private _liveRegions;
|
|
117
|
+
private _trapStack;
|
|
118
|
+
private _skipLink;
|
|
119
|
+
private _focusHandlers;
|
|
120
|
+
private _focusListener;
|
|
121
|
+
announce(message: string, politeness?: JoopAriaLivePoliteness): void;
|
|
122
|
+
private _getOrCreateLiveRegion;
|
|
123
|
+
clearAnnouncements(): void;
|
|
124
|
+
trapFocus(container: HTMLElement, opts?: JoopFocusTrapOptions): () => void;
|
|
125
|
+
releaseFocus(): void;
|
|
126
|
+
releaseAllTraps(): void;
|
|
127
|
+
createSkipLink(targetId: string, label?: string): HTMLElement;
|
|
128
|
+
removeSkipLink(): void;
|
|
129
|
+
/** Start tracking focus changes */
|
|
130
|
+
trackFocus(): () => void;
|
|
131
|
+
onFocusChange(handler: (el: Element) => void): () => void;
|
|
132
|
+
/** Set visible page title + meta description */
|
|
133
|
+
setPageTitle(title: string, suffix?: string): void;
|
|
134
|
+
/** Make an element visually hidden but accessible */
|
|
135
|
+
visuallyHide(el: HTMLElement): void;
|
|
136
|
+
/** Get all focusable elements within a container */
|
|
137
|
+
getFocusable(container?: HTMLElement): HTMLElement[];
|
|
138
|
+
/** Check whether an element is visible and not hidden from accessibility */
|
|
139
|
+
isAccessible(el: HTMLElement): boolean;
|
|
140
|
+
destroy(): void;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
export { JoopLoaderService as J, JoopAlertService as a, JoopPaginationService as b, JoopPrintService as c, JoopA11yService as d, type JoopAlertType as e, type JoopAriaLivePoliteness as f, type JoopDialogButton as g, type JoopDialogOptions as h, type JoopFocusTrapOptions as i, type JoopInlineAlert as j, type JoopLoaderConfig as k, type JoopPageState as l, type JoopToastOptions as m, type JoopPrintOptions as n };
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
interface JoopStorageAdapter {
|
|
2
|
+
getItem(key: string): string | null;
|
|
3
|
+
setItem(key: string, value: string): void;
|
|
4
|
+
removeItem(key: string): void;
|
|
5
|
+
clear?(): void;
|
|
6
|
+
}
|
|
7
|
+
type JoopCompressionFormat = 'gzip' | 'deflate' | 'deflate-raw';
|
|
8
|
+
interface JoopCompressionAdapter {
|
|
9
|
+
compress(data: Uint8Array, format: JoopCompressionFormat): Promise<Uint8Array>;
|
|
10
|
+
decompress(data: Uint8Array, format: JoopCompressionFormat): Promise<Uint8Array>;
|
|
11
|
+
}
|
|
12
|
+
interface JoopWorkerAdapter {
|
|
13
|
+
run<T = unknown, R = unknown>(fn: (arg: T) => R, arg: T, timeoutMs?: number): Promise<R>;
|
|
14
|
+
terminate?(): void;
|
|
15
|
+
}
|
|
16
|
+
interface JoopCryptoAdapter {
|
|
17
|
+
readonly subtle: SubtleCrypto;
|
|
18
|
+
getRandomValues<T extends ArrayBufferView>(array: T): T;
|
|
19
|
+
}
|
|
20
|
+
/** Secure key-value store backed by Keychain (iOS) or Keystore (Android) */
|
|
21
|
+
interface JoopKeyVaultAdapter {
|
|
22
|
+
get(key: string): Promise<string | null>;
|
|
23
|
+
set(key: string, value: string): Promise<void>;
|
|
24
|
+
remove(key: string): Promise<void>;
|
|
25
|
+
clear(): Promise<void>;
|
|
26
|
+
}
|
|
27
|
+
/** Biometric authentication bridge (TouchID / FaceID / Fingerprint) */
|
|
28
|
+
interface JoopBiometricAdapter {
|
|
29
|
+
isAvailable(): Promise<boolean>;
|
|
30
|
+
authenticate(reason?: string): Promise<boolean>;
|
|
31
|
+
}
|
|
32
|
+
/** Push notification payload — shared by web and native adapters */
|
|
33
|
+
interface JoopPushPayload {
|
|
34
|
+
title?: string;
|
|
35
|
+
body?: string;
|
|
36
|
+
data?: Record<string, unknown>;
|
|
37
|
+
badge?: number;
|
|
38
|
+
sound?: string;
|
|
39
|
+
tag?: string;
|
|
40
|
+
icon?: string;
|
|
41
|
+
clickAction?: string;
|
|
42
|
+
}
|
|
43
|
+
/** Push notification bridge (FCM / APNs) */
|
|
44
|
+
interface JoopPushAdapter {
|
|
45
|
+
requestPermission(): Promise<'granted' | 'denied' | 'default'>;
|
|
46
|
+
getToken(serverKey?: string): Promise<string | null>;
|
|
47
|
+
onMessage(handler: (payload: JoopPushPayload) => void): () => void;
|
|
48
|
+
setBadgeCount?(count: number): Promise<void>;
|
|
49
|
+
}
|
|
50
|
+
type JoopAppState = 'active' | 'background' | 'inactive' | 'unknown';
|
|
51
|
+
/** App lifecycle bridge (RN AppState) */
|
|
52
|
+
interface JoopLifecycleAdapter {
|
|
53
|
+
getState(): JoopAppState;
|
|
54
|
+
onChange(handler: (state: JoopAppState) => void): () => void;
|
|
55
|
+
}
|
|
56
|
+
type JoopNetworkType = 'wifi' | 'cellular' | 'ethernet' | 'offline' | 'unknown';
|
|
57
|
+
type JoopEffectiveType = 'slow-2g' | '2g' | '3g' | '4g';
|
|
58
|
+
interface JoopNetworkState {
|
|
59
|
+
online: boolean;
|
|
60
|
+
type: JoopNetworkType;
|
|
61
|
+
effectiveType?: JoopEffectiveType;
|
|
62
|
+
downlink?: number;
|
|
63
|
+
rtt?: number;
|
|
64
|
+
saveData?: boolean;
|
|
65
|
+
metered?: boolean;
|
|
66
|
+
}
|
|
67
|
+
/** Network connectivity bridge (RN NetInfo) */
|
|
68
|
+
interface JoopNetworkAdapter {
|
|
69
|
+
getState(): JoopNetworkState;
|
|
70
|
+
onChange(handler: (state: JoopNetworkState) => void): () => void;
|
|
71
|
+
}
|
|
72
|
+
interface JoopPlatformAdapterConfig {
|
|
73
|
+
storage?: JoopStorageAdapter;
|
|
74
|
+
compression?: JoopCompressionAdapter;
|
|
75
|
+
worker?: JoopWorkerAdapter;
|
|
76
|
+
crypto?: JoopCryptoAdapter;
|
|
77
|
+
keyVault?: JoopKeyVaultAdapter;
|
|
78
|
+
biometric?: JoopBiometricAdapter;
|
|
79
|
+
push?: JoopPushAdapter;
|
|
80
|
+
lifecycle?: JoopLifecycleAdapter;
|
|
81
|
+
network?: JoopNetworkAdapter;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
export type { JoopAppState as J, JoopNetworkState as a, JoopNetworkType as b, JoopEffectiveType as c, JoopStorageAdapter as d, JoopKeyVaultAdapter as e, JoopBiometricAdapter as f, JoopPushAdapter as g, JoopPushPayload as h, JoopLifecycleAdapter as i, JoopNetworkAdapter as j, JoopCompressionAdapter as k, JoopCompressionFormat as l, JoopCryptoAdapter as m, JoopPlatformAdapterConfig as n, JoopWorkerAdapter as o };
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
interface JoopStorageAdapter {
|
|
2
|
+
getItem(key: string): string | null;
|
|
3
|
+
setItem(key: string, value: string): void;
|
|
4
|
+
removeItem(key: string): void;
|
|
5
|
+
clear?(): void;
|
|
6
|
+
}
|
|
7
|
+
type JoopCompressionFormat = 'gzip' | 'deflate' | 'deflate-raw';
|
|
8
|
+
interface JoopCompressionAdapter {
|
|
9
|
+
compress(data: Uint8Array, format: JoopCompressionFormat): Promise<Uint8Array>;
|
|
10
|
+
decompress(data: Uint8Array, format: JoopCompressionFormat): Promise<Uint8Array>;
|
|
11
|
+
}
|
|
12
|
+
interface JoopWorkerAdapter {
|
|
13
|
+
run<T = unknown, R = unknown>(fn: (arg: T) => R, arg: T, timeoutMs?: number): Promise<R>;
|
|
14
|
+
terminate?(): void;
|
|
15
|
+
}
|
|
16
|
+
interface JoopCryptoAdapter {
|
|
17
|
+
readonly subtle: SubtleCrypto;
|
|
18
|
+
getRandomValues<T extends ArrayBufferView>(array: T): T;
|
|
19
|
+
}
|
|
20
|
+
/** Secure key-value store backed by Keychain (iOS) or Keystore (Android) */
|
|
21
|
+
interface JoopKeyVaultAdapter {
|
|
22
|
+
get(key: string): Promise<string | null>;
|
|
23
|
+
set(key: string, value: string): Promise<void>;
|
|
24
|
+
remove(key: string): Promise<void>;
|
|
25
|
+
clear(): Promise<void>;
|
|
26
|
+
}
|
|
27
|
+
/** Biometric authentication bridge (TouchID / FaceID / Fingerprint) */
|
|
28
|
+
interface JoopBiometricAdapter {
|
|
29
|
+
isAvailable(): Promise<boolean>;
|
|
30
|
+
authenticate(reason?: string): Promise<boolean>;
|
|
31
|
+
}
|
|
32
|
+
/** Push notification payload — shared by web and native adapters */
|
|
33
|
+
interface JoopPushPayload {
|
|
34
|
+
title?: string;
|
|
35
|
+
body?: string;
|
|
36
|
+
data?: Record<string, unknown>;
|
|
37
|
+
badge?: number;
|
|
38
|
+
sound?: string;
|
|
39
|
+
tag?: string;
|
|
40
|
+
icon?: string;
|
|
41
|
+
clickAction?: string;
|
|
42
|
+
}
|
|
43
|
+
/** Push notification bridge (FCM / APNs) */
|
|
44
|
+
interface JoopPushAdapter {
|
|
45
|
+
requestPermission(): Promise<'granted' | 'denied' | 'default'>;
|
|
46
|
+
getToken(serverKey?: string): Promise<string | null>;
|
|
47
|
+
onMessage(handler: (payload: JoopPushPayload) => void): () => void;
|
|
48
|
+
setBadgeCount?(count: number): Promise<void>;
|
|
49
|
+
}
|
|
50
|
+
type JoopAppState = 'active' | 'background' | 'inactive' | 'unknown';
|
|
51
|
+
/** App lifecycle bridge (RN AppState) */
|
|
52
|
+
interface JoopLifecycleAdapter {
|
|
53
|
+
getState(): JoopAppState;
|
|
54
|
+
onChange(handler: (state: JoopAppState) => void): () => void;
|
|
55
|
+
}
|
|
56
|
+
type JoopNetworkType = 'wifi' | 'cellular' | 'ethernet' | 'offline' | 'unknown';
|
|
57
|
+
type JoopEffectiveType = 'slow-2g' | '2g' | '3g' | '4g';
|
|
58
|
+
interface JoopNetworkState {
|
|
59
|
+
online: boolean;
|
|
60
|
+
type: JoopNetworkType;
|
|
61
|
+
effectiveType?: JoopEffectiveType;
|
|
62
|
+
downlink?: number;
|
|
63
|
+
rtt?: number;
|
|
64
|
+
saveData?: boolean;
|
|
65
|
+
metered?: boolean;
|
|
66
|
+
}
|
|
67
|
+
/** Network connectivity bridge (RN NetInfo) */
|
|
68
|
+
interface JoopNetworkAdapter {
|
|
69
|
+
getState(): JoopNetworkState;
|
|
70
|
+
onChange(handler: (state: JoopNetworkState) => void): () => void;
|
|
71
|
+
}
|
|
72
|
+
interface JoopPlatformAdapterConfig {
|
|
73
|
+
storage?: JoopStorageAdapter;
|
|
74
|
+
compression?: JoopCompressionAdapter;
|
|
75
|
+
worker?: JoopWorkerAdapter;
|
|
76
|
+
crypto?: JoopCryptoAdapter;
|
|
77
|
+
keyVault?: JoopKeyVaultAdapter;
|
|
78
|
+
biometric?: JoopBiometricAdapter;
|
|
79
|
+
push?: JoopPushAdapter;
|
|
80
|
+
lifecycle?: JoopLifecycleAdapter;
|
|
81
|
+
network?: JoopNetworkAdapter;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
export type { JoopAppState as J, JoopNetworkState as a, JoopNetworkType as b, JoopEffectiveType as c, JoopStorageAdapter as d, JoopKeyVaultAdapter as e, JoopBiometricAdapter as f, JoopPushAdapter as g, JoopPushPayload as h, JoopLifecycleAdapter as i, JoopNetworkAdapter as j, JoopCompressionAdapter as k, JoopCompressionFormat as l, JoopCryptoAdapter as m, JoopPlatformAdapterConfig as n, JoopWorkerAdapter as o };
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AES-GCM symmetric encryption / decryption.
|
|
3
|
+
* Relies on the WebCrypto API (available in all modern browsers and Node 16+).
|
|
4
|
+
*/
|
|
5
|
+
declare class JoopGcmService {
|
|
6
|
+
encrypt(data: string, aesKey: string): Promise<string>;
|
|
7
|
+
decrypt(hexData: string, aesKey: string): Promise<string>;
|
|
8
|
+
private _deriveIV;
|
|
9
|
+
private _pbkdf2;
|
|
10
|
+
private _keyToBuffer;
|
|
11
|
+
private _hexToUint8;
|
|
12
|
+
/** Copy Uint8Array into a fresh ArrayBuffer to satisfy TS5.3+ BufferSource constraints. */
|
|
13
|
+
private _toSafeUint8Array;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
interface JoopRequestOptions {
|
|
17
|
+
useLoader?: boolean;
|
|
18
|
+
errorRedirect?: boolean;
|
|
19
|
+
disableErrorPopup?: boolean;
|
|
20
|
+
showAlertOnError?: boolean;
|
|
21
|
+
method?: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';
|
|
22
|
+
headers?: Record<string, string>;
|
|
23
|
+
formData?: Record<string, any>;
|
|
24
|
+
files?: File[];
|
|
25
|
+
onUploadProgress?: (percent: number) => void;
|
|
26
|
+
}
|
|
27
|
+
interface JoopHttpOptions {
|
|
28
|
+
method: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';
|
|
29
|
+
url: string;
|
|
30
|
+
body?: any;
|
|
31
|
+
headers?: Record<string, string>;
|
|
32
|
+
signal?: AbortSignal;
|
|
33
|
+
timeout?: number;
|
|
34
|
+
}
|
|
35
|
+
interface JoopRsaKeyPair {
|
|
36
|
+
modulus: string;
|
|
37
|
+
exponent: string;
|
|
38
|
+
randomNumber?: string;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* RSA-OAEP-256 encryption using the WebCrypto API.
|
|
43
|
+
* Encrypts plaintext with a server-supplied public key (hex modulus + exponent).
|
|
44
|
+
*/
|
|
45
|
+
declare class JoopRsaService {
|
|
46
|
+
encrypt(data: string, keys: JoopRsaKeyPair): Promise<string>;
|
|
47
|
+
private _hexToBase64;
|
|
48
|
+
private _b64ToB64Url;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* AES end-to-end encryption orchestrator.
|
|
53
|
+
*
|
|
54
|
+
* Supports two modes:
|
|
55
|
+
* - Session mode (e2eRsaStatus = '1'): one AES key per session
|
|
56
|
+
* - Request mode (e2eRsaStatus = '0'): new AES key per request
|
|
57
|
+
*/
|
|
58
|
+
declare class JoopAesService {
|
|
59
|
+
private readonly _gcm;
|
|
60
|
+
private readonly _rsa;
|
|
61
|
+
private _e2eRsaStatus;
|
|
62
|
+
private _e2eStatus;
|
|
63
|
+
private _modulus;
|
|
64
|
+
private _exponent;
|
|
65
|
+
private _random;
|
|
66
|
+
private _genKey;
|
|
67
|
+
private _genKeyHex;
|
|
68
|
+
constructor(_gcm: JoopGcmService, _rsa: JoopRsaService);
|
|
69
|
+
get e2eRsaStatus(): string;
|
|
70
|
+
set e2eRsaStatus(v: string);
|
|
71
|
+
get e2eStatus(): string;
|
|
72
|
+
set e2eStatus(v: string);
|
|
73
|
+
get modulus(): string;
|
|
74
|
+
set modulus(v: string);
|
|
75
|
+
get exponent(): string;
|
|
76
|
+
set exponent(v: string);
|
|
77
|
+
get random(): string;
|
|
78
|
+
set random(v: string);
|
|
79
|
+
get genKey(): string;
|
|
80
|
+
set genKey(v: string);
|
|
81
|
+
/** Returns true when E2E encryption is active (not on the initial request). */
|
|
82
|
+
isE2EEnabled(isInitialRequest: boolean): boolean;
|
|
83
|
+
/**
|
|
84
|
+
* Encrypt serialised request data.
|
|
85
|
+
* Returns an object with `encryptedText` (and optionally `pageToken` already embedded in data).
|
|
86
|
+
*/
|
|
87
|
+
processEncryption(serializedData: string, pageToken: string): Promise<Record<string, string>>;
|
|
88
|
+
/** Decrypt an encrypted response payload. */
|
|
89
|
+
decryptResponse(encryptedData: string): Promise<string>;
|
|
90
|
+
clearKeys(): void;
|
|
91
|
+
private _generateKey;
|
|
92
|
+
private _encryptAesKey;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
export { JoopGcmService as J, JoopRsaService as a, JoopAesService as b, type JoopRequestOptions as c, type JoopHttpOptions as d };
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AES-GCM symmetric encryption / decryption.
|
|
3
|
+
* Relies on the WebCrypto API (available in all modern browsers and Node 16+).
|
|
4
|
+
*/
|
|
5
|
+
declare class JoopGcmService {
|
|
6
|
+
encrypt(data: string, aesKey: string): Promise<string>;
|
|
7
|
+
decrypt(hexData: string, aesKey: string): Promise<string>;
|
|
8
|
+
private _deriveIV;
|
|
9
|
+
private _pbkdf2;
|
|
10
|
+
private _keyToBuffer;
|
|
11
|
+
private _hexToUint8;
|
|
12
|
+
/** Copy Uint8Array into a fresh ArrayBuffer to satisfy TS5.3+ BufferSource constraints. */
|
|
13
|
+
private _toSafeUint8Array;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
interface JoopRequestOptions {
|
|
17
|
+
useLoader?: boolean;
|
|
18
|
+
errorRedirect?: boolean;
|
|
19
|
+
disableErrorPopup?: boolean;
|
|
20
|
+
showAlertOnError?: boolean;
|
|
21
|
+
method?: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';
|
|
22
|
+
headers?: Record<string, string>;
|
|
23
|
+
formData?: Record<string, any>;
|
|
24
|
+
files?: File[];
|
|
25
|
+
onUploadProgress?: (percent: number) => void;
|
|
26
|
+
}
|
|
27
|
+
interface JoopHttpOptions {
|
|
28
|
+
method: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';
|
|
29
|
+
url: string;
|
|
30
|
+
body?: any;
|
|
31
|
+
headers?: Record<string, string>;
|
|
32
|
+
signal?: AbortSignal;
|
|
33
|
+
timeout?: number;
|
|
34
|
+
}
|
|
35
|
+
interface JoopRsaKeyPair {
|
|
36
|
+
modulus: string;
|
|
37
|
+
exponent: string;
|
|
38
|
+
randomNumber?: string;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* RSA-OAEP-256 encryption using the WebCrypto API.
|
|
43
|
+
* Encrypts plaintext with a server-supplied public key (hex modulus + exponent).
|
|
44
|
+
*/
|
|
45
|
+
declare class JoopRsaService {
|
|
46
|
+
encrypt(data: string, keys: JoopRsaKeyPair): Promise<string>;
|
|
47
|
+
private _hexToBase64;
|
|
48
|
+
private _b64ToB64Url;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* AES end-to-end encryption orchestrator.
|
|
53
|
+
*
|
|
54
|
+
* Supports two modes:
|
|
55
|
+
* - Session mode (e2eRsaStatus = '1'): one AES key per session
|
|
56
|
+
* - Request mode (e2eRsaStatus = '0'): new AES key per request
|
|
57
|
+
*/
|
|
58
|
+
declare class JoopAesService {
|
|
59
|
+
private readonly _gcm;
|
|
60
|
+
private readonly _rsa;
|
|
61
|
+
private _e2eRsaStatus;
|
|
62
|
+
private _e2eStatus;
|
|
63
|
+
private _modulus;
|
|
64
|
+
private _exponent;
|
|
65
|
+
private _random;
|
|
66
|
+
private _genKey;
|
|
67
|
+
private _genKeyHex;
|
|
68
|
+
constructor(_gcm: JoopGcmService, _rsa: JoopRsaService);
|
|
69
|
+
get e2eRsaStatus(): string;
|
|
70
|
+
set e2eRsaStatus(v: string);
|
|
71
|
+
get e2eStatus(): string;
|
|
72
|
+
set e2eStatus(v: string);
|
|
73
|
+
get modulus(): string;
|
|
74
|
+
set modulus(v: string);
|
|
75
|
+
get exponent(): string;
|
|
76
|
+
set exponent(v: string);
|
|
77
|
+
get random(): string;
|
|
78
|
+
set random(v: string);
|
|
79
|
+
get genKey(): string;
|
|
80
|
+
set genKey(v: string);
|
|
81
|
+
/** Returns true when E2E encryption is active (not on the initial request). */
|
|
82
|
+
isE2EEnabled(isInitialRequest: boolean): boolean;
|
|
83
|
+
/**
|
|
84
|
+
* Encrypt serialised request data.
|
|
85
|
+
* Returns an object with `encryptedText` (and optionally `pageToken` already embedded in data).
|
|
86
|
+
*/
|
|
87
|
+
processEncryption(serializedData: string, pageToken: string): Promise<Record<string, string>>;
|
|
88
|
+
/** Decrypt an encrypted response payload. */
|
|
89
|
+
decryptResponse(encryptedData: string): Promise<string>;
|
|
90
|
+
clearKeys(): void;
|
|
91
|
+
private _generateKey;
|
|
92
|
+
private _encryptAesKey;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
export { JoopGcmService as J, JoopRsaService as a, JoopAesService as b, type JoopRequestOptions as c, type JoopHttpOptions as d };
|