@memberjunction/core 2.127.0 → 2.129.0

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.
Files changed (58) hide show
  1. package/dist/__tests__/mocks/TestMetadataProvider.d.ts +4 -2
  2. package/dist/__tests__/mocks/TestMetadataProvider.d.ts.map +1 -1
  3. package/dist/__tests__/mocks/TestMetadataProvider.js +9 -3
  4. package/dist/__tests__/mocks/TestMetadataProvider.js.map +1 -1
  5. package/dist/generic/RegisterForStartup.d.ts +228 -0
  6. package/dist/generic/RegisterForStartup.d.ts.map +1 -0
  7. package/dist/generic/RegisterForStartup.js +233 -0
  8. package/dist/generic/RegisterForStartup.js.map +1 -0
  9. package/dist/generic/baseEngine.d.ts +191 -8
  10. package/dist/generic/baseEngine.d.ts.map +1 -1
  11. package/dist/generic/baseEngine.js +360 -14
  12. package/dist/generic/baseEngine.js.map +1 -1
  13. package/dist/generic/baseEngineRegistry.d.ts +247 -0
  14. package/dist/generic/baseEngineRegistry.d.ts.map +1 -0
  15. package/dist/generic/baseEngineRegistry.js +470 -0
  16. package/dist/generic/baseEngineRegistry.js.map +1 -0
  17. package/dist/generic/entityInfo.d.ts +50 -0
  18. package/dist/generic/entityInfo.d.ts.map +1 -1
  19. package/dist/generic/entityInfo.js +56 -0
  20. package/dist/generic/entityInfo.js.map +1 -1
  21. package/dist/generic/graphqlTypeNames.d.ts +90 -0
  22. package/dist/generic/graphqlTypeNames.d.ts.map +1 -0
  23. package/dist/generic/graphqlTypeNames.js +119 -0
  24. package/dist/generic/graphqlTypeNames.js.map +1 -0
  25. package/dist/generic/interfaces.d.ts +234 -3
  26. package/dist/generic/interfaces.d.ts.map +1 -1
  27. package/dist/generic/interfaces.js.map +1 -1
  28. package/dist/generic/localCacheManager.d.ts +388 -0
  29. package/dist/generic/localCacheManager.d.ts.map +1 -0
  30. package/dist/generic/localCacheManager.js +856 -0
  31. package/dist/generic/localCacheManager.js.map +1 -0
  32. package/dist/generic/providerBase.d.ts +227 -13
  33. package/dist/generic/providerBase.d.ts.map +1 -1
  34. package/dist/generic/providerBase.js +751 -6
  35. package/dist/generic/providerBase.js.map +1 -1
  36. package/dist/generic/queryInfo.d.ts +18 -0
  37. package/dist/generic/queryInfo.d.ts.map +1 -1
  38. package/dist/generic/queryInfo.js +18 -0
  39. package/dist/generic/queryInfo.js.map +1 -1
  40. package/dist/generic/queryInfoInterfaces.d.ts +17 -0
  41. package/dist/generic/queryInfoInterfaces.d.ts.map +1 -1
  42. package/dist/generic/runQuery.d.ts +30 -0
  43. package/dist/generic/runQuery.d.ts.map +1 -1
  44. package/dist/generic/runQuery.js +13 -0
  45. package/dist/generic/runQuery.js.map +1 -1
  46. package/dist/generic/telemetryManager.d.ts +628 -0
  47. package/dist/generic/telemetryManager.d.ts.map +1 -0
  48. package/dist/generic/telemetryManager.js +1011 -0
  49. package/dist/generic/telemetryManager.js.map +1 -0
  50. package/dist/index.d.ts +5 -0
  51. package/dist/index.d.ts.map +1 -1
  52. package/dist/index.js +5 -0
  53. package/dist/index.js.map +1 -1
  54. package/dist/views/runView.d.ts +25 -0
  55. package/dist/views/runView.d.ts.map +1 -1
  56. package/dist/views/runView.js +4 -5
  57. package/dist/views/runView.js.map +1 -1
  58. package/package.json +2 -2
@@ -0,0 +1,388 @@
1
+ import { BaseSingleton } from "@memberjunction/global";
2
+ import { DatasetItemFilterType, DatasetResultType, ILocalStorageProvider } from "./interfaces";
3
+ import { RunViewParams } from "../views/runView";
4
+ /**
5
+ * The type of cache entry: dataset, runview, or runquery
6
+ */
7
+ export type CacheEntryType = 'dataset' | 'runview' | 'runquery';
8
+ /**
9
+ * Information about a cached entry, used for the registry and dashboard display
10
+ */
11
+ export interface CacheEntryInfo {
12
+ /** Storage key */
13
+ key: string;
14
+ /** Type of cache entry */
15
+ type: CacheEntryType;
16
+ /** Dataset name, Entity name, or Query name */
17
+ name: string;
18
+ /** For RunView/RunQuery deduplication */
19
+ fingerprint?: string;
20
+ /** Original params (expandable in UI) */
21
+ params?: Record<string, unknown>;
22
+ /** Cache timestamp */
23
+ cachedAt: number;
24
+ /** Last read timestamp */
25
+ lastAccessedAt: number;
26
+ /** Hit count */
27
+ accessCount: number;
28
+ /** Approximate size in bytes */
29
+ sizeBytes: number;
30
+ /** Server timestamp for freshness check */
31
+ maxUpdatedAt?: string;
32
+ /** Row count for cache validation (used with smart cache check) */
33
+ rowCount?: number;
34
+ /** Optional TTL expiry timestamp */
35
+ expiresAt?: number;
36
+ }
37
+ /**
38
+ * Statistics about the cache
39
+ */
40
+ export interface CacheStats {
41
+ /** Total number of cached entries */
42
+ totalEntries: number;
43
+ /** Total size of all cached data in bytes */
44
+ totalSizeBytes: number;
45
+ /** Breakdown by cache entry type */
46
+ byType: Record<CacheEntryType, {
47
+ count: number;
48
+ sizeBytes: number;
49
+ }>;
50
+ /** Timestamp of oldest cache entry */
51
+ oldestEntry: number;
52
+ /** Timestamp of newest cache entry */
53
+ newestEntry: number;
54
+ /** Number of cache hits since initialization */
55
+ hits: number;
56
+ /** Number of cache misses since initialization */
57
+ misses: number;
58
+ }
59
+ /**
60
+ * Configuration for the LocalCacheManager
61
+ */
62
+ export interface LocalCacheManagerConfig {
63
+ /** Whether caching is enabled */
64
+ enabled: boolean;
65
+ /** Maximum cache size in bytes (default: 50MB) */
66
+ maxSizeBytes: number;
67
+ /** Maximum number of cache entries (default: 1000) */
68
+ maxEntries: number;
69
+ /** Default TTL in milliseconds (default: 5 minutes) */
70
+ defaultTTLMs: number;
71
+ /** Eviction policy when cache is full */
72
+ evictionPolicy: 'lru' | 'lfu' | 'fifo';
73
+ }
74
+ /**
75
+ * Storage categories for organizing cache data.
76
+ * These map to IndexedDB object stores or localStorage key prefixes.
77
+ */
78
+ export declare const CacheCategory: {
79
+ /** Cache for RunView results */
80
+ readonly RunViewCache: "RunViewCache";
81
+ /** Cache for RunQuery results */
82
+ readonly RunQueryCache: "RunQueryCache";
83
+ /** Cache for Dataset results */
84
+ readonly DatasetCache: "DatasetCache";
85
+ /** Cache for metadata */
86
+ readonly Metadata: "Metadata";
87
+ /** Default category for uncategorized data */
88
+ readonly Default: "default";
89
+ };
90
+ export type CacheCategory = typeof CacheCategory[keyof typeof CacheCategory];
91
+ /**
92
+ * LocalCacheManager is a singleton that provides a unified caching abstraction
93
+ * for datasets, RunView results, and RunQuery results. It wraps ILocalStorageProvider
94
+ * for actual storage and maintains an internal registry of all cached items.
95
+ *
96
+ * Key features:
97
+ * - Typed methods for datasets, RunViews, and RunQueries
98
+ * - Automatic cache metadata tracking (timestamps, access counts, sizes)
99
+ * - Hit/miss statistics for performance monitoring
100
+ * - Eviction policies (LRU, LFU, FIFO) for memory management
101
+ * - Dashboard-friendly registry queries
102
+ *
103
+ * Usage:
104
+ * ```typescript
105
+ * // Initialize during app startup
106
+ * await LocalCacheManager.Instance.Initialize(storageProvider);
107
+ *
108
+ * // Cache a dataset
109
+ * await LocalCacheManager.Instance.SetDataset('MyDataset', filters, dataset, keyPrefix);
110
+ *
111
+ * // Retrieve cached data
112
+ * const cached = await LocalCacheManager.Instance.GetDataset('MyDataset', filters, keyPrefix);
113
+ * ```
114
+ */
115
+ export declare class LocalCacheManager extends BaseSingleton<LocalCacheManager> {
116
+ /**
117
+ * Returns the singleton instance of LocalCacheManager
118
+ */
119
+ static get Instance(): LocalCacheManager;
120
+ private _storageProvider;
121
+ private _registry;
122
+ private _initialized;
123
+ private _initializePromise;
124
+ private _stats;
125
+ private _config;
126
+ private readonly REGISTRY_KEY;
127
+ protected constructor();
128
+ /**
129
+ * Initialize the cache manager with a storage provider.
130
+ * This should be called during app startup after the storage provider is available.
131
+ *
132
+ * This method is safe to call multiple times - subsequent calls will return the same
133
+ * promise as the first caller, ensuring initialization only happens once.
134
+ *
135
+ * @param storageProvider - The local storage provider to use for persistence
136
+ * @param config - Optional configuration overrides
137
+ * @returns A promise that resolves when initialization is complete
138
+ */
139
+ Initialize(storageProvider: ILocalStorageProvider, config?: Partial<LocalCacheManagerConfig>): Promise<void>;
140
+ /**
141
+ * Internal initialization logic - only called once by the first caller
142
+ */
143
+ private doInitialize;
144
+ /**
145
+ * Returns whether the cache manager has been initialized
146
+ */
147
+ get IsInitialized(): boolean;
148
+ /**
149
+ * Returns the current configuration
150
+ */
151
+ get Config(): LocalCacheManagerConfig;
152
+ /**
153
+ * Updates the configuration at runtime
154
+ */
155
+ UpdateConfig(config: Partial<LocalCacheManagerConfig>): void;
156
+ /**
157
+ * Stores a dataset in the local cache.
158
+ *
159
+ * @param name - The dataset name
160
+ * @param itemFilters - Optional filters applied to the dataset
161
+ * @param dataset - The dataset result to cache
162
+ * @param keyPrefix - Prefix for the cache key (typically includes connection info)
163
+ */
164
+ SetDataset(name: string, itemFilters: DatasetItemFilterType[] | undefined, dataset: DatasetResultType, keyPrefix: string): Promise<void>;
165
+ /**
166
+ * Retrieves a cached dataset.
167
+ *
168
+ * @param name - The dataset name
169
+ * @param itemFilters - Optional filters applied to the dataset
170
+ * @param keyPrefix - Prefix for the cache key
171
+ * @returns The cached dataset or null if not found
172
+ */
173
+ GetDataset(name: string, itemFilters: DatasetItemFilterType[] | undefined, keyPrefix: string): Promise<DatasetResultType | null>;
174
+ /**
175
+ * Gets the timestamp of a cached dataset.
176
+ *
177
+ * @param name - The dataset name
178
+ * @param itemFilters - Optional filters applied to the dataset
179
+ * @param keyPrefix - Prefix for the cache key
180
+ * @returns The cache timestamp or null if not found
181
+ */
182
+ GetDatasetTimestamp(name: string, itemFilters: DatasetItemFilterType[] | undefined, keyPrefix: string): Promise<Date | null>;
183
+ /**
184
+ * Clears a cached dataset.
185
+ *
186
+ * @param name - The dataset name
187
+ * @param itemFilters - Optional filters applied to the dataset
188
+ * @param keyPrefix - Prefix for the cache key
189
+ */
190
+ ClearDataset(name: string, itemFilters: DatasetItemFilterType[] | undefined, keyPrefix: string): Promise<void>;
191
+ /**
192
+ * Checks if a dataset is cached.
193
+ *
194
+ * @param name - The dataset name
195
+ * @param itemFilters - Optional filters applied to the dataset
196
+ * @param keyPrefix - Prefix for the cache key
197
+ * @returns True if the dataset is cached
198
+ */
199
+ IsDatasetCached(name: string, itemFilters: DatasetItemFilterType[] | undefined, keyPrefix: string): Promise<boolean>;
200
+ /**
201
+ * Generates a human-readable cache fingerprint for a RunView request.
202
+ * This fingerprint uniquely identifies the query based on its parameters and connection.
203
+ *
204
+ * Format: EntityName|filter|orderBy|resultType|maxRows|startRow|connection
205
+ * Example: Users|Active=1|Name ASC|simple|100|0|localhost
206
+ *
207
+ * @param params - The RunView parameters
208
+ * @param connectionPrefix - Prefix identifying the connection (e.g., server URL) to differentiate caches across connections
209
+ * @returns A unique, human-readable fingerprint string
210
+ */
211
+ GenerateRunViewFingerprint(params: RunViewParams, connectionPrefix?: string): string;
212
+ /**
213
+ * Stores a RunView result in the cache.
214
+ *
215
+ * @param fingerprint - The cache fingerprint (from GenerateRunViewFingerprint)
216
+ * @param params - The original RunView parameters
217
+ * @param results - The results to cache
218
+ * @param maxUpdatedAt - The latest __mj_UpdatedAt from the results
219
+ * @param rowCount - Optional row count (defaults to results.length if not provided)
220
+ */
221
+ SetRunViewResult(fingerprint: string, params: RunViewParams, results: unknown[], maxUpdatedAt: string, rowCount?: number): Promise<void>;
222
+ /**
223
+ * Retrieves a cached RunView result.
224
+ *
225
+ * @param fingerprint - The cache fingerprint
226
+ * @returns The cached results, maxUpdatedAt, and rowCount, or null if not found
227
+ */
228
+ GetRunViewResult(fingerprint: string): Promise<{
229
+ results: unknown[];
230
+ maxUpdatedAt: string;
231
+ rowCount: number;
232
+ } | null>;
233
+ /**
234
+ * Invalidates a cached RunView result.
235
+ *
236
+ * @param fingerprint - The cache fingerprint to invalidate
237
+ */
238
+ InvalidateRunViewResult(fingerprint: string): Promise<void>;
239
+ /**
240
+ * Invalidates all cached RunView results for a specific entity.
241
+ * Useful when an entity's data changes and all related caches should be cleared.
242
+ *
243
+ * @param entityName - The entity name to invalidate
244
+ */
245
+ InvalidateEntityCaches(entityName: string): Promise<void>;
246
+ /**
247
+ * Generates a human-readable cache fingerprint for a RunQuery request.
248
+ *
249
+ * Format: QueryName|QueryID|params|connection
250
+ * Example: GetActiveUsers|abc123|{"status":"active"}|localhost
251
+ *
252
+ * @param queryId - The query ID
253
+ * @param queryName - The query name
254
+ * @param parameters - Optional query parameters
255
+ * @param connectionPrefix - Prefix identifying the connection (e.g., server URL) to differentiate caches across connections
256
+ * @returns A unique, human-readable fingerprint string
257
+ */
258
+ GenerateRunQueryFingerprint(queryId?: string, queryName?: string, parameters?: Record<string, unknown>, connectionPrefix?: string): string;
259
+ /**
260
+ * Stores a RunQuery result in the cache.
261
+ *
262
+ * @param fingerprint - The cache fingerprint
263
+ * @param queryName - The query name for display
264
+ * @param results - The results to cache
265
+ * @param maxUpdatedAt - The latest update timestamp (for smart cache validation)
266
+ * @param rowCount - Optional row count (defaults to results.length if not provided)
267
+ * @param queryId - Optional query ID for reference
268
+ * @param ttlMs - Optional TTL in milliseconds (for cache expiry tracking)
269
+ */
270
+ SetRunQueryResult(fingerprint: string, queryName: string, results: unknown[], maxUpdatedAt: string, rowCount?: number, queryId?: string, ttlMs?: number): Promise<void>;
271
+ /**
272
+ * Retrieves a cached RunQuery result.
273
+ *
274
+ * @param fingerprint - The cache fingerprint
275
+ * @returns The cached results, maxUpdatedAt, rowCount, and queryId, or null if not found
276
+ */
277
+ GetRunQueryResult(fingerprint: string): Promise<{
278
+ results: unknown[];
279
+ maxUpdatedAt: string;
280
+ rowCount: number;
281
+ queryId?: string;
282
+ } | null>;
283
+ /**
284
+ * Invalidates a cached RunQuery result.
285
+ *
286
+ * @param fingerprint - The cache fingerprint to invalidate
287
+ */
288
+ InvalidateRunQueryResult(fingerprint: string): Promise<void>;
289
+ /**
290
+ * Invalidates all cached RunQuery results for a specific query.
291
+ * Useful when a query's underlying data changes and all related caches should be cleared.
292
+ *
293
+ * @param queryName - The query name to invalidate
294
+ */
295
+ InvalidateQueryCaches(queryName: string): Promise<void>;
296
+ /**
297
+ * Gets the cache status (fingerprint data) for a RunQuery result.
298
+ * Used for smart cache validation with the server.
299
+ *
300
+ * @param fingerprint - The cache fingerprint
301
+ * @returns The cache status with maxUpdatedAt and rowCount, or null if not found/expired
302
+ */
303
+ GetRunQueryCacheStatus(fingerprint: string): Promise<{
304
+ maxUpdatedAt: string;
305
+ rowCount: number;
306
+ } | null>;
307
+ /**
308
+ * Returns all cache entries for dashboard display.
309
+ */
310
+ GetAllEntries(): CacheEntryInfo[];
311
+ /**
312
+ * Returns cache entries filtered by type.
313
+ *
314
+ * @param type - The cache entry type to filter by
315
+ */
316
+ GetEntriesByType(type: CacheEntryType): CacheEntryInfo[];
317
+ /**
318
+ * Returns comprehensive cache statistics.
319
+ */
320
+ GetStats(): CacheStats;
321
+ /**
322
+ * Calculates the cache hit rate as a percentage.
323
+ */
324
+ GetHitRate(): number;
325
+ /**
326
+ * Clears all cache entries of a specific type.
327
+ *
328
+ * @param type - The cache entry type to clear
329
+ * @returns The number of entries cleared
330
+ */
331
+ ClearByType(type: CacheEntryType): Promise<number>;
332
+ /**
333
+ * Clears all cache entries.
334
+ *
335
+ * @returns The number of entries cleared
336
+ */
337
+ ClearAll(): Promise<number>;
338
+ /**
339
+ * Resets the hit/miss statistics.
340
+ */
341
+ ResetStats(): void;
342
+ /**
343
+ * Maps a cache entry type to its storage category.
344
+ */
345
+ private getCategoryForType;
346
+ /**
347
+ * Builds a cache key for a dataset.
348
+ */
349
+ private buildDatasetKey;
350
+ /**
351
+ * Registers a cache entry in the registry.
352
+ */
353
+ private registerEntry;
354
+ /**
355
+ * Unregisters a cache entry from the registry.
356
+ */
357
+ private unregisterEntry;
358
+ /**
359
+ * Records an access to a cache entry (updates lastAccessedAt and accessCount).
360
+ */
361
+ private recordAccess;
362
+ /**
363
+ * Loads the registry from storage.
364
+ */
365
+ private loadRegistry;
366
+ private _persistTimeout;
367
+ /**
368
+ * Debounced registry persistence to avoid too many writes.
369
+ */
370
+ private debouncedPersistRegistry;
371
+ /**
372
+ * Persists the registry to storage.
373
+ */
374
+ private persistRegistry;
375
+ /**
376
+ * Estimates the size of a string in bytes.
377
+ */
378
+ private estimateSize;
379
+ /**
380
+ * Evicts entries if needed to make room for new data.
381
+ */
382
+ private evictIfNeeded;
383
+ /**
384
+ * Evicts entries based on the configured eviction policy.
385
+ */
386
+ private evict;
387
+ }
388
+ //# sourceMappingURL=localCacheManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"localCacheManager.d.ts","sourceRoot":"","sources":["../../src/generic/localCacheManager.ts"],"names":[],"mappings":"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"}