@katlux/providers 0.1.1-alpha.100 → 0.1.1-alpha.101
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 +1480 -747
- package/dist/index.d.cts +199 -122
- package/dist/index.d.mts +199 -122
- package/dist/index.d.ts +199 -122
- package/dist/index.mjs +1440 -709
- package/package.json +1 -20
- package/dist/nuxtAppCompat.cjs +0 -35
- package/dist/nuxtAppCompat.d.cts +0 -21
- package/dist/nuxtAppCompat.d.mts +0 -21
- package/dist/nuxtAppCompat.d.ts +0 -21
- package/dist/nuxtAppCompat.mjs +0 -27
- package/dist/nuxtAppCompat.server.cjs +0 -45
- package/dist/nuxtAppCompat.server.d.cts +0 -21
- package/dist/nuxtAppCompat.server.d.mts +0 -21
- package/dist/nuxtAppCompat.server.d.ts +0 -21
- package/dist/nuxtAppCompat.server.mjs +0 -37
- package/dist/shared/providers.C8C1HrDy.mjs +0 -228
- package/dist/shared/providers.CxZeMH3Y.cjs +0 -241
package/dist/index.d.cts
CHANGED
|
@@ -69,14 +69,13 @@ interface IRequestOptions {
|
|
|
69
69
|
query?: Record<string, any>;
|
|
70
70
|
deduplicate?: boolean;
|
|
71
71
|
context?: any;
|
|
72
|
-
/** @deprecated Use `context` instead */
|
|
73
|
-
nuxtApp?: any;
|
|
74
72
|
disableCache?: boolean;
|
|
75
73
|
queue?: boolean;
|
|
76
74
|
queueLabel?: string;
|
|
77
75
|
label?: string;
|
|
78
76
|
tags?: string[];
|
|
79
77
|
signal?: AbortSignal;
|
|
78
|
+
_generation?: number;
|
|
80
79
|
}
|
|
81
80
|
/** Queue persistence backend with automatic fallback: IndexedDB → LocalStorage → Memory */
|
|
82
81
|
declare enum EQueueStorage {
|
|
@@ -122,19 +121,20 @@ type TDataRow = {
|
|
|
122
121
|
interface IDataFilter {
|
|
123
122
|
operator: EDataFilterOperator;
|
|
124
123
|
field: TDataRow | IDataFilter[];
|
|
125
|
-
active:
|
|
124
|
+
active: boolean;
|
|
126
125
|
}
|
|
127
126
|
interface IDataSort {
|
|
128
127
|
field: string;
|
|
129
128
|
direction: 'asc' | 'desc';
|
|
130
129
|
}
|
|
131
|
-
interface IDataResult {
|
|
130
|
+
interface IDataResult<TRow = TDataRow> {
|
|
132
131
|
rowCount: number;
|
|
133
|
-
rows:
|
|
132
|
+
rows: TRow[];
|
|
134
133
|
}
|
|
135
|
-
type TPageDataHandler = (currentPage: number, pageSize: number, filter: IDataFilter, sortList: IDataSort[], options?: {
|
|
134
|
+
type TPageDataHandler<TRow = TDataRow> = (currentPage: number, pageSize: number, filter: IDataFilter, sortList: IDataSort[], options?: {
|
|
136
135
|
disableCache?: boolean;
|
|
137
|
-
|
|
136
|
+
signal?: AbortSignal;
|
|
137
|
+
}) => IDataResult<TRow> | Promise<IDataResult<TRow>>;
|
|
138
138
|
interface IDataProviderOptions {
|
|
139
139
|
idKey?: string;
|
|
140
140
|
filter?: IDataFilter;
|
|
@@ -147,29 +147,54 @@ interface IDataProviderOptions {
|
|
|
147
147
|
cacheLifetime?: number;
|
|
148
148
|
deduplicate?: boolean;
|
|
149
149
|
context?: any;
|
|
150
|
-
|
|
151
|
-
nuxtApp?: any;
|
|
150
|
+
contextKey?: string;
|
|
152
151
|
urlPageParam?: string;
|
|
153
152
|
refreshOnMutation?: boolean;
|
|
154
153
|
}
|
|
155
154
|
|
|
156
|
-
interface ITreeNode {
|
|
157
|
-
data:
|
|
155
|
+
interface ITreeNode<TRow = TDataRow> {
|
|
156
|
+
data: TRow;
|
|
158
157
|
id: string | number;
|
|
159
158
|
parentId: string | number | null;
|
|
160
159
|
depth: number;
|
|
161
160
|
hasChildren: boolean;
|
|
162
161
|
isExpanded: boolean;
|
|
163
162
|
}
|
|
164
|
-
interface ITreeNodeStatic {
|
|
165
|
-
data:
|
|
163
|
+
interface ITreeNodeStatic<TRow = TDataRow> {
|
|
164
|
+
data: TRow;
|
|
166
165
|
id: string | number;
|
|
167
166
|
parentId: string | number | null;
|
|
168
167
|
depth: number;
|
|
169
168
|
hasChildren: boolean;
|
|
170
169
|
childIds?: (string | number)[];
|
|
171
170
|
}
|
|
171
|
+
/**
|
|
172
|
+
* A row enriched with tree metadata by a tree data provider
|
|
173
|
+
*/
|
|
174
|
+
type TTreeRow<TRow = TDataRow> = TRow & {
|
|
175
|
+
id?: string | number;
|
|
176
|
+
__treeNode?: ITreeNode<TRow>;
|
|
177
|
+
depth?: number;
|
|
178
|
+
hasChildren?: boolean;
|
|
179
|
+
isExpanded?: boolean;
|
|
180
|
+
parentId?: string | number | null;
|
|
181
|
+
};
|
|
172
182
|
type TreePaginationMode = 'all' | 'root';
|
|
183
|
+
/**
|
|
184
|
+
* Interface describing a DataProvider with hierarchical tree capabilities
|
|
185
|
+
*/
|
|
186
|
+
interface ITreeDataProvider<TRow = TDataRow> {
|
|
187
|
+
toggleNode(id: string | number): void;
|
|
188
|
+
expandedNodes: Set<string | number> | {
|
|
189
|
+
value: Set<string | number>;
|
|
190
|
+
};
|
|
191
|
+
parentKey?: string;
|
|
192
|
+
expandedByDefault?: boolean;
|
|
193
|
+
paginateBy?: TreePaginationMode;
|
|
194
|
+
collapseAll?(): void;
|
|
195
|
+
expandAll?(): void;
|
|
196
|
+
isExpanded?(id: string | number): boolean;
|
|
197
|
+
}
|
|
173
198
|
interface ITreeDataProviderOptions extends IDataProviderOptions {
|
|
174
199
|
parentKey?: string;
|
|
175
200
|
idKey?: string;
|
|
@@ -180,7 +205,7 @@ interface ITreeDataProviderOptions extends IDataProviderOptions {
|
|
|
180
205
|
* Tree-specific page data handler that includes tree parameters
|
|
181
206
|
* Server handles tree building, visibility, and pagination
|
|
182
207
|
*/
|
|
183
|
-
type TTreePageDataHandler = (currentPage: number, pageSize: number, filter: IDataFilter, sortList: IDataSort[], treeParams: {
|
|
208
|
+
type TTreePageDataHandler<TRow = TDataRow> = (currentPage: number, pageSize: number, filter: IDataFilter, sortList: IDataSort[], treeParams: {
|
|
184
209
|
expandedNodes: (string | number)[] | Set<string | number>;
|
|
185
210
|
parentKey: string;
|
|
186
211
|
idKey: string;
|
|
@@ -188,7 +213,7 @@ type TTreePageDataHandler = (currentPage: number, pageSize: number, filter: IDat
|
|
|
188
213
|
expandedByDefault: boolean;
|
|
189
214
|
}, options?: {
|
|
190
215
|
disableCache?: boolean;
|
|
191
|
-
}) => IDataResult | Promise<IDataResult
|
|
216
|
+
}) => IDataResult<TRow> | Promise<IDataResult<TRow>>;
|
|
192
217
|
interface KProductItemData {
|
|
193
218
|
id: string | number;
|
|
194
219
|
title: string;
|
|
@@ -205,21 +230,31 @@ interface KProductRowAction {
|
|
|
205
230
|
color?: 'primary' | 'danger' | 'success' | 'warning' | 'info' | 'light' | 'dark' | 'default';
|
|
206
231
|
}
|
|
207
232
|
|
|
208
|
-
declare abstract class ADataProvider {
|
|
233
|
+
declare abstract class ADataProvider<TRow = TDataRow> {
|
|
209
234
|
idKey: string;
|
|
210
|
-
pageData:
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
235
|
+
pageData: TRow[];
|
|
236
|
+
protected _rowCount: number;
|
|
237
|
+
get rowCount(): number;
|
|
238
|
+
set rowCount(val: number);
|
|
239
|
+
protected _loading: boolean;
|
|
240
|
+
get loading(): boolean;
|
|
241
|
+
set loading(val: boolean);
|
|
242
|
+
protected _initialLoad: boolean;
|
|
243
|
+
get initialLoad(): boolean;
|
|
244
|
+
set initialLoad(val: boolean);
|
|
245
|
+
protected _error: any;
|
|
246
|
+
get error(): any;
|
|
247
|
+
set error(val: any);
|
|
215
248
|
SSR: boolean;
|
|
216
249
|
deduplicate: boolean;
|
|
217
250
|
context: any;
|
|
218
|
-
get nuxtApp(): any;
|
|
219
|
-
set nuxtApp(val: any);
|
|
220
251
|
urlPageParam: string;
|
|
221
|
-
|
|
222
|
-
|
|
252
|
+
protected _selectedRows: TRow[];
|
|
253
|
+
get selectedRows(): TRow[];
|
|
254
|
+
set selectedRows(val: TRow[]);
|
|
255
|
+
protected _selectAll: boolean;
|
|
256
|
+
get selectAll(): boolean;
|
|
257
|
+
set selectAll(val: boolean);
|
|
223
258
|
protected _currentPage: number;
|
|
224
259
|
protected _pageSize: number;
|
|
225
260
|
protected _filter: IDataFilter | null;
|
|
@@ -234,11 +269,19 @@ declare abstract class ADataProvider {
|
|
|
234
269
|
set sortList(s: IDataSort[]);
|
|
235
270
|
private _listeners;
|
|
236
271
|
private _debouncedFilterLoad;
|
|
272
|
+
private _debouncedSortLoad;
|
|
237
273
|
constructor(options?: IDataProviderOptions);
|
|
274
|
+
private _batchDepth;
|
|
275
|
+
private _pendingNotify;
|
|
276
|
+
private _isNotifying;
|
|
277
|
+
/**
|
|
278
|
+
* Batches multiple state updates so notify() fires exactly once upon completion.
|
|
279
|
+
*/
|
|
280
|
+
batchUpdates<R>(fn: () => R): R;
|
|
238
281
|
subscribe(listener: TDataProviderListener<this>): TUnsubscribe;
|
|
239
282
|
notify(): void;
|
|
240
283
|
getState(): {
|
|
241
|
-
pageData:
|
|
284
|
+
pageData: TRow[];
|
|
242
285
|
rowCount: number;
|
|
243
286
|
currentPage: number;
|
|
244
287
|
pageSize: number;
|
|
@@ -247,27 +290,28 @@ declare abstract class ADataProvider {
|
|
|
247
290
|
error: any;
|
|
248
291
|
filter: IDataFilter | null;
|
|
249
292
|
sortList: IDataSort[];
|
|
250
|
-
selectedRows:
|
|
293
|
+
selectedRows: TRow[];
|
|
251
294
|
selectAll: boolean;
|
|
252
295
|
};
|
|
253
296
|
setFilter(filter: IDataFilter | null): void;
|
|
254
|
-
setSortList(sortList: IDataSort[]): void;
|
|
297
|
+
setSortList(sortList: IDataSort[], immediate?: boolean): void;
|
|
255
298
|
setCurrentPage(currentPage: number): void;
|
|
256
299
|
setPageSize(pageSize: number): void;
|
|
257
|
-
setSelectedRows(rows:
|
|
300
|
+
setSelectedRows(rows: TRow[]): void;
|
|
258
301
|
setSelectAll(val: boolean): void;
|
|
259
302
|
abstract loadPageData(options?: {
|
|
260
303
|
disableCache?: boolean;
|
|
261
304
|
signal?: AbortSignal;
|
|
262
305
|
}): void | Promise<void>;
|
|
263
306
|
refresh(hardRefresh?: boolean): Promise<void>;
|
|
307
|
+
cancelPending(): void;
|
|
264
308
|
}
|
|
265
309
|
|
|
266
|
-
declare class CFlatClientDataProvider extends ADataProvider {
|
|
267
|
-
allData:
|
|
268
|
-
filteredData:
|
|
310
|
+
declare class CFlatClientDataProvider<TRow = TDataRow> extends ADataProvider<TRow> {
|
|
311
|
+
allData: TRow[];
|
|
312
|
+
filteredData: TRow[];
|
|
269
313
|
constructor(options?: IDataProviderOptions);
|
|
270
|
-
setData(data:
|
|
314
|
+
setData(data: TRow[]): void;
|
|
271
315
|
refreshData(options?: {
|
|
272
316
|
disableCache?: boolean;
|
|
273
317
|
}): Promise<void>;
|
|
@@ -277,12 +321,12 @@ declare class CFlatClientDataProvider extends ADataProvider {
|
|
|
277
321
|
|
|
278
322
|
declare abstract class ACacheProvider {
|
|
279
323
|
constructor();
|
|
280
|
-
abstract getKeyList(
|
|
281
|
-
abstract get<T>(key: string,
|
|
282
|
-
abstract set<T>(key: string, data: T, lifetime: number,
|
|
283
|
-
abstract remove(key: string,
|
|
284
|
-
abstract removeByPrefix(prefix: string,
|
|
285
|
-
abstract getRemainingTime(key: string,
|
|
324
|
+
abstract getKeyList(context?: any): Array<string> | Promise<Array<string>>;
|
|
325
|
+
abstract get<T>(key: string, context?: any): Promise<T | null>;
|
|
326
|
+
abstract set<T>(key: string, data: T, lifetime: number, context?: any): Promise<void>;
|
|
327
|
+
abstract remove(key: string, context?: any): Promise<void>;
|
|
328
|
+
abstract removeByPrefix(prefix: string, context?: any): Promise<void>;
|
|
329
|
+
abstract getRemainingTime(key: string, context?: any): Promise<number | null>;
|
|
286
330
|
abstract cleanupExpired(): Promise<void>;
|
|
287
331
|
}
|
|
288
332
|
|
|
@@ -306,12 +350,16 @@ declare class RequestProvider {
|
|
|
306
350
|
setCacheProvider(provider?: ACacheProvider | ECacheStrategy): void;
|
|
307
351
|
setCacheLifetime(lifetime: number): void;
|
|
308
352
|
setDeduplicate(deduplicate: boolean): void;
|
|
309
|
-
onDataReceived(callback: (data: any) => void): void;
|
|
353
|
+
onDataReceived(callback: (data: any, generation?: number) => void): void;
|
|
354
|
+
private invokeDataReceivedCallback;
|
|
310
355
|
hasLastUrl(): boolean;
|
|
311
356
|
refresh(hardRefresh?: boolean): Promise<any>;
|
|
357
|
+
private resolveContext;
|
|
358
|
+
private getInFlightMap;
|
|
312
359
|
private getUniqueKey;
|
|
313
360
|
registerRequest<T>(url: string, options?: IRequestOptions): Promise<T>;
|
|
314
361
|
static executeAll(): void;
|
|
362
|
+
private isSameOriginUrl;
|
|
315
363
|
request<T>(url: string, options?: IRequestOptions): Promise<T>;
|
|
316
364
|
}
|
|
317
365
|
|
|
@@ -328,7 +376,7 @@ declare abstract class AAPIDataProvider {
|
|
|
328
376
|
abstract delete(items: any[]): Promise<void>;
|
|
329
377
|
}
|
|
330
378
|
|
|
331
|
-
declare class CAPIFlatClientDataProvider extends CFlatClientDataProvider implements AAPIDataProvider {
|
|
379
|
+
declare class CAPIFlatClientDataProvider<TRow = TDataRow> extends CFlatClientDataProvider<TRow> implements AAPIDataProvider {
|
|
332
380
|
apiUrl: string;
|
|
333
381
|
contextKey: string;
|
|
334
382
|
requestProvider: RequestProvider;
|
|
@@ -337,25 +385,25 @@ declare class CAPIFlatClientDataProvider extends CFlatClientDataProvider impleme
|
|
|
337
385
|
refreshOnMutation: boolean | undefined;
|
|
338
386
|
constructor(options?: IDataProviderOptions);
|
|
339
387
|
setContextKey(key: string): void;
|
|
340
|
-
|
|
388
|
+
setCacheStrategy(strategy: ECacheStrategy): void;
|
|
389
|
+
setCacheLifetime(lifetime: number): void;
|
|
341
390
|
refreshData(options?: {
|
|
342
391
|
disableCache?: boolean;
|
|
343
392
|
}): Promise<void>;
|
|
344
|
-
private _initialFetch;
|
|
345
393
|
setAPIUrl(url: string): Promise<void>;
|
|
346
394
|
create(item: any): Promise<void>;
|
|
347
395
|
update(item: any): Promise<void>;
|
|
348
396
|
delete(items: any[]): Promise<void>;
|
|
349
397
|
}
|
|
350
398
|
|
|
351
|
-
declare class CFlatServerDataProvider extends ADataProvider {
|
|
352
|
-
pageDataHandler: TPageDataHandler
|
|
399
|
+
declare class CFlatServerDataProvider<TRow = TDataRow> extends ADataProvider<TRow> {
|
|
400
|
+
pageDataHandler: TPageDataHandler<TRow>;
|
|
353
401
|
contextKey: string;
|
|
354
402
|
private latestRequestId;
|
|
355
403
|
private abortController;
|
|
356
404
|
constructor(options?: IDataProviderOptions);
|
|
357
405
|
setContextKey(key: string): void;
|
|
358
|
-
setPageDataHandler(handler: TPageDataHandler): Promise<void>;
|
|
406
|
+
setPageDataHandler(handler: TPageDataHandler<TRow>): Promise<void>;
|
|
359
407
|
loadPageData(options?: {
|
|
360
408
|
disableCache?: boolean;
|
|
361
409
|
signal?: AbortSignal;
|
|
@@ -363,12 +411,14 @@ declare class CFlatServerDataProvider extends ADataProvider {
|
|
|
363
411
|
refresh(hardRefresh?: boolean): Promise<void>;
|
|
364
412
|
}
|
|
365
413
|
|
|
366
|
-
declare class CAPIFlatServerDataProvider extends CFlatServerDataProvider implements AAPIDataProvider {
|
|
414
|
+
declare class CAPIFlatServerDataProvider<TRow = TDataRow> extends CFlatServerDataProvider<TRow> implements AAPIDataProvider {
|
|
367
415
|
apiUrl: string;
|
|
368
416
|
requestProvider: RequestProvider;
|
|
369
417
|
cacheStrategy: ECacheStrategy | null;
|
|
370
418
|
cacheLifetime: number;
|
|
371
419
|
refreshOnMutation: boolean | undefined;
|
|
420
|
+
/** Incremented on every new request; stale onDataReceived callbacks are discarded. */
|
|
421
|
+
private _requestGeneration;
|
|
372
422
|
constructor(options?: IDataProviderOptions);
|
|
373
423
|
refresh(hardRefresh?: boolean): Promise<void>;
|
|
374
424
|
refreshData(options?: {
|
|
@@ -380,7 +430,7 @@ declare class CAPIFlatServerDataProvider extends CFlatServerDataProvider impleme
|
|
|
380
430
|
update(item: any): Promise<void>;
|
|
381
431
|
}
|
|
382
432
|
|
|
383
|
-
declare class CTreeClientDataProvider extends CFlatClientDataProvider {
|
|
433
|
+
declare class CTreeClientDataProvider<TRow extends TDataRow = TDataRow> extends CFlatClientDataProvider<TRow> implements ITreeDataProvider<TRow> {
|
|
384
434
|
parentKey: string;
|
|
385
435
|
idKey: string;
|
|
386
436
|
expandedByDefault: boolean;
|
|
@@ -394,17 +444,17 @@ declare class CTreeClientDataProvider extends CFlatClientDataProvider {
|
|
|
394
444
|
private get _nodeMap();
|
|
395
445
|
private get _sortedNodeIds();
|
|
396
446
|
constructor(options?: ITreeDataProviderOptions);
|
|
397
|
-
setData(data:
|
|
447
|
+
setData(data: TRow[]): void;
|
|
398
448
|
private buildStaticNodes;
|
|
399
449
|
private computeSortedIds;
|
|
400
450
|
private isNodeVisible;
|
|
401
451
|
private paginateNodes;
|
|
402
452
|
private updatePageData;
|
|
403
453
|
loadPageData(): Promise<void>;
|
|
404
|
-
get treeNodes(): ITreeNode[];
|
|
405
|
-
get visibleRows(): ITreeNode[];
|
|
406
|
-
getAllNodes(): ITreeNode[];
|
|
407
|
-
getFlatNodes(): ITreeNode[];
|
|
454
|
+
get treeNodes(): ITreeNode<TRow>[];
|
|
455
|
+
get visibleRows(): ITreeNode<TRow>[];
|
|
456
|
+
getAllNodes(): ITreeNode<TRow>[];
|
|
457
|
+
getFlatNodes(): ITreeNode<TRow>[];
|
|
408
458
|
toggleNode(nodeId: string | number): void;
|
|
409
459
|
expand(nodeId: string | number): void;
|
|
410
460
|
collapse(nodeId: string | number): void;
|
|
@@ -412,12 +462,12 @@ declare class CTreeClientDataProvider extends CFlatClientDataProvider {
|
|
|
412
462
|
collapseNode(nodeId: string | number): void;
|
|
413
463
|
expandAll(): void;
|
|
414
464
|
collapseAll(): void;
|
|
415
|
-
getNode(nodeId: string | number): ITreeNode | undefined;
|
|
416
|
-
getChildren(nodeId: string | number): ITreeNode[];
|
|
417
|
-
getParent(nodeId: string | number): ITreeNode | undefined;
|
|
465
|
+
getNode(nodeId: string | number): ITreeNode<TRow> | undefined;
|
|
466
|
+
getChildren(nodeId: string | number): ITreeNode<TRow>[];
|
|
467
|
+
getParent(nodeId: string | number): ITreeNode<TRow> | undefined;
|
|
418
468
|
}
|
|
419
469
|
|
|
420
|
-
declare class CAPITreeClientDataProvider extends CTreeClientDataProvider implements AAPIDataProvider {
|
|
470
|
+
declare class CAPITreeClientDataProvider<TRow extends TDataRow = TDataRow> extends CTreeClientDataProvider<TRow> implements AAPIDataProvider {
|
|
421
471
|
apiUrl: string;
|
|
422
472
|
contextKey: string;
|
|
423
473
|
requestProvider: RequestProvider;
|
|
@@ -446,17 +496,17 @@ declare class CAPITreeClientDataProvider extends CTreeClientDataProvider impleme
|
|
|
446
496
|
* - Server returns already-paginated visible rows with __treeNode metadata
|
|
447
497
|
* - No allData - server handles everything
|
|
448
498
|
*/
|
|
449
|
-
declare class CTreeServerDataProvider extends ADataProvider {
|
|
499
|
+
declare class CTreeServerDataProvider<TRow = TDataRow> extends ADataProvider<TRow> implements ITreeDataProvider<TRow> {
|
|
450
500
|
parentKey: string;
|
|
451
501
|
idKey: string;
|
|
452
502
|
expandedByDefault: boolean;
|
|
453
503
|
paginateBy: TreePaginationMode;
|
|
454
504
|
expandedNodes: Set<string | number>;
|
|
455
|
-
pageDataHandler: TTreePageDataHandler | null;
|
|
505
|
+
pageDataHandler: TTreePageDataHandler<TRow> | null;
|
|
456
506
|
contextKey: string;
|
|
457
507
|
constructor(options?: ITreeDataProviderOptions);
|
|
458
508
|
setContextKey(key: string): void;
|
|
459
|
-
setPageDataHandler(handler: TTreePageDataHandler): Promise<void>;
|
|
509
|
+
setPageDataHandler(handler: TTreePageDataHandler<TRow>): Promise<void>;
|
|
460
510
|
private latestRequestId;
|
|
461
511
|
private abortController;
|
|
462
512
|
/**
|
|
@@ -483,12 +533,14 @@ declare class CTreeServerDataProvider extends ADataProvider {
|
|
|
483
533
|
* - Request management (caching, deduplication)
|
|
484
534
|
* - Automatic tree parameter serialization in query
|
|
485
535
|
*/
|
|
486
|
-
declare class CAPITreeServerDataProvider extends CTreeServerDataProvider implements AAPIDataProvider {
|
|
536
|
+
declare class CAPITreeServerDataProvider<TRow = TDataRow> extends CTreeServerDataProvider<TRow> implements AAPIDataProvider {
|
|
487
537
|
apiUrl: string;
|
|
488
538
|
requestProvider: RequestProvider;
|
|
489
539
|
cacheStrategy: ECacheStrategy | null;
|
|
490
540
|
cacheLifetime: number;
|
|
491
541
|
refreshOnMutation: boolean | undefined;
|
|
542
|
+
/** Incremented on every new request; stale onDataReceived callbacks are discarded. */
|
|
543
|
+
private _requestGeneration;
|
|
492
544
|
constructor(options?: ITreeDataProviderOptions);
|
|
493
545
|
refresh(hardRefresh?: boolean): Promise<void>;
|
|
494
546
|
refreshData(options?: {
|
|
@@ -525,6 +577,7 @@ declare class KatluxIndexedDB {
|
|
|
525
577
|
* Safe to call multiple times — always resolves to the same instance.
|
|
526
578
|
*/
|
|
527
579
|
static open(): Promise<IDBDatabase>;
|
|
580
|
+
private static upgradeToVersion;
|
|
528
581
|
/**
|
|
529
582
|
* Dynamically ensures that an object store exists in the database.
|
|
530
583
|
* If not present, performs a database version bump and creates the store.
|
|
@@ -574,8 +627,12 @@ declare class CSessionCache extends ACacheProvider {
|
|
|
574
627
|
static getInstance(): CSessionCache;
|
|
575
628
|
static get storage(): Map<string, Map<string, ICacheEntry<any>>>;
|
|
576
629
|
static getSnapshot(): Map<string, Map<string, ICacheEntry<any>>>;
|
|
577
|
-
|
|
578
|
-
|
|
630
|
+
static MAX_SERVER_SESSIONS: number;
|
|
631
|
+
/**
|
|
632
|
+
* Purges expired entries across all server sessions synchronously when the storage
|
|
633
|
+
* exceeds MAX_SERVER_SESSIONS. Avoids persistent background setInterval timers on Node.js/SSR.
|
|
634
|
+
*/
|
|
635
|
+
static purgeExpiredServerSessions(): void;
|
|
579
636
|
private sessionIdCache;
|
|
580
637
|
private sessionId;
|
|
581
638
|
private readonly SESSION_ID_KEY;
|
|
@@ -588,12 +645,12 @@ declare class CSessionCache extends ACacheProvider {
|
|
|
588
645
|
* Get or create sessionId
|
|
589
646
|
*/
|
|
590
647
|
private getSessionId;
|
|
591
|
-
getKeyList(
|
|
592
|
-
get<T>(key: string,
|
|
593
|
-
set<T>(key: string, data: T, lifetime: number,
|
|
594
|
-
remove(key: string,
|
|
595
|
-
removeByPrefix(prefix: string,
|
|
596
|
-
getRemainingTime(key: string,
|
|
648
|
+
getKeyList(context?: any): Promise<Array<string>>;
|
|
649
|
+
get<T>(key: string, context?: any): Promise<T | null>;
|
|
650
|
+
set<T>(key: string, data: T, lifetime: number, context?: any): Promise<void>;
|
|
651
|
+
remove(key: string, context?: any): Promise<void>;
|
|
652
|
+
removeByPrefix(prefix: string, context?: any): Promise<void>;
|
|
653
|
+
getRemainingTime(key: string, context?: any): Promise<number | null>;
|
|
597
654
|
cleanupExpired(): Promise<void>;
|
|
598
655
|
}
|
|
599
656
|
|
|
@@ -605,12 +662,12 @@ declare class CCookieCache extends ACacheProvider {
|
|
|
605
662
|
private getCookieKey;
|
|
606
663
|
private parseKeyFromCookieName;
|
|
607
664
|
private isClient;
|
|
608
|
-
getKeyList(
|
|
609
|
-
get<T>(key: string,
|
|
610
|
-
set<T>(key: string, data: T, lifetime: number,
|
|
611
|
-
remove(key: string,
|
|
612
|
-
removeByPrefix(prefix: string,
|
|
613
|
-
getRemainingTime(key: string,
|
|
665
|
+
getKeyList(context?: any): Promise<Array<string>>;
|
|
666
|
+
get<T>(key: string, context?: any): Promise<T | null>;
|
|
667
|
+
set<T>(key: string, data: T, lifetime: number, context?: any): Promise<void>;
|
|
668
|
+
remove(key: string, context?: any): Promise<void>;
|
|
669
|
+
removeByPrefix(prefix: string, context?: any): Promise<void>;
|
|
670
|
+
getRemainingTime(key: string, context?: any): Promise<number | null>;
|
|
614
671
|
cleanupExpired(): Promise<void>;
|
|
615
672
|
}
|
|
616
673
|
|
|
@@ -620,27 +677,29 @@ declare class CLocalStorageCache extends ACacheProvider {
|
|
|
620
677
|
type: string;
|
|
621
678
|
private constructor();
|
|
622
679
|
private _hydrateFromPayload;
|
|
623
|
-
getKeyList(
|
|
624
|
-
get<T>(key: string,
|
|
625
|
-
set<T>(key: string, data: T, lifetime: number,
|
|
626
|
-
remove(key: string,
|
|
627
|
-
removeByPrefix(prefix: string,
|
|
628
|
-
getRemainingTime(key: string,
|
|
680
|
+
getKeyList(context?: any): Promise<Array<string>>;
|
|
681
|
+
get<T>(key: string, context?: any): Promise<T | null>;
|
|
682
|
+
set<T>(key: string, data: T, lifetime: number, context?: any): Promise<void>;
|
|
683
|
+
remove(key: string, context?: any): Promise<void>;
|
|
684
|
+
removeByPrefix(prefix: string, context?: any): Promise<void>;
|
|
685
|
+
getRemainingTime(key: string, context?: any): Promise<number | null>;
|
|
629
686
|
cleanupExpired(): Promise<void>;
|
|
630
687
|
}
|
|
631
688
|
|
|
632
689
|
declare class CIndexedDBCache extends ACacheProvider {
|
|
633
690
|
private static instance;
|
|
634
|
-
static
|
|
635
|
-
|
|
691
|
+
private static instances;
|
|
692
|
+
readonly storeName: string;
|
|
693
|
+
static getInstance(storeName?: string): CIndexedDBCache;
|
|
694
|
+
constructor(storeName?: string);
|
|
636
695
|
private _hydrateFromPayload;
|
|
637
696
|
private getStore;
|
|
638
|
-
getKeyList(
|
|
639
|
-
get<T>(key: string,
|
|
640
|
-
set<T>(key: string, data: T, lifetime: number,
|
|
641
|
-
remove(key: string,
|
|
642
|
-
removeByPrefix(prefix: string,
|
|
643
|
-
getRemainingTime(key: string,
|
|
697
|
+
getKeyList(context?: any): Promise<Array<string>>;
|
|
698
|
+
get<T>(key: string, context?: any): Promise<T | null>;
|
|
699
|
+
set<T>(key: string, data: T, lifetime: number, context?: any): Promise<void>;
|
|
700
|
+
remove(key: string, context?: any): Promise<void>;
|
|
701
|
+
removeByPrefix(prefix: string, context?: any): Promise<void>;
|
|
702
|
+
getRemainingTime(key: string, context?: any): Promise<number | null>;
|
|
644
703
|
cleanupExpired(): Promise<void>;
|
|
645
704
|
}
|
|
646
705
|
|
|
@@ -651,12 +710,13 @@ declare class CMemoryCache extends ACacheProvider {
|
|
|
651
710
|
static getInstance(): CMemoryCache;
|
|
652
711
|
private constructor();
|
|
653
712
|
private _hydrateFromPayload;
|
|
654
|
-
getKeyList(
|
|
655
|
-
get<T>(key: string,
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
713
|
+
getKeyList(context?: any): Promise<Array<string>>;
|
|
714
|
+
get<T>(key: string, context?: any): Promise<T | null>;
|
|
715
|
+
private isServer;
|
|
716
|
+
set<T>(key: string, data: T, lifetime: number, context?: any): Promise<void>;
|
|
717
|
+
remove(key: string, context?: any): Promise<void>;
|
|
718
|
+
removeByPrefix(prefix: string, context?: any): Promise<void>;
|
|
719
|
+
getRemainingTime(key: string, context?: any): Promise<number | null>;
|
|
660
720
|
cleanupExpired(): Promise<void>;
|
|
661
721
|
}
|
|
662
722
|
|
|
@@ -665,15 +725,26 @@ declare class CApplicationCache extends ACacheProvider {
|
|
|
665
725
|
private static _storage;
|
|
666
726
|
private static get storage();
|
|
667
727
|
static getInstance(): CApplicationCache;
|
|
728
|
+
static readonly MAX_ENTRIES = 10000;
|
|
668
729
|
static getSnapshot(): Map<string, ICacheEntry<any>>;
|
|
730
|
+
/**
|
|
731
|
+
* Purges expired entries when storage size reaches MAX_ENTRIES watermark.
|
|
732
|
+
* Avoids persistent background setInterval timers on Node.js/SSR.
|
|
733
|
+
*/
|
|
734
|
+
static purgeExpiredEntries(): void;
|
|
735
|
+
/**
|
|
736
|
+
* Clears all cached entries (used for test isolation).
|
|
737
|
+
*/
|
|
738
|
+
static clear(): void;
|
|
669
739
|
private constructor();
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
740
|
+
private isServer;
|
|
741
|
+
getKeyList(context?: any): Promise<Array<string>>;
|
|
742
|
+
get<T>(key: string, context?: any): Promise<T | null>;
|
|
743
|
+
set<T>(key: string, data: T, lifetime: number, context?: any): Promise<void>;
|
|
744
|
+
remove(key: string, context?: any): Promise<void>;
|
|
745
|
+
removeByPrefix(prefix: string, context?: any): Promise<void>;
|
|
746
|
+
getRemainingTime(key: string, context?: any): Promise<number | null>;
|
|
747
|
+
cleanupExpired(context?: any): Promise<void>;
|
|
677
748
|
}
|
|
678
749
|
|
|
679
750
|
interface IRegistryEntry {
|
|
@@ -707,6 +778,8 @@ declare class RequestProviderRegistry {
|
|
|
707
778
|
/**
|
|
708
779
|
* Register a provider with one or more tags.
|
|
709
780
|
* If the provider is already registered, its tags are updated.
|
|
781
|
+
* In SSR (Node.js), registration is skipped to prevent process-global memory leaks
|
|
782
|
+
* and cross-user multi-tenant invalidation.
|
|
710
783
|
*/
|
|
711
784
|
static register(provider: RequestProvider, tags: string[]): void;
|
|
712
785
|
/**
|
|
@@ -738,6 +811,7 @@ declare class RequestProviderRegistry {
|
|
|
738
811
|
static clear(): void;
|
|
739
812
|
}
|
|
740
813
|
|
|
814
|
+
declare const SENSITIVE_HEADER_KEYS: string[];
|
|
741
815
|
/**
|
|
742
816
|
* RequestQueue
|
|
743
817
|
*
|
|
@@ -766,11 +840,25 @@ declare class RequestQueue {
|
|
|
766
840
|
static queue: IQueuedOperation[];
|
|
767
841
|
static deadLetterQueue: IDeadLetterItem[];
|
|
768
842
|
static isFlushing: boolean;
|
|
843
|
+
private static MAX_PAYLOAD_SIZE_BYTES;
|
|
844
|
+
private static MAX_QUEUE_SIZE;
|
|
845
|
+
private static MAX_DEAD_LETTER_SIZE;
|
|
846
|
+
static setMaxPayloadSize(bytes: number): void;
|
|
847
|
+
static setMaxQueueSize(limit: number): void;
|
|
848
|
+
static setMaxDeadLetterSize(limit: number): void;
|
|
849
|
+
/**
|
|
850
|
+
* Strips sensitive headers (e.g., authorization, cookie, x-csrf-token) before persisting
|
|
851
|
+
* request options to persistent storage (IndexedDB / LocalStorage).
|
|
852
|
+
* Sensitive credentials must never be stored in plaintext in browser storage, and are
|
|
853
|
+
* instead regenerated dynamically at execution time.
|
|
854
|
+
*/
|
|
855
|
+
private static sanitizeOptions;
|
|
769
856
|
private static _subscribers;
|
|
770
857
|
static subscribe(listener: () => void): () => void;
|
|
771
858
|
static notify(): void;
|
|
772
859
|
private static adapter;
|
|
773
860
|
private static initialized;
|
|
861
|
+
private static initPromise;
|
|
774
862
|
private static _onDeadLetter;
|
|
775
863
|
private static _onFlushComplete;
|
|
776
864
|
private static _onNetworkError;
|
|
@@ -820,6 +908,7 @@ declare class RequestQueue {
|
|
|
820
908
|
* Fully permissive — causal ordering is the app's responsibility.
|
|
821
909
|
*/
|
|
822
910
|
static reorder(ids: string[]): void;
|
|
911
|
+
private static regenerateHeaders;
|
|
823
912
|
private static executeRequest;
|
|
824
913
|
private static moveToDeadLetter;
|
|
825
914
|
private static persistQueue;
|
|
@@ -895,11 +984,12 @@ declare const useSortLogic: () => {
|
|
|
895
984
|
sortData: (sortList: IDataSort[], rows: TDataRow[]) => TDataRow[];
|
|
896
985
|
};
|
|
897
986
|
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
declare const
|
|
987
|
+
interface IDebouncedFunction<T extends (...args: any[]) => any> {
|
|
988
|
+
(...args: Parameters<T>): void;
|
|
989
|
+
cancel: () => void;
|
|
990
|
+
}
|
|
991
|
+
declare const useDebounce: <T extends (...args: any[]) => any>(callback: T, delay: number) => IDebouncedFunction<T>;
|
|
992
|
+
declare const debounce: <T extends (...args: any[]) => any>(callback: T, delay: number) => IDebouncedFunction<T>;
|
|
903
993
|
|
|
904
994
|
/**
|
|
905
995
|
* defaultAdapter.ts — Framework-agnostic default implementation of ISSRHydrationAdapter.
|
|
@@ -913,19 +1003,6 @@ declare class DefaultHydrationAdapter implements ISSRHydrationAdapter {
|
|
|
913
1003
|
getSSRPayload(context?: any): Record<string, any> | null;
|
|
914
1004
|
}
|
|
915
1005
|
|
|
916
|
-
/**
|
|
917
|
-
* nuxtAdapter.ts — Nuxt 3 implementation of ISSRHydrationAdapter.
|
|
918
|
-
* Bridges to Nuxt 3's useNuxtData, useAsyncData, and useNuxtApp when running in Nuxt.
|
|
919
|
-
*/
|
|
920
|
-
|
|
921
|
-
declare class NuxtHydrationAdapter implements ISSRHydrationAdapter {
|
|
922
|
-
private fallback;
|
|
923
|
-
getSSRData<T>(key: string, context?: any): T | null;
|
|
924
|
-
fetchWithSSR<T>(key: string, fetcher: () => Promise<T>, context?: any): Promise<T | null>;
|
|
925
|
-
clearSSRData(key: string, context?: any): void;
|
|
926
|
-
getSSRPayload(context?: any): Record<string, any> | null;
|
|
927
|
-
}
|
|
928
|
-
|
|
929
1006
|
/**
|
|
930
1007
|
* index.ts — Framework-agnostic hydration and platform bridge.
|
|
931
1008
|
* Provides unified, safe methods for SSR hydration, routing, and lifecycle hooks.
|
|
@@ -969,5 +1046,5 @@ declare function getAppRouter(): any;
|
|
|
969
1046
|
*/
|
|
970
1047
|
declare function onPlatformReady(cb: () => void): void;
|
|
971
1048
|
|
|
972
|
-
export { AAPIDataProvider, ADataProvider, CAPIFlatClientDataProvider, CAPIFlatServerDataProvider, CAPITreeClientDataProvider, CAPITreeServerDataProvider, CApplicationCache, CCookieCache, CFlatClientDataProvider, CFlatServerDataProvider, CIndexedDBCache, CLocalStorageCache, CMemoryCache, CSessionCache, CTreeClientDataProvider, CTreeServerDataProvider, CacheProviderFactory, DefaultHydrationAdapter, ECacheStrategy, EDataFilterOperator, EQueueStorage, KatluxIndexedDB,
|
|
973
|
-
export type { CacheDriverLoader, ICacheEntry, IDataFilter, IDataProviderOptions, IDataResult, IDataSort, IDeadLetterItem, IFlushOptions, IKDatatableAction, IPlatformRouter, IQueueStorageAdapter, IQueuedOperation, IRequestOptions, ISSRHydrationAdapter, ITreeDataProviderOptions, ITreeNode, ITreeNodeStatic, KProductItemData, KProductRowAction, TDataProviderListener, TDataRow, TKatluxStore, TPageDataHandler, TQueueItemStatus, TTreePageDataHandler, TUnsubscribe, TreePaginationMode };
|
|
1049
|
+
export { AAPIDataProvider, ADataProvider, CAPIFlatClientDataProvider, CAPIFlatServerDataProvider, CAPITreeClientDataProvider, CAPITreeServerDataProvider, CApplicationCache, CCookieCache, CFlatClientDataProvider, CFlatServerDataProvider, CIndexedDBCache, CLocalStorageCache, CMemoryCache, CSessionCache, CTreeClientDataProvider, CTreeServerDataProvider, CacheProviderFactory, DefaultHydrationAdapter, ECacheStrategy, EDataFilterOperator, EQueueStorage, KatluxIndexedDB, QueueStorageFactory, RequestProvider, RequestProviderRegistry, RequestQueue, SENSITIVE_HEADER_KEYS, applyOperator, clearSSRData, compareAnd, compareEqual, compareIn, compareOr, compareValues, debounce, evaluateFilter, fetchWithSSR, filterData, filterTreeData, getAppRoute, getAppRouter, getHydrationAdapter, getPlatformApp, getSSRData, getSSRPayload, onPlatformReady, setHydrationAdapter, sortData, useDebounce, useFilterLogic, useSortLogic };
|
|
1050
|
+
export type { CacheDriverLoader, ICacheEntry, IDataFilter, IDataProviderOptions, IDataResult, IDataSort, IDeadLetterItem, IDebouncedFunction, IFlushOptions, IKDatatableAction, IPlatformRouter, IQueueStorageAdapter, IQueuedOperation, IRequestOptions, ISSRHydrationAdapter, ITreeDataProvider, ITreeDataProviderOptions, ITreeNode, ITreeNodeStatic, KProductItemData, KProductRowAction, TDataProviderListener, TDataRow, TKatluxStore, TPageDataHandler, TQueueItemStatus, TTreePageDataHandler, TTreeRow, TUnsubscribe, TreePaginationMode };
|