@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.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
- declare class CFlatClientDataProvider<TRow = TDataRow> extends ADataProvider<TRow> {
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
- private _filterDirty;
508
- private _sortDirty;
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
- setData(data: TRow[]): void;
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
- encryption?: IProviderEncryptionOptions;
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
- declare class CFlatClientDataProvider<TRow = TDataRow> extends ADataProvider<TRow> {
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
- private _filterDirty;
508
- private _sortDirty;
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
- setData(data: TRow[]): void;
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
- encryption?: IProviderEncryptionOptions;
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
- declare class CFlatClientDataProvider<TRow = TDataRow> extends ADataProvider<TRow> {
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
- private _filterDirty;
508
- private _sortDirty;
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
- setData(data: TRow[]): void;
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
- encryption?: IProviderEncryptionOptions;
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 };