@memberjunction/core 5.44.0 → 5.45.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/baseEngine.d.ts +146 -10
- package/dist/generic/baseEngine.d.ts.map +1 -1
- package/dist/generic/baseEngine.js +286 -54
- package/dist/generic/baseEngine.js.map +1 -1
- package/dist/generic/databaseProviderBase.d.ts.map +1 -1
- package/dist/generic/databaseProviderBase.js +16 -0
- package/dist/generic/databaseProviderBase.js.map +1 -1
- package/dist/generic/entityInfo.d.ts +12 -0
- package/dist/generic/entityInfo.d.ts.map +1 -1
- package/dist/generic/entityInfo.js +12 -0
- package/dist/generic/entityInfo.js.map +1 -1
- package/dist/generic/externalDataSourceReadRouter.d.ts +63 -0
- package/dist/generic/externalDataSourceReadRouter.d.ts.map +1 -0
- package/dist/generic/externalDataSourceReadRouter.js +19 -0
- package/dist/generic/externalDataSourceReadRouter.js.map +1 -0
- package/dist/generic/externalDataSourceTypes.d.ts +68 -0
- package/dist/generic/externalDataSourceTypes.d.ts.map +1 -0
- package/dist/generic/externalDataSourceTypes.js +14 -0
- package/dist/generic/externalDataSourceTypes.js.map +1 -0
- package/dist/generic/localCacheManager.d.ts +1 -1
- package/dist/generic/localCacheManager.d.ts.map +1 -1
- package/dist/generic/localCacheManager.js +21 -2
- package/dist/generic/localCacheManager.js.map +1 -1
- package/dist/generic/logging.d.ts.map +1 -1
- package/dist/generic/logging.js +4 -1
- package/dist/generic/logging.js.map +1 -1
- package/dist/generic/providerBase.d.ts +35 -0
- package/dist/generic/providerBase.d.ts.map +1 -1
- package/dist/generic/providerBase.js +83 -3
- package/dist/generic/providerBase.js.map +1 -1
- package/dist/generic/securityInfo.d.ts +48 -0
- package/dist/generic/securityInfo.d.ts.map +1 -1
- package/dist/generic/securityInfo.js +27 -0
- package/dist/generic/securityInfo.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
|
@@ -150,6 +150,21 @@ export interface EngineDataChangeEvent {
|
|
|
150
150
|
*/
|
|
151
151
|
affectedEntity?: BaseEntity;
|
|
152
152
|
}
|
|
153
|
+
/**
|
|
154
|
+
* How a single entity event relates to a single config's backing array — the result of
|
|
155
|
+
* {@link BaseEngine.classifyEventForConfig}:
|
|
156
|
+
* - 'refresh': the array does not yet reflect the event; a refresh/immediate mutation is required
|
|
157
|
+
* - 'notify': the array already reflects the event; observers still need a notification
|
|
158
|
+
* - 'silent': a delete of a row absent from the array; no refresh and no notification
|
|
159
|
+
*/
|
|
160
|
+
export type EntityEventDisposition = {
|
|
161
|
+
action: 'refresh';
|
|
162
|
+
} | {
|
|
163
|
+
action: 'notify';
|
|
164
|
+
changeType: 'add' | 'update' | 'delete';
|
|
165
|
+
} | {
|
|
166
|
+
action: 'silent';
|
|
167
|
+
};
|
|
153
168
|
/**
|
|
154
169
|
* Abstract base class for any engine-style class which executes work on behalf of a caller typically using a provider-style architecture with plug-ins. This base class
|
|
155
170
|
* provides a mechanism for loading metadata from the database and caching it for use by the engine. Subclasses must implement the Config abstract method and within that
|
|
@@ -210,6 +225,17 @@ export declare abstract class BaseEngine<T> extends BaseSingleton<T> implements
|
|
|
210
225
|
private _propertySubjects;
|
|
211
226
|
private _isPermissionConstrained;
|
|
212
227
|
private _deniedEntityNames;
|
|
228
|
+
/**
|
|
229
|
+
* Per-property monotonic full-refresh counter. Guards {@link LoadSingleEntityConfig}
|
|
230
|
+
* against overlapping full refreshes clobbering each other: when several full-refresh
|
|
231
|
+
* RunViews for the same property are in flight at once (e.g. a burst of saves each
|
|
232
|
+
* landing in its own debounce window because the round-trip exceeds the DebounceTime),
|
|
233
|
+
* only the latest-INITIATED refresh may commit its results. Without this, whichever
|
|
234
|
+
* RunView happens to RESOLVE last wins — which can be an earlier-initiated request that
|
|
235
|
+
* read a staler snapshot, leaving the cache "one operation behind" until a full reload
|
|
236
|
+
* reconciles it. Keyed by config PropertyName. See {@link beginConfigRefresh}.
|
|
237
|
+
*/
|
|
238
|
+
private _configRefreshGeneration;
|
|
213
239
|
/**
|
|
214
240
|
* Returns an Observable for a specific engine array property. Subscribers receive the
|
|
215
241
|
* current array immediately (BehaviorSubject semantics), then re-receive the same array
|
|
@@ -475,10 +501,16 @@ export declare abstract class BaseEngine<T> extends BaseSingleton<T> implements
|
|
|
475
501
|
protected applyRemoteDelete(matchingConfigs: BaseEnginePropertyConfig[], primaryKeyValuesJSON: string): boolean;
|
|
476
502
|
/**
|
|
477
503
|
* This method handles the debouncing process, by default using the EntityEventDebounceTime property to set the debounce time. Debouncing is
|
|
478
|
-
* done on a per-entity basis, meaning that if the debounce time passes for a specific entity name, the
|
|
504
|
+
* done on a per-entity basis, meaning that if the debounce time passes for a specific entity name, the events will be processed. This is done to
|
|
479
505
|
* prevent multiple events from being processed in quick succession for a single entity which would cause a lot of wasted processing.
|
|
480
506
|
*
|
|
481
|
-
*
|
|
507
|
+
* ALL events raised during the debounce window are buffered and delivered as one batch to
|
|
508
|
+
* {@link ProcessEntityEvents} — not just the last one. The refresh-vs-skip decision must be
|
|
509
|
+
* an OR over every coalesced event: judging only the last event would let an
|
|
510
|
+
* already-applied write (e.g., an engine method's in-place save of a cached instance)
|
|
511
|
+
* mask an earlier fresh-instance save the array has never seen.
|
|
512
|
+
*
|
|
513
|
+
* Override this method if you want to change how debouncing works, such as having variable debounce times per-entity, etc.
|
|
482
514
|
* @param event
|
|
483
515
|
* @returns
|
|
484
516
|
*/
|
|
@@ -494,13 +526,54 @@ export declare abstract class BaseEngine<T> extends BaseSingleton<T> implements
|
|
|
494
526
|
*/
|
|
495
527
|
protected get EntityEventDebounceTime(): number;
|
|
496
528
|
/**
|
|
497
|
-
*
|
|
498
|
-
*
|
|
499
|
-
*
|
|
500
|
-
*
|
|
501
|
-
* This is the best method to override if you want to change the actual processing of an entity event but do NOT want to modify the debouncing behavior.
|
|
529
|
+
* Back-compat single-event wrapper around {@link ProcessEntityEvents}. The debounced
|
|
530
|
+
* pipeline delivers full batches to ProcessEntityEvents — override THAT method to change
|
|
531
|
+
* event-processing behavior; this wrapper exists for subclasses/tests that process one
|
|
532
|
+
* event at a time.
|
|
502
533
|
*/
|
|
503
534
|
protected ProcessEntityEvent(event: BaseEntityEvent): Promise<void>;
|
|
535
|
+
/**
|
|
536
|
+
* Does the actual work of processing all entity events coalesced into one debounce window.
|
|
537
|
+
* Not called directly from the event handler because we first debounce the events, which also
|
|
538
|
+
* introduces a delay that is usually desirable so processing happens outside the scope of any
|
|
539
|
+
* transaction processing that originated the events.
|
|
540
|
+
*
|
|
541
|
+
* Per matching config, the decision is an OR over the whole batch:
|
|
542
|
+
* - If ANY event's changes are not yet reflected in the config's array, run the refresh
|
|
543
|
+
* (or apply each such event via immediate mutation when the config allows it). A single
|
|
544
|
+
* full refresh covers every event in the window.
|
|
545
|
+
* - Else, if any event's changes were already applied (in-place save of a cached instance,
|
|
546
|
+
* manual push after create), notify observers once — the refresh is redundant but the
|
|
547
|
+
* notification is not.
|
|
548
|
+
* - Deletes of rows absent from the array stay silent: "already spliced by engine code"
|
|
549
|
+
* (that code owns the notification, see {@link notifyAlreadyAppliedMutation}) is
|
|
550
|
+
* indistinguishable from "never matched this config's Filter", and notifying would
|
|
551
|
+
* assert phantom deletes to filtered configs' observers.
|
|
552
|
+
*
|
|
553
|
+
* A transiently-failed refresh schedules a bounded retry via
|
|
554
|
+
* {@link scheduleEventRefreshRetry} — without it, the consumed debounce event would leave
|
|
555
|
+
* observers permanently stale until an unrelated event arrived.
|
|
556
|
+
*
|
|
557
|
+
* This is the best method to override if you want to change the actual processing of entity
|
|
558
|
+
* events but do NOT want to modify the debouncing behavior.
|
|
559
|
+
*/
|
|
560
|
+
protected ProcessEntityEvents(events: BaseEntityEvent[]): Promise<void>;
|
|
561
|
+
/**
|
|
562
|
+
* Classifies a single entity event against a single config's backing array:
|
|
563
|
+
* - 'refresh' — the array does not yet reflect this event's changes; a refresh
|
|
564
|
+
* (or immediate mutation) is required.
|
|
565
|
+
* - 'notify' — the array already reflects the change (in-place save of the array's own
|
|
566
|
+
* cached instance, or a manually-pushed create); observers still need a notification.
|
|
567
|
+
* - 'silent' — a delete of a row absent from the array; "already spliced" is
|
|
568
|
+
* indistinguishable from "never matched the Filter", so no notification is emitted
|
|
569
|
+
* (manual-splice engine code owns that notification).
|
|
570
|
+
*
|
|
571
|
+
* For deletes, the by-key membership check uses the event payload's pre-delete OldValues
|
|
572
|
+
* snapshot — BaseEntity.Delete() calls NewRecord() right after raising the event, which
|
|
573
|
+
* wipes field values and REGENERATES the primary key, so the live entity's key can never
|
|
574
|
+
* match the deleted row by the time the debounced handler runs.
|
|
575
|
+
*/
|
|
576
|
+
protected classifyEventForConfig(config: BaseEnginePropertyConfig, event: BaseEntityEvent): EntityEventDisposition;
|
|
504
577
|
/**
|
|
505
578
|
* Checks if the exact entity object reference is already in the config's data array.
|
|
506
579
|
* Used to skip unnecessary refreshes for UPDATE events where the object was mutated in place.
|
|
@@ -513,14 +586,64 @@ export declare abstract class BaseEngine<T> extends BaseSingleton<T> implements
|
|
|
513
586
|
/**
|
|
514
587
|
* Checks if an entity is in the config's data array by object reference OR by primary key match.
|
|
515
588
|
* Used for DELETE events where we need to know if the entity still exists in the array.
|
|
516
|
-
*
|
|
517
|
-
*
|
|
589
|
+
*
|
|
590
|
+
* For deletes, pass `preDeleteValues` (the event payload's OldValues snapshot): by the time
|
|
591
|
+
* the debounced handler runs, BaseEntity.Delete() has already called NewRecord(), which wipes
|
|
592
|
+
* the entity's fields and regenerates its primary key — so a by-key check against the live
|
|
593
|
+
* entity can never match the deleted row. Same hazard (and same OldValues workaround) as
|
|
594
|
+
* LocalCacheManager.HandleBaseEntityEvent.
|
|
518
595
|
*
|
|
519
596
|
* @param config - The configuration to check
|
|
520
597
|
* @param entity - The entity to look for
|
|
598
|
+
* @param preDeleteValues - Pre-delete field snapshot (delete event payload's OldValues)
|
|
521
599
|
* @returns true if the entity is in the array (by reference or by primary key)
|
|
522
600
|
*/
|
|
523
|
-
protected isEntityInArrayByRefOrKey(config: BaseEnginePropertyConfig, entity: BaseEntity): boolean;
|
|
601
|
+
protected isEntityInArrayByRefOrKey(config: BaseEnginePropertyConfig, entity: BaseEntity, preDeleteValues?: Record<string, unknown>): boolean;
|
|
602
|
+
/**
|
|
603
|
+
* Emits change notifications for a config whose backing array ALREADY reflects the
|
|
604
|
+
* entity event — e.g., engine code saved the array's own cached instance in place,
|
|
605
|
+
* or manually pushed a newly created entity after Save. In those cases
|
|
606
|
+
* {@link ProcessEntityEvent} safely skips the redundant refresh, but the notification
|
|
607
|
+
* must NOT be skipped: without it, `DataChange$` and `ObserveProperty` subscribers
|
|
608
|
+
* (and anything derived from them downstream) never learn the array changed and are
|
|
609
|
+
* stranded on stale state.
|
|
610
|
+
*
|
|
611
|
+
* Engine subclasses that manually SPLICE a deleted row out of a config's array must
|
|
612
|
+
* call this themselves ('delete') right after splicing — the debounced event handler
|
|
613
|
+
* cannot distinguish "already spliced" from "never matched this config's Filter", so
|
|
614
|
+
* it stays silent for absent rows.
|
|
615
|
+
*
|
|
616
|
+
* Deliberately does not run AdditionalLoading — the skip paths never did, and
|
|
617
|
+
* engines that maintain their arrays manually own any derived-data updates themselves.
|
|
618
|
+
*/
|
|
619
|
+
protected notifyAlreadyAppliedMutation(config: BaseEnginePropertyConfig, changeType: 'add' | 'update' | 'delete', entity: BaseEntity): void;
|
|
620
|
+
/**
|
|
621
|
+
* True when the config's last load attempt left it in a successfully-loaded state.
|
|
622
|
+
* Reads the same map entry {@link HandleSingleViewResult} writes — a transient failure
|
|
623
|
+
* (network, server restart) records loadedSuccessfully=false; a permission denial is
|
|
624
|
+
* recorded as loaded-empty (true) and is deliberately NOT retryable.
|
|
625
|
+
*/
|
|
626
|
+
protected configLoadedSuccessfully(propertyName: string): boolean;
|
|
627
|
+
private _eventRefreshRetryTimers;
|
|
628
|
+
/**
|
|
629
|
+
* Maximum number of retries for an event-triggered config refresh that failed transiently.
|
|
630
|
+
* Overridable by subclasses that want more or less persistence.
|
|
631
|
+
*/
|
|
632
|
+
protected get MaxEventRefreshRetries(): number;
|
|
633
|
+
/**
|
|
634
|
+
* Schedules a bounded, backed-off retry of a config refresh that failed transiently during
|
|
635
|
+
* entity-event processing. Without this, one failed RunView after a save would permanently
|
|
636
|
+
* strand every observer on stale data — the debounced event is already consumed, so nothing
|
|
637
|
+
* else re-runs the refresh until an unrelated event for the same entity arrives.
|
|
638
|
+
*
|
|
639
|
+
* At most one retry is pending per property at a time; a retry that succeeds notifies
|
|
640
|
+
* observers through the normal HandleSingleViewResult → NotifyDataChange path. Permission
|
|
641
|
+
* denials never reach here (HandleSingleViewResult marks them loaded-empty).
|
|
642
|
+
*
|
|
643
|
+
* @param config - The config whose refresh failed
|
|
644
|
+
* @param attempt - 1-based attempt number; delays back off linearly (2s, 4s, ...)
|
|
645
|
+
*/
|
|
646
|
+
protected scheduleEventRefreshRetry(config: BaseEnginePropertyConfig, attempt: number): void;
|
|
524
647
|
/**
|
|
525
648
|
* Determines if an immediate array mutation can be used instead of running a full view refresh.
|
|
526
649
|
* Immediate mutations are only safe when:
|
|
@@ -616,6 +739,19 @@ export declare abstract class BaseEngine<T> extends BaseSingleton<T> implements
|
|
|
616
739
|
* @param bypassCache - When true, bypasses server-side cache to get fresh data from the database
|
|
617
740
|
*/
|
|
618
741
|
protected LoadSingleConfig(config: BaseEnginePropertyConfig, contextUser: UserInfo, bypassCache?: boolean): Promise<void>;
|
|
742
|
+
/**
|
|
743
|
+
* Opens a new full-refresh "generation" for a property and returns its token. Each call
|
|
744
|
+
* bumps the property's monotonic counter, so a token is the latest iff no later refresh
|
|
745
|
+
* for that property has begun since. See {@link _configRefreshGeneration}.
|
|
746
|
+
*/
|
|
747
|
+
protected beginConfigRefresh(propertyName: string): number;
|
|
748
|
+
/**
|
|
749
|
+
* True when `generation` is still the most recent token handed out by
|
|
750
|
+
* {@link beginConfigRefresh} for `propertyName` — i.e. no newer full refresh for this
|
|
751
|
+
* property has started since. A refresh whose token is stale must NOT commit its results:
|
|
752
|
+
* a newer refresh was initiated afterward and read a more-recent state.
|
|
753
|
+
*/
|
|
754
|
+
protected isLatestConfigRefresh(propertyName: string, generation: number): boolean;
|
|
619
755
|
/**
|
|
620
756
|
* Handles the process of loading a single config of type 'entity'.
|
|
621
757
|
* @param config
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"baseEngine.d.ts","sourceRoot":"","sources":["../../src/generic/baseEngine.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"baseEngine.d.ts","sourceRoot":"","sources":["../../src/generic/baseEngine.ts"],"names":[],"mappings":"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"}
|