@katlux/providers 0.1.1-alpha.106 → 0.1.1-alpha.111

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