@katlux/providers 0.1.1-alpha.106 → 0.1.1-alpha.109
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 +4693 -4122
- package/dist/index.d.cts +118 -17
- package/dist/index.d.mts +118 -17
- package/dist/index.d.ts +118 -17
- package/dist/index.mjs +4687 -4122
- package/package.json +1 -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) */
|
|
@@ -500,17 +504,116 @@ declare abstract class ADataProvider<TRow = TDataRow> {
|
|
|
500
504
|
cancelPending(): void;
|
|
501
505
|
}
|
|
502
506
|
|
|
503
|
-
|
|
507
|
+
interface ISetDataChunkedOptions {
|
|
508
|
+
chunkSize?: number;
|
|
509
|
+
onProgress?: (progress: {
|
|
510
|
+
processed: number;
|
|
511
|
+
total: number;
|
|
512
|
+
percent: number;
|
|
513
|
+
}) => void;
|
|
514
|
+
yieldStrategy?: 'microtask' | 'timeout';
|
|
515
|
+
}
|
|
516
|
+
declare function getCipherProvider(encryption?: IProviderEncryptionOptions): IEncryptionProvider | undefined;
|
|
517
|
+
declare function clearCachedCipherProvider(encryption?: IProviderEncryptionOptions): void;
|
|
518
|
+
declare function isDataEncrypted(provider?: IEncryptionProvider, data?: any): boolean;
|
|
519
|
+
declare function buildEncryptionContext(encryption?: IProviderEncryptionOptions, url?: string, _defaultIdKey?: string): IEncryptionContext;
|
|
520
|
+
declare function decryptPageRows<T = any>(rows: T[], encryption?: IProviderEncryptionOptions, apiUrl?: string, idKey?: string): Promise<{
|
|
521
|
+
rows: T[];
|
|
522
|
+
decrypted: boolean;
|
|
523
|
+
}>;
|
|
524
|
+
declare function encryptRows<T = any>(rows: T[], encryption?: IProviderEncryptionOptions, apiUrl?: string, idKey?: string): Promise<T[]>;
|
|
525
|
+
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[]>;
|
|
526
|
+
|
|
527
|
+
/**
|
|
528
|
+
* Normalizes text for consistent deterministic blind indexing (lowercased, trimmed, NFKC normalized).
|
|
529
|
+
*/
|
|
530
|
+
declare function normalizeIndexTerm(value: any): string;
|
|
531
|
+
/**
|
|
532
|
+
* Extracts 3-character trigrams from a string for substring search.
|
|
533
|
+
*/
|
|
534
|
+
declare function extractTrigrams(value: any): string[];
|
|
535
|
+
interface ISearchIndexRowEntry {
|
|
536
|
+
token: string;
|
|
537
|
+
trigrams: Set<string>;
|
|
538
|
+
}
|
|
539
|
+
/**
|
|
540
|
+
* CSearchIndex provides deterministic blind indexing (HMAC-SHA256) and trigram token sets
|
|
541
|
+
* for client-side privacy-preserving searching and filtering across encrypted fields without decryption.
|
|
542
|
+
*/
|
|
543
|
+
declare class CSearchIndex {
|
|
544
|
+
private _hmacKey?;
|
|
545
|
+
private _rawKeyMaterial;
|
|
546
|
+
private _index;
|
|
547
|
+
private _indexedFields;
|
|
548
|
+
constructor(keyMaterial: TKeyProvider, fields?: string[]);
|
|
549
|
+
get indexedFields(): readonly string[];
|
|
550
|
+
setFields(fields: string[]): void;
|
|
551
|
+
private _getHmacKey;
|
|
552
|
+
/**
|
|
553
|
+
* Computes a deterministic HMAC-SHA256 token for a term.
|
|
554
|
+
*/
|
|
555
|
+
computeToken(term: any): Promise<string>;
|
|
556
|
+
/**
|
|
557
|
+
* Computes HMAC-SHA256 tokens for all trigrams of a term.
|
|
558
|
+
*/
|
|
559
|
+
computeTrigramTokens(term: any): Promise<Set<string>>;
|
|
560
|
+
/**
|
|
561
|
+
* Indexes a single row before its fields are encrypted.
|
|
562
|
+
*/
|
|
563
|
+
indexRow(row: any, plaintextFields?: Record<string, any>): Promise<void>;
|
|
564
|
+
/**
|
|
565
|
+
* Indexes an array of rows.
|
|
566
|
+
*/
|
|
567
|
+
indexRows(rows: any[], plaintextMap?: Map<any, Record<string, any>>): Promise<void>;
|
|
568
|
+
/**
|
|
569
|
+
* Returns the index entry for a given row and field.
|
|
570
|
+
*/
|
|
571
|
+
getEntry(row: any, field: string): ISearchIndexRowEntry | undefined;
|
|
572
|
+
/**
|
|
573
|
+
* Evaluates whether a row matches an exact or substring query on an indexed encrypted field.
|
|
574
|
+
*/
|
|
575
|
+
evaluateField(operator: string, row: any, field: string, filterValue: any): Promise<boolean | null>;
|
|
576
|
+
/**
|
|
577
|
+
* Pre-computes query tokens for an active filter, returning a high-performance synchronous
|
|
578
|
+
* evaluator function suitable for row-by-row filtering in memory.
|
|
579
|
+
*/
|
|
580
|
+
createFilterEvaluator(filter: IDataFilter): Promise<((row: any) => boolean) | null>;
|
|
581
|
+
}
|
|
582
|
+
|
|
583
|
+
declare abstract class AEncryptedClientProvider<TRow = TDataRow> extends ADataProvider<TRow> {
|
|
584
|
+
encryption?: IProviderEncryptionOptions;
|
|
585
|
+
protected _searchIndex?: CSearchIndex;
|
|
586
|
+
constructor(options?: IDataProviderOptions);
|
|
587
|
+
get isEncryptionEnabled(): boolean;
|
|
588
|
+
get searchIndex(): CSearchIndex | undefined;
|
|
589
|
+
private _warmupKeyAsync;
|
|
590
|
+
protected _initSearchIndex(): void;
|
|
591
|
+
setEncryption(encryption?: IProviderEncryptionOptions): void;
|
|
592
|
+
clearEncryption(): void;
|
|
593
|
+
protected encryptRows(rows: TRow[]): Promise<TRow[]>;
|
|
594
|
+
protected encryptRowsChunked(rows: TRow[], options?: ISetDataChunkedOptions): Promise<TRow[]>;
|
|
595
|
+
protected decryptRows(rows: TRow[]): Promise<{
|
|
596
|
+
rows: TRow[];
|
|
597
|
+
decrypted: boolean;
|
|
598
|
+
}>;
|
|
599
|
+
abstract setData(data: TRow[]): Promise<void> | void;
|
|
600
|
+
setDataChunked(data: TRow[], options?: ISetDataChunkedOptions): Promise<void>;
|
|
601
|
+
}
|
|
602
|
+
|
|
603
|
+
declare class CFlatClientDataProvider<TRow = TDataRow> extends AEncryptedClientProvider<TRow> {
|
|
504
604
|
private _allData;
|
|
505
605
|
filteredData: TRow[];
|
|
506
606
|
private _rowMap;
|
|
507
|
-
|
|
508
|
-
|
|
607
|
+
protected _filterDirty: boolean;
|
|
608
|
+
protected _sortDirty: boolean;
|
|
609
|
+
protected _activeFilterEvaluator: ((row: any) => boolean) | null;
|
|
509
610
|
constructor(options?: IDataProviderOptions);
|
|
510
611
|
get allData(): TRow[];
|
|
511
612
|
set allData(data: TRow[]);
|
|
512
613
|
get rowMap(): readonly TRow[];
|
|
513
|
-
setData(data: TRow[]): void;
|
|
614
|
+
setData(data: TRow[]): Promise<void> | void;
|
|
615
|
+
protected _setDataEncrypted(data: TRow[]): Promise<void>;
|
|
616
|
+
setDataChunked(data: TRow[], options?: ISetDataChunkedOptions): Promise<void>;
|
|
514
617
|
protected onFilterUpdated(): void;
|
|
515
618
|
protected onSortUpdated(): void;
|
|
516
619
|
setFilter(filter: IDataFilter | null, immediate?: boolean): void;
|
|
@@ -523,6 +626,7 @@ declare class CFlatClientDataProvider<TRow = TDataRow> extends ADataProvider<TRo
|
|
|
523
626
|
disableCache?: boolean;
|
|
524
627
|
}): Promise<void>;
|
|
525
628
|
refresh(hardRefresh?: boolean): Promise<void>;
|
|
629
|
+
private _computeFilteredAndSorted;
|
|
526
630
|
loadPageData(): Promise<void>;
|
|
527
631
|
}
|
|
528
632
|
|
|
@@ -589,14 +693,6 @@ declare class RequestProvider {
|
|
|
589
693
|
request<T>(url: string, options?: IRequestOptions): Promise<T>;
|
|
590
694
|
}
|
|
591
695
|
|
|
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
696
|
declare abstract class AAPIDataProvider {
|
|
601
697
|
apiUrl: string;
|
|
602
698
|
cacheStrategy: ECacheStrategy | null;
|
|
@@ -620,9 +716,9 @@ declare class CAPIFlatClientDataProvider<TRow = TDataRow> extends CFlatClientDat
|
|
|
620
716
|
cacheStrategy: ECacheStrategy | null;
|
|
621
717
|
cacheLifetime: number;
|
|
622
718
|
refreshOnMutation: boolean | undefined;
|
|
623
|
-
encryption?: IProviderEncryptionOptions;
|
|
624
719
|
private _isAccumulating;
|
|
625
720
|
private _inFlightLoadMore;
|
|
721
|
+
private _lastDataReceivedPromise;
|
|
626
722
|
constructor(options?: IDataProviderOptions);
|
|
627
723
|
loadMore(): Promise<void>;
|
|
628
724
|
setEncryption(encryption?: IProviderEncryptionOptions): void;
|
|
@@ -696,7 +792,10 @@ declare class CTreeClientDataProvider<TRow extends TDataRow = TDataRow> extends
|
|
|
696
792
|
private get _nodeMap();
|
|
697
793
|
private get _sortedNodeIds();
|
|
698
794
|
constructor(options?: ITreeDataProviderOptions);
|
|
699
|
-
|
|
795
|
+
protected _applyTreeData(rows: TRow[]): void;
|
|
796
|
+
setData(data: TRow[]): Promise<void> | void;
|
|
797
|
+
protected _setDataEncrypted(data: TRow[]): Promise<void>;
|
|
798
|
+
setDataChunked(data: TRow[], options?: ISetDataChunkedOptions): Promise<void>;
|
|
700
799
|
private buildStaticNodes;
|
|
701
800
|
protected onSortUpdated(): void;
|
|
702
801
|
setSortList(sortList: IDataSort[], immediate?: boolean): void;
|
|
@@ -735,7 +834,7 @@ declare class CAPITreeClientDataProvider<TRow extends TDataRow = TDataRow> exten
|
|
|
735
834
|
cacheStrategy: ECacheStrategy | null;
|
|
736
835
|
cacheLifetime: number;
|
|
737
836
|
refreshOnMutation: boolean | undefined;
|
|
738
|
-
|
|
837
|
+
private _lastDataReceivedPromise;
|
|
739
838
|
constructor(options?: ITreeDataProviderOptions);
|
|
740
839
|
setEncryption(encryption?: IProviderEncryptionOptions): void;
|
|
741
840
|
clearEncryption(): void;
|
|
@@ -1291,6 +1390,7 @@ declare const filterData: (data: any[], filter: IDataFilter, options?: {
|
|
|
1291
1390
|
idKey: string;
|
|
1292
1391
|
parentKey: string;
|
|
1293
1392
|
};
|
|
1393
|
+
rowEvaluator?: (row: any) => boolean;
|
|
1294
1394
|
}) => {
|
|
1295
1395
|
results: any[];
|
|
1296
1396
|
expandedNodes?: Set<string | number>;
|
|
@@ -1309,6 +1409,7 @@ declare const useFilterLogic: () => {
|
|
|
1309
1409
|
idKey: string;
|
|
1310
1410
|
parentKey: string;
|
|
1311
1411
|
};
|
|
1412
|
+
rowEvaluator?: (row: any) => boolean;
|
|
1312
1413
|
}) => {
|
|
1313
1414
|
results: any[];
|
|
1314
1415
|
expandedNodes?: Set<string | number>;
|
|
@@ -1937,5 +2038,5 @@ declare function getKeyIdentifier(keyProvider?: any, defaultKey?: any): string;
|
|
|
1937
2038
|
*/
|
|
1938
2039
|
declare function isEncrypted(payload: any): boolean;
|
|
1939
2040
|
|
|
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 };
|
|
2041
|
+
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 };
|
|
2042
|
+
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) */
|
|
@@ -500,17 +504,116 @@ declare abstract class ADataProvider<TRow = TDataRow> {
|
|
|
500
504
|
cancelPending(): void;
|
|
501
505
|
}
|
|
502
506
|
|
|
503
|
-
|
|
507
|
+
interface ISetDataChunkedOptions {
|
|
508
|
+
chunkSize?: number;
|
|
509
|
+
onProgress?: (progress: {
|
|
510
|
+
processed: number;
|
|
511
|
+
total: number;
|
|
512
|
+
percent: number;
|
|
513
|
+
}) => void;
|
|
514
|
+
yieldStrategy?: 'microtask' | 'timeout';
|
|
515
|
+
}
|
|
516
|
+
declare function getCipherProvider(encryption?: IProviderEncryptionOptions): IEncryptionProvider | undefined;
|
|
517
|
+
declare function clearCachedCipherProvider(encryption?: IProviderEncryptionOptions): void;
|
|
518
|
+
declare function isDataEncrypted(provider?: IEncryptionProvider, data?: any): boolean;
|
|
519
|
+
declare function buildEncryptionContext(encryption?: IProviderEncryptionOptions, url?: string, _defaultIdKey?: string): IEncryptionContext;
|
|
520
|
+
declare function decryptPageRows<T = any>(rows: T[], encryption?: IProviderEncryptionOptions, apiUrl?: string, idKey?: string): Promise<{
|
|
521
|
+
rows: T[];
|
|
522
|
+
decrypted: boolean;
|
|
523
|
+
}>;
|
|
524
|
+
declare function encryptRows<T = any>(rows: T[], encryption?: IProviderEncryptionOptions, apiUrl?: string, idKey?: string): Promise<T[]>;
|
|
525
|
+
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[]>;
|
|
526
|
+
|
|
527
|
+
/**
|
|
528
|
+
* Normalizes text for consistent deterministic blind indexing (lowercased, trimmed, NFKC normalized).
|
|
529
|
+
*/
|
|
530
|
+
declare function normalizeIndexTerm(value: any): string;
|
|
531
|
+
/**
|
|
532
|
+
* Extracts 3-character trigrams from a string for substring search.
|
|
533
|
+
*/
|
|
534
|
+
declare function extractTrigrams(value: any): string[];
|
|
535
|
+
interface ISearchIndexRowEntry {
|
|
536
|
+
token: string;
|
|
537
|
+
trigrams: Set<string>;
|
|
538
|
+
}
|
|
539
|
+
/**
|
|
540
|
+
* CSearchIndex provides deterministic blind indexing (HMAC-SHA256) and trigram token sets
|
|
541
|
+
* for client-side privacy-preserving searching and filtering across encrypted fields without decryption.
|
|
542
|
+
*/
|
|
543
|
+
declare class CSearchIndex {
|
|
544
|
+
private _hmacKey?;
|
|
545
|
+
private _rawKeyMaterial;
|
|
546
|
+
private _index;
|
|
547
|
+
private _indexedFields;
|
|
548
|
+
constructor(keyMaterial: TKeyProvider, fields?: string[]);
|
|
549
|
+
get indexedFields(): readonly string[];
|
|
550
|
+
setFields(fields: string[]): void;
|
|
551
|
+
private _getHmacKey;
|
|
552
|
+
/**
|
|
553
|
+
* Computes a deterministic HMAC-SHA256 token for a term.
|
|
554
|
+
*/
|
|
555
|
+
computeToken(term: any): Promise<string>;
|
|
556
|
+
/**
|
|
557
|
+
* Computes HMAC-SHA256 tokens for all trigrams of a term.
|
|
558
|
+
*/
|
|
559
|
+
computeTrigramTokens(term: any): Promise<Set<string>>;
|
|
560
|
+
/**
|
|
561
|
+
* Indexes a single row before its fields are encrypted.
|
|
562
|
+
*/
|
|
563
|
+
indexRow(row: any, plaintextFields?: Record<string, any>): Promise<void>;
|
|
564
|
+
/**
|
|
565
|
+
* Indexes an array of rows.
|
|
566
|
+
*/
|
|
567
|
+
indexRows(rows: any[], plaintextMap?: Map<any, Record<string, any>>): Promise<void>;
|
|
568
|
+
/**
|
|
569
|
+
* Returns the index entry for a given row and field.
|
|
570
|
+
*/
|
|
571
|
+
getEntry(row: any, field: string): ISearchIndexRowEntry | undefined;
|
|
572
|
+
/**
|
|
573
|
+
* Evaluates whether a row matches an exact or substring query on an indexed encrypted field.
|
|
574
|
+
*/
|
|
575
|
+
evaluateField(operator: string, row: any, field: string, filterValue: any): Promise<boolean | null>;
|
|
576
|
+
/**
|
|
577
|
+
* Pre-computes query tokens for an active filter, returning a high-performance synchronous
|
|
578
|
+
* evaluator function suitable for row-by-row filtering in memory.
|
|
579
|
+
*/
|
|
580
|
+
createFilterEvaluator(filter: IDataFilter): Promise<((row: any) => boolean) | null>;
|
|
581
|
+
}
|
|
582
|
+
|
|
583
|
+
declare abstract class AEncryptedClientProvider<TRow = TDataRow> extends ADataProvider<TRow> {
|
|
584
|
+
encryption?: IProviderEncryptionOptions;
|
|
585
|
+
protected _searchIndex?: CSearchIndex;
|
|
586
|
+
constructor(options?: IDataProviderOptions);
|
|
587
|
+
get isEncryptionEnabled(): boolean;
|
|
588
|
+
get searchIndex(): CSearchIndex | undefined;
|
|
589
|
+
private _warmupKeyAsync;
|
|
590
|
+
protected _initSearchIndex(): void;
|
|
591
|
+
setEncryption(encryption?: IProviderEncryptionOptions): void;
|
|
592
|
+
clearEncryption(): void;
|
|
593
|
+
protected encryptRows(rows: TRow[]): Promise<TRow[]>;
|
|
594
|
+
protected encryptRowsChunked(rows: TRow[], options?: ISetDataChunkedOptions): Promise<TRow[]>;
|
|
595
|
+
protected decryptRows(rows: TRow[]): Promise<{
|
|
596
|
+
rows: TRow[];
|
|
597
|
+
decrypted: boolean;
|
|
598
|
+
}>;
|
|
599
|
+
abstract setData(data: TRow[]): Promise<void> | void;
|
|
600
|
+
setDataChunked(data: TRow[], options?: ISetDataChunkedOptions): Promise<void>;
|
|
601
|
+
}
|
|
602
|
+
|
|
603
|
+
declare class CFlatClientDataProvider<TRow = TDataRow> extends AEncryptedClientProvider<TRow> {
|
|
504
604
|
private _allData;
|
|
505
605
|
filteredData: TRow[];
|
|
506
606
|
private _rowMap;
|
|
507
|
-
|
|
508
|
-
|
|
607
|
+
protected _filterDirty: boolean;
|
|
608
|
+
protected _sortDirty: boolean;
|
|
609
|
+
protected _activeFilterEvaluator: ((row: any) => boolean) | null;
|
|
509
610
|
constructor(options?: IDataProviderOptions);
|
|
510
611
|
get allData(): TRow[];
|
|
511
612
|
set allData(data: TRow[]);
|
|
512
613
|
get rowMap(): readonly TRow[];
|
|
513
|
-
setData(data: TRow[]): void;
|
|
614
|
+
setData(data: TRow[]): Promise<void> | void;
|
|
615
|
+
protected _setDataEncrypted(data: TRow[]): Promise<void>;
|
|
616
|
+
setDataChunked(data: TRow[], options?: ISetDataChunkedOptions): Promise<void>;
|
|
514
617
|
protected onFilterUpdated(): void;
|
|
515
618
|
protected onSortUpdated(): void;
|
|
516
619
|
setFilter(filter: IDataFilter | null, immediate?: boolean): void;
|
|
@@ -523,6 +626,7 @@ declare class CFlatClientDataProvider<TRow = TDataRow> extends ADataProvider<TRo
|
|
|
523
626
|
disableCache?: boolean;
|
|
524
627
|
}): Promise<void>;
|
|
525
628
|
refresh(hardRefresh?: boolean): Promise<void>;
|
|
629
|
+
private _computeFilteredAndSorted;
|
|
526
630
|
loadPageData(): Promise<void>;
|
|
527
631
|
}
|
|
528
632
|
|
|
@@ -589,14 +693,6 @@ declare class RequestProvider {
|
|
|
589
693
|
request<T>(url: string, options?: IRequestOptions): Promise<T>;
|
|
590
694
|
}
|
|
591
695
|
|
|
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
696
|
declare abstract class AAPIDataProvider {
|
|
601
697
|
apiUrl: string;
|
|
602
698
|
cacheStrategy: ECacheStrategy | null;
|
|
@@ -620,9 +716,9 @@ declare class CAPIFlatClientDataProvider<TRow = TDataRow> extends CFlatClientDat
|
|
|
620
716
|
cacheStrategy: ECacheStrategy | null;
|
|
621
717
|
cacheLifetime: number;
|
|
622
718
|
refreshOnMutation: boolean | undefined;
|
|
623
|
-
encryption?: IProviderEncryptionOptions;
|
|
624
719
|
private _isAccumulating;
|
|
625
720
|
private _inFlightLoadMore;
|
|
721
|
+
private _lastDataReceivedPromise;
|
|
626
722
|
constructor(options?: IDataProviderOptions);
|
|
627
723
|
loadMore(): Promise<void>;
|
|
628
724
|
setEncryption(encryption?: IProviderEncryptionOptions): void;
|
|
@@ -696,7 +792,10 @@ declare class CTreeClientDataProvider<TRow extends TDataRow = TDataRow> extends
|
|
|
696
792
|
private get _nodeMap();
|
|
697
793
|
private get _sortedNodeIds();
|
|
698
794
|
constructor(options?: ITreeDataProviderOptions);
|
|
699
|
-
|
|
795
|
+
protected _applyTreeData(rows: TRow[]): void;
|
|
796
|
+
setData(data: TRow[]): Promise<void> | void;
|
|
797
|
+
protected _setDataEncrypted(data: TRow[]): Promise<void>;
|
|
798
|
+
setDataChunked(data: TRow[], options?: ISetDataChunkedOptions): Promise<void>;
|
|
700
799
|
private buildStaticNodes;
|
|
701
800
|
protected onSortUpdated(): void;
|
|
702
801
|
setSortList(sortList: IDataSort[], immediate?: boolean): void;
|
|
@@ -735,7 +834,7 @@ declare class CAPITreeClientDataProvider<TRow extends TDataRow = TDataRow> exten
|
|
|
735
834
|
cacheStrategy: ECacheStrategy | null;
|
|
736
835
|
cacheLifetime: number;
|
|
737
836
|
refreshOnMutation: boolean | undefined;
|
|
738
|
-
|
|
837
|
+
private _lastDataReceivedPromise;
|
|
739
838
|
constructor(options?: ITreeDataProviderOptions);
|
|
740
839
|
setEncryption(encryption?: IProviderEncryptionOptions): void;
|
|
741
840
|
clearEncryption(): void;
|
|
@@ -1291,6 +1390,7 @@ declare const filterData: (data: any[], filter: IDataFilter, options?: {
|
|
|
1291
1390
|
idKey: string;
|
|
1292
1391
|
parentKey: string;
|
|
1293
1392
|
};
|
|
1393
|
+
rowEvaluator?: (row: any) => boolean;
|
|
1294
1394
|
}) => {
|
|
1295
1395
|
results: any[];
|
|
1296
1396
|
expandedNodes?: Set<string | number>;
|
|
@@ -1309,6 +1409,7 @@ declare const useFilterLogic: () => {
|
|
|
1309
1409
|
idKey: string;
|
|
1310
1410
|
parentKey: string;
|
|
1311
1411
|
};
|
|
1412
|
+
rowEvaluator?: (row: any) => boolean;
|
|
1312
1413
|
}) => {
|
|
1313
1414
|
results: any[];
|
|
1314
1415
|
expandedNodes?: Set<string | number>;
|
|
@@ -1937,5 +2038,5 @@ declare function getKeyIdentifier(keyProvider?: any, defaultKey?: any): string;
|
|
|
1937
2038
|
*/
|
|
1938
2039
|
declare function isEncrypted(payload: any): boolean;
|
|
1939
2040
|
|
|
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 };
|
|
2041
|
+
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 };
|
|
2042
|
+
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.ts
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) */
|
|
@@ -500,17 +504,116 @@ declare abstract class ADataProvider<TRow = TDataRow> {
|
|
|
500
504
|
cancelPending(): void;
|
|
501
505
|
}
|
|
502
506
|
|
|
503
|
-
|
|
507
|
+
interface ISetDataChunkedOptions {
|
|
508
|
+
chunkSize?: number;
|
|
509
|
+
onProgress?: (progress: {
|
|
510
|
+
processed: number;
|
|
511
|
+
total: number;
|
|
512
|
+
percent: number;
|
|
513
|
+
}) => void;
|
|
514
|
+
yieldStrategy?: 'microtask' | 'timeout';
|
|
515
|
+
}
|
|
516
|
+
declare function getCipherProvider(encryption?: IProviderEncryptionOptions): IEncryptionProvider | undefined;
|
|
517
|
+
declare function clearCachedCipherProvider(encryption?: IProviderEncryptionOptions): void;
|
|
518
|
+
declare function isDataEncrypted(provider?: IEncryptionProvider, data?: any): boolean;
|
|
519
|
+
declare function buildEncryptionContext(encryption?: IProviderEncryptionOptions, url?: string, _defaultIdKey?: string): IEncryptionContext;
|
|
520
|
+
declare function decryptPageRows<T = any>(rows: T[], encryption?: IProviderEncryptionOptions, apiUrl?: string, idKey?: string): Promise<{
|
|
521
|
+
rows: T[];
|
|
522
|
+
decrypted: boolean;
|
|
523
|
+
}>;
|
|
524
|
+
declare function encryptRows<T = any>(rows: T[], encryption?: IProviderEncryptionOptions, apiUrl?: string, idKey?: string): Promise<T[]>;
|
|
525
|
+
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[]>;
|
|
526
|
+
|
|
527
|
+
/**
|
|
528
|
+
* Normalizes text for consistent deterministic blind indexing (lowercased, trimmed, NFKC normalized).
|
|
529
|
+
*/
|
|
530
|
+
declare function normalizeIndexTerm(value: any): string;
|
|
531
|
+
/**
|
|
532
|
+
* Extracts 3-character trigrams from a string for substring search.
|
|
533
|
+
*/
|
|
534
|
+
declare function extractTrigrams(value: any): string[];
|
|
535
|
+
interface ISearchIndexRowEntry {
|
|
536
|
+
token: string;
|
|
537
|
+
trigrams: Set<string>;
|
|
538
|
+
}
|
|
539
|
+
/**
|
|
540
|
+
* CSearchIndex provides deterministic blind indexing (HMAC-SHA256) and trigram token sets
|
|
541
|
+
* for client-side privacy-preserving searching and filtering across encrypted fields without decryption.
|
|
542
|
+
*/
|
|
543
|
+
declare class CSearchIndex {
|
|
544
|
+
private _hmacKey?;
|
|
545
|
+
private _rawKeyMaterial;
|
|
546
|
+
private _index;
|
|
547
|
+
private _indexedFields;
|
|
548
|
+
constructor(keyMaterial: TKeyProvider, fields?: string[]);
|
|
549
|
+
get indexedFields(): readonly string[];
|
|
550
|
+
setFields(fields: string[]): void;
|
|
551
|
+
private _getHmacKey;
|
|
552
|
+
/**
|
|
553
|
+
* Computes a deterministic HMAC-SHA256 token for a term.
|
|
554
|
+
*/
|
|
555
|
+
computeToken(term: any): Promise<string>;
|
|
556
|
+
/**
|
|
557
|
+
* Computes HMAC-SHA256 tokens for all trigrams of a term.
|
|
558
|
+
*/
|
|
559
|
+
computeTrigramTokens(term: any): Promise<Set<string>>;
|
|
560
|
+
/**
|
|
561
|
+
* Indexes a single row before its fields are encrypted.
|
|
562
|
+
*/
|
|
563
|
+
indexRow(row: any, plaintextFields?: Record<string, any>): Promise<void>;
|
|
564
|
+
/**
|
|
565
|
+
* Indexes an array of rows.
|
|
566
|
+
*/
|
|
567
|
+
indexRows(rows: any[], plaintextMap?: Map<any, Record<string, any>>): Promise<void>;
|
|
568
|
+
/**
|
|
569
|
+
* Returns the index entry for a given row and field.
|
|
570
|
+
*/
|
|
571
|
+
getEntry(row: any, field: string): ISearchIndexRowEntry | undefined;
|
|
572
|
+
/**
|
|
573
|
+
* Evaluates whether a row matches an exact or substring query on an indexed encrypted field.
|
|
574
|
+
*/
|
|
575
|
+
evaluateField(operator: string, row: any, field: string, filterValue: any): Promise<boolean | null>;
|
|
576
|
+
/**
|
|
577
|
+
* Pre-computes query tokens for an active filter, returning a high-performance synchronous
|
|
578
|
+
* evaluator function suitable for row-by-row filtering in memory.
|
|
579
|
+
*/
|
|
580
|
+
createFilterEvaluator(filter: IDataFilter): Promise<((row: any) => boolean) | null>;
|
|
581
|
+
}
|
|
582
|
+
|
|
583
|
+
declare abstract class AEncryptedClientProvider<TRow = TDataRow> extends ADataProvider<TRow> {
|
|
584
|
+
encryption?: IProviderEncryptionOptions;
|
|
585
|
+
protected _searchIndex?: CSearchIndex;
|
|
586
|
+
constructor(options?: IDataProviderOptions);
|
|
587
|
+
get isEncryptionEnabled(): boolean;
|
|
588
|
+
get searchIndex(): CSearchIndex | undefined;
|
|
589
|
+
private _warmupKeyAsync;
|
|
590
|
+
protected _initSearchIndex(): void;
|
|
591
|
+
setEncryption(encryption?: IProviderEncryptionOptions): void;
|
|
592
|
+
clearEncryption(): void;
|
|
593
|
+
protected encryptRows(rows: TRow[]): Promise<TRow[]>;
|
|
594
|
+
protected encryptRowsChunked(rows: TRow[], options?: ISetDataChunkedOptions): Promise<TRow[]>;
|
|
595
|
+
protected decryptRows(rows: TRow[]): Promise<{
|
|
596
|
+
rows: TRow[];
|
|
597
|
+
decrypted: boolean;
|
|
598
|
+
}>;
|
|
599
|
+
abstract setData(data: TRow[]): Promise<void> | void;
|
|
600
|
+
setDataChunked(data: TRow[], options?: ISetDataChunkedOptions): Promise<void>;
|
|
601
|
+
}
|
|
602
|
+
|
|
603
|
+
declare class CFlatClientDataProvider<TRow = TDataRow> extends AEncryptedClientProvider<TRow> {
|
|
504
604
|
private _allData;
|
|
505
605
|
filteredData: TRow[];
|
|
506
606
|
private _rowMap;
|
|
507
|
-
|
|
508
|
-
|
|
607
|
+
protected _filterDirty: boolean;
|
|
608
|
+
protected _sortDirty: boolean;
|
|
609
|
+
protected _activeFilterEvaluator: ((row: any) => boolean) | null;
|
|
509
610
|
constructor(options?: IDataProviderOptions);
|
|
510
611
|
get allData(): TRow[];
|
|
511
612
|
set allData(data: TRow[]);
|
|
512
613
|
get rowMap(): readonly TRow[];
|
|
513
|
-
setData(data: TRow[]): void;
|
|
614
|
+
setData(data: TRow[]): Promise<void> | void;
|
|
615
|
+
protected _setDataEncrypted(data: TRow[]): Promise<void>;
|
|
616
|
+
setDataChunked(data: TRow[], options?: ISetDataChunkedOptions): Promise<void>;
|
|
514
617
|
protected onFilterUpdated(): void;
|
|
515
618
|
protected onSortUpdated(): void;
|
|
516
619
|
setFilter(filter: IDataFilter | null, immediate?: boolean): void;
|
|
@@ -523,6 +626,7 @@ declare class CFlatClientDataProvider<TRow = TDataRow> extends ADataProvider<TRo
|
|
|
523
626
|
disableCache?: boolean;
|
|
524
627
|
}): Promise<void>;
|
|
525
628
|
refresh(hardRefresh?: boolean): Promise<void>;
|
|
629
|
+
private _computeFilteredAndSorted;
|
|
526
630
|
loadPageData(): Promise<void>;
|
|
527
631
|
}
|
|
528
632
|
|
|
@@ -589,14 +693,6 @@ declare class RequestProvider {
|
|
|
589
693
|
request<T>(url: string, options?: IRequestOptions): Promise<T>;
|
|
590
694
|
}
|
|
591
695
|
|
|
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
696
|
declare abstract class AAPIDataProvider {
|
|
601
697
|
apiUrl: string;
|
|
602
698
|
cacheStrategy: ECacheStrategy | null;
|
|
@@ -620,9 +716,9 @@ declare class CAPIFlatClientDataProvider<TRow = TDataRow> extends CFlatClientDat
|
|
|
620
716
|
cacheStrategy: ECacheStrategy | null;
|
|
621
717
|
cacheLifetime: number;
|
|
622
718
|
refreshOnMutation: boolean | undefined;
|
|
623
|
-
encryption?: IProviderEncryptionOptions;
|
|
624
719
|
private _isAccumulating;
|
|
625
720
|
private _inFlightLoadMore;
|
|
721
|
+
private _lastDataReceivedPromise;
|
|
626
722
|
constructor(options?: IDataProviderOptions);
|
|
627
723
|
loadMore(): Promise<void>;
|
|
628
724
|
setEncryption(encryption?: IProviderEncryptionOptions): void;
|
|
@@ -696,7 +792,10 @@ declare class CTreeClientDataProvider<TRow extends TDataRow = TDataRow> extends
|
|
|
696
792
|
private get _nodeMap();
|
|
697
793
|
private get _sortedNodeIds();
|
|
698
794
|
constructor(options?: ITreeDataProviderOptions);
|
|
699
|
-
|
|
795
|
+
protected _applyTreeData(rows: TRow[]): void;
|
|
796
|
+
setData(data: TRow[]): Promise<void> | void;
|
|
797
|
+
protected _setDataEncrypted(data: TRow[]): Promise<void>;
|
|
798
|
+
setDataChunked(data: TRow[], options?: ISetDataChunkedOptions): Promise<void>;
|
|
700
799
|
private buildStaticNodes;
|
|
701
800
|
protected onSortUpdated(): void;
|
|
702
801
|
setSortList(sortList: IDataSort[], immediate?: boolean): void;
|
|
@@ -735,7 +834,7 @@ declare class CAPITreeClientDataProvider<TRow extends TDataRow = TDataRow> exten
|
|
|
735
834
|
cacheStrategy: ECacheStrategy | null;
|
|
736
835
|
cacheLifetime: number;
|
|
737
836
|
refreshOnMutation: boolean | undefined;
|
|
738
|
-
|
|
837
|
+
private _lastDataReceivedPromise;
|
|
739
838
|
constructor(options?: ITreeDataProviderOptions);
|
|
740
839
|
setEncryption(encryption?: IProviderEncryptionOptions): void;
|
|
741
840
|
clearEncryption(): void;
|
|
@@ -1291,6 +1390,7 @@ declare const filterData: (data: any[], filter: IDataFilter, options?: {
|
|
|
1291
1390
|
idKey: string;
|
|
1292
1391
|
parentKey: string;
|
|
1293
1392
|
};
|
|
1393
|
+
rowEvaluator?: (row: any) => boolean;
|
|
1294
1394
|
}) => {
|
|
1295
1395
|
results: any[];
|
|
1296
1396
|
expandedNodes?: Set<string | number>;
|
|
@@ -1309,6 +1409,7 @@ declare const useFilterLogic: () => {
|
|
|
1309
1409
|
idKey: string;
|
|
1310
1410
|
parentKey: string;
|
|
1311
1411
|
};
|
|
1412
|
+
rowEvaluator?: (row: any) => boolean;
|
|
1312
1413
|
}) => {
|
|
1313
1414
|
results: any[];
|
|
1314
1415
|
expandedNodes?: Set<string | number>;
|
|
@@ -1937,5 +2038,5 @@ declare function getKeyIdentifier(keyProvider?: any, defaultKey?: any): string;
|
|
|
1937
2038
|
*/
|
|
1938
2039
|
declare function isEncrypted(payload: any): boolean;
|
|
1939
2040
|
|
|
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 };
|
|
2041
|
+
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 };
|
|
2042
|
+
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 };
|