@memberjunction/core 5.8.0 → 5.10.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.
- package/dist/generic/RegisterForStartup.js +1 -1
- package/dist/generic/RegisterForStartup.js.map +1 -1
- package/dist/generic/baseEngine.d.ts +64 -1
- package/dist/generic/baseEngine.d.ts.map +1 -1
- package/dist/generic/baseEngine.js +229 -22
- package/dist/generic/baseEngine.js.map +1 -1
- package/dist/generic/baseEntity.d.ts +31 -3
- package/dist/generic/baseEntity.d.ts.map +1 -1
- package/dist/generic/baseEntity.js +46 -0
- package/dist/generic/baseEntity.js.map +1 -1
- package/dist/generic/databaseProviderBase.d.ts +19 -1
- package/dist/generic/databaseProviderBase.d.ts.map +1 -1
- package/dist/generic/databaseProviderBase.js +44 -1
- package/dist/generic/databaseProviderBase.js.map +1 -1
- package/dist/generic/hookRegistry.d.ts +83 -0
- package/dist/generic/hookRegistry.d.ts.map +1 -0
- package/dist/generic/hookRegistry.js +87 -0
- package/dist/generic/hookRegistry.js.map +1 -0
- package/dist/generic/interfaces.d.ts +16 -0
- package/dist/generic/interfaces.d.ts.map +1 -1
- package/dist/generic/interfaces.js.map +1 -1
- package/dist/generic/localCacheManager.d.ts +200 -19
- package/dist/generic/localCacheManager.d.ts.map +1 -1
- package/dist/generic/localCacheManager.js +504 -135
- package/dist/generic/localCacheManager.js.map +1 -1
- package/dist/generic/providerBase.d.ts +106 -2
- package/dist/generic/providerBase.d.ts.map +1 -1
- package/dist/generic/providerBase.js +379 -40
- package/dist/generic/providerBase.js.map +1 -1
- package/dist/generic/queryInfo.d.ts +14 -6
- package/dist/generic/queryInfo.d.ts.map +1 -1
- package/dist/generic/queryInfo.js +15 -10
- package/dist/generic/queryInfo.js.map +1 -1
- package/dist/generic/queryInfoInterfaces.d.ts +6 -1
- package/dist/generic/queryInfoInterfaces.d.ts.map +1 -1
- package/dist/generic/securityInfo.d.ts +41 -0
- package/dist/generic/securityInfo.d.ts.map +1 -1
- package/dist/generic/securityInfo.js +23 -2
- package/dist/generic/securityInfo.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/views/runView.d.ts +33 -0
- package/dist/views/runView.d.ts.map +1 -1
- package/dist/views/runView.js.map +1 -1
- package/package.json +2 -2
- package/readme.md +58 -0
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { BaseSingleton } from "@memberjunction/global";
|
|
2
2
|
import { AggregateResult, DatasetItemFilterType, DatasetResultType, ILocalStorageProvider } from "./interfaces.js";
|
|
3
3
|
import { RunViewParams } from "../views/runView.js";
|
|
4
|
+
import { BaseEntityEvent } from "./baseEntity.js";
|
|
5
|
+
import { CompositeKey } from "./compositeKey.js";
|
|
4
6
|
/**
|
|
5
7
|
* The type of cache entry: dataset, runview, or runquery
|
|
6
8
|
*/
|
|
@@ -98,6 +100,62 @@ export interface LocalCacheManagerConfig {
|
|
|
98
100
|
/** Eviction policy when cache is full */
|
|
99
101
|
evictionPolicy: 'lru' | 'lfu' | 'fifo';
|
|
100
102
|
}
|
|
103
|
+
/**
|
|
104
|
+
* Describes a change to a cached entry, used for cross-server cache invalidation
|
|
105
|
+
* via Redis pub/sub. When one server updates a cache entry, this event is published
|
|
106
|
+
* so other servers can react (e.g., reload an engine's in-memory array).
|
|
107
|
+
*
|
|
108
|
+
* @example
|
|
109
|
+
* ```typescript
|
|
110
|
+
* // Register a callback for a specific cache fingerprint
|
|
111
|
+
* const unsubscribe = LocalCacheManager.Instance.RegisterChangeCallback(
|
|
112
|
+
* fingerprint,
|
|
113
|
+
* (event: CacheChangedEvent) => {
|
|
114
|
+
* console.log(`Cache updated by server ${event.SourceServerId}`);
|
|
115
|
+
* // Refresh local data...
|
|
116
|
+
* }
|
|
117
|
+
* );
|
|
118
|
+
*
|
|
119
|
+
* // Later, to stop listening:
|
|
120
|
+
* unsubscribe();
|
|
121
|
+
* ```
|
|
122
|
+
*/
|
|
123
|
+
export interface CacheChangedEvent {
|
|
124
|
+
/**
|
|
125
|
+
* The cache key that changed. For RunView results, this is the fingerprint
|
|
126
|
+
* generated by {@link LocalCacheManager.GenerateRunViewFingerprint}
|
|
127
|
+
* (format: `EntityName|Filter|OrderBy|MaxRows|StartRow|AggHash[|Connection]`).
|
|
128
|
+
*/
|
|
129
|
+
CacheKey: string;
|
|
130
|
+
/**
|
|
131
|
+
* The storage category of the changed entry.
|
|
132
|
+
* One of: `'RunViewCache'`, `'RunQueryCache'`, `'DatasetCache'`, `'Metadata'`, `'default'`.
|
|
133
|
+
*/
|
|
134
|
+
Category: string;
|
|
135
|
+
/**
|
|
136
|
+
* What happened to the cache entry.
|
|
137
|
+
* - `'set'` — a new value was stored (create or replace)
|
|
138
|
+
* - `'removed'` — a single key was deleted
|
|
139
|
+
* - `'category_cleared'` — all keys in the category were deleted
|
|
140
|
+
*/
|
|
141
|
+
Action: 'set' | 'removed' | 'category_cleared';
|
|
142
|
+
/**
|
|
143
|
+
* UTC Unix timestamp in milliseconds when the change occurred (`Date.now()`).
|
|
144
|
+
*/
|
|
145
|
+
Timestamp: number;
|
|
146
|
+
/**
|
|
147
|
+
* The {@link MJGlobal.ProcessUUID} of the server that made the change.
|
|
148
|
+
* Used to filter out self-originated events (a server doesn't need to
|
|
149
|
+
* react to its own mutations).
|
|
150
|
+
*/
|
|
151
|
+
SourceServerId: string;
|
|
152
|
+
/**
|
|
153
|
+
* The new cached value as a JSON string, included in the event to avoid
|
|
154
|
+
* a round-trip back to Redis. Only present for `'set'` actions.
|
|
155
|
+
* For `'removed'` and `'category_cleared'` actions, this is `undefined`.
|
|
156
|
+
*/
|
|
157
|
+
Data?: string;
|
|
158
|
+
}
|
|
101
159
|
/**
|
|
102
160
|
* Storage categories for organizing cache data.
|
|
103
161
|
* These map to IndexedDB object stores or localStorage key prefixes.
|
|
@@ -151,6 +209,12 @@ export declare class LocalCacheManager extends BaseSingleton<LocalCacheManager>
|
|
|
151
209
|
private _stats;
|
|
152
210
|
private _config;
|
|
153
211
|
private readonly REGISTRY_KEY;
|
|
212
|
+
/**
|
|
213
|
+
* Reverse index from entity name to the set of RunView cache fingerprints
|
|
214
|
+
* that contain data for that entity. Enables O(1) lookup when a BaseEntity
|
|
215
|
+
* event fires so we can update all relevant cached results.
|
|
216
|
+
*/
|
|
217
|
+
private _entityFingerprintIndex;
|
|
154
218
|
protected constructor();
|
|
155
219
|
/**
|
|
156
220
|
* Initialize the cache manager with a storage provider.
|
|
@@ -180,6 +244,135 @@ export declare class LocalCacheManager extends BaseSingleton<LocalCacheManager>
|
|
|
180
244
|
* Updates the configuration at runtime
|
|
181
245
|
*/
|
|
182
246
|
UpdateConfig(config: Partial<LocalCacheManagerConfig>): void;
|
|
247
|
+
/**
|
|
248
|
+
* Replaces the storage provider after initialization. This is needed when
|
|
249
|
+
* the initial provider (e.g., in-memory) needs to be swapped for a
|
|
250
|
+
* persistent provider (e.g., Redis) that becomes available later.
|
|
251
|
+
*
|
|
252
|
+
* Migrates the in-memory registry to the new provider and rebuilds
|
|
253
|
+
* the entity→fingerprint reverse index.
|
|
254
|
+
*
|
|
255
|
+
* @param newProvider - The new storage provider to use
|
|
256
|
+
*/
|
|
257
|
+
SetStorageProvider(newProvider: ILocalStorageProvider): Promise<void>;
|
|
258
|
+
/**
|
|
259
|
+
* Extracts the entity name from a RunView fingerprint.
|
|
260
|
+
* Fingerprint format: `EntityName|Filter|OrderBy|ResultType|MaxRows|StartRow|AggHash[|Connection]`
|
|
261
|
+
* @param fingerprint - The RunView cache fingerprint
|
|
262
|
+
* @returns The entity name, or null if the fingerprint is malformed
|
|
263
|
+
*/
|
|
264
|
+
protected extractEntityFromFingerprint(fingerprint: string): string | null;
|
|
265
|
+
/**
|
|
266
|
+
* Returns true if the fingerprint includes a non-trivial filter (not just '_' or empty).
|
|
267
|
+
* Unfiltered fingerprints can safely have records upserted in-place; filtered ones
|
|
268
|
+
* must be invalidated conservatively since the new data may not match the filter.
|
|
269
|
+
* @param fingerprint - The RunView cache fingerprint
|
|
270
|
+
*/
|
|
271
|
+
protected isFilteredFingerprint(fingerprint: string): boolean;
|
|
272
|
+
/**
|
|
273
|
+
* Adds a fingerprint to the entity→fingerprint reverse index.
|
|
274
|
+
* Called when a RunView result is cached.
|
|
275
|
+
*/
|
|
276
|
+
private addToEntityIndex;
|
|
277
|
+
/**
|
|
278
|
+
* Removes a fingerprint from the entity→fingerprint reverse index.
|
|
279
|
+
* Called when a RunView result is invalidated.
|
|
280
|
+
*/
|
|
281
|
+
private removeFromEntityIndex;
|
|
282
|
+
/**
|
|
283
|
+
* Returns the set of cached fingerprints for a given entity name.
|
|
284
|
+
* Useful for diagnostics and testing.
|
|
285
|
+
*/
|
|
286
|
+
GetFingerprintsForEntity(entityName: string): ReadonlySet<string>;
|
|
287
|
+
/**
|
|
288
|
+
* Subscribes to MJGlobal BaseEntity events to proactively update all cached
|
|
289
|
+
* RunView results when entities are saved or deleted. This ensures ALL cached
|
|
290
|
+
* data stays consistent, not just engine-managed data.
|
|
291
|
+
*/
|
|
292
|
+
private subscribeToBaseEntityEvents;
|
|
293
|
+
/**
|
|
294
|
+
* Handles a BaseEntity event by updating all cached RunView results for the
|
|
295
|
+
* affected entity. For unfiltered caches, updates the record in-place.
|
|
296
|
+
* For filtered caches, invalidates the cache entry (conservative approach
|
|
297
|
+
* since we can't verify filter match without re-querying).
|
|
298
|
+
*
|
|
299
|
+
* @param entityEvent - The BaseEntity event payload
|
|
300
|
+
*/
|
|
301
|
+
protected HandleBaseEntityEvent(entityEvent: BaseEntityEvent): Promise<void>;
|
|
302
|
+
/**
|
|
303
|
+
* Handles remote-invalidate events that include recordData (the saved entity as JSON).
|
|
304
|
+
* Updates all cached RunView results for the entity without a server round-trip.
|
|
305
|
+
* For delete events or events without recordData, the cache entries are invalidated
|
|
306
|
+
* so the next RunView call will fetch fresh data from the server.
|
|
307
|
+
*/
|
|
308
|
+
protected HandleRemoteInvalidateEvent(entityEvent: BaseEntityEvent): Promise<void>;
|
|
309
|
+
/**
|
|
310
|
+
* Parses a JSON-encoded primaryKeyValues string (array of {FieldName, Value} pairs)
|
|
311
|
+
* into a CompositeKey. Returns null if parsing fails or the string is empty.
|
|
312
|
+
*/
|
|
313
|
+
private parseCompositeKeyFromJSON;
|
|
314
|
+
/**
|
|
315
|
+
* Builds a CompositeKey from a plain row object using the specified PK field names.
|
|
316
|
+
*/
|
|
317
|
+
private buildCompositeKeyFromRow;
|
|
318
|
+
/**
|
|
319
|
+
* Processes a single fingerprint for a BaseEntity event.
|
|
320
|
+
* Decomposed from HandleBaseEntityEvent for clarity and testability.
|
|
321
|
+
*/
|
|
322
|
+
private processEntityEventForFingerprint;
|
|
323
|
+
/**
|
|
324
|
+
* Map from cache fingerprint (or category for category_cleared events) to
|
|
325
|
+
* registered {@link CacheChangedEvent} callbacks. Callbacks are invoked when
|
|
326
|
+
* another server instance modifies the corresponding cached entry via Redis pub/sub.
|
|
327
|
+
*/
|
|
328
|
+
private _changeCallbacks;
|
|
329
|
+
/**
|
|
330
|
+
* Registers a callback that fires when a specific cache fingerprint is updated
|
|
331
|
+
* by another server instance. Returns an unsubscribe function to remove the callback.
|
|
332
|
+
*
|
|
333
|
+
* This is the mechanism that powers the `OnDataChanged` callback in {@link RunViewParams}.
|
|
334
|
+
* Engines, components, and other callers can use this to react to cross-server
|
|
335
|
+
* cache invalidation without polling.
|
|
336
|
+
*
|
|
337
|
+
* @param fingerprint - The cache key/fingerprint to watch. For RunView results,
|
|
338
|
+
* use {@link GenerateRunViewFingerprint} to build this.
|
|
339
|
+
* @param callback - Function invoked with the {@link CacheChangedEvent} when
|
|
340
|
+
* the fingerprint's cached data changes on another server.
|
|
341
|
+
* @returns A function that, when called, removes this specific callback registration.
|
|
342
|
+
*
|
|
343
|
+
* @example
|
|
344
|
+
* ```typescript
|
|
345
|
+
* const fingerprint = cache.GenerateRunViewFingerprint(params, connectionPrefix);
|
|
346
|
+
* const unsubscribe = cache.RegisterChangeCallback(fingerprint, (event) => {
|
|
347
|
+
* console.log(`Data changed for ${event.CacheKey}`);
|
|
348
|
+
* // Reload, re-render, etc.
|
|
349
|
+
* });
|
|
350
|
+
*
|
|
351
|
+
* // Later, on cleanup:
|
|
352
|
+
* unsubscribe();
|
|
353
|
+
* ```
|
|
354
|
+
*/
|
|
355
|
+
RegisterChangeCallback(fingerprint: string, callback: (event: CacheChangedEvent) => void): () => void;
|
|
356
|
+
/**
|
|
357
|
+
* Dispatches a cache change event to all registered callbacks for the affected
|
|
358
|
+
* fingerprint. Called by infrastructure code (e.g., {@link RedisLocalStorageProvider})
|
|
359
|
+
* when another server modifies a cached entry.
|
|
360
|
+
*
|
|
361
|
+
* For `category_cleared` events, dispatches to ALL registered callbacks whose
|
|
362
|
+
* fingerprints belong to the cleared category (matched by the event's CacheKey
|
|
363
|
+
* which contains the category name).
|
|
364
|
+
*
|
|
365
|
+
* Errors in individual callbacks are caught and logged via {@link LogError}
|
|
366
|
+
* to prevent one bad callback from blocking others.
|
|
367
|
+
*
|
|
368
|
+
* @param event - The cache change event to dispatch
|
|
369
|
+
*/
|
|
370
|
+
DispatchCacheChange(event: CacheChangedEvent): void;
|
|
371
|
+
/**
|
|
372
|
+
* Returns the number of fingerprints that have registered change callbacks.
|
|
373
|
+
* Useful for diagnostics and testing.
|
|
374
|
+
*/
|
|
375
|
+
get ChangeCallbackCount(): number;
|
|
183
376
|
/**
|
|
184
377
|
* Stores a dataset in the local cache.
|
|
185
378
|
*
|
|
@@ -312,34 +505,22 @@ export declare class LocalCacheManager extends BaseSingleton<LocalCacheManager>
|
|
|
312
505
|
* @param newMaxUpdatedAt - New maxUpdatedAt timestamp (from entity's __mj_UpdatedAt)
|
|
313
506
|
* @returns true if cache was updated, false if cache not found or update failed
|
|
314
507
|
*/
|
|
315
|
-
UpsertSingleEntity(fingerprint: string, entityData: Record<string, unknown>,
|
|
508
|
+
UpsertSingleEntity(fingerprint: string, entityData: Record<string, unknown>, key: CompositeKey, newMaxUpdatedAt: string): Promise<boolean>;
|
|
316
509
|
/**
|
|
317
510
|
* Removes a single entity from a cached RunView result.
|
|
318
|
-
*
|
|
511
|
+
* Supports composite primary keys via CompositeKey matching.
|
|
319
512
|
*
|
|
320
513
|
* @param fingerprint - The cache fingerprint to update
|
|
321
|
-
* @param
|
|
322
|
-
* @param primaryKeyFieldName - Name of the primary key field
|
|
514
|
+
* @param key - CompositeKey identifying the entity to remove
|
|
323
515
|
* @param newMaxUpdatedAt - New maxUpdatedAt timestamp
|
|
324
516
|
* @returns true if cache was updated, false if cache not found or update failed
|
|
325
517
|
*/
|
|
326
|
-
RemoveSingleEntity(fingerprint: string,
|
|
327
|
-
/**
|
|
328
|
-
* Extracts the primary key value as a string from a row object.
|
|
329
|
-
* Handles both single-field and composite primary keys.
|
|
330
|
-
* @param row - The row object
|
|
331
|
-
* @param primaryKeyFieldName - The primary key field name (first field for composite keys)
|
|
332
|
-
* @returns The primary key value as a string, or null if not found
|
|
333
|
-
*/
|
|
334
|
-
private extractPrimaryKeyString;
|
|
518
|
+
RemoveSingleEntity(fingerprint: string, key: CompositeKey, newMaxUpdatedAt: string): Promise<boolean>;
|
|
335
519
|
/**
|
|
336
|
-
*
|
|
337
|
-
*
|
|
338
|
-
* @param concatenatedKey - The concatenated key string from RecordChange.RecordID
|
|
339
|
-
* @param primaryKeyFieldName - The primary key field name to extract
|
|
340
|
-
* @returns The value for the specified field, or the first value if field not found
|
|
520
|
+
* Stores updated results array back to the cache and updates the registry.
|
|
521
|
+
* Shared by UpsertSingleEntity and RemoveSingleEntity to avoid duplication.
|
|
341
522
|
*/
|
|
342
|
-
private
|
|
523
|
+
private storeCachedResults;
|
|
343
524
|
/**
|
|
344
525
|
* Invalidates all cached RunView results for a specific entity.
|
|
345
526
|
* Useful when an entity's data changes and all related caches should be cleared.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"localCacheManager.d.ts","sourceRoot":"","sources":["../../src/generic/localCacheManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"localCacheManager.d.ts","sourceRoot":"","sources":["../../src/generic/localCacheManager.ts"],"names":[],"mappings":"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"}
|