@katlux/providers 0.1.1-alpha.106 → 0.1.1-alpha.111
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 +4768 -4180
- package/dist/index.d.cts +120 -17
- package/dist/index.d.mts +120 -17
- package/dist/index.d.ts +120 -17
- package/dist/index.mjs +4762 -4180
- package/package.json +2 -1
package/dist/index.d.cts
CHANGED
|
@@ -77,6 +77,10 @@ interface IProviderEncryptionOptions {
|
|
|
77
77
|
lazy?: boolean;
|
|
78
78
|
/** Whitelist of specific field names to encrypt/decrypt (e.g. ['name', 'surname']). Any unlisted field remains plaintext. */
|
|
79
79
|
fields?: string[];
|
|
80
|
+
/** Enable HMAC-SHA256 blind indexing and trigram search index on encrypted fields for local DataProviders */
|
|
81
|
+
searchIndex?: boolean;
|
|
82
|
+
/** Optional dedicated HMAC key for search indexing (defaults to encryption key if omitted) */
|
|
83
|
+
hmacKey?: TKeyProvider;
|
|
80
84
|
/** Cryptographic algorithm identifier (defaults to 'AES-GCM') */
|
|
81
85
|
algorithm?: 'AES-GCM' | string;
|
|
82
86
|
/** Custom cipher adapter implementing IEncryptionProvider (e.g. CRSAEncryptionProvider, CECDHEncryptionProvider, CWebCryptoAESCBCProvider) */
|
|
@@ -449,6 +453,7 @@ declare abstract class ADataProvider<TRow = TDataRow> {
|
|
|
449
453
|
protected _selectAll: boolean;
|
|
450
454
|
get selectAll(): boolean;
|
|
451
455
|
set selectAll(val: boolean);
|
|
456
|
+
getSelectedRows(): TRow[];
|
|
452
457
|
protected _currentPage: number;
|
|
453
458
|
protected _pageSize: number;
|
|
454
459
|
protected _filter: IDataFilter | null;
|
|
@@ -500,17 +505,116 @@ declare abstract class ADataProvider<TRow = TDataRow> {
|
|
|
500
505
|
cancelPending(): void;
|
|
501
506
|
}
|
|
502
507
|
|
|
503
|
-
|
|
508
|
+
interface ISetDataChunkedOptions {
|
|
509
|
+
chunkSize?: number;
|
|
510
|
+
onProgress?: (progress: {
|
|
511
|
+
processed: number;
|
|
512
|
+
total: number;
|
|
513
|
+
percent: number;
|
|
514
|
+
}) => void;
|
|
515
|
+
yieldStrategy?: 'microtask' | 'timeout';
|
|
516
|
+
}
|
|
517
|
+
declare function getCipherProvider(encryption?: IProviderEncryptionOptions): IEncryptionProvider | undefined;
|
|
518
|
+
declare function clearCachedCipherProvider(encryption?: IProviderEncryptionOptions): void;
|
|
519
|
+
declare function isDataEncrypted(provider?: IEncryptionProvider, data?: any): boolean;
|
|
520
|
+
declare function buildEncryptionContext(encryption?: IProviderEncryptionOptions, url?: string, _defaultIdKey?: string): IEncryptionContext;
|
|
521
|
+
declare function decryptPageRows<T = any>(rows: T[], encryption?: IProviderEncryptionOptions, apiUrl?: string, idKey?: string): Promise<{
|
|
522
|
+
rows: T[];
|
|
523
|
+
decrypted: boolean;
|
|
524
|
+
}>;
|
|
525
|
+
declare function encryptRows<T = any>(rows: T[], encryption?: IProviderEncryptionOptions, apiUrl?: string, idKey?: string): Promise<T[]>;
|
|
526
|
+
declare function encryptRowsChunked<T = any>(rows: T[], encryption: IProviderEncryptionOptions, options?: ISetDataChunkedOptions, apiUrl?: string, idKey?: string, onChunkEncrypted?: (chunkPlain: T[], chunkEncrypted: T[], chunkStartIndex: number) => Promise<void> | void): Promise<T[]>;
|
|
527
|
+
|
|
528
|
+
/**
|
|
529
|
+
* Normalizes text for consistent deterministic blind indexing (lowercased, trimmed, NFKC normalized).
|
|
530
|
+
*/
|
|
531
|
+
declare function normalizeIndexTerm(value: any): string;
|
|
532
|
+
/**
|
|
533
|
+
* Extracts 3-character trigrams from a string for substring search.
|
|
534
|
+
*/
|
|
535
|
+
declare function extractTrigrams(value: any): string[];
|
|
536
|
+
interface ISearchIndexRowEntry {
|
|
537
|
+
token: string;
|
|
538
|
+
trigrams: Set<string>;
|
|
539
|
+
}
|
|
540
|
+
/**
|
|
541
|
+
* CSearchIndex provides deterministic blind indexing (HMAC-SHA256) and trigram token sets
|
|
542
|
+
* for client-side privacy-preserving searching and filtering across encrypted fields without decryption.
|
|
543
|
+
*/
|
|
544
|
+
declare class CSearchIndex {
|
|
545
|
+
private _hmacKey?;
|
|
546
|
+
private _rawKeyMaterial;
|
|
547
|
+
private _index;
|
|
548
|
+
private _indexedFields;
|
|
549
|
+
constructor(keyMaterial: TKeyProvider, fields?: string[]);
|
|
550
|
+
get indexedFields(): readonly string[];
|
|
551
|
+
setFields(fields: string[]): void;
|
|
552
|
+
private _getHmacKey;
|
|
553
|
+
/**
|
|
554
|
+
* Computes a deterministic HMAC-SHA256 token for a term.
|
|
555
|
+
*/
|
|
556
|
+
computeToken(term: any): Promise<string>;
|
|
557
|
+
/**
|
|
558
|
+
* Computes HMAC-SHA256 tokens for all trigrams of a term.
|
|
559
|
+
*/
|
|
560
|
+
computeTrigramTokens(term: any): Promise<Set<string>>;
|
|
561
|
+
/**
|
|
562
|
+
* Indexes a single row before its fields are encrypted.
|
|
563
|
+
*/
|
|
564
|
+
indexRow(row: any, plaintextFields?: Record<string, any>): Promise<void>;
|
|
565
|
+
/**
|
|
566
|
+
* Indexes an array of rows.
|
|
567
|
+
*/
|
|
568
|
+
indexRows(rows: any[], plaintextMap?: Map<any, Record<string, any>>): Promise<void>;
|
|
569
|
+
/**
|
|
570
|
+
* Returns the index entry for a given row and field.
|
|
571
|
+
*/
|
|
572
|
+
getEntry(row: any, field: string): ISearchIndexRowEntry | undefined;
|
|
573
|
+
/**
|
|
574
|
+
* Evaluates whether a row matches an exact or substring query on an indexed encrypted field.
|
|
575
|
+
*/
|
|
576
|
+
evaluateField(operator: string, row: any, field: string, filterValue: any): Promise<boolean | null>;
|
|
577
|
+
/**
|
|
578
|
+
* Pre-computes query tokens for an active filter, returning a high-performance synchronous
|
|
579
|
+
* evaluator function suitable for row-by-row filtering in memory.
|
|
580
|
+
*/
|
|
581
|
+
createFilterEvaluator(filter: IDataFilter): Promise<((row: any) => boolean) | null>;
|
|
582
|
+
}
|
|
583
|
+
|
|
584
|
+
declare abstract class AEncryptedClientProvider<TRow = TDataRow> extends ADataProvider<TRow> {
|
|
585
|
+
encryption?: IProviderEncryptionOptions;
|
|
586
|
+
protected _searchIndex?: CSearchIndex;
|
|
587
|
+
constructor(options?: IDataProviderOptions);
|
|
588
|
+
get isEncryptionEnabled(): boolean;
|
|
589
|
+
get searchIndex(): CSearchIndex | undefined;
|
|
590
|
+
private _warmupKeyAsync;
|
|
591
|
+
protected _initSearchIndex(): void;
|
|
592
|
+
setEncryption(encryption?: IProviderEncryptionOptions): void;
|
|
593
|
+
clearEncryption(): void;
|
|
594
|
+
protected encryptRows(rows: TRow[]): Promise<TRow[]>;
|
|
595
|
+
protected encryptRowsChunked(rows: TRow[], options?: ISetDataChunkedOptions): Promise<TRow[]>;
|
|
596
|
+
protected decryptRows(rows: TRow[]): Promise<{
|
|
597
|
+
rows: TRow[];
|
|
598
|
+
decrypted: boolean;
|
|
599
|
+
}>;
|
|
600
|
+
abstract setData(data: TRow[]): Promise<void> | void;
|
|
601
|
+
setDataChunked(data: TRow[], options?: ISetDataChunkedOptions): Promise<void>;
|
|
602
|
+
}
|
|
603
|
+
|
|
604
|
+
declare class CFlatClientDataProvider<TRow = TDataRow> extends AEncryptedClientProvider<TRow> {
|
|
504
605
|
private _allData;
|
|
505
606
|
filteredData: TRow[];
|
|
506
607
|
private _rowMap;
|
|
507
|
-
|
|
508
|
-
|
|
608
|
+
protected _filterDirty: boolean;
|
|
609
|
+
protected _sortDirty: boolean;
|
|
610
|
+
protected _activeFilterEvaluator: ((row: any) => boolean) | null;
|
|
509
611
|
constructor(options?: IDataProviderOptions);
|
|
510
612
|
get allData(): TRow[];
|
|
511
613
|
set allData(data: TRow[]);
|
|
512
614
|
get rowMap(): readonly TRow[];
|
|
513
|
-
setData(data: TRow[]): void;
|
|
615
|
+
setData(data: TRow[]): Promise<void> | void;
|
|
616
|
+
protected _setDataEncrypted(data: TRow[]): Promise<void>;
|
|
617
|
+
setDataChunked(data: TRow[], options?: ISetDataChunkedOptions): Promise<void>;
|
|
514
618
|
protected onFilterUpdated(): void;
|
|
515
619
|
protected onSortUpdated(): void;
|
|
516
620
|
setFilter(filter: IDataFilter | null, immediate?: boolean): void;
|
|
@@ -523,7 +627,9 @@ declare class CFlatClientDataProvider<TRow = TDataRow> extends ADataProvider<TRo
|
|
|
523
627
|
disableCache?: boolean;
|
|
524
628
|
}): Promise<void>;
|
|
525
629
|
refresh(hardRefresh?: boolean): Promise<void>;
|
|
630
|
+
private _computeFilteredAndSorted;
|
|
526
631
|
loadPageData(): Promise<void>;
|
|
632
|
+
getSelectedRows(): TRow[];
|
|
527
633
|
}
|
|
528
634
|
|
|
529
635
|
declare abstract class ACacheProvider {
|
|
@@ -589,14 +695,6 @@ declare class RequestProvider {
|
|
|
589
695
|
request<T>(url: string, options?: IRequestOptions): Promise<T>;
|
|
590
696
|
}
|
|
591
697
|
|
|
592
|
-
declare function getCipherProvider(encryption?: IProviderEncryptionOptions): IEncryptionProvider | undefined;
|
|
593
|
-
declare function clearCachedCipherProvider(encryption?: IProviderEncryptionOptions): void;
|
|
594
|
-
declare function isDataEncrypted(provider?: IEncryptionProvider, data?: any): boolean;
|
|
595
|
-
declare function buildEncryptionContext(encryption?: IProviderEncryptionOptions, url?: string, _defaultIdKey?: string): IEncryptionContext;
|
|
596
|
-
declare function decryptPageRows<T = any>(rows: T[], encryption?: IProviderEncryptionOptions, apiUrl?: string, idKey?: string): Promise<{
|
|
597
|
-
rows: T[];
|
|
598
|
-
decrypted: boolean;
|
|
599
|
-
}>;
|
|
600
698
|
declare abstract class AAPIDataProvider {
|
|
601
699
|
apiUrl: string;
|
|
602
700
|
cacheStrategy: ECacheStrategy | null;
|
|
@@ -620,9 +718,9 @@ declare class CAPIFlatClientDataProvider<TRow = TDataRow> extends CFlatClientDat
|
|
|
620
718
|
cacheStrategy: ECacheStrategy | null;
|
|
621
719
|
cacheLifetime: number;
|
|
622
720
|
refreshOnMutation: boolean | undefined;
|
|
623
|
-
encryption?: IProviderEncryptionOptions;
|
|
624
721
|
private _isAccumulating;
|
|
625
722
|
private _inFlightLoadMore;
|
|
723
|
+
private _lastDataReceivedPromise;
|
|
626
724
|
constructor(options?: IDataProviderOptions);
|
|
627
725
|
loadMore(): Promise<void>;
|
|
628
726
|
setEncryption(encryption?: IProviderEncryptionOptions): void;
|
|
@@ -696,7 +794,10 @@ declare class CTreeClientDataProvider<TRow extends TDataRow = TDataRow> extends
|
|
|
696
794
|
private get _nodeMap();
|
|
697
795
|
private get _sortedNodeIds();
|
|
698
796
|
constructor(options?: ITreeDataProviderOptions);
|
|
699
|
-
|
|
797
|
+
protected _applyTreeData(rows: TRow[]): void;
|
|
798
|
+
setData(data: TRow[]): Promise<void> | void;
|
|
799
|
+
protected _setDataEncrypted(data: TRow[]): Promise<void>;
|
|
800
|
+
setDataChunked(data: TRow[], options?: ISetDataChunkedOptions): Promise<void>;
|
|
700
801
|
private buildStaticNodes;
|
|
701
802
|
protected onSortUpdated(): void;
|
|
702
803
|
setSortList(sortList: IDataSort[], immediate?: boolean): void;
|
|
@@ -735,7 +836,7 @@ declare class CAPITreeClientDataProvider<TRow extends TDataRow = TDataRow> exten
|
|
|
735
836
|
cacheStrategy: ECacheStrategy | null;
|
|
736
837
|
cacheLifetime: number;
|
|
737
838
|
refreshOnMutation: boolean | undefined;
|
|
738
|
-
|
|
839
|
+
private _lastDataReceivedPromise;
|
|
739
840
|
constructor(options?: ITreeDataProviderOptions);
|
|
740
841
|
setEncryption(encryption?: IProviderEncryptionOptions): void;
|
|
741
842
|
clearEncryption(): void;
|
|
@@ -1291,6 +1392,7 @@ declare const filterData: (data: any[], filter: IDataFilter, options?: {
|
|
|
1291
1392
|
idKey: string;
|
|
1292
1393
|
parentKey: string;
|
|
1293
1394
|
};
|
|
1395
|
+
rowEvaluator?: (row: any) => boolean;
|
|
1294
1396
|
}) => {
|
|
1295
1397
|
results: any[];
|
|
1296
1398
|
expandedNodes?: Set<string | number>;
|
|
@@ -1309,6 +1411,7 @@ declare const useFilterLogic: () => {
|
|
|
1309
1411
|
idKey: string;
|
|
1310
1412
|
parentKey: string;
|
|
1311
1413
|
};
|
|
1414
|
+
rowEvaluator?: (row: any) => boolean;
|
|
1312
1415
|
}) => {
|
|
1313
1416
|
results: any[];
|
|
1314
1417
|
expandedNodes?: Set<string | number>;
|
|
@@ -1937,5 +2040,5 @@ declare function getKeyIdentifier(keyProvider?: any, defaultKey?: any): string;
|
|
|
1937
2040
|
*/
|
|
1938
2041
|
declare function isEncrypted(payload: any): boolean;
|
|
1939
2042
|
|
|
1940
|
-
export { AAPIDataProvider, ADataProvider, AEncryptionProvider, CAPIFlatClientDataProvider, CAPIFlatServerDataProvider, CAPITreeClientDataProvider, CAPITreeServerDataProvider, CApplicationCache, CBrowserSessionCache, CCookieCache, CECDHEncryptionProvider, CFlatClientDataProvider, CFlatServerDataProvider, CIndexedDBCache, CKeyManager, CLocalStorageCache, CMemoryCache, CNodeCryptoEncryptionProvider, CRSAEncryptionProvider, CServerSessionCache, CTreeClientDataProvider, CTreeServerDataProvider, CWebCryptoAESCBCProvider, CWebCryptoEncryptionProvider, CacheProviderFactory, DefaultHydrationAdapter, ECacheStrategy, EDataFilterOperator, EQueueStorage, KatluxIndexedDB, QueueStorageFactory, RequestProvider, RequestProviderRegistry, RequestQueue, SENSITIVE_HEADER_KEYS, applyOperator, buildEncryptionContext, clearCachedCipherProvider, clearSSRData, compareAnd, compareEqual, compareIn, compareOr, compareValues, createEncryptionProvider, debounce, decryptPageRows, evaluateFilter, fastKeyHash, fetchWithSSR, filterData, filterTreeData, getAppRoute, getAppRouter, getCipherProvider, getHydrationAdapter, getKeyIdentifier, getPlatformApp, getRandomValues, getSSRData, getSSRPayload, getSafeKeyIdentifier, getSubtleCrypto, isDataEncrypted, isEncrypted, onPlatformReady, resolveInfoBytes, safeSetProperty, setHydrationAdapter, sortData, textDecoder, textEncoder, toBase64, useDebounce, useFilterLogic, useSortLogic };
|
|
1941
|
-
export type { CacheDriverLoader, ICNodeCryptoOptions, ICWebCryptoAESCBCOptions, ICWebCryptoOptions, ICacheEntry, ICacheQuotaOptions, IDataFilter, IDataProviderOptions, IDataProviderSetStateOptions, IDataProviderState, IDataResult, IDataSort, IDeadLetterItem, IDebouncedFunction, IEncryptedPayload, IEncryptionContext, IEncryptionProvider, IFlushOptions, IHKDFFromSecretOptions, IKDFOptions, IKDatatableAction, IKeyPair, IPlatformRouter, IProviderEncryptionOptions, IQueueStorageAdapter, IQueuedOperation, IRequestOptions, ISSRHydrationAdapter, ITreeDataProvider, ITreeDataProviderOptions, ITreeNode, ITreeNodeStatic, IVirtualScrollState, IWrappedKey, KProductItemData, KProductRowAction, TDataProviderListener, TDataProviderStateChangeListener, TDataRow, TECDHCurve, TKatluxStore, TKeyProvider, TPageDataHandler, TQueueItemStatus, TRawKey, TTreePageDataHandler, TTreeRow, TUnsubscribe, TreePaginationMode };
|
|
2043
|
+
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, DefaultHydrationAdapter, ECacheStrategy, EDataFilterOperator, EQueueStorage, KatluxIndexedDB, QueueStorageFactory, RequestProvider, RequestProviderRegistry, RequestQueue, SENSITIVE_HEADER_KEYS, applyOperator, buildEncryptionContext, 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, isDataEncrypted, isEncrypted, normalizeIndexTerm, onPlatformReady, resolveInfoBytes, safeSetProperty, setHydrationAdapter, sortData, textDecoder, textEncoder, toBase64, useDebounce, useFilterLogic, useSortLogic };
|
|
2044
|
+
export type { CacheDriverLoader, ICNodeCryptoOptions, ICWebCryptoAESCBCOptions, ICWebCryptoOptions, ICacheEntry, ICacheQuotaOptions, IDataFilter, IDataProviderOptions, IDataProviderSetStateOptions, IDataProviderState, IDataResult, IDataSort, IDeadLetterItem, IDebouncedFunction, IEncryptedPayload, IEncryptionContext, IEncryptionProvider, IFlushOptions, IHKDFFromSecretOptions, IKDFOptions, IKDatatableAction, IKeyPair, IPlatformRouter, IProviderEncryptionOptions, IQueueStorageAdapter, IQueuedOperation, IRequestOptions, ISSRHydrationAdapter, ISearchIndexRowEntry, ISetDataChunkedOptions, ITreeDataProvider, ITreeDataProviderOptions, ITreeNode, ITreeNodeStatic, IVirtualScrollState, IWrappedKey, KProductItemData, KProductRowAction, TDataProviderListener, TDataProviderStateChangeListener, TDataRow, TECDHCurve, TKatluxStore, TKeyProvider, TPageDataHandler, TQueueItemStatus, TRawKey, TTreePageDataHandler, TTreeRow, TUnsubscribe, TreePaginationMode };
|
package/dist/index.d.mts
CHANGED
|
@@ -77,6 +77,10 @@ interface IProviderEncryptionOptions {
|
|
|
77
77
|
lazy?: boolean;
|
|
78
78
|
/** Whitelist of specific field names to encrypt/decrypt (e.g. ['name', 'surname']). Any unlisted field remains plaintext. */
|
|
79
79
|
fields?: string[];
|
|
80
|
+
/** Enable HMAC-SHA256 blind indexing and trigram search index on encrypted fields for local DataProviders */
|
|
81
|
+
searchIndex?: boolean;
|
|
82
|
+
/** Optional dedicated HMAC key for search indexing (defaults to encryption key if omitted) */
|
|
83
|
+
hmacKey?: TKeyProvider;
|
|
80
84
|
/** Cryptographic algorithm identifier (defaults to 'AES-GCM') */
|
|
81
85
|
algorithm?: 'AES-GCM' | string;
|
|
82
86
|
/** Custom cipher adapter implementing IEncryptionProvider (e.g. CRSAEncryptionProvider, CECDHEncryptionProvider, CWebCryptoAESCBCProvider) */
|
|
@@ -449,6 +453,7 @@ declare abstract class ADataProvider<TRow = TDataRow> {
|
|
|
449
453
|
protected _selectAll: boolean;
|
|
450
454
|
get selectAll(): boolean;
|
|
451
455
|
set selectAll(val: boolean);
|
|
456
|
+
getSelectedRows(): TRow[];
|
|
452
457
|
protected _currentPage: number;
|
|
453
458
|
protected _pageSize: number;
|
|
454
459
|
protected _filter: IDataFilter | null;
|
|
@@ -500,17 +505,116 @@ declare abstract class ADataProvider<TRow = TDataRow> {
|
|
|
500
505
|
cancelPending(): void;
|
|
501
506
|
}
|
|
502
507
|
|
|
503
|
-
|
|
508
|
+
interface ISetDataChunkedOptions {
|
|
509
|
+
chunkSize?: number;
|
|
510
|
+
onProgress?: (progress: {
|
|
511
|
+
processed: number;
|
|
512
|
+
total: number;
|
|
513
|
+
percent: number;
|
|
514
|
+
}) => void;
|
|
515
|
+
yieldStrategy?: 'microtask' | 'timeout';
|
|
516
|
+
}
|
|
517
|
+
declare function getCipherProvider(encryption?: IProviderEncryptionOptions): IEncryptionProvider | undefined;
|
|
518
|
+
declare function clearCachedCipherProvider(encryption?: IProviderEncryptionOptions): void;
|
|
519
|
+
declare function isDataEncrypted(provider?: IEncryptionProvider, data?: any): boolean;
|
|
520
|
+
declare function buildEncryptionContext(encryption?: IProviderEncryptionOptions, url?: string, _defaultIdKey?: string): IEncryptionContext;
|
|
521
|
+
declare function decryptPageRows<T = any>(rows: T[], encryption?: IProviderEncryptionOptions, apiUrl?: string, idKey?: string): Promise<{
|
|
522
|
+
rows: T[];
|
|
523
|
+
decrypted: boolean;
|
|
524
|
+
}>;
|
|
525
|
+
declare function encryptRows<T = any>(rows: T[], encryption?: IProviderEncryptionOptions, apiUrl?: string, idKey?: string): Promise<T[]>;
|
|
526
|
+
declare function encryptRowsChunked<T = any>(rows: T[], encryption: IProviderEncryptionOptions, options?: ISetDataChunkedOptions, apiUrl?: string, idKey?: string, onChunkEncrypted?: (chunkPlain: T[], chunkEncrypted: T[], chunkStartIndex: number) => Promise<void> | void): Promise<T[]>;
|
|
527
|
+
|
|
528
|
+
/**
|
|
529
|
+
* Normalizes text for consistent deterministic blind indexing (lowercased, trimmed, NFKC normalized).
|
|
530
|
+
*/
|
|
531
|
+
declare function normalizeIndexTerm(value: any): string;
|
|
532
|
+
/**
|
|
533
|
+
* Extracts 3-character trigrams from a string for substring search.
|
|
534
|
+
*/
|
|
535
|
+
declare function extractTrigrams(value: any): string[];
|
|
536
|
+
interface ISearchIndexRowEntry {
|
|
537
|
+
token: string;
|
|
538
|
+
trigrams: Set<string>;
|
|
539
|
+
}
|
|
540
|
+
/**
|
|
541
|
+
* CSearchIndex provides deterministic blind indexing (HMAC-SHA256) and trigram token sets
|
|
542
|
+
* for client-side privacy-preserving searching and filtering across encrypted fields without decryption.
|
|
543
|
+
*/
|
|
544
|
+
declare class CSearchIndex {
|
|
545
|
+
private _hmacKey?;
|
|
546
|
+
private _rawKeyMaterial;
|
|
547
|
+
private _index;
|
|
548
|
+
private _indexedFields;
|
|
549
|
+
constructor(keyMaterial: TKeyProvider, fields?: string[]);
|
|
550
|
+
get indexedFields(): readonly string[];
|
|
551
|
+
setFields(fields: string[]): void;
|
|
552
|
+
private _getHmacKey;
|
|
553
|
+
/**
|
|
554
|
+
* Computes a deterministic HMAC-SHA256 token for a term.
|
|
555
|
+
*/
|
|
556
|
+
computeToken(term: any): Promise<string>;
|
|
557
|
+
/**
|
|
558
|
+
* Computes HMAC-SHA256 tokens for all trigrams of a term.
|
|
559
|
+
*/
|
|
560
|
+
computeTrigramTokens(term: any): Promise<Set<string>>;
|
|
561
|
+
/**
|
|
562
|
+
* Indexes a single row before its fields are encrypted.
|
|
563
|
+
*/
|
|
564
|
+
indexRow(row: any, plaintextFields?: Record<string, any>): Promise<void>;
|
|
565
|
+
/**
|
|
566
|
+
* Indexes an array of rows.
|
|
567
|
+
*/
|
|
568
|
+
indexRows(rows: any[], plaintextMap?: Map<any, Record<string, any>>): Promise<void>;
|
|
569
|
+
/**
|
|
570
|
+
* Returns the index entry for a given row and field.
|
|
571
|
+
*/
|
|
572
|
+
getEntry(row: any, field: string): ISearchIndexRowEntry | undefined;
|
|
573
|
+
/**
|
|
574
|
+
* Evaluates whether a row matches an exact or substring query on an indexed encrypted field.
|
|
575
|
+
*/
|
|
576
|
+
evaluateField(operator: string, row: any, field: string, filterValue: any): Promise<boolean | null>;
|
|
577
|
+
/**
|
|
578
|
+
* Pre-computes query tokens for an active filter, returning a high-performance synchronous
|
|
579
|
+
* evaluator function suitable for row-by-row filtering in memory.
|
|
580
|
+
*/
|
|
581
|
+
createFilterEvaluator(filter: IDataFilter): Promise<((row: any) => boolean) | null>;
|
|
582
|
+
}
|
|
583
|
+
|
|
584
|
+
declare abstract class AEncryptedClientProvider<TRow = TDataRow> extends ADataProvider<TRow> {
|
|
585
|
+
encryption?: IProviderEncryptionOptions;
|
|
586
|
+
protected _searchIndex?: CSearchIndex;
|
|
587
|
+
constructor(options?: IDataProviderOptions);
|
|
588
|
+
get isEncryptionEnabled(): boolean;
|
|
589
|
+
get searchIndex(): CSearchIndex | undefined;
|
|
590
|
+
private _warmupKeyAsync;
|
|
591
|
+
protected _initSearchIndex(): void;
|
|
592
|
+
setEncryption(encryption?: IProviderEncryptionOptions): void;
|
|
593
|
+
clearEncryption(): void;
|
|
594
|
+
protected encryptRows(rows: TRow[]): Promise<TRow[]>;
|
|
595
|
+
protected encryptRowsChunked(rows: TRow[], options?: ISetDataChunkedOptions): Promise<TRow[]>;
|
|
596
|
+
protected decryptRows(rows: TRow[]): Promise<{
|
|
597
|
+
rows: TRow[];
|
|
598
|
+
decrypted: boolean;
|
|
599
|
+
}>;
|
|
600
|
+
abstract setData(data: TRow[]): Promise<void> | void;
|
|
601
|
+
setDataChunked(data: TRow[], options?: ISetDataChunkedOptions): Promise<void>;
|
|
602
|
+
}
|
|
603
|
+
|
|
604
|
+
declare class CFlatClientDataProvider<TRow = TDataRow> extends AEncryptedClientProvider<TRow> {
|
|
504
605
|
private _allData;
|
|
505
606
|
filteredData: TRow[];
|
|
506
607
|
private _rowMap;
|
|
507
|
-
|
|
508
|
-
|
|
608
|
+
protected _filterDirty: boolean;
|
|
609
|
+
protected _sortDirty: boolean;
|
|
610
|
+
protected _activeFilterEvaluator: ((row: any) => boolean) | null;
|
|
509
611
|
constructor(options?: IDataProviderOptions);
|
|
510
612
|
get allData(): TRow[];
|
|
511
613
|
set allData(data: TRow[]);
|
|
512
614
|
get rowMap(): readonly TRow[];
|
|
513
|
-
setData(data: TRow[]): void;
|
|
615
|
+
setData(data: TRow[]): Promise<void> | void;
|
|
616
|
+
protected _setDataEncrypted(data: TRow[]): Promise<void>;
|
|
617
|
+
setDataChunked(data: TRow[], options?: ISetDataChunkedOptions): Promise<void>;
|
|
514
618
|
protected onFilterUpdated(): void;
|
|
515
619
|
protected onSortUpdated(): void;
|
|
516
620
|
setFilter(filter: IDataFilter | null, immediate?: boolean): void;
|
|
@@ -523,7 +627,9 @@ declare class CFlatClientDataProvider<TRow = TDataRow> extends ADataProvider<TRo
|
|
|
523
627
|
disableCache?: boolean;
|
|
524
628
|
}): Promise<void>;
|
|
525
629
|
refresh(hardRefresh?: boolean): Promise<void>;
|
|
630
|
+
private _computeFilteredAndSorted;
|
|
526
631
|
loadPageData(): Promise<void>;
|
|
632
|
+
getSelectedRows(): TRow[];
|
|
527
633
|
}
|
|
528
634
|
|
|
529
635
|
declare abstract class ACacheProvider {
|
|
@@ -589,14 +695,6 @@ declare class RequestProvider {
|
|
|
589
695
|
request<T>(url: string, options?: IRequestOptions): Promise<T>;
|
|
590
696
|
}
|
|
591
697
|
|
|
592
|
-
declare function getCipherProvider(encryption?: IProviderEncryptionOptions): IEncryptionProvider | undefined;
|
|
593
|
-
declare function clearCachedCipherProvider(encryption?: IProviderEncryptionOptions): void;
|
|
594
|
-
declare function isDataEncrypted(provider?: IEncryptionProvider, data?: any): boolean;
|
|
595
|
-
declare function buildEncryptionContext(encryption?: IProviderEncryptionOptions, url?: string, _defaultIdKey?: string): IEncryptionContext;
|
|
596
|
-
declare function decryptPageRows<T = any>(rows: T[], encryption?: IProviderEncryptionOptions, apiUrl?: string, idKey?: string): Promise<{
|
|
597
|
-
rows: T[];
|
|
598
|
-
decrypted: boolean;
|
|
599
|
-
}>;
|
|
600
698
|
declare abstract class AAPIDataProvider {
|
|
601
699
|
apiUrl: string;
|
|
602
700
|
cacheStrategy: ECacheStrategy | null;
|
|
@@ -620,9 +718,9 @@ declare class CAPIFlatClientDataProvider<TRow = TDataRow> extends CFlatClientDat
|
|
|
620
718
|
cacheStrategy: ECacheStrategy | null;
|
|
621
719
|
cacheLifetime: number;
|
|
622
720
|
refreshOnMutation: boolean | undefined;
|
|
623
|
-
encryption?: IProviderEncryptionOptions;
|
|
624
721
|
private _isAccumulating;
|
|
625
722
|
private _inFlightLoadMore;
|
|
723
|
+
private _lastDataReceivedPromise;
|
|
626
724
|
constructor(options?: IDataProviderOptions);
|
|
627
725
|
loadMore(): Promise<void>;
|
|
628
726
|
setEncryption(encryption?: IProviderEncryptionOptions): void;
|
|
@@ -696,7 +794,10 @@ declare class CTreeClientDataProvider<TRow extends TDataRow = TDataRow> extends
|
|
|
696
794
|
private get _nodeMap();
|
|
697
795
|
private get _sortedNodeIds();
|
|
698
796
|
constructor(options?: ITreeDataProviderOptions);
|
|
699
|
-
|
|
797
|
+
protected _applyTreeData(rows: TRow[]): void;
|
|
798
|
+
setData(data: TRow[]): Promise<void> | void;
|
|
799
|
+
protected _setDataEncrypted(data: TRow[]): Promise<void>;
|
|
800
|
+
setDataChunked(data: TRow[], options?: ISetDataChunkedOptions): Promise<void>;
|
|
700
801
|
private buildStaticNodes;
|
|
701
802
|
protected onSortUpdated(): void;
|
|
702
803
|
setSortList(sortList: IDataSort[], immediate?: boolean): void;
|
|
@@ -735,7 +836,7 @@ declare class CAPITreeClientDataProvider<TRow extends TDataRow = TDataRow> exten
|
|
|
735
836
|
cacheStrategy: ECacheStrategy | null;
|
|
736
837
|
cacheLifetime: number;
|
|
737
838
|
refreshOnMutation: boolean | undefined;
|
|
738
|
-
|
|
839
|
+
private _lastDataReceivedPromise;
|
|
739
840
|
constructor(options?: ITreeDataProviderOptions);
|
|
740
841
|
setEncryption(encryption?: IProviderEncryptionOptions): void;
|
|
741
842
|
clearEncryption(): void;
|
|
@@ -1291,6 +1392,7 @@ declare const filterData: (data: any[], filter: IDataFilter, options?: {
|
|
|
1291
1392
|
idKey: string;
|
|
1292
1393
|
parentKey: string;
|
|
1293
1394
|
};
|
|
1395
|
+
rowEvaluator?: (row: any) => boolean;
|
|
1294
1396
|
}) => {
|
|
1295
1397
|
results: any[];
|
|
1296
1398
|
expandedNodes?: Set<string | number>;
|
|
@@ -1309,6 +1411,7 @@ declare const useFilterLogic: () => {
|
|
|
1309
1411
|
idKey: string;
|
|
1310
1412
|
parentKey: string;
|
|
1311
1413
|
};
|
|
1414
|
+
rowEvaluator?: (row: any) => boolean;
|
|
1312
1415
|
}) => {
|
|
1313
1416
|
results: any[];
|
|
1314
1417
|
expandedNodes?: Set<string | number>;
|
|
@@ -1937,5 +2040,5 @@ declare function getKeyIdentifier(keyProvider?: any, defaultKey?: any): string;
|
|
|
1937
2040
|
*/
|
|
1938
2041
|
declare function isEncrypted(payload: any): boolean;
|
|
1939
2042
|
|
|
1940
|
-
export { AAPIDataProvider, ADataProvider, AEncryptionProvider, CAPIFlatClientDataProvider, CAPIFlatServerDataProvider, CAPITreeClientDataProvider, CAPITreeServerDataProvider, CApplicationCache, CBrowserSessionCache, CCookieCache, CECDHEncryptionProvider, CFlatClientDataProvider, CFlatServerDataProvider, CIndexedDBCache, CKeyManager, CLocalStorageCache, CMemoryCache, CNodeCryptoEncryptionProvider, CRSAEncryptionProvider, CServerSessionCache, CTreeClientDataProvider, CTreeServerDataProvider, CWebCryptoAESCBCProvider, CWebCryptoEncryptionProvider, CacheProviderFactory, DefaultHydrationAdapter, ECacheStrategy, EDataFilterOperator, EQueueStorage, KatluxIndexedDB, QueueStorageFactory, RequestProvider, RequestProviderRegistry, RequestQueue, SENSITIVE_HEADER_KEYS, applyOperator, buildEncryptionContext, clearCachedCipherProvider, clearSSRData, compareAnd, compareEqual, compareIn, compareOr, compareValues, createEncryptionProvider, debounce, decryptPageRows, evaluateFilter, fastKeyHash, fetchWithSSR, filterData, filterTreeData, getAppRoute, getAppRouter, getCipherProvider, getHydrationAdapter, getKeyIdentifier, getPlatformApp, getRandomValues, getSSRData, getSSRPayload, getSafeKeyIdentifier, getSubtleCrypto, isDataEncrypted, isEncrypted, onPlatformReady, resolveInfoBytes, safeSetProperty, setHydrationAdapter, sortData, textDecoder, textEncoder, toBase64, useDebounce, useFilterLogic, useSortLogic };
|
|
1941
|
-
export type { CacheDriverLoader, ICNodeCryptoOptions, ICWebCryptoAESCBCOptions, ICWebCryptoOptions, ICacheEntry, ICacheQuotaOptions, IDataFilter, IDataProviderOptions, IDataProviderSetStateOptions, IDataProviderState, IDataResult, IDataSort, IDeadLetterItem, IDebouncedFunction, IEncryptedPayload, IEncryptionContext, IEncryptionProvider, IFlushOptions, IHKDFFromSecretOptions, IKDFOptions, IKDatatableAction, IKeyPair, IPlatformRouter, IProviderEncryptionOptions, IQueueStorageAdapter, IQueuedOperation, IRequestOptions, ISSRHydrationAdapter, ITreeDataProvider, ITreeDataProviderOptions, ITreeNode, ITreeNodeStatic, IVirtualScrollState, IWrappedKey, KProductItemData, KProductRowAction, TDataProviderListener, TDataProviderStateChangeListener, TDataRow, TECDHCurve, TKatluxStore, TKeyProvider, TPageDataHandler, TQueueItemStatus, TRawKey, TTreePageDataHandler, TTreeRow, TUnsubscribe, TreePaginationMode };
|
|
2043
|
+
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, DefaultHydrationAdapter, ECacheStrategy, EDataFilterOperator, EQueueStorage, KatluxIndexedDB, QueueStorageFactory, RequestProvider, RequestProviderRegistry, RequestQueue, SENSITIVE_HEADER_KEYS, applyOperator, buildEncryptionContext, 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, isDataEncrypted, isEncrypted, normalizeIndexTerm, onPlatformReady, resolveInfoBytes, safeSetProperty, setHydrationAdapter, sortData, textDecoder, textEncoder, toBase64, useDebounce, useFilterLogic, useSortLogic };
|
|
2044
|
+
export type { CacheDriverLoader, ICNodeCryptoOptions, ICWebCryptoAESCBCOptions, ICWebCryptoOptions, ICacheEntry, ICacheQuotaOptions, IDataFilter, IDataProviderOptions, IDataProviderSetStateOptions, IDataProviderState, IDataResult, IDataSort, IDeadLetterItem, IDebouncedFunction, IEncryptedPayload, IEncryptionContext, IEncryptionProvider, IFlushOptions, IHKDFFromSecretOptions, IKDFOptions, IKDatatableAction, IKeyPair, IPlatformRouter, IProviderEncryptionOptions, IQueueStorageAdapter, IQueuedOperation, IRequestOptions, ISSRHydrationAdapter, ISearchIndexRowEntry, ISetDataChunkedOptions, ITreeDataProvider, ITreeDataProviderOptions, ITreeNode, ITreeNodeStatic, IVirtualScrollState, IWrappedKey, KProductItemData, KProductRowAction, TDataProviderListener, TDataProviderStateChangeListener, TDataRow, TECDHCurve, TKatluxStore, TKeyProvider, TPageDataHandler, TQueueItemStatus, TRawKey, TTreePageDataHandler, TTreeRow, TUnsubscribe, TreePaginationMode };
|