@katlux/providers 0.1.1-alpha.128 → 0.1.1-alpha.130
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/dist/index.cjs +3395 -1457
- package/dist/index.d.cts +859 -238
- package/dist/index.d.mts +859 -238
- package/dist/index.d.ts +859 -238
- package/dist/index.mjs +3386 -1458
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -1,3 +1,66 @@
|
|
|
1
|
+
declare enum EDataFilterOperator {
|
|
2
|
+
Equal = "==",
|
|
3
|
+
NotEqual = "!=",
|
|
4
|
+
GreaterThan = ">",
|
|
5
|
+
LessThan = "<",
|
|
6
|
+
GreaterThanOrEqual = ">=",
|
|
7
|
+
LessThanOrEqual = "<=",
|
|
8
|
+
In = "in",
|
|
9
|
+
NotIn = "nin",
|
|
10
|
+
And = "and",
|
|
11
|
+
Or = "or",
|
|
12
|
+
Nand = "nand",
|
|
13
|
+
Nor = "nor"
|
|
14
|
+
}
|
|
15
|
+
interface IDataFilter {
|
|
16
|
+
operator: EDataFilterOperator;
|
|
17
|
+
field: TDataRow | IDataFilter | IDataFilter[];
|
|
18
|
+
active: boolean;
|
|
19
|
+
}
|
|
20
|
+
interface IDataSort {
|
|
21
|
+
field: string;
|
|
22
|
+
direction: 'asc' | 'desc';
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
declare enum ECacheStrategy {
|
|
26
|
+
Application = "Application",
|
|
27
|
+
ServerSession = "ServerSession",
|
|
28
|
+
BrowserSession = "BrowserSession",
|
|
29
|
+
Memory = "Memory",
|
|
30
|
+
LocalStorage = "LocalStorage",
|
|
31
|
+
IndexedDB = "IndexedDB",
|
|
32
|
+
Cookie = "Cookie"
|
|
33
|
+
}
|
|
34
|
+
interface ICacheEntry<T> {
|
|
35
|
+
data: T;
|
|
36
|
+
timestamp: number;
|
|
37
|
+
lifetime: number;
|
|
38
|
+
lastAccessed?: number;
|
|
39
|
+
accessCount?: number;
|
|
40
|
+
}
|
|
41
|
+
interface ICacheQuotaOptions {
|
|
42
|
+
maxEntries?: number;
|
|
43
|
+
maxSizeBytes?: number;
|
|
44
|
+
quotaThresholdRatio?: number;
|
|
45
|
+
fallbackToMemory?: boolean;
|
|
46
|
+
}
|
|
47
|
+
interface ICookieCacheOptions {
|
|
48
|
+
/** Default: 'lax'. */
|
|
49
|
+
sameSite?: 'strict' | 'lax' | 'none';
|
|
50
|
+
/**
|
|
51
|
+
* Adds the `Secure` flag. Default: auto-detected from the request protocol
|
|
52
|
+
* (https => true). Set explicitly to force it on or off.
|
|
53
|
+
*/
|
|
54
|
+
secure?: boolean;
|
|
55
|
+
/**
|
|
56
|
+
* Default: true. Only effective for cookies written on the server: browsers
|
|
57
|
+
* do not allow `document.cookie` to set HttpOnly, so client writes ignore it.
|
|
58
|
+
*/
|
|
59
|
+
httpOnly?: boolean;
|
|
60
|
+
/** Default: '/'. */
|
|
61
|
+
path?: string;
|
|
62
|
+
}
|
|
63
|
+
|
|
1
64
|
interface IEncryptedPayload {
|
|
2
65
|
__encrypted: true;
|
|
3
66
|
ciphertext: string;
|
|
@@ -25,6 +88,275 @@ interface IDecryptErrorInfo {
|
|
|
25
88
|
index?: number;
|
|
26
89
|
}
|
|
27
90
|
declare const DECRYPT_ERROR_SENTINEL: unique symbol;
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* Public and private key pair container for asymmetric / hybrid encryption providers (RSA, ECDH).
|
|
94
|
+
*/
|
|
95
|
+
interface IKeyPair {
|
|
96
|
+
publicKey: CryptoKey;
|
|
97
|
+
privateKey: CryptoKey;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Represents a key wrapped by a key-encrypting key (KEK) using AES-KW or asymmetric wrapping.
|
|
101
|
+
*/
|
|
102
|
+
interface IWrappedKey {
|
|
103
|
+
wrappedKey: string;
|
|
104
|
+
alg: string;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Options for Key Derivation Functions (PBKDF2 / HKDF) in CKeyManager and encryption providers.
|
|
108
|
+
*/
|
|
109
|
+
interface IKDFOptions {
|
|
110
|
+
kdf: 'pbkdf2' | 'hkdf';
|
|
111
|
+
salt?: Uint8Array | ArrayBuffer | string;
|
|
112
|
+
iterations?: number;
|
|
113
|
+
hash?: 'SHA-256' | 'SHA-512';
|
|
114
|
+
info?: string | Uint8Array | ArrayBuffer;
|
|
115
|
+
keyLength?: 128 | 256;
|
|
116
|
+
extractable?: boolean;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Options for deriving a key from an existing CryptoKey secret via HKDF.
|
|
120
|
+
*/
|
|
121
|
+
interface IHKDFFromSecretOptions {
|
|
122
|
+
salt?: Uint8Array | ArrayBuffer | string;
|
|
123
|
+
hash?: 'SHA-256' | 'SHA-512';
|
|
124
|
+
info?: string | Uint8Array | ArrayBuffer;
|
|
125
|
+
keyLength?: 128 | 256;
|
|
126
|
+
extractable?: boolean;
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Structured organization access grant for role-based key sharing.
|
|
130
|
+
*/
|
|
131
|
+
interface IAccessGrant {
|
|
132
|
+
grantId: string;
|
|
133
|
+
accountId: string;
|
|
134
|
+
granteeUserId: string;
|
|
135
|
+
granterUserId: string;
|
|
136
|
+
wrappedKey: string;
|
|
137
|
+
expiresAt?: number;
|
|
138
|
+
permissions?: string[];
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Digitally signed access grant container with granter key fingerprint.
|
|
142
|
+
*/
|
|
143
|
+
interface ISignedGrant {
|
|
144
|
+
grant: IAccessGrant;
|
|
145
|
+
signature: string;
|
|
146
|
+
fingerprint: string;
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Options for verifying access grant validity.
|
|
150
|
+
*/
|
|
151
|
+
interface IVerifyGrantOptions {
|
|
152
|
+
/** If true, checks whether grant.expiresAt is past the current timestamp */
|
|
153
|
+
checkExpiry?: boolean;
|
|
154
|
+
/** Optional reference timestamp for expiration checking (defaults to Date.now()) */
|
|
155
|
+
now?: number;
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Result container for domain-separated key derivation.
|
|
159
|
+
*/
|
|
160
|
+
interface IDomainDerivedKeys {
|
|
161
|
+
authKey: CryptoKey;
|
|
162
|
+
encryptionKey: CryptoKey;
|
|
163
|
+
salt: string;
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Configuration options for domain-separated key derivation.
|
|
167
|
+
*/
|
|
168
|
+
interface IDeriveAuthAndEncryptionOptions {
|
|
169
|
+
iterations?: number;
|
|
170
|
+
hash?: 'SHA-256' | 'SHA-512';
|
|
171
|
+
authKeyLength?: 128 | 256;
|
|
172
|
+
encryptionKeyLength?: 128 | 256;
|
|
173
|
+
authAlgorithm?: 'HMAC' | 'AES-GCM';
|
|
174
|
+
authInfo?: string;
|
|
175
|
+
encryptionInfo?: string;
|
|
176
|
+
extractable?: boolean;
|
|
177
|
+
/** Optional flag specifying whether encryptionKey should be extractable (defaults to extractable) */
|
|
178
|
+
encryptionKeyExtractable?: boolean;
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Options for re-keying an existing AES-GCM encrypted envelope.
|
|
182
|
+
*/
|
|
183
|
+
interface IRekeyPayloadOptions {
|
|
184
|
+
/** Original Authenticated Additional Data (AAD) bound to the envelope */
|
|
185
|
+
aad?: string | Uint8Array | ArrayBuffer;
|
|
186
|
+
/** New AAD to bind to the re-encrypted envelope (defaults to options.aad) */
|
|
187
|
+
newAad?: string | Uint8Array | ArrayBuffer;
|
|
188
|
+
/** New Key Identifier (kid) to associate with the re-encrypted envelope */
|
|
189
|
+
newKid?: string;
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Parameters for zero-knowledge client-side user keypair re-keying pipeline.
|
|
193
|
+
*/
|
|
194
|
+
interface IRekeyKeypairParams {
|
|
195
|
+
/** RSA-OAEP PKCS#8 private key envelope, encrypted under current KEK */
|
|
196
|
+
encryptedPrivateKey: IEncryptedPayload;
|
|
197
|
+
/** ECDSA PKCS#8 signing private key envelope, encrypted under current KEK */
|
|
198
|
+
encryptedSigningKey: IEncryptedPayload;
|
|
199
|
+
/** Current user master passphrase */
|
|
200
|
+
currentPassphrase: string;
|
|
201
|
+
/** New user master passphrase */
|
|
202
|
+
newPassphrase: string;
|
|
203
|
+
/** Current salt used for PBKDF2 stretching */
|
|
204
|
+
currentSalt: string | Uint8Array;
|
|
205
|
+
/** KDF options for stretching current passphrase (defaults to 310,000 iterations, SHA-256) */
|
|
206
|
+
kdfOptions?: IDeriveAuthAndEncryptionOptions;
|
|
207
|
+
/** Optional upgraded KDF options for stretching new passphrase (e.g. higher iteration count) */
|
|
208
|
+
newKdfOptions?: IDeriveAuthAndEncryptionOptions;
|
|
209
|
+
/** Optional public keys to verify keypair consistency (RSA encrypt/decrypt roundtrip & ECDSA sign/verify) */
|
|
210
|
+
publicKeys?: {
|
|
211
|
+
encryption?: CryptoKey;
|
|
212
|
+
signing?: CryptoKey;
|
|
213
|
+
};
|
|
214
|
+
/** Optional AAD bound to current encryptedPrivateKey */
|
|
215
|
+
privateKeyAad?: string | Uint8Array | ArrayBuffer;
|
|
216
|
+
/** Optional AAD bound to current encryptedSigningKey */
|
|
217
|
+
signingKeyAad?: string | Uint8Array | ArrayBuffer;
|
|
218
|
+
/** Optional new AAD to bind to re-encrypted privateKey (defaults to privateKeyAad) */
|
|
219
|
+
newPrivateKeyAad?: string | Uint8Array | ArrayBuffer;
|
|
220
|
+
/** Optional new AAD to bind to re-encrypted signingKey (defaults to signingKeyAad) */
|
|
221
|
+
newSigningKeyAad?: string | Uint8Array | ArrayBuffer;
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Result of zero-knowledge user keypair re-keying pipeline.
|
|
225
|
+
*/
|
|
226
|
+
interface IRekeyedKeypairResult {
|
|
227
|
+
/** RSA-OAEP private key re-encrypted under the new KEK */
|
|
228
|
+
encryptedPrivateKey: IEncryptedPayload;
|
|
229
|
+
/** ECDSA signing private key re-encrypted under the new KEK */
|
|
230
|
+
encryptedSigningKey: IEncryptedPayload;
|
|
231
|
+
/** Fresh Base64-encoded salt generated for the new passphrase */
|
|
232
|
+
newSalt: string;
|
|
233
|
+
/** Fresh domain-separated subkeys derived from the new passphrase and new salt */
|
|
234
|
+
newKeys: IDomainDerivedKeys;
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
* Stored cryptographic public key pin record.
|
|
238
|
+
*/
|
|
239
|
+
interface IKeyPin {
|
|
240
|
+
/** Unique identifier of the peer / entity */
|
|
241
|
+
entityId: string;
|
|
242
|
+
/** Deterministic public key fingerprint formatted as `SHA256:<base64url>` */
|
|
243
|
+
fingerprint: string;
|
|
244
|
+
/** Timestamp (epoch ms) when this pin was established */
|
|
245
|
+
pinnedAt: number;
|
|
246
|
+
/** Last accepted reset sequence number (0 for initial TOFU pin) */
|
|
247
|
+
attestationSequence: number;
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* Storage adapter interface for public key pinning records.
|
|
251
|
+
*/
|
|
252
|
+
interface IKeyPinningStore {
|
|
253
|
+
/**
|
|
254
|
+
* Retrieves an existing key pin for the specified entityId, or null if none exists.
|
|
255
|
+
*/
|
|
256
|
+
get(entityId: string): Promise<IKeyPin | null>;
|
|
257
|
+
/**
|
|
258
|
+
* Atomic compare-and-set: writes only if current pinned fingerprint equals expectedFingerprint (null = no pin).
|
|
259
|
+
* Returns true if the record was written/updated, false if condition failed.
|
|
260
|
+
*/
|
|
261
|
+
compareAndSet(entityId: string, expectedFingerprint: string | null, next: IKeyPin): Promise<boolean>;
|
|
262
|
+
/**
|
|
263
|
+
* Removes a pinned entity key record.
|
|
264
|
+
*/
|
|
265
|
+
delete(entityId: string): Promise<void>;
|
|
266
|
+
/**
|
|
267
|
+
* Clears all key pins in the store.
|
|
268
|
+
*/
|
|
269
|
+
clear(): Promise<void>;
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* Unsigned key-reset attestation payload.
|
|
273
|
+
*/
|
|
274
|
+
interface IKeyResetAttestation {
|
|
275
|
+
/** Schema version, strictly 1 */
|
|
276
|
+
version: 1;
|
|
277
|
+
/** Unique identifier of the entity whose key is being replaced */
|
|
278
|
+
entityId: string;
|
|
279
|
+
/** Currently pinned public key fingerprint */
|
|
280
|
+
oldFingerprint: string;
|
|
281
|
+
/** Newly issued public key fingerprint */
|
|
282
|
+
newFingerprint: string;
|
|
283
|
+
/** Strictly increasing sequence number per entity */
|
|
284
|
+
sequence: number;
|
|
285
|
+
/** Timestamp (epoch ms) when attestation was created */
|
|
286
|
+
issuedAt: number;
|
|
287
|
+
/** Timestamp (epoch ms) when attestation expires */
|
|
288
|
+
expiresAt: number;
|
|
289
|
+
/** Public key fingerprint of the signing recovery authority */
|
|
290
|
+
authorityFingerprint: string;
|
|
291
|
+
/** Optional human-readable or audit reason for reset */
|
|
292
|
+
reason?: string;
|
|
293
|
+
}
|
|
294
|
+
/**
|
|
295
|
+
* Digitally signed key-reset attestation.
|
|
296
|
+
*/
|
|
297
|
+
interface ISignedKeyResetAttestation {
|
|
298
|
+
/** Canonical attestation payload */
|
|
299
|
+
attestation: IKeyResetAttestation;
|
|
300
|
+
/** Base64-encoded ECDSA P-256 signature */
|
|
301
|
+
signature: string;
|
|
302
|
+
}
|
|
303
|
+
/**
|
|
304
|
+
* Audit event dispatched when a public key pin is created or updated.
|
|
305
|
+
*/
|
|
306
|
+
interface IKeyPinChangeEvent {
|
|
307
|
+
/** Identifier of the entity */
|
|
308
|
+
entityId: string;
|
|
309
|
+
/** Previous pinned fingerprint, or null on initial TOFU */
|
|
310
|
+
previousFingerprint: string | null;
|
|
311
|
+
/** New pinned fingerprint */
|
|
312
|
+
newFingerprint: string;
|
|
313
|
+
/** Sequence number (0 for TOFU, > 0 for attested resets) */
|
|
314
|
+
sequence: number;
|
|
315
|
+
/** Type of change */
|
|
316
|
+
type: 'tofu' | 'attested_reset';
|
|
317
|
+
/** Epoch timestamp in ms */
|
|
318
|
+
timestamp: number;
|
|
319
|
+
}
|
|
320
|
+
/**
|
|
321
|
+
* Authority input type for verifyAndPinKey: CryptoKey, key object with fingerprint, Record, or Map.
|
|
322
|
+
*/
|
|
323
|
+
type TTrustedAuthorities = Array<CryptoKey | {
|
|
324
|
+
key: CryptoKey;
|
|
325
|
+
fingerprint?: string;
|
|
326
|
+
}> | Record<string, CryptoKey> | Map<string, CryptoKey>;
|
|
327
|
+
/**
|
|
328
|
+
* Options for CKeyManager.verifyAndPinKey.
|
|
329
|
+
*/
|
|
330
|
+
interface IVerifyAndPinOptions {
|
|
331
|
+
/** Storage adapter for persisting key pins */
|
|
332
|
+
store: IKeyPinningStore;
|
|
333
|
+
/** Provisioned out-of-band authority public keys */
|
|
334
|
+
trustedAuthorities: TTrustedAuthorities;
|
|
335
|
+
/** Optional resolver for fetching signed reset attestation when pin mismatch occurs */
|
|
336
|
+
fetchAttestation?: (entityId: string, oldFingerprint: string, newFingerprint: string) => Promise<ISignedKeyResetAttestation | null | undefined>;
|
|
337
|
+
/** Allowed clock skew in milliseconds (defaults to 5 minutes = 300,000ms) */
|
|
338
|
+
clockSkewMs?: number;
|
|
339
|
+
/** Maximum allowable validity window between issuedAt and expiresAt (defaults to 7 days = 604,800,000ms) */
|
|
340
|
+
maxExpirationWindowMs?: number;
|
|
341
|
+
/** Current epoch timestamp in ms (defaults to Date.now(), useful for testing) */
|
|
342
|
+
now?: number;
|
|
343
|
+
/** Audit hook invoked whenever a pin is created or modified */
|
|
344
|
+
onPinChange?: (event: IKeyPinChangeEvent) => void | Promise<void> | any;
|
|
345
|
+
}
|
|
346
|
+
/**
|
|
347
|
+
* Verification result returned by CKeyManager.verifyAndPinKey.
|
|
348
|
+
*/
|
|
349
|
+
interface IVerifyAndPinResult {
|
|
350
|
+
/** True if the key is trusted and pinned */
|
|
351
|
+
trusted: boolean;
|
|
352
|
+
/** True if this is the first contact (Trust On First Use) */
|
|
353
|
+
firstUse?: boolean;
|
|
354
|
+
/** True if a key-reset attestation was verified to update an existing pin */
|
|
355
|
+
resetVerified?: boolean;
|
|
356
|
+
/** Public key fingerprint of the verified key */
|
|
357
|
+
fingerprint: string;
|
|
358
|
+
}
|
|
359
|
+
|
|
28
360
|
interface IEncryptionContext {
|
|
29
361
|
url?: string;
|
|
30
362
|
method?: string;
|
|
@@ -211,231 +543,184 @@ interface IProviderEncryptionOptions {
|
|
|
211
543
|
/** Optional context/info string or buffer for HKDF key derivation */
|
|
212
544
|
info?: string | Uint8Array | ArrayBuffer;
|
|
213
545
|
}
|
|
546
|
+
|
|
214
547
|
/**
|
|
215
|
-
*
|
|
216
|
-
*/
|
|
217
|
-
interface IKeyPair {
|
|
218
|
-
publicKey: CryptoKey;
|
|
219
|
-
privateKey: CryptoKey;
|
|
220
|
-
}
|
|
221
|
-
/**
|
|
222
|
-
* Represents a key wrapped by a key-encrypting key (KEK) using AES-KW or asymmetric wrapping.
|
|
223
|
-
*/
|
|
224
|
-
interface IWrappedKey {
|
|
225
|
-
wrappedKey: string;
|
|
226
|
-
alg: string;
|
|
227
|
-
}
|
|
228
|
-
/**
|
|
229
|
-
* Options for Key Derivation Functions (PBKDF2 / HKDF) in CKeyManager and encryption providers.
|
|
548
|
+
* Lifecycle status for blind-index HMAC keys in a multi-KID keyring.
|
|
230
549
|
*/
|
|
231
|
-
|
|
232
|
-
kdf: 'pbkdf2' | 'hkdf';
|
|
233
|
-
salt?: Uint8Array | ArrayBuffer | string;
|
|
234
|
-
iterations?: number;
|
|
235
|
-
hash?: 'SHA-256' | 'SHA-512';
|
|
236
|
-
info?: string | Uint8Array | ArrayBuffer;
|
|
237
|
-
keyLength?: 128 | 256;
|
|
238
|
-
extractable?: boolean;
|
|
239
|
-
}
|
|
550
|
+
type TBlindIndexKeyStatus = 'active' | 'search-only' | 'retired';
|
|
240
551
|
/**
|
|
241
|
-
*
|
|
552
|
+
* Keyring mapping key IDs to HMAC CryptoKeys and their lifecycle status.
|
|
553
|
+
* Exactly one key must be 'active', matching activeKid.
|
|
242
554
|
*/
|
|
243
|
-
interface
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
*/
|
|
253
|
-
interface IAccessGrant {
|
|
254
|
-
grantId: string;
|
|
255
|
-
accountId: string;
|
|
256
|
-
granteeUserId: string;
|
|
257
|
-
granterUserId: string;
|
|
258
|
-
wrappedKey: string;
|
|
259
|
-
expiresAt?: number;
|
|
260
|
-
permissions?: string[];
|
|
555
|
+
interface IBlindIndexKeyring {
|
|
556
|
+
/** Active key identifier used for all write-time blind index token generation */
|
|
557
|
+
activeKid: string;
|
|
558
|
+
/** Dictionary of key descriptors and their lifecycle statuses */
|
|
559
|
+
keys: Record<string, {
|
|
560
|
+
key: CryptoKey;
|
|
561
|
+
status: TBlindIndexKeyStatus;
|
|
562
|
+
algorithm?: string;
|
|
563
|
+
}>;
|
|
261
564
|
}
|
|
262
565
|
/**
|
|
263
|
-
*
|
|
566
|
+
* Abstract persistence filter clause emitted by rewriteEncryptedFilters.
|
|
264
567
|
*/
|
|
265
|
-
interface
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
568
|
+
interface IAbstractPersistenceClause {
|
|
569
|
+
/** Target column name (e.g. 'email_bidx') */
|
|
570
|
+
column: string;
|
|
571
|
+
/** Abstract operator ('in' or 'notIn') */
|
|
572
|
+
op: 'in' | 'notIn' | 'eq' | 'neq' | 'raw';
|
|
573
|
+
/** Candidate values / token list */
|
|
574
|
+
values: string[] | any[];
|
|
269
575
|
}
|
|
270
576
|
/**
|
|
271
|
-
*
|
|
577
|
+
* Supported SQL / persistence dialects for query rendering.
|
|
272
578
|
*/
|
|
273
|
-
|
|
274
|
-
/** If true, checks whether grant.expiresAt is past the current timestamp */
|
|
275
|
-
checkExpiry?: boolean;
|
|
276
|
-
/** Optional reference timestamp for expiration checking (defaults to Date.now()) */
|
|
277
|
-
now?: number;
|
|
278
|
-
}
|
|
579
|
+
type TPersistenceDialect = 'postgres' | 'postgresql' | 'sqlite' | 'mysql';
|
|
279
580
|
/**
|
|
280
|
-
*
|
|
581
|
+
* Blind-index field configuration options.
|
|
281
582
|
*/
|
|
282
|
-
interface
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
583
|
+
interface IBlindIndexFieldConfig {
|
|
584
|
+
/** Custom target persistence column name (defaults to `${fieldName}_bidx`) */
|
|
585
|
+
column?: string;
|
|
586
|
+
/** Blind index keyring */
|
|
587
|
+
keyring: IBlindIndexKeyring;
|
|
286
588
|
}
|
|
287
589
|
/**
|
|
288
|
-
*
|
|
289
|
-
*/
|
|
290
|
-
interface
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
/**
|
|
302
|
-
* types.ts — Framework-agnostic hydration and platform abstraction contracts.
|
|
303
|
-
*/
|
|
304
|
-
interface ISSRHydrationAdapter {
|
|
305
|
-
/**
|
|
306
|
-
* Retrieve pre-hydrated SSR state for a key. Returns null if not present.
|
|
307
|
-
*/
|
|
308
|
-
getSSRData<T>(key: string, context?: any): T | null;
|
|
309
|
-
/**
|
|
310
|
-
* Execute fetcher with SSR serialization/caching if in an SSR environment,
|
|
311
|
-
* or simply await fetcher() in standalone/client environments.
|
|
312
|
-
*/
|
|
313
|
-
fetchWithSSR<T>(key: string, fetcher: () => Promise<T>, context?: any): Promise<T | null>;
|
|
314
|
-
/**
|
|
315
|
-
* Invalidate or clear SSR cache for a key (e.g. after mutations).
|
|
316
|
-
*/
|
|
317
|
-
clearSSRData?(key: string, context?: any): void;
|
|
318
|
-
/**
|
|
319
|
-
* Extract SSR hydration payload dictionary (for cache initialization).
|
|
320
|
-
*/
|
|
321
|
-
getSSRPayload?(context?: any): Record<string, any> | null;
|
|
322
|
-
}
|
|
323
|
-
interface IPlatformRouter {
|
|
324
|
-
getRoute(): {
|
|
325
|
-
query: Record<string, any>;
|
|
326
|
-
path?: string;
|
|
327
|
-
} | null;
|
|
328
|
-
getRouter(): any;
|
|
329
|
-
onReady?(cb: () => void): void;
|
|
330
|
-
}
|
|
331
|
-
|
|
332
|
-
type TDataProviderListener<T = any> = (provider: T) => void;
|
|
333
|
-
type TUnsubscribe = () => void;
|
|
334
|
-
declare enum EDataFilterOperator {
|
|
335
|
-
Equal = "==",
|
|
336
|
-
NotEqual = "!=",
|
|
337
|
-
GreaterThan = ">",
|
|
338
|
-
LessThan = "<",
|
|
339
|
-
GreaterThanOrEqual = ">=",
|
|
340
|
-
LessThanOrEqual = "<=",
|
|
341
|
-
In = "in",
|
|
342
|
-
NotIn = "nin",
|
|
343
|
-
And = "and",
|
|
344
|
-
Or = "or",
|
|
345
|
-
Nand = "nand",
|
|
346
|
-
Nor = "nor"
|
|
347
|
-
}
|
|
348
|
-
declare enum ECacheStrategy {
|
|
349
|
-
Application = "Application",
|
|
350
|
-
ServerSession = "ServerSession",
|
|
351
|
-
BrowserSession = "BrowserSession",
|
|
352
|
-
Memory = "Memory",
|
|
353
|
-
LocalStorage = "LocalStorage",
|
|
354
|
-
IndexedDB = "IndexedDB",
|
|
355
|
-
Cookie = "Cookie"
|
|
356
|
-
}
|
|
357
|
-
interface ICacheEntry<T> {
|
|
358
|
-
data: T;
|
|
359
|
-
timestamp: number;
|
|
360
|
-
lifetime: number;
|
|
361
|
-
lastAccessed?: number;
|
|
362
|
-
accessCount?: number;
|
|
363
|
-
}
|
|
364
|
-
interface ICacheQuotaOptions {
|
|
365
|
-
maxEntries?: number;
|
|
366
|
-
maxSizeBytes?: number;
|
|
367
|
-
quotaThresholdRatio?: number;
|
|
368
|
-
fallbackToMemory?: boolean;
|
|
369
|
-
}
|
|
370
|
-
interface ICookieCacheOptions {
|
|
371
|
-
/** Default: 'lax'. */
|
|
372
|
-
sameSite?: 'strict' | 'lax' | 'none';
|
|
373
|
-
/**
|
|
374
|
-
* Adds the `Secure` flag. Default: auto-detected from the request protocol
|
|
375
|
-
* (https => true). Set explicitly to force it on or off.
|
|
376
|
-
*/
|
|
377
|
-
secure?: boolean;
|
|
378
|
-
/**
|
|
379
|
-
* Default: true. Only effective for cookies written on the server: browsers
|
|
380
|
-
* do not allow `document.cookie` to set HttpOnly, so client writes ignore it.
|
|
381
|
-
*/
|
|
382
|
-
httpOnly?: boolean;
|
|
383
|
-
/** Default: '/'. */
|
|
384
|
-
path?: string;
|
|
590
|
+
* Options for rewriteEncryptedFilters.
|
|
591
|
+
*/
|
|
592
|
+
interface IEncryptedFilterRewriteOptions {
|
|
593
|
+
/** Map of field names to their blind-index column configuration or keyring */
|
|
594
|
+
blindIndexFields?: Record<string, IBlindIndexFieldConfig | IBlindIndexKeyring>;
|
|
595
|
+
/** Maximum allowable candidate tokens across all expanded values (defaults to 500) */
|
|
596
|
+
maxCandidateTokens?: number;
|
|
597
|
+
/** Target database dialect for SQL clause rendering (defaults to 'postgres') */
|
|
598
|
+
dialect?: TPersistenceDialect;
|
|
599
|
+
/** Parameter index offset for parameterized queries (defaults to 1) */
|
|
600
|
+
paramOffset?: number;
|
|
601
|
+
/** Maximum parameter limit before chunking (defaults: SQLite 999, MySQL 65535, Postgres unlimited) */
|
|
602
|
+
maxParametersPerClause?: number;
|
|
385
603
|
}
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
key?: string;
|
|
393
|
-
cacheKey?: string;
|
|
394
|
-
query?: Record<string, any>;
|
|
395
|
-
deduplicate?: boolean;
|
|
396
|
-
context?: any;
|
|
397
|
-
disableCache?: boolean;
|
|
398
|
-
queue?: boolean;
|
|
399
|
-
queueLabel?: string;
|
|
400
|
-
label?: string;
|
|
401
|
-
tags?: string[];
|
|
402
|
-
signal?: AbortSignal;
|
|
403
|
-
_generation?: number;
|
|
404
|
-
encryption?: IProviderEncryptionOptions;
|
|
405
|
-
/** If true, returns raw response without decrypting, useful for DataProvider lazy page-level decryption */
|
|
406
|
-
skipDecryption?: boolean;
|
|
407
|
-
credentials?: RequestCredentials;
|
|
604
|
+
/**
|
|
605
|
+
* Rendered SQL fragment with parameterized bindings.
|
|
606
|
+
*/
|
|
607
|
+
interface IRenderedSqlClause {
|
|
608
|
+
sql: string;
|
|
609
|
+
params: any[];
|
|
408
610
|
}
|
|
409
|
-
/**
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
611
|
+
/**
|
|
612
|
+
* Result returned by rewriteEncryptedFilters.
|
|
613
|
+
*/
|
|
614
|
+
interface IRewrittenPersistenceQuery {
|
|
615
|
+
/** Abstract dialect-agnostic persistence clauses */
|
|
616
|
+
clauses: IAbstractPersistenceClause[];
|
|
617
|
+
/** Total candidate tokens generated across all filters */
|
|
618
|
+
totalCandidateTokens: number;
|
|
619
|
+
/** Formats the abstract clauses into a dialect-specific SQL string and parameter array */
|
|
620
|
+
format(dialect?: TPersistenceDialect, options?: {
|
|
621
|
+
paramOffset?: number;
|
|
622
|
+
maxParametersPerClause?: number;
|
|
623
|
+
}): IRenderedSqlClause;
|
|
414
624
|
}
|
|
415
|
-
/**
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
interface
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
625
|
+
/**
|
|
626
|
+
* Options for reencryptBatch.
|
|
627
|
+
*/
|
|
628
|
+
interface IReencryptBatchOptions<TRow = any> {
|
|
629
|
+
/** Target Key Identifier to migrate payloads to */
|
|
630
|
+
targetKid: string;
|
|
631
|
+
/** Keyring containing source keys and target key */
|
|
632
|
+
keyring: Record<string, CryptoKey | string | Uint8Array | (() => Promise<CryptoKey>)>;
|
|
633
|
+
/** Model fields containing IEncryptedPayload envelopes */
|
|
634
|
+
encryptedFields: string[];
|
|
635
|
+
/** Optional blind index configuration for sensitive fields */
|
|
636
|
+
blindIndex?: {
|
|
637
|
+
fields: string[];
|
|
638
|
+
keyring: IBlindIndexKeyring;
|
|
639
|
+
/** Optional mapping from field name to persistence column name (defaults to `${fieldName}_bidx`) */
|
|
640
|
+
columnMap?: Record<string, string>;
|
|
641
|
+
};
|
|
642
|
+
/** Concurrency version field name on row (default: 'updatedAt') */
|
|
643
|
+
versionField?: string;
|
|
644
|
+
/** Primary key extractor callback (defaults to (row) => row.id) */
|
|
645
|
+
getRowId?: (row: TRow) => string | number;
|
|
646
|
+
/** Force re-encryption even if kid === targetKid (default: false) */
|
|
647
|
+
force?: boolean;
|
|
648
|
+
/** Optional base AAD or contextual fields for AEAD binding */
|
|
649
|
+
baseAad?: string;
|
|
650
|
+
aadFields?: string[];
|
|
651
|
+
buildAad?: (row: TRow, fieldName: string) => string | Uint8Array | undefined;
|
|
428
652
|
}
|
|
429
|
-
/**
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
653
|
+
/**
|
|
654
|
+
* Result returned by reencryptBatch.
|
|
655
|
+
*/
|
|
656
|
+
interface IReencryptBatchResult<TRow = any> {
|
|
657
|
+
rows: Array<{
|
|
658
|
+
row: TRow;
|
|
659
|
+
id: string | number;
|
|
660
|
+
needsUpdate: boolean;
|
|
661
|
+
patch: Partial<TRow>;
|
|
662
|
+
expectedVersion: any;
|
|
663
|
+
updatedFields: string[];
|
|
664
|
+
skippedFields: string[];
|
|
665
|
+
}>;
|
|
666
|
+
scannedCount: number;
|
|
667
|
+
migratedCount: number;
|
|
668
|
+
skippedCount: number;
|
|
434
669
|
}
|
|
435
|
-
/**
|
|
436
|
-
|
|
437
|
-
|
|
670
|
+
/**
|
|
671
|
+
* Universal orchestrator options for dataset re-encryption.
|
|
672
|
+
*/
|
|
673
|
+
interface IReencryptDatasetOptions<TRow = any> extends IReencryptBatchOptions<TRow> {
|
|
674
|
+
/** Size of each chunk fetched into memory (default: 100) */
|
|
675
|
+
batchSize?: number;
|
|
676
|
+
/** Starting cursor for resuming an interrupted migration */
|
|
677
|
+
cursor?: string | number;
|
|
678
|
+
/** Maximum retry attempts when an optimistic lock conflict occurs (default: 3) */
|
|
679
|
+
maxRetries?: number;
|
|
680
|
+
/** Dry run mode: executes decryption and validation without committing writes */
|
|
681
|
+
dryRun?: boolean;
|
|
682
|
+
/** Callback to fetch a batch of rows ordered by cursor/primary key */
|
|
683
|
+
fetchBatch: (cursor: string | number | undefined, limit: number) => Promise<{
|
|
684
|
+
rows: TRow[];
|
|
685
|
+
nextCursor?: string | number;
|
|
686
|
+
totalCount?: number;
|
|
687
|
+
}>;
|
|
688
|
+
/** Callback to persist updated row with optimistic lock verification. Returns false on conflict. */
|
|
689
|
+
updateRow: (rowId: string | number, patch: Partial<TRow>, expectedVersion: any) => Promise<boolean>;
|
|
690
|
+
/** Callback to refetch a single conflicting record during optimistic concurrency retries */
|
|
691
|
+
refetchRow?: (rowId: string | number) => Promise<TRow | null>;
|
|
692
|
+
/** Progress telemetry callback */
|
|
693
|
+
onProgress?: (progress: IMigrationProgress) => void;
|
|
694
|
+
/** Cancellation signal for cooperative abort */
|
|
695
|
+
signal?: AbortSignal;
|
|
438
696
|
}
|
|
697
|
+
/**
|
|
698
|
+
* Telemetry emitted by reencryptDataset during migration.
|
|
699
|
+
*/
|
|
700
|
+
interface IMigrationProgress {
|
|
701
|
+
scannedRows: number;
|
|
702
|
+
migratedRows: number;
|
|
703
|
+
skippedRows: number;
|
|
704
|
+
conflictRows: number;
|
|
705
|
+
currentCursor?: string | number;
|
|
706
|
+
percentComplete?: number;
|
|
707
|
+
}
|
|
708
|
+
/**
|
|
709
|
+
* Final execution report returned by reencryptDataset.
|
|
710
|
+
*/
|
|
711
|
+
interface IMigrationSummary {
|
|
712
|
+
success: boolean;
|
|
713
|
+
scannedRows: number;
|
|
714
|
+
migratedRows: number;
|
|
715
|
+
skippedRows: number;
|
|
716
|
+
conflictRows: number;
|
|
717
|
+
lastProcessedCursor?: string | number;
|
|
718
|
+
completed: boolean;
|
|
719
|
+
durationMs: number;
|
|
720
|
+
}
|
|
721
|
+
|
|
722
|
+
type TDataProviderListener<T = unknown> = (provider: T) => void;
|
|
723
|
+
type TUnsubscribe = () => void;
|
|
439
724
|
interface IKDatatableAction {
|
|
440
725
|
action: Function;
|
|
441
726
|
label: string;
|
|
@@ -447,15 +732,6 @@ interface IKDatatableAction {
|
|
|
447
732
|
type TDataRow = {
|
|
448
733
|
[key: string]: any;
|
|
449
734
|
};
|
|
450
|
-
interface IDataFilter {
|
|
451
|
-
operator: EDataFilterOperator;
|
|
452
|
-
field: TDataRow | IDataFilter[];
|
|
453
|
-
active: boolean;
|
|
454
|
-
}
|
|
455
|
-
interface IDataSort {
|
|
456
|
-
field: string;
|
|
457
|
-
direction: 'asc' | 'desc';
|
|
458
|
-
}
|
|
459
735
|
interface IDataResult<TRow = TDataRow> {
|
|
460
736
|
rowCount: number;
|
|
461
737
|
rows: TRow[];
|
|
@@ -476,7 +752,7 @@ interface IDataProviderOptions {
|
|
|
476
752
|
cacheStrategy?: ECacheStrategy;
|
|
477
753
|
cacheLifetime?: number;
|
|
478
754
|
deduplicate?: boolean;
|
|
479
|
-
context?:
|
|
755
|
+
context?: Record<string, unknown>;
|
|
480
756
|
contextKey?: string;
|
|
481
757
|
urlPageParam?: string;
|
|
482
758
|
refreshOnMutation?: boolean;
|
|
@@ -492,7 +768,7 @@ interface IDataProviderState<TRow = TDataRow> {
|
|
|
492
768
|
rowCount?: number;
|
|
493
769
|
loading?: boolean;
|
|
494
770
|
initialLoad?: boolean;
|
|
495
|
-
error?:
|
|
771
|
+
error?: Error | unknown;
|
|
496
772
|
pageData?: TRow[];
|
|
497
773
|
}
|
|
498
774
|
interface IDataProviderSetStateOptions {
|
|
@@ -508,6 +784,60 @@ interface IVirtualScrollState {
|
|
|
508
784
|
itemHeight: number;
|
|
509
785
|
}
|
|
510
786
|
|
|
787
|
+
interface IRequestOptions {
|
|
788
|
+
method?: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH';
|
|
789
|
+
body?: any;
|
|
790
|
+
headers?: Record<string, string>;
|
|
791
|
+
cacheStrategy?: ECacheStrategy;
|
|
792
|
+
lifetime?: number;
|
|
793
|
+
key?: string;
|
|
794
|
+
cacheKey?: string;
|
|
795
|
+
query?: Record<string, unknown>;
|
|
796
|
+
deduplicate?: boolean;
|
|
797
|
+
context?: Record<string, unknown>;
|
|
798
|
+
disableCache?: boolean;
|
|
799
|
+
queue?: boolean;
|
|
800
|
+
queueLabel?: string;
|
|
801
|
+
label?: string;
|
|
802
|
+
tags?: string[];
|
|
803
|
+
signal?: AbortSignal;
|
|
804
|
+
_generation?: number;
|
|
805
|
+
encryption?: IProviderEncryptionOptions;
|
|
806
|
+
/** If true, returns raw response without decrypting, useful for DataProvider lazy page-level decryption */
|
|
807
|
+
skipDecryption?: boolean;
|
|
808
|
+
credentials?: RequestCredentials;
|
|
809
|
+
}
|
|
810
|
+
/** Queue persistence backend with automatic fallback: IndexedDB → LocalStorage → Memory */
|
|
811
|
+
declare enum EQueueStorage {
|
|
812
|
+
Memory = "Memory",
|
|
813
|
+
LocalStorage = "LocalStorage",
|
|
814
|
+
IndexedDB = "IndexedDB"
|
|
815
|
+
}
|
|
816
|
+
/** Status of an item currently in the pending queue */
|
|
817
|
+
type TQueueItemStatus = 'pending' | 'flushing';
|
|
818
|
+
/** A single mutation operation waiting to be sent */
|
|
819
|
+
interface IQueuedOperation {
|
|
820
|
+
id: string;
|
|
821
|
+
url: string;
|
|
822
|
+
method: 'POST' | 'PUT' | 'PATCH' | 'DELETE';
|
|
823
|
+
options: IRequestOptions;
|
|
824
|
+
tags: string[];
|
|
825
|
+
label?: string;
|
|
826
|
+
createdAt: number;
|
|
827
|
+
flushAttempts: number;
|
|
828
|
+
status: TQueueItemStatus;
|
|
829
|
+
}
|
|
830
|
+
/** An operation that failed permanently and was moved to the dead-letter store */
|
|
831
|
+
interface IDeadLetterItem extends IQueuedOperation {
|
|
832
|
+
failedAt: number;
|
|
833
|
+
lastError: string;
|
|
834
|
+
httpStatus?: number;
|
|
835
|
+
}
|
|
836
|
+
/** Options for flush operations */
|
|
837
|
+
interface IFlushOptions {
|
|
838
|
+
tag?: string;
|
|
839
|
+
}
|
|
840
|
+
|
|
511
841
|
interface ITreeNode<TRow = TDataRow> {
|
|
512
842
|
data: TRow;
|
|
513
843
|
id: string | number;
|
|
@@ -573,6 +903,7 @@ type TTreePageDataHandler<TRow = TDataRow> = (currentPage: number, pageSize: num
|
|
|
573
903
|
disableCache?: boolean;
|
|
574
904
|
signal?: AbortSignal;
|
|
575
905
|
}) => IDataResult<TRow> | Promise<IDataResult<TRow>>;
|
|
906
|
+
|
|
576
907
|
interface KProductItemData {
|
|
577
908
|
id: string | number;
|
|
578
909
|
title: string;
|
|
@@ -580,7 +911,7 @@ interface KProductItemData {
|
|
|
580
911
|
price?: number;
|
|
581
912
|
currency?: string;
|
|
582
913
|
description?: string;
|
|
583
|
-
[key: string]:
|
|
914
|
+
[key: string]: unknown;
|
|
584
915
|
}
|
|
585
916
|
interface KProductRowAction {
|
|
586
917
|
label: string;
|
|
@@ -589,6 +920,37 @@ interface KProductRowAction {
|
|
|
589
920
|
color?: 'primary' | 'danger' | 'success' | 'warning' | 'info' | 'light' | 'dark' | 'default';
|
|
590
921
|
}
|
|
591
922
|
|
|
923
|
+
/**
|
|
924
|
+
* types.ts — Framework-agnostic hydration and platform abstraction contracts.
|
|
925
|
+
*/
|
|
926
|
+
interface ISSRHydrationAdapter {
|
|
927
|
+
/**
|
|
928
|
+
* Retrieve pre-hydrated SSR state for a key. Returns null if not present.
|
|
929
|
+
*/
|
|
930
|
+
getSSRData<T>(key: string, context?: any): T | null;
|
|
931
|
+
/**
|
|
932
|
+
* Execute fetcher with SSR serialization/caching if in an SSR environment,
|
|
933
|
+
* or simply await fetcher() in standalone/client environments.
|
|
934
|
+
*/
|
|
935
|
+
fetchWithSSR<T>(key: string, fetcher: () => Promise<T>, context?: any): Promise<T | null>;
|
|
936
|
+
/**
|
|
937
|
+
* Invalidate or clear SSR cache for a key (e.g. after mutations).
|
|
938
|
+
*/
|
|
939
|
+
clearSSRData?(key: string, context?: any): void;
|
|
940
|
+
/**
|
|
941
|
+
* Extract SSR hydration payload dictionary (for cache initialization).
|
|
942
|
+
*/
|
|
943
|
+
getSSRPayload?(context?: any): Record<string, any> | null;
|
|
944
|
+
}
|
|
945
|
+
interface IPlatformRouter {
|
|
946
|
+
getRoute(): {
|
|
947
|
+
query: Record<string, any>;
|
|
948
|
+
path?: string;
|
|
949
|
+
} | null;
|
|
950
|
+
getRouter(): any;
|
|
951
|
+
onReady?(cb: () => void): void;
|
|
952
|
+
}
|
|
953
|
+
|
|
592
954
|
declare abstract class ADataProvider<TRow = TDataRow> {
|
|
593
955
|
idKey: string;
|
|
594
956
|
protected _pageData: TRow[];
|
|
@@ -803,12 +1165,12 @@ declare class CFlatClientDataProvider<TRow = TDataRow> extends AEncryptedClientP
|
|
|
803
1165
|
|
|
804
1166
|
declare abstract class ACacheProvider {
|
|
805
1167
|
constructor();
|
|
806
|
-
abstract getKeyList(context?:
|
|
807
|
-
abstract get<T>(key: string, context?:
|
|
808
|
-
abstract set<T>(key: string, data: T, lifetime: number, context?:
|
|
809
|
-
abstract remove(key: string, context?:
|
|
810
|
-
abstract removeByPrefix(prefix: string, context?:
|
|
811
|
-
abstract getRemainingTime(key: string, context?:
|
|
1168
|
+
abstract getKeyList(context?: unknown): Array<string> | Promise<Array<string>>;
|
|
1169
|
+
abstract get<T>(key: string, context?: unknown): Promise<T | null>;
|
|
1170
|
+
abstract set<T>(key: string, data: T, lifetime: number, context?: unknown): Promise<void>;
|
|
1171
|
+
abstract remove(key: string, context?: unknown): Promise<void>;
|
|
1172
|
+
abstract removeByPrefix(prefix: string, context?: unknown): Promise<void>;
|
|
1173
|
+
abstract getRemainingTime(key: string, context?: unknown): Promise<number | null>;
|
|
812
1174
|
abstract cleanupExpired(): Promise<void>;
|
|
813
1175
|
}
|
|
814
1176
|
|
|
@@ -901,9 +1263,9 @@ declare class CAPIFlatClientDataProvider<TRow = TDataRow> extends CFlatClientDat
|
|
|
901
1263
|
disableCache?: boolean;
|
|
902
1264
|
}): Promise<void>;
|
|
903
1265
|
setAPIUrl(url: string): Promise<void>;
|
|
904
|
-
create(item:
|
|
905
|
-
update(item:
|
|
906
|
-
delete(items:
|
|
1266
|
+
create(item: TRow): Promise<void>;
|
|
1267
|
+
update(item: TRow): Promise<void>;
|
|
1268
|
+
delete(items: TRow[]): Promise<void>;
|
|
907
1269
|
loadPageData(): Promise<void>;
|
|
908
1270
|
}
|
|
909
1271
|
|
|
@@ -942,9 +1304,9 @@ declare class CAPIFlatServerDataProvider<TRow = TDataRow> extends CFlatServerDat
|
|
|
942
1304
|
disableCache?: boolean;
|
|
943
1305
|
}): Promise<void>;
|
|
944
1306
|
setAPIUrl(url: string): Promise<void>;
|
|
945
|
-
delete(items:
|
|
946
|
-
create(item:
|
|
947
|
-
update(item:
|
|
1307
|
+
delete(items: TRow[]): Promise<void>;
|
|
1308
|
+
create(item: TRow): Promise<void>;
|
|
1309
|
+
update(item: TRow): Promise<void>;
|
|
948
1310
|
}
|
|
949
1311
|
|
|
950
1312
|
declare class CTreeClientDataProvider<TRow extends TDataRow = TDataRow> extends CFlatClientDataProvider<TRow> implements ITreeDataProvider<TRow> {
|
|
@@ -1020,9 +1382,9 @@ declare class CAPITreeClientDataProvider<TRow extends TDataRow = TDataRow> exten
|
|
|
1020
1382
|
}): Promise<void>;
|
|
1021
1383
|
private _initialFetch;
|
|
1022
1384
|
setAPIUrl(url: string): Promise<void>;
|
|
1023
|
-
create(item:
|
|
1024
|
-
update(item:
|
|
1025
|
-
delete(items:
|
|
1385
|
+
create(item: TRow): Promise<void>;
|
|
1386
|
+
update(item: TRow): Promise<void>;
|
|
1387
|
+
delete(items: TRow[]): Promise<void>;
|
|
1026
1388
|
loadPageData(): Promise<void>;
|
|
1027
1389
|
}
|
|
1028
1390
|
|
|
@@ -1092,9 +1454,9 @@ declare class CAPITreeServerDataProvider<TRow = TDataRow> extends CTreeServerDat
|
|
|
1092
1454
|
disableCache?: boolean;
|
|
1093
1455
|
}): Promise<void>;
|
|
1094
1456
|
setAPIUrl(url: string): Promise<void>;
|
|
1095
|
-
delete(items:
|
|
1096
|
-
create(item:
|
|
1097
|
-
update(item:
|
|
1457
|
+
delete(items: TRow[]): Promise<void>;
|
|
1458
|
+
create(item: TRow): Promise<void>;
|
|
1459
|
+
update(item: TRow): Promise<void>;
|
|
1098
1460
|
}
|
|
1099
1461
|
|
|
1100
1462
|
/**
|
|
@@ -1958,7 +2320,7 @@ declare class CKeyManager {
|
|
|
1958
2320
|
*/
|
|
1959
2321
|
static wrapKey(keyToWrap: CryptoKey, wrappingKey: CryptoKey, format?: KeyFormat): Promise<string>;
|
|
1960
2322
|
/**
|
|
1961
|
-
* Unwraps a base64-encoded wrapped key using an unwrapping key (AES-KW or RSA-OAEP).
|
|
2323
|
+
* Unwraps a base64-encoded wrapped key using an unwrapping key (AES-KW, AES-GCM, or RSA-OAEP).
|
|
1962
2324
|
*/
|
|
1963
2325
|
static unwrapKey(wrappedBase64: string, unwrappingKey: CryptoKey, unwrappedKeyAlgorithm?: any, extractable?: boolean, keyUsages?: KeyUsage[], format?: KeyFormat): Promise<CryptoKey>;
|
|
1964
2326
|
/**
|
|
@@ -2062,6 +2424,130 @@ declare class CKeyManager {
|
|
|
2062
2424
|
* Verifies the authenticity and integrity of a signed access grant against granter public key.
|
|
2063
2425
|
*/
|
|
2064
2426
|
static verifyGrant(signedGrant: ISignedGrant, granterPublicKey: CryptoKey, options?: IVerifyGrantOptions): Promise<boolean>;
|
|
2427
|
+
/**
|
|
2428
|
+
* Encrypts raw bytes (e.g. PKCS#8 private key) into a standardized Katlux AES-GCM envelope.
|
|
2429
|
+
*
|
|
2430
|
+
* @param data - Raw byte buffer or Uint8Array to encrypt
|
|
2431
|
+
* @param key - AES-GCM CryptoKey (KEK)
|
|
2432
|
+
* @param options - Optional AAD, IV, or Key Identifier (kid)
|
|
2433
|
+
*/
|
|
2434
|
+
static encryptPayload(data: ArrayBuffer | Uint8Array, key: CryptoKey, options?: {
|
|
2435
|
+
iv?: Uint8Array;
|
|
2436
|
+
aad?: string | Uint8Array | ArrayBuffer;
|
|
2437
|
+
kid?: string;
|
|
2438
|
+
}): Promise<IEncryptedPayload>;
|
|
2439
|
+
/**
|
|
2440
|
+
* Decrypts an AES-GCM encrypted envelope back into raw bytes.
|
|
2441
|
+
*
|
|
2442
|
+
* @param payload - Standardized Katlux AES-GCM envelope
|
|
2443
|
+
* @param key - AES-GCM CryptoKey (KEK)
|
|
2444
|
+
* @param options - Optional AAD
|
|
2445
|
+
* @returns Raw decrypted ArrayBuffer
|
|
2446
|
+
*/
|
|
2447
|
+
static decryptPayload(payload: IEncryptedPayload, key: CryptoKey, options?: {
|
|
2448
|
+
aad?: string | Uint8Array | ArrayBuffer;
|
|
2449
|
+
}): Promise<ArrayBuffer>;
|
|
2450
|
+
/**
|
|
2451
|
+
* Atomically re-keys an existing AES-GCM encrypted envelope from oldKey to newKey.
|
|
2452
|
+
* Decrypts with oldKey, derives a fresh random 96-bit IV, and re-encrypts with newKey.
|
|
2453
|
+
* Memory zeroization of internal plaintext and ciphertext buffers is guaranteed via try...finally.
|
|
2454
|
+
*
|
|
2455
|
+
* @param payload - Existing AES-GCM encrypted payload envelope
|
|
2456
|
+
* @param oldKey - Current AES-GCM CryptoKey (KEK)
|
|
2457
|
+
* @param newKey - New AES-GCM CryptoKey (KEK)
|
|
2458
|
+
* @param options - Optional AAD, newAad, and newKid overrides
|
|
2459
|
+
*/
|
|
2460
|
+
static rekeyEncryptedPayload(payload: IEncryptedPayload, oldKey: CryptoKey, newKey: CryptoKey, options?: IRekeyPayloadOptions): Promise<IEncryptedPayload>;
|
|
2461
|
+
/**
|
|
2462
|
+
* Zero-knowledge master passphrase re-keying pipeline for user keypairs.
|
|
2463
|
+
*
|
|
2464
|
+
* Persistence Contract:
|
|
2465
|
+
* The caller must persist `encryptedPrivateKey`, `encryptedSigningKey`, `newSalt`, and the server
|
|
2466
|
+
* auth verifier ATOMICALLY (within a single database transaction or API request).
|
|
2467
|
+
* Partial persistence will lock the user out permanently.
|
|
2468
|
+
*
|
|
2469
|
+
* Zeroization Notice:
|
|
2470
|
+
* JavaScript memory zeroization (`fill(0)`) is best-effort due to garbage collector copies,
|
|
2471
|
+
* string immutability, and V8/SpiderMonkey engine internals. It strictly zeroes typed array buffers
|
|
2472
|
+
* allocated within Katlux control.
|
|
2473
|
+
*
|
|
2474
|
+
* Key Extractability:
|
|
2475
|
+
* All derived Key-Encrypting Keys (KEKs) are strictly non-extractable (`extractable: false`).
|
|
2476
|
+
* `authKey` extractability follows `newKdfOptions.extractable` (defaults to false).
|
|
2477
|
+
*
|
|
2478
|
+
* @param params - Re-keying configuration parameters
|
|
2479
|
+
* @returns Rekeyed private key envelopes, new salt, and fresh derived subkeys
|
|
2480
|
+
*/
|
|
2481
|
+
static rekeyUserKeypair(params: IRekeyKeypairParams): Promise<IRekeyedKeypairResult>;
|
|
2482
|
+
/**
|
|
2483
|
+
* Helper to resolve a CryptoKey from a TTrustedAuthorities structure matching a given authorityFingerprint.
|
|
2484
|
+
*/
|
|
2485
|
+
private static resolveAuthorityCryptoKey;
|
|
2486
|
+
/**
|
|
2487
|
+
* Signs a key-reset attestation using an authority ECDSA P-256 private key.
|
|
2488
|
+
*
|
|
2489
|
+
* Used by trusted recovery authorities or administrators to certify that
|
|
2490
|
+
* an entity's pinned public key was legitimately superseded.
|
|
2491
|
+
*/
|
|
2492
|
+
static signKeyResetAttestation(attestation: {
|
|
2493
|
+
version?: 1;
|
|
2494
|
+
entityId: string;
|
|
2495
|
+
oldFingerprint: string;
|
|
2496
|
+
newFingerprint: string;
|
|
2497
|
+
sequence: number;
|
|
2498
|
+
issuedAt?: number;
|
|
2499
|
+
expiresAt: number;
|
|
2500
|
+
authorityFingerprint?: string;
|
|
2501
|
+
reason?: string;
|
|
2502
|
+
}, authorityPrivateKey: CryptoKey, authorityPublicKey?: CryptoKey): Promise<ISignedKeyResetAttestation>;
|
|
2503
|
+
/**
|
|
2504
|
+
* Verifies an incoming public key against the Key Pinning Store (TOFU),
|
|
2505
|
+
* safely accepting legitimate key replacements accompanied by a valid signed reset attestation.
|
|
2506
|
+
*
|
|
2507
|
+
* Threat Model & Security Considerations:
|
|
2508
|
+
* - Protects against: Substituted public keys from a compromised or rogue key directory after first contact.
|
|
2509
|
+
* - Does not protect against: Initial contact substitution (TOFU attack), malicious JavaScript served by
|
|
2510
|
+
* the same origin, or client-side storage tampering via XSS. Pinning is defense-in-depth.
|
|
2511
|
+
* - Authorities MUST be provisioned out-of-band (e.g. bundled app config), NEVER fetched dynamically from the key server.
|
|
2512
|
+
*
|
|
2513
|
+
* @param entityId - Peer or entity unique identifier
|
|
2514
|
+
* @param publicKey - Presented public key (CryptoKey, SPKI Uint8Array/ArrayBuffer, or PEM/Base64 string)
|
|
2515
|
+
* @param options - Pinning store, trusted authorities, and optional attestation resolver
|
|
2516
|
+
*/
|
|
2517
|
+
static verifyAndPinKey(entityId: string, publicKey: CryptoKey | Uint8Array | ArrayBuffer | string, options: IVerifyAndPinOptions): Promise<IVerifyAndPinResult>;
|
|
2518
|
+
/**
|
|
2519
|
+
* Validates the structural integrity and lifecycle rules of a blind-index keyring.
|
|
2520
|
+
*
|
|
2521
|
+
* Enforcement rules:
|
|
2522
|
+
* - Keyring must be an object with string `activeKid` and `keys` dictionary.
|
|
2523
|
+
* - Exactly one key in `keys` must have `status: 'active'`.
|
|
2524
|
+
* - The active key's key ID must strictly match `activeKid`.
|
|
2525
|
+
* - Every key must possess a valid HMAC `CryptoKey` instance.
|
|
2526
|
+
*
|
|
2527
|
+
* Throws `ERR_BIDX_KEYRING_INVALID` on any violation.
|
|
2528
|
+
*/
|
|
2529
|
+
static validateBlindIndexKeyring(keyring: IBlindIndexKeyring): void;
|
|
2530
|
+
/**
|
|
2531
|
+
* Computes multi-token blind index candidates for search queries across key rotation lifecycles.
|
|
2532
|
+
*
|
|
2533
|
+
* Generates candidate tokens using the currently `active` key and all `search-only` keys.
|
|
2534
|
+
* Normalization (Unicode NFKC -> trim -> lowercase) is 100% identical to write-time tokens.
|
|
2535
|
+
* Returns a de-duplicated array of tokens with the active key's token first.
|
|
2536
|
+
* Returns an empty array `[]` for null/empty inputs.
|
|
2537
|
+
*
|
|
2538
|
+
* @param value - Search term string or primitive
|
|
2539
|
+
* @param keyring - Validated multi-KID blind index keyring
|
|
2540
|
+
*/
|
|
2541
|
+
static computeMultiBlindIndex(value: any, keyring: IBlindIndexKeyring): Promise<string[]>;
|
|
2542
|
+
/**
|
|
2543
|
+
* Computes the write-time blind index token using exclusively the currently active key.
|
|
2544
|
+
*
|
|
2545
|
+
* Used by data ingestion and re-indexing jobs.
|
|
2546
|
+
*
|
|
2547
|
+
* @param value - Ingest value string or primitive
|
|
2548
|
+
* @param keyring - Validated multi-KID blind index keyring
|
|
2549
|
+
*/
|
|
2550
|
+
static computeWriteBlindIndex(value: any, keyring: IBlindIndexKeyring): Promise<string>;
|
|
2065
2551
|
}
|
|
2066
2552
|
|
|
2067
2553
|
interface ICWebCryptoOptions {
|
|
@@ -2444,10 +2930,145 @@ declare function isAuthOrDecryptionError(err: any): boolean;
|
|
|
2444
2930
|
*/
|
|
2445
2931
|
declare function canonicalizeJson(value: any, seen?: Set<any>): string;
|
|
2446
2932
|
|
|
2933
|
+
/**
|
|
2934
|
+
* Web Streams Chunked AEAD Encryption & Decryption for Large Payloads.
|
|
2935
|
+
* Implements the STREAM construction (AES-GCM with 96-bit nonces, wrapped per-stream DEK,
|
|
2936
|
+
* and authenticated header binding). Zero new external dependencies.
|
|
2937
|
+
*/
|
|
2938
|
+
|
|
2939
|
+
interface IStreamEncryptionOptions {
|
|
2940
|
+
/**
|
|
2941
|
+
* Wrapping key: AES-GCM, AES-KW, or RSA-OAEP CryptoKey (or raw key / keyProvider function).
|
|
2942
|
+
* Used to wrap the per-stream DEK. The caller's key may stay non-extractable.
|
|
2943
|
+
*/
|
|
2944
|
+
key: CryptoKey | TKeyProvider;
|
|
2945
|
+
/**
|
|
2946
|
+
* Optional Key Identifier (KID) to embed in the stream header (max 255 bytes UTF-8).
|
|
2947
|
+
*/
|
|
2948
|
+
kid?: string;
|
|
2949
|
+
/**
|
|
2950
|
+
* Plaintext chunk size in bytes. Default: 65536 (64 KiB).
|
|
2951
|
+
* Allowed range: 4096 (4 KiB) to 4194304 (4 MiB).
|
|
2952
|
+
*/
|
|
2953
|
+
chunkSize?: number;
|
|
2954
|
+
}
|
|
2955
|
+
interface IStreamDecryptionOptions {
|
|
2956
|
+
/**
|
|
2957
|
+
* Single unwrap key (CryptoKey or TKeyProvider) to unwrap the per-stream DEK.
|
|
2958
|
+
*/
|
|
2959
|
+
key?: CryptoKey | TKeyProvider;
|
|
2960
|
+
/**
|
|
2961
|
+
* Keyring dictionary mapping kid to CryptoKey or key provider functions.
|
|
2962
|
+
*/
|
|
2963
|
+
keyring?: Record<string, TKeyProvider | IKeyPair>;
|
|
2964
|
+
/**
|
|
2965
|
+
* Alias for keyring to maintain consistency with IProviderEncryptionOptions.
|
|
2966
|
+
*/
|
|
2967
|
+
keys?: Record<string, TKeyProvider | IKeyPair>;
|
|
2968
|
+
}
|
|
2969
|
+
interface IStreamWithBufferMetric<I, O> extends TransformStream<I, O> {
|
|
2970
|
+
/**
|
|
2971
|
+
* Returns the current number of uncommitted bytes buffered inside the transformer.
|
|
2972
|
+
*/
|
|
2973
|
+
getBufferedBytes(): number;
|
|
2974
|
+
}
|
|
2975
|
+
/**
|
|
2976
|
+
* Creates an encryption TransformStream for chunked AEAD streaming encryption.
|
|
2977
|
+
*/
|
|
2978
|
+
declare function createEncryptionStream(options: IStreamEncryptionOptions): IStreamWithBufferMetric<Uint8Array, Uint8Array>;
|
|
2979
|
+
/**
|
|
2980
|
+
* Creates a decryption TransformStream for chunked AEAD streaming decryption.
|
|
2981
|
+
*/
|
|
2982
|
+
declare function createDecryptionStream(options: IStreamDecryptionOptions): IStreamWithBufferMetric<Uint8Array, Uint8Array>;
|
|
2983
|
+
/**
|
|
2984
|
+
* Encrypts a Blob payload using Web Streams chunked AEAD encryption.
|
|
2985
|
+
*/
|
|
2986
|
+
declare function encryptBlob(blob: Blob, options: IStreamEncryptionOptions): Promise<Blob>;
|
|
2987
|
+
/**
|
|
2988
|
+
* Decrypts a Blob payload using Web Streams chunked AEAD decryption.
|
|
2989
|
+
*/
|
|
2990
|
+
declare function decryptBlob(blob: Blob, options: IStreamDecryptionOptions, mimeType?: string): Promise<Blob>;
|
|
2991
|
+
|
|
2992
|
+
/**
|
|
2993
|
+
* In-memory storage adapter for public key pinning records.
|
|
2994
|
+
* Ideal for unit tests, ephemeral sessions, and server-side runtimes.
|
|
2995
|
+
*/
|
|
2996
|
+
declare class CMemoryKeyPinningStore implements IKeyPinningStore {
|
|
2997
|
+
private pins;
|
|
2998
|
+
get(entityId: string): Promise<IKeyPin | null>;
|
|
2999
|
+
compareAndSet(entityId: string, expectedFingerprint: string | null, next: IKeyPin): Promise<boolean>;
|
|
3000
|
+
delete(entityId: string): Promise<void>;
|
|
3001
|
+
clear(): Promise<void>;
|
|
3002
|
+
}
|
|
3003
|
+
/**
|
|
3004
|
+
* LocalStorage adapter for public key pinning records in browser environments.
|
|
3005
|
+
* Uses namespaced keys in the form `katlux:pin:<namespace>:<entityId>`.
|
|
3006
|
+
*/
|
|
3007
|
+
declare class CLocalStorageKeyPinningStore implements IKeyPinningStore {
|
|
3008
|
+
private readonly namespace;
|
|
3009
|
+
private readonly prefix;
|
|
3010
|
+
constructor(namespace?: string);
|
|
3011
|
+
private getKey;
|
|
3012
|
+
get(entityId: string): Promise<IKeyPin | null>;
|
|
3013
|
+
compareAndSet(entityId: string, expectedFingerprint: string | null, next: IKeyPin): Promise<boolean>;
|
|
3014
|
+
delete(entityId: string): Promise<void>;
|
|
3015
|
+
clear(): Promise<void>;
|
|
3016
|
+
}
|
|
3017
|
+
/**
|
|
3018
|
+
* IndexedDB adapter for public key pinning records.
|
|
3019
|
+
* Integrates with KatluxIndexedDB shared database singleton and executes
|
|
3020
|
+
* atomic compare-and-set operations within a single readwrite transaction.
|
|
3021
|
+
*/
|
|
3022
|
+
declare class CIndexedDBKeyPinningStore implements IKeyPinningStore {
|
|
3023
|
+
private readonly storeName;
|
|
3024
|
+
constructor(storeName?: string);
|
|
3025
|
+
get(entityId: string): Promise<IKeyPin | null>;
|
|
3026
|
+
compareAndSet(entityId: string, expectedFingerprint: string | null, next: IKeyPin): Promise<boolean>;
|
|
3027
|
+
delete(entityId: string): Promise<void>;
|
|
3028
|
+
clear(): Promise<void>;
|
|
3029
|
+
}
|
|
3030
|
+
|
|
3031
|
+
/**
|
|
3032
|
+
* Server query rewriter utility for encrypted and blind-indexed columns.
|
|
3033
|
+
*
|
|
3034
|
+
* Automatically expands high-level filters on blind-indexed fields into candidate tokens
|
|
3035
|
+
* across multi-KID keyrings (active and search-only keys), emitting abstract persistence
|
|
3036
|
+
* clauses that format cleanly into PostgreSQL (= ANY), MySQL and SQLite (IN (?, ...)).
|
|
3037
|
+
*
|
|
3038
|
+
* @param filters - Single IDataFilter or array of filters
|
|
3039
|
+
* @param options - Configuration mapping fields to blind index keyrings and dialect formatting
|
|
3040
|
+
*/
|
|
3041
|
+
declare function rewriteEncryptedFilters(filters: IDataFilter | IDataFilter[], options: IEncryptedFilterRewriteOptions): Promise<IRewrittenPersistenceQuery>;
|
|
3042
|
+
|
|
3043
|
+
/**
|
|
3044
|
+
* Katlux Batch Re-Encryption & Key Migration Orchestrator
|
|
3045
|
+
*
|
|
3046
|
+
* Implements storage-agnostic, memory-bounded batch re-encryption and
|
|
3047
|
+
* key migration pipelines for persistent datasets across key rotation lifecycles.
|
|
3048
|
+
*/
|
|
3049
|
+
|
|
3050
|
+
/**
|
|
3051
|
+
* Re-encrypts an array of row objects in memory, selectively updating fields that
|
|
3052
|
+
* do not match targetKid and updating HMAC blind index columns if configured.
|
|
3053
|
+
*
|
|
3054
|
+
* @param rows - Array of database records or document objects
|
|
3055
|
+
* @param options - Re-encryption options including targetKid, keyring, and field configs
|
|
3056
|
+
* @returns Batch processing result detailing modified rows, patches, and metrics
|
|
3057
|
+
*/
|
|
3058
|
+
declare function reencryptBatch<TRow = any>(rows: TRow[], options: IReencryptBatchOptions<TRow>): Promise<IReencryptBatchResult<TRow>>;
|
|
3059
|
+
/**
|
|
3060
|
+
* Universal storage-agnostic orchestrator for executing memory-bounded batch
|
|
3061
|
+
* re-encryption across database tables or remote datasets with optimistic concurrency.
|
|
3062
|
+
*
|
|
3063
|
+
* @param options - Dataset migration options including fetchBatch and updateRow adapters
|
|
3064
|
+
* @returns Final migration summary report with telemetry metrics
|
|
3065
|
+
*/
|
|
3066
|
+
declare function reencryptDataset<TRow = any>(options: IReencryptDatasetOptions<TRow>): Promise<IMigrationSummary>;
|
|
3067
|
+
|
|
2447
3068
|
/**
|
|
2448
3069
|
* Universal helper that verifies whether an arbitrary object is a Katlux encrypted payload envelope.
|
|
2449
3070
|
*/
|
|
2450
3071
|
declare function isEncrypted(payload: any): boolean;
|
|
2451
3072
|
|
|
2452
|
-
export { AAPIDataProvider, ADataProvider, AEncryptedClientProvider, AEncryptionProvider, CAPIFlatClientDataProvider, CAPIFlatServerDataProvider, CAPITreeClientDataProvider, CAPITreeServerDataProvider, CApplicationCache, CBrowserSessionCache, CCookieCache, CECDHEncryptionProvider, CFlatClientDataProvider, CFlatServerDataProvider, CIndexedDBCache, CKeyManager, CLocalStorageCache, CMemoryCache, CNodeCryptoEncryptionProvider, CRSAEncryptionProvider, CSearchIndex, CServerSessionCache, CTreeClientDataProvider, CTreeServerDataProvider, CWebCryptoAESCBCProvider, CWebCryptoEncryptionProvider, CacheProviderFactory, DECRYPT_ERROR_SENTINEL, DefaultHydrationAdapter, ECacheStrategy, EDataFilterOperator, EQueueStorage, KatluxIndexedDB, QueueStorageFactory, RequestProvider, RequestProviderRegistry, RequestQueue, SENSITIVE_HEADER_KEYS, applyOperator, buildEncryptionContext, canonicalizeJson, clearCachedCipherProvider, clearSSRData, compareAnd, compareEqual, compareIn, compareOr, compareValues, createEncryptionProvider, debounce, decryptPageRows, encryptRows, encryptRowsChunked, evaluateFilter, extractTrigrams, fastKeyHash, fetchWithSSR, filterData, filterTreeData, getAppRoute, getAppRouter, getCipherProvider, getHydrationAdapter, getKeyIdentifier, getPlatformApp, getRandomValues, getSSRData, getSSRPayload, getSafeKeyIdentifier, getSubtleCrypto, isAuthOrDecryptionError, isDataEncrypted, isEncrypted, normalizeIndexTerm, onPlatformReady, resolveInfoBytes, safeSetProperty, setHydrationAdapter, sortData, textDecoder, textEncoder, toBase64, useDebounce, useFilterLogic, useSortLogic };
|
|
2453
|
-
export type { CacheDriverLoader, IAccessGrant, ICNodeCryptoOptions, ICWebCryptoAESCBCOptions, ICWebCryptoOptions, ICacheEntry, ICacheQuotaOptions, ICookieCacheOptions, IDataFilter, IDataProviderOptions, IDataProviderSetStateOptions, IDataProviderState, IDataResult, IDataSort, IDeadLetterItem, IDebouncedFunction, IDecryptErrorInfo, IDeriveAuthAndEncryptionOptions, IDomainDerivedKeys, IEncryptedPayload, IEncryptionContext, IEncryptionProvider, IFieldEncryptionContext, IFlushOptions, IHKDFFromSecretOptions, IKDFOptions, IKDatatableAction, IKeyPair, IPlatformRouter, IProviderEncryptionOptions, IQueueStorageAdapter, IQueuedOperation, IRequestOptions, ISSRHydrationAdapter, ISearchIndexRowEntry, ISetDataChunkedOptions, ISignedGrant, ITreeDataProvider, ITreeDataProviderOptions, ITreeNode, ITreeNodeStatic, IVerifyGrantOptions, IVirtualScrollState, IWrappedKey, KProductItemData, KProductRowAction, TDataProviderListener, TDataProviderStateChangeListener, TDataRow, TECDHCurve, TKatluxStore, TKeyProvider, TPageDataHandler, TQueueItemStatus, TRawKey, TTreePageDataHandler, TTreeRow, TUnsubscribe, TreePaginationMode };
|
|
3073
|
+
export { AAPIDataProvider, ADataProvider, AEncryptedClientProvider, AEncryptionProvider, CAPIFlatClientDataProvider, CAPIFlatServerDataProvider, CAPITreeClientDataProvider, CAPITreeServerDataProvider, CApplicationCache, CBrowserSessionCache, CCookieCache, CECDHEncryptionProvider, CFlatClientDataProvider, CFlatServerDataProvider, CIndexedDBCache, CIndexedDBKeyPinningStore, CKeyManager, CLocalStorageCache, CLocalStorageKeyPinningStore, CMemoryCache, CMemoryKeyPinningStore, CNodeCryptoEncryptionProvider, CRSAEncryptionProvider, CSearchIndex, CServerSessionCache, CTreeClientDataProvider, CTreeServerDataProvider, CWebCryptoAESCBCProvider, CWebCryptoEncryptionProvider, CacheProviderFactory, DECRYPT_ERROR_SENTINEL, DefaultHydrationAdapter, ECacheStrategy, EDataFilterOperator, EQueueStorage, KatluxIndexedDB, QueueStorageFactory, RequestProvider, RequestProviderRegistry, RequestQueue, SENSITIVE_HEADER_KEYS, applyOperator, buildEncryptionContext, canonicalizeJson, clearCachedCipherProvider, clearSSRData, compareAnd, compareEqual, compareIn, compareOr, compareValues, createDecryptionStream, createEncryptionProvider, createEncryptionStream, debounce, decryptBlob, decryptPageRows, encryptBlob, encryptRows, encryptRowsChunked, evaluateFilter, extractTrigrams, fastKeyHash, fetchWithSSR, filterData, filterTreeData, getAppRoute, getAppRouter, getCipherProvider, getHydrationAdapter, getKeyIdentifier, getPlatformApp, getRandomValues, getSSRData, getSSRPayload, getSafeKeyIdentifier, getSubtleCrypto, isAuthOrDecryptionError, isDataEncrypted, isEncrypted, normalizeIndexTerm, onPlatformReady, reencryptBatch, reencryptDataset, resolveInfoBytes, rewriteEncryptedFilters, safeSetProperty, setHydrationAdapter, sortData, textDecoder, textEncoder, toBase64, useDebounce, useFilterLogic, useSortLogic };
|
|
3074
|
+
export type { CacheDriverLoader, IAbstractPersistenceClause, IAccessGrant, IBlindIndexFieldConfig, IBlindIndexKeyring, ICNodeCryptoOptions, ICWebCryptoAESCBCOptions, ICWebCryptoOptions, ICacheEntry, ICacheQuotaOptions, ICookieCacheOptions, IDataFilter, IDataProviderOptions, IDataProviderSetStateOptions, IDataProviderState, IDataResult, IDataSort, IDeadLetterItem, IDebouncedFunction, IDecryptErrorInfo, IDeriveAuthAndEncryptionOptions, IDomainDerivedKeys, IEncryptedFilterRewriteOptions, IEncryptedPayload, IEncryptionContext, IEncryptionProvider, IFieldEncryptionContext, IFlushOptions, IHKDFFromSecretOptions, IKDFOptions, IKDatatableAction, IKeyPair, IKeyPin, IKeyPinChangeEvent, IKeyPinningStore, IKeyResetAttestation, IMigrationProgress, IMigrationSummary, IPlatformRouter, IProviderEncryptionOptions, IQueueStorageAdapter, IQueuedOperation, IReencryptBatchOptions, IReencryptBatchResult, IReencryptDatasetOptions, IRekeyKeypairParams, IRekeyPayloadOptions, IRekeyedKeypairResult, IRenderedSqlClause, IRequestOptions, IRewrittenPersistenceQuery, ISSRHydrationAdapter, ISearchIndexRowEntry, ISetDataChunkedOptions, ISignedGrant, ISignedKeyResetAttestation, IStreamDecryptionOptions, IStreamEncryptionOptions, IStreamWithBufferMetric, ITreeDataProvider, ITreeDataProviderOptions, ITreeNode, ITreeNodeStatic, IVerifyAndPinOptions, IVerifyAndPinResult, IVerifyGrantOptions, IVirtualScrollState, IWrappedKey, KProductItemData, KProductRowAction, TBlindIndexKeyStatus, TDataProviderListener, TDataProviderStateChangeListener, TDataRow, TECDHCurve, TKatluxStore, TKeyProvider, TPageDataHandler, TPersistenceDialect, TQueueItemStatus, TRawKey, TTreePageDataHandler, TTreeRow, TTrustedAuthorities, TUnsubscribe, TreePaginationMode };
|