@memberjunction/core 2.128.0 → 2.130.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/__tests__/mocks/TestMetadataProvider.d.ts +4 -2
- package/dist/__tests__/mocks/TestMetadataProvider.d.ts.map +1 -1
- package/dist/__tests__/mocks/TestMetadataProvider.js +9 -3
- package/dist/__tests__/mocks/TestMetadataProvider.js.map +1 -1
- package/dist/generic/RegisterForStartup.d.ts +228 -0
- package/dist/generic/RegisterForStartup.d.ts.map +1 -0
- package/dist/generic/RegisterForStartup.js +233 -0
- package/dist/generic/RegisterForStartup.js.map +1 -0
- package/dist/generic/baseEngine.d.ts +191 -8
- package/dist/generic/baseEngine.d.ts.map +1 -1
- package/dist/generic/baseEngine.js +360 -14
- package/dist/generic/baseEngine.js.map +1 -1
- package/dist/generic/baseEngineRegistry.d.ts +247 -0
- package/dist/generic/baseEngineRegistry.d.ts.map +1 -0
- package/dist/generic/baseEngineRegistry.js +470 -0
- package/dist/generic/baseEngineRegistry.js.map +1 -0
- package/dist/generic/entityInfo.d.ts +50 -0
- package/dist/generic/entityInfo.d.ts.map +1 -1
- package/dist/generic/entityInfo.js +56 -0
- package/dist/generic/entityInfo.js.map +1 -1
- package/dist/generic/graphqlTypeNames.d.ts +90 -0
- package/dist/generic/graphqlTypeNames.d.ts.map +1 -0
- package/dist/generic/graphqlTypeNames.js +119 -0
- package/dist/generic/graphqlTypeNames.js.map +1 -0
- package/dist/generic/interfaces.d.ts +234 -3
- package/dist/generic/interfaces.d.ts.map +1 -1
- package/dist/generic/interfaces.js.map +1 -1
- package/dist/generic/localCacheManager.d.ts +388 -0
- package/dist/generic/localCacheManager.d.ts.map +1 -0
- package/dist/generic/localCacheManager.js +856 -0
- package/dist/generic/localCacheManager.js.map +1 -0
- package/dist/generic/providerBase.d.ts +227 -13
- package/dist/generic/providerBase.d.ts.map +1 -1
- package/dist/generic/providerBase.js +751 -6
- package/dist/generic/providerBase.js.map +1 -1
- package/dist/generic/queryInfo.d.ts +18 -0
- package/dist/generic/queryInfo.d.ts.map +1 -1
- package/dist/generic/queryInfo.js +18 -0
- package/dist/generic/queryInfo.js.map +1 -1
- package/dist/generic/queryInfoInterfaces.d.ts +17 -0
- package/dist/generic/queryInfoInterfaces.d.ts.map +1 -1
- package/dist/generic/runQuery.d.ts +30 -0
- package/dist/generic/runQuery.d.ts.map +1 -1
- package/dist/generic/runQuery.js +13 -0
- package/dist/generic/runQuery.js.map +1 -1
- package/dist/generic/telemetryManager.d.ts +628 -0
- package/dist/generic/telemetryManager.d.ts.map +1 -0
- package/dist/generic/telemetryManager.js +1011 -0
- package/dist/generic/telemetryManager.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/views/runView.d.ts +25 -0
- package/dist/views/runView.d.ts.map +1 -1
- package/dist/views/runView.js +4 -5
- package/dist/views/runView.js.map +1 -1
- package/package.json +2 -2
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { BaseSingleton, MJEvent } from "@memberjunction/global";
|
|
2
|
-
import { BehaviorSubject } from "rxjs";
|
|
2
|
+
import { BehaviorSubject, Observable } from "rxjs";
|
|
3
3
|
import { UserInfo } from "./securityInfo";
|
|
4
4
|
import { DatasetItemFilterType, IMetadataProvider, IRunViewProvider, RunViewResult } from "./interfaces";
|
|
5
5
|
import { BaseInfo } from "./baseInfo";
|
|
6
|
-
import { BaseEntityEvent } from "./baseEntity";
|
|
6
|
+
import { BaseEntity, BaseEntityEvent } from "./baseEntity";
|
|
7
|
+
import { IStartupSink } from "./RegisterForStartup";
|
|
7
8
|
/**
|
|
8
9
|
* Property configuration for the BaseEngine class to automatically load/set properties on the class.
|
|
9
10
|
*/
|
|
@@ -63,14 +64,75 @@ export declare class BaseEnginePropertyConfig extends BaseInfo {
|
|
|
63
64
|
* This allows different entities to have different debounce delays.
|
|
64
65
|
*/
|
|
65
66
|
DebounceTime?: number;
|
|
67
|
+
/**
|
|
68
|
+
* When set to true, the engine will use the LocalCacheManager to cache results locally.
|
|
69
|
+
* On subsequent loads (unless forceRefresh is true), cached results will be returned
|
|
70
|
+
* immediately without hitting the server if they are still valid.
|
|
71
|
+
*
|
|
72
|
+
* This is useful for frequently-accessed, relatively-static data that doesn't need
|
|
73
|
+
* real-time freshness. The cache is automatically invalidated when entity data changes.
|
|
74
|
+
*
|
|
75
|
+
* @default false
|
|
76
|
+
*/
|
|
77
|
+
CacheLocal?: boolean;
|
|
78
|
+
/**
|
|
79
|
+
* Optional TTL (time-to-live) in milliseconds for locally cached results when CacheLocal is true.
|
|
80
|
+
* After this time, cached results will be considered stale and fresh data will be fetched.
|
|
81
|
+
* If not specified, the LocalCacheManager's default TTL will be used (typically 5 minutes).
|
|
82
|
+
*/
|
|
83
|
+
CacheLocalTTL?: number;
|
|
66
84
|
constructor(init?: Partial<BaseEnginePropertyConfig>);
|
|
67
85
|
}
|
|
86
|
+
/**
|
|
87
|
+
* Options for the ConfigEx method - provides a more flexible way to configure engines
|
|
88
|
+
*/
|
|
89
|
+
export interface ConfigExOptions {
|
|
90
|
+
/**
|
|
91
|
+
* Force refresh from server, bypassing all caches. Default: false
|
|
92
|
+
*/
|
|
93
|
+
forceRefresh?: boolean;
|
|
94
|
+
/**
|
|
95
|
+
* The user context for permission checks (required for server-side)
|
|
96
|
+
*/
|
|
97
|
+
contextUser?: UserInfo;
|
|
98
|
+
/**
|
|
99
|
+
* Custom provider to use instead of the default
|
|
100
|
+
*/
|
|
101
|
+
provider?: IMetadataProvider;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Event emitted when engine data changes (e.g., after a refresh triggered by entity save/delete).
|
|
105
|
+
* Subscribe to an engine's DataChange$ observable to react to data updates.
|
|
106
|
+
*/
|
|
107
|
+
export interface EngineDataChangeEvent {
|
|
108
|
+
/**
|
|
109
|
+
* The configuration that was refreshed. Contains PropertyName, EntityName, DatasetName, etc.
|
|
110
|
+
*/
|
|
111
|
+
config: BaseEnginePropertyConfig;
|
|
112
|
+
/**
|
|
113
|
+
* The type of change that triggered this event.
|
|
114
|
+
* - 'refresh': Full data reload from database (via RunView)
|
|
115
|
+
* - 'add': Single entity was added to the array (immediate mutation)
|
|
116
|
+
* - 'update': Single entity was updated in the array (immediate mutation)
|
|
117
|
+
* - 'delete': Single entity was removed from the array (immediate mutation)
|
|
118
|
+
*/
|
|
119
|
+
changeType: 'refresh' | 'add' | 'update' | 'delete';
|
|
120
|
+
/**
|
|
121
|
+
* The current data array. This is the same data now available on the engine property.
|
|
122
|
+
*/
|
|
123
|
+
data: unknown[];
|
|
124
|
+
/**
|
|
125
|
+
* For 'add', 'update', or 'delete' events, this is the entity that was affected.
|
|
126
|
+
* For 'refresh' events, this is undefined.
|
|
127
|
+
*/
|
|
128
|
+
affectedEntity?: BaseEntity;
|
|
129
|
+
}
|
|
68
130
|
/**
|
|
69
131
|
* 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
|
|
70
132
|
* 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
|
|
71
133
|
* generally it is recommended to call the Load method to load the metadata. Subclasses can also override the AdditionalLoading method to perform additional loading tasks.
|
|
72
134
|
*/
|
|
73
|
-
export declare abstract class BaseEngine<T> extends BaseSingleton<T> {
|
|
135
|
+
export declare abstract class BaseEngine<T> extends BaseSingleton<T> implements IStartupSink {
|
|
74
136
|
private _loaded;
|
|
75
137
|
private _loadingSubject;
|
|
76
138
|
private _contextUser;
|
|
@@ -80,10 +142,46 @@ export declare abstract class BaseEngine<T> extends BaseSingleton<T> {
|
|
|
80
142
|
private _expirationTimers;
|
|
81
143
|
private _entityEventSubjects;
|
|
82
144
|
private _provider;
|
|
145
|
+
private _dataChange$;
|
|
83
146
|
/**
|
|
84
147
|
* While the BaseEngine class is a singleton, normally, it is possible to have multiple instances of the class in an application if the class is used in multiple contexts that have different providers.
|
|
85
148
|
*/
|
|
86
149
|
constructor();
|
|
150
|
+
/**
|
|
151
|
+
* Observable that emits when any data property changes due to a refresh.
|
|
152
|
+
* Subscribe to this to react to engine data updates (e.g., sync Angular observables).
|
|
153
|
+
*
|
|
154
|
+
* Events are emitted after data is refreshed in response to BaseEntity save/delete events.
|
|
155
|
+
* The event includes the full config and the new data array.
|
|
156
|
+
*
|
|
157
|
+
* @example
|
|
158
|
+
* ```typescript
|
|
159
|
+
* UserInfoEngine.Instance.DataChange$.subscribe(event => {
|
|
160
|
+
* if (event.config.PropertyName === 'UserApplications') {
|
|
161
|
+
* // Sync local state with engine's updated data
|
|
162
|
+
* this.refreshLocalAppList();
|
|
163
|
+
* }
|
|
164
|
+
* });
|
|
165
|
+
* ```
|
|
166
|
+
*/
|
|
167
|
+
get DataChange$(): Observable<EngineDataChangeEvent>;
|
|
168
|
+
/**
|
|
169
|
+
* Notify listeners that a data property has changed.
|
|
170
|
+
* Called automatically by HandleSingleViewResult after data refresh and by applyImmediateMutation for array operations.
|
|
171
|
+
* Subclasses can also call this manually when modifying data arrays directly.
|
|
172
|
+
*
|
|
173
|
+
* @param config - The configuration for the property that changed
|
|
174
|
+
* @param data - The current data array
|
|
175
|
+
* @param changeType - The type of change: 'refresh', 'add', 'update', or 'delete'
|
|
176
|
+
* @param affectedEntity - For add/update/delete, the entity that was affected
|
|
177
|
+
*/
|
|
178
|
+
protected NotifyDataChange(config: BaseEnginePropertyConfig, data: unknown[], changeType?: 'refresh' | 'add' | 'update' | 'delete', affectedEntity?: BaseEntity): void;
|
|
179
|
+
/**
|
|
180
|
+
* All BaseEngine sub-classes get an implementation of IStartupSink so they can be set the auto start in their
|
|
181
|
+
* app container, if desired, simply by adding the @see @RegisterForStartup decorator. The BaseEngine implementation
|
|
182
|
+
* of IStartupSink.HandleStartup is to simply call @see Config
|
|
183
|
+
*/
|
|
184
|
+
HandleStartup(contextUser?: UserInfo, provider?: IMetadataProvider): Promise<void>;
|
|
87
185
|
/**
|
|
88
186
|
* Returns the metadata provider to use for the engine. If a provider is set via the Config method, that provider will be used, otherwise the default provider will be used.
|
|
89
187
|
*/
|
|
@@ -99,8 +197,30 @@ export declare abstract class BaseEngine<T> extends BaseSingleton<T> {
|
|
|
99
197
|
get Configs(): BaseEnginePropertyConfig[];
|
|
100
198
|
/**
|
|
101
199
|
* Configures the engine by loading metadata from the database.
|
|
200
|
+
* Subclasses must implement this method to define their configuration behavior.
|
|
201
|
+
*
|
|
202
|
+
* Note: This method is called by ConfigEx() - prefer using ConfigEx() directly for new code
|
|
203
|
+
* as it provides more flexible configuration options.
|
|
102
204
|
*/
|
|
103
|
-
abstract Config(forceRefresh?: boolean, contextUser?: UserInfo, provider?: IMetadataProvider):
|
|
205
|
+
abstract Config(forceRefresh?: boolean, contextUser?: UserInfo, provider?: IMetadataProvider): Promise<unknown>;
|
|
206
|
+
/**
|
|
207
|
+
* Extended configuration method with object-based options.
|
|
208
|
+
* This provides a more flexible API compared to Config() with positional parameters.
|
|
209
|
+
*
|
|
210
|
+
* Internally calls Config() after setting up options that Load() can access.
|
|
211
|
+
*
|
|
212
|
+
* @param options - Configuration options object
|
|
213
|
+
* @returns Promise that resolves when configuration is complete
|
|
214
|
+
*
|
|
215
|
+
* @example
|
|
216
|
+
* ```typescript
|
|
217
|
+
* await MyEngine.Instance.ConfigEx({
|
|
218
|
+
* forceRefresh: true,
|
|
219
|
+
* contextUser: currentUser
|
|
220
|
+
* });
|
|
221
|
+
* ```
|
|
222
|
+
*/
|
|
223
|
+
ConfigEx(options?: ConfigExOptions): Promise<unknown>;
|
|
104
224
|
/**
|
|
105
225
|
* This method should be called by sub-classes to load up their specific metadata requirements. For more complex metadata
|
|
106
226
|
* loading or for post-processing of metadata loading done here, overide the AdditionalLoading method to add your logic.
|
|
@@ -143,9 +263,12 @@ export declare abstract class BaseEngine<T> extends BaseSingleton<T> {
|
|
|
143
263
|
*/
|
|
144
264
|
protected HandleIndividualEvent(event: MJEvent): Promise<boolean>;
|
|
145
265
|
/**
|
|
146
|
-
* This method handles the individual base entity event
|
|
147
|
-
*
|
|
148
|
-
*
|
|
266
|
+
* This method handles the individual base entity event. For events that can use immediate array mutations
|
|
267
|
+
* (no Filter, OrderBy, or AdditionalLoading override), processing happens synchronously without debounce.
|
|
268
|
+
* For events that require full view refresh, debouncing is applied to batch rapid successive changes.
|
|
269
|
+
*
|
|
270
|
+
* Override this method if you want to have a different handling for the filtering of events that are debounced
|
|
271
|
+
* or if you don't want to debounce at all you can do that in an override of this method.
|
|
149
272
|
* @param event
|
|
150
273
|
*/
|
|
151
274
|
protected HandleIndividualBaseEntityEvent(event: BaseEntityEvent): Promise<boolean>;
|
|
@@ -161,7 +284,12 @@ export declare abstract class BaseEngine<T> extends BaseSingleton<T> {
|
|
|
161
284
|
protected DebounceIndividualBaseEntityEvent(event: BaseEntityEvent): Promise<boolean>;
|
|
162
285
|
private _entityEventDebounceTime;
|
|
163
286
|
/**
|
|
164
|
-
* Overridable property to set the debounce time for entity events. Default is
|
|
287
|
+
* Overridable property to set the debounce time for entity events. Default is 1500 milliseconds (1.5 seconds).
|
|
288
|
+
* This debounce time is used when immediate array mutations cannot be applied (e.g., when Filter, OrderBy,
|
|
289
|
+
* or AdditionalLoading overrides are present) and a full view refresh is required.
|
|
290
|
+
*
|
|
291
|
+
* Note: When immediate mutations ARE possible (no Filter, OrderBy, or AdditionalLoading override),
|
|
292
|
+
* updates happen synchronously without any debounce delay.
|
|
165
293
|
*/
|
|
166
294
|
protected get EntityEventDebounceTime(): number;
|
|
167
295
|
/**
|
|
@@ -172,6 +300,61 @@ export declare abstract class BaseEngine<T> extends BaseSingleton<T> {
|
|
|
172
300
|
* 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.
|
|
173
301
|
*/
|
|
174
302
|
protected ProcessEntityEvent(event: BaseEntityEvent): Promise<void>;
|
|
303
|
+
/**
|
|
304
|
+
* Checks if the exact entity object reference is already in the config's data array.
|
|
305
|
+
* Used to skip unnecessary refreshes for UPDATE events where the object was mutated in place.
|
|
306
|
+
*
|
|
307
|
+
* @param config - The configuration to check
|
|
308
|
+
* @param entity - The entity to look for
|
|
309
|
+
* @returns true if the exact object reference is already in the array
|
|
310
|
+
*/
|
|
311
|
+
protected isEntityAlreadyInArray(config: BaseEnginePropertyConfig, entity: BaseEntity): boolean;
|
|
312
|
+
/**
|
|
313
|
+
* Checks if an entity is in the config's data array by object reference OR by primary key match.
|
|
314
|
+
* Used for DELETE events where we need to know if the entity still exists in the array.
|
|
315
|
+
* The object reference may still exist (entity.Delete() just marks it deleted), but if it was
|
|
316
|
+
* manually spliced out by engine code, we check by primary key as fallback.
|
|
317
|
+
*
|
|
318
|
+
* @param config - The configuration to check
|
|
319
|
+
* @param entity - The entity to look for
|
|
320
|
+
* @returns true if the entity is in the array (by reference or by primary key)
|
|
321
|
+
*/
|
|
322
|
+
protected isEntityInArrayByRefOrKey(config: BaseEnginePropertyConfig, entity: BaseEntity): boolean;
|
|
323
|
+
/**
|
|
324
|
+
* Determines if an immediate array mutation can be used instead of running a full view refresh.
|
|
325
|
+
* Immediate mutations are only safe when:
|
|
326
|
+
* 1. The config has no Filter (no server-side filtering that might exclude the entity)
|
|
327
|
+
* 2. The config has no OrderBy (no server-side ordering that would need to be maintained)
|
|
328
|
+
* 3. The subclass has not overridden AdditionalLoading (no post-processing that depends on full data)
|
|
329
|
+
*
|
|
330
|
+
* @param config - The configuration to check
|
|
331
|
+
* @returns true if immediate mutation is safe, false if a full view refresh is needed
|
|
332
|
+
*/
|
|
333
|
+
protected canUseImmediateMutation(config: BaseEnginePropertyConfig): boolean;
|
|
334
|
+
/**
|
|
335
|
+
* Checks if the current instance has overridden the AdditionalLoading method.
|
|
336
|
+
* We do this by comparing the method to the base class's method.
|
|
337
|
+
*
|
|
338
|
+
* @returns true if AdditionalLoading is overridden, false if using the base implementation
|
|
339
|
+
*/
|
|
340
|
+
protected hasAdditionalLoadingOverride(): boolean;
|
|
341
|
+
/**
|
|
342
|
+
* Applies an immediate array mutation based on the entity event type.
|
|
343
|
+
* This is faster than running a full view refresh for simple add/update/delete operations.
|
|
344
|
+
*
|
|
345
|
+
* @param config - The configuration for the property being mutated
|
|
346
|
+
* @param event - The entity event containing the affected entity and event type
|
|
347
|
+
*/
|
|
348
|
+
protected applyImmediateMutation(config: BaseEnginePropertyConfig, event: BaseEntityEvent): void;
|
|
349
|
+
/**
|
|
350
|
+
* Finds an entity in the array by matching all primary key columns.
|
|
351
|
+
* Supports composite primary keys by comparing all PrimaryKey fields from EntityInfo.
|
|
352
|
+
*
|
|
353
|
+
* @param dataArray - The array of entities to search
|
|
354
|
+
* @param targetEntity - The entity to find (using its primary key values)
|
|
355
|
+
* @returns The index of the matching entity, or -1 if not found
|
|
356
|
+
*/
|
|
357
|
+
protected findEntityIndexByPrimaryKeys(dataArray: BaseEntity[], targetEntity: BaseEntity): number;
|
|
175
358
|
/**
|
|
176
359
|
* Utility method to upgrade an object to a BaseEnginePropertyConfig object.
|
|
177
360
|
* @param obj
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"baseEngine.d.ts","sourceRoot":"","sources":["../../src/generic/baseEngine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,OAAO,EAAyB,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"baseEngine.d.ts","sourceRoot":"","sources":["../../src/generic/baseEngine.ts"],"names":[],"mappings":"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"}
|