@memberjunction/core 5.43.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/BaseEntitySaveQueue.d.ts +6 -0
- package/dist/generic/BaseEntitySaveQueue.d.ts.map +1 -1
- package/dist/generic/BaseEntitySaveQueue.js +9 -0
- package/dist/generic/BaseEntitySaveQueue.js.map +1 -1
- package/dist/generic/EntityFieldRules.js +2 -2
- package/dist/generic/EntityFieldRules.js.map +1 -1
- package/dist/generic/authTypes.d.ts +1 -0
- package/dist/generic/authTypes.d.ts.map +1 -1
- package/dist/generic/authTypes.js +1 -0
- package/dist/generic/authTypes.js.map +1 -1
- package/dist/generic/baseEngine.d.ts +216 -10
- package/dist/generic/baseEngine.d.ts.map +1 -1
- package/dist/generic/baseEngine.js +426 -55
- package/dist/generic/baseEngine.js.map +1 -1
- package/dist/generic/baseEntity.d.ts.map +1 -1
- package/dist/generic/baseEntity.js +35 -15
- package/dist/generic/baseEntity.js.map +1 -1
- package/dist/generic/compositeKey.js +1 -1
- package/dist/generic/compositeKey.js.map +1 -1
- package/dist/generic/databaseProviderBase.d.ts.map +1 -1
- package/dist/generic/databaseProviderBase.js +17 -1
- package/dist/generic/databaseProviderBase.js.map +1 -1
- package/dist/generic/entityInfo.d.ts +21 -0
- package/dist/generic/entityInfo.d.ts.map +1 -1
- package/dist/generic/entityInfo.js +22 -1
- 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/graphqlTypeNames.d.ts.map +1 -1
- package/dist/generic/graphqlTypeNames.js +6 -1
- package/dist/generic/graphqlTypeNames.js.map +1 -1
- package/dist/generic/interfaces.d.ts +24 -0
- package/dist/generic/interfaces.d.ts.map +1 -1
- package/dist/generic/interfaces.js.map +1 -1
- 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/queryResultEnricher.d.ts +77 -0
- package/dist/generic/queryResultEnricher.d.ts.map +1 -0
- package/dist/generic/queryResultEnricher.js +41 -0
- package/dist/generic/queryResultEnricher.js.map +1 -0
- package/dist/generic/runQuery.d.ts +17 -0
- package/dist/generic/runQuery.d.ts.map +1 -1
- package/dist/generic/runQuery.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 +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
- package/readme.md +34 -4
|
@@ -31,6 +31,12 @@ export declare class BaseEntitySaveQueue {
|
|
|
31
31
|
* serialization key, so a subsequent {@link Update} of the same instance waits for this to land.
|
|
32
32
|
*/
|
|
33
33
|
Insert(entity: BaseEntity): void;
|
|
34
|
+
/**
|
|
35
|
+
* Fire-and-forget INSERT that waits for `dependency`'s pending tasks to settle first. Use this for
|
|
36
|
+
* self-referencing foreign keys: a child entity whose FK points at `dependency` must not INSERT
|
|
37
|
+
* until the dependency's own INSERT has landed in the database.
|
|
38
|
+
*/
|
|
39
|
+
InsertAfter(entity: BaseEntity, dependency: BaseEntity): void;
|
|
34
40
|
/**
|
|
35
41
|
* Fire-and-forget UPDATE chained after the entity's INSERT. `applyMutation` (if given) runs INSIDE
|
|
36
42
|
* the post-INSERT task — after `finalizeSave`'s reload — so its values always survive; the save is
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseEntitySaveQueue.d.ts","sourceRoot":"","sources":["../../src/generic/BaseEntitySaveQueue.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAwB,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AACrF,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAI1C;;;;;;GAMG;AACH,qBAAa,mBAAmB;IAC5B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA8B;IACpD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAA4B;IAErD;;;;OAIG;gBACS,IAAI,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;KAAE;IAI1D;;;OAGG;IACI,MAAM,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;IAKvC;;;;;OAKG;IACI,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,GAAG,IAAI;IAOrF,wGAAwG;IACjG,KAAK,IAAI,OAAO,CAAC,qBAAqB,CAAC;IAI9C;;;;OAIG;YACW,OAAO;IAgBrB,oGAAoG;IACpG,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,QAAQ;IAUhB,OAAO,CAAC,SAAS;CAGpB"}
|
|
1
|
+
{"version":3,"file":"BaseEntitySaveQueue.d.ts","sourceRoot":"","sources":["../../src/generic/BaseEntitySaveQueue.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAwB,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AACrF,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAI1C;;;;;;GAMG;AACH,qBAAa,mBAAmB;IAC5B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA8B;IACpD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAA4B;IAErD;;;;OAIG;gBACS,IAAI,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;KAAE;IAI1D;;;OAGG;IACI,MAAM,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;IAKvC;;;;OAIG;IACI,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,GAAG,IAAI;IAKpE;;;;;OAKG;IACI,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,GAAG,IAAI;IAOrF,wGAAwG;IACjG,KAAK,IAAI,OAAO,CAAC,qBAAqB,CAAC;IAI9C;;;;OAIG;YACW,OAAO;IAgBrB,oGAAoG;IACpG,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,QAAQ;IAUhB,OAAO,CAAC,SAAS;CAGpB"}
|
|
@@ -34,6 +34,15 @@ export class BaseEntitySaveQueue {
|
|
|
34
34
|
const label = this.labelFor('Insert', entity);
|
|
35
35
|
void this.queue.enqueue(entity, () => this.runSave(entity, label), { isOk: (ok) => ok === true, label });
|
|
36
36
|
}
|
|
37
|
+
/**
|
|
38
|
+
* Fire-and-forget INSERT that waits for `dependency`'s pending tasks to settle first. Use this for
|
|
39
|
+
* self-referencing foreign keys: a child entity whose FK points at `dependency` must not INSERT
|
|
40
|
+
* until the dependency's own INSERT has landed in the database.
|
|
41
|
+
*/
|
|
42
|
+
InsertAfter(entity, dependency) {
|
|
43
|
+
const label = this.labelFor('Insert', entity);
|
|
44
|
+
void this.queue.enqueue(entity, () => this.runSave(entity, label), { isOk: (ok) => ok === true, label, after: dependency });
|
|
45
|
+
}
|
|
37
46
|
/**
|
|
38
47
|
* Fire-and-forget UPDATE chained after the entity's INSERT. `applyMutation` (if given) runs INSIDE
|
|
39
48
|
* the post-INSERT task — after `finalizeSave`'s reload — so its values always survive; the save is
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseEntitySaveQueue.js","sourceRoot":"","sources":["../../src/generic/BaseEntitySaveQueue.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"BaseEntitySaveQueue.js","sourceRoot":"","sources":["../../src/generic/BaseEntitySaveQueue.ts"],"names":[],"mappings":"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"}
|
|
@@ -68,7 +68,7 @@ export class EntityFieldRules {
|
|
|
68
68
|
if (!entity) {
|
|
69
69
|
return { Valid: false, Errors: [`entity '${entityName}' not found in metadata`] };
|
|
70
70
|
}
|
|
71
|
-
const field = (name) => entity.
|
|
71
|
+
const field = (name) => entity.FieldByName(name);
|
|
72
72
|
const errors = [];
|
|
73
73
|
ruleSet.Rules.forEach((rule, i) => {
|
|
74
74
|
const target = field(rule.TargetField);
|
|
@@ -128,7 +128,7 @@ export class EntityFieldRules {
|
|
|
128
128
|
if (!change.Applied || change.Error || change.NewValue == null) {
|
|
129
129
|
return change;
|
|
130
130
|
}
|
|
131
|
-
const field = entity.EntityInfo.
|
|
131
|
+
const field = entity.EntityInfo.FieldByName(change.Field);
|
|
132
132
|
if (!field) {
|
|
133
133
|
return change;
|
|
134
134
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntityFieldRules.js","sourceRoot":"","sources":["../../src/generic/EntityFieldRules.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAG7D,OAAO,EAAmB,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAGtC,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAsC3C;;;;GAIG;AACH,MAAM,OAAO,gBAAgB;IAGzB;;;;;;;;;OASG;IACH,YAA6B,WAAsB,EAAE,cAA+B,EAAE,sBAA+C;QAAxG,gBAAW,GAAX,WAAW,CAAW;QAC/C,IAAI,CAAC,SAAS,GAAG,IAAI,mBAAmB,CAAC;YACrC,cAAc,EAAE,IAAI,CAAC,mBAAmB,EAAE;YAC1C,cAAc,EAAE,cAAc;YAC9B,sBAAsB,EAAE,sBAAsB;SACjD,CAAC,CAAC;IACP,CAAC;IAED;;;;;;;;;OASG;IACI,MAAM,CAAC,QAAQ,CAAC,UAAkB,EAAE,OAAqB,EAAE,QAA4B;QAC1F,MAAM,EAAE,GAAG,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC;QACzC,MAAM,MAAM,GAAG,EAAE,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC;QAC5C,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,WAAW,UAAU,yBAAyB,CAAC,EAAE,CAAC;QACtF,CAAC;QACD,MAAM,KAAK,GAAG,CAAC,IAAY,EAA+B,EAAE,CACxD,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"EntityFieldRules.js","sourceRoot":"","sources":["../../src/generic/EntityFieldRules.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authTypes.d.ts","sourceRoot":"","sources":["../../src/generic/authTypes.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,eAAO,MAAM,mBAAmB
|
|
1
|
+
{"version":3,"file":"authTypes.d.ts","sourceRoot":"","sources":["../../src/generic/authTypes.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;CAQtB,CAAC;AAEX;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,OAAO,mBAAmB,CAAC,MAAM,OAAO,mBAAmB,CAAC,CAAC;AAE5F;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,IAAI,EAAE,gBAAgB,GAAG,MAAM,CAAC;IAEhC;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAElB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IAEjB;;OAEG;IACH,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,SAAS,CAAC,EAAE,IAAI,CAAC;IAEjB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAExB;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authTypes.js","sourceRoot":"","sources":["../../src/generic/authTypes.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,OAAO;IACd,IAAI,EAAE,MAAM;IACZ,OAAO,EAAE,SAAS;IAClB,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,QAAQ;CACR,CAAC"}
|
|
1
|
+
{"version":3,"file":"authTypes.js","sourceRoot":"","sources":["../../src/generic/authTypes.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,OAAO;IACd,IAAI,EAAE,MAAM;IACZ,OAAO,EAAE,SAAS;IAClB,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,QAAQ;CACR,CAAC"}
|
|
@@ -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
|
|
@@ -174,6 +189,26 @@ export interface EngineDataMapEntry {
|
|
|
174
189
|
data: unknown[];
|
|
175
190
|
loadedSuccessfully: boolean;
|
|
176
191
|
errorMessage?: string;
|
|
192
|
+
/**
|
|
193
|
+
* True when this config was skipped because the current user lacks read
|
|
194
|
+
* permission on its entity. The data array will be empty `[]`.
|
|
195
|
+
*/
|
|
196
|
+
permissionDenied?: boolean;
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Thrown when engine data is accessed but was never loaded because the
|
|
200
|
+
* current user lacks read permissions on the underlying entities.
|
|
201
|
+
*
|
|
202
|
+
* Consumers that want graceful degradation should check
|
|
203
|
+
* `engine.IsPermissionConstrained` BEFORE accessing properties.
|
|
204
|
+
* This exception is the safety net for code paths that forget to check.
|
|
205
|
+
*/
|
|
206
|
+
export declare class PermissionConstrainedError extends Error {
|
|
207
|
+
/** The engine class name (e.g., 'AIEngineBase', 'QueryEngine') */
|
|
208
|
+
readonly EngineName: string;
|
|
209
|
+
/** The entity names that were denied */
|
|
210
|
+
readonly DeniedEntities: string[];
|
|
211
|
+
constructor(engineName: string, deniedEntities: string[]);
|
|
177
212
|
}
|
|
178
213
|
export declare abstract class BaseEngine<T> extends BaseSingleton<T> implements IStartupSink {
|
|
179
214
|
private _loaded;
|
|
@@ -188,6 +223,19 @@ export declare abstract class BaseEngine<T> extends BaseSingleton<T> implements
|
|
|
188
223
|
private _dataChange$;
|
|
189
224
|
private _cacheChangeUnsubscribers;
|
|
190
225
|
private _propertySubjects;
|
|
226
|
+
private _isPermissionConstrained;
|
|
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;
|
|
191
239
|
/**
|
|
192
240
|
* Returns an Observable for a specific engine array property. Subscribers receive the
|
|
193
241
|
* current array immediately (BehaviorSubject semantics), then re-receive the same array
|
|
@@ -238,6 +286,42 @@ export declare abstract class BaseEngine<T> extends BaseSingleton<T> implements
|
|
|
238
286
|
* @param affectedEntity - For add/update/delete, the entity that was affected
|
|
239
287
|
*/
|
|
240
288
|
protected NotifyDataChange(config: BaseEnginePropertyConfig, data: unknown[], changeType?: 'refresh' | 'add' | 'update' | 'delete', affectedEntity?: BaseEntity): void;
|
|
289
|
+
/**
|
|
290
|
+
* True when the engine loaded successfully but all entity configs were
|
|
291
|
+
* skipped because the current user lacks read permissions. Accessor
|
|
292
|
+
* properties will throw {@link PermissionConstrainedError} if accessed
|
|
293
|
+
* in this state. Check this flag first to degrade gracefully.
|
|
294
|
+
*/
|
|
295
|
+
get IsPermissionConstrained(): boolean;
|
|
296
|
+
/**
|
|
297
|
+
* Retrieves engine-loaded data for a config property by name. This is the
|
|
298
|
+
* canonical accessor for engine getter properties — it checks the data map
|
|
299
|
+
* for permission denial and throws {@link PermissionConstrainedError} with
|
|
300
|
+
* the specific denied entity name(s) if the config was skipped.
|
|
301
|
+
*
|
|
302
|
+
* Subclasses should use this in every getter that exposes engine-loaded data:
|
|
303
|
+
* ```typescript
|
|
304
|
+
* public get Models(): MJAIModelEntityExtended[] {
|
|
305
|
+
* return this.GetConfigData<MJAIModelEntityExtended>('_models');
|
|
306
|
+
* }
|
|
307
|
+
* ```
|
|
308
|
+
*
|
|
309
|
+
* @param propertyName - The config property name (e.g., '_models', '_agents'),
|
|
310
|
+
* matching the PropertyName used in the engine's Config() params array.
|
|
311
|
+
* @returns The data array for the property, or an empty array if not yet loaded.
|
|
312
|
+
* @throws {PermissionConstrainedError} if the property was skipped due to permission denial.
|
|
313
|
+
*/
|
|
314
|
+
protected GetConfigData<E>(propertyName: string): E[];
|
|
315
|
+
/**
|
|
316
|
+
* Check if a specific property was skipped due to permission denial.
|
|
317
|
+
* Forward-compatible with a future partial-loading approach.
|
|
318
|
+
*/
|
|
319
|
+
IsPropertyPermissionConstrained(propertyName: string): boolean;
|
|
320
|
+
/**
|
|
321
|
+
* List of entity names that were skipped due to permission denial.
|
|
322
|
+
* Empty if not permission-constrained. Useful for logging/diagnostics.
|
|
323
|
+
*/
|
|
324
|
+
get PermissionConstrainedEntities(): string[];
|
|
241
325
|
/**
|
|
242
326
|
* Controls the default RunView ResultType for all entity configs loaded by this engine.
|
|
243
327
|
* Override in subclasses to change the default for the entire engine without modifying
|
|
@@ -417,10 +501,16 @@ export declare abstract class BaseEngine<T> extends BaseSingleton<T> implements
|
|
|
417
501
|
protected applyRemoteDelete(matchingConfigs: BaseEnginePropertyConfig[], primaryKeyValuesJSON: string): boolean;
|
|
418
502
|
/**
|
|
419
503
|
* This method handles the debouncing process, by default using the EntityEventDebounceTime property to set the debounce time. Debouncing is
|
|
420
|
-
* 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
|
|
421
505
|
* prevent multiple events from being processed in quick succession for a single entity which would cause a lot of wasted processing.
|
|
422
506
|
*
|
|
423
|
-
*
|
|
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.
|
|
424
514
|
* @param event
|
|
425
515
|
* @returns
|
|
426
516
|
*/
|
|
@@ -436,13 +526,54 @@ export declare abstract class BaseEngine<T> extends BaseSingleton<T> implements
|
|
|
436
526
|
*/
|
|
437
527
|
protected get EntityEventDebounceTime(): number;
|
|
438
528
|
/**
|
|
439
|
-
*
|
|
440
|
-
*
|
|
441
|
-
*
|
|
442
|
-
*
|
|
443
|
-
* 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.
|
|
444
533
|
*/
|
|
445
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;
|
|
446
577
|
/**
|
|
447
578
|
* Checks if the exact entity object reference is already in the config's data array.
|
|
448
579
|
* Used to skip unnecessary refreshes for UPDATE events where the object was mutated in place.
|
|
@@ -455,14 +586,64 @@ export declare abstract class BaseEngine<T> extends BaseSingleton<T> implements
|
|
|
455
586
|
/**
|
|
456
587
|
* Checks if an entity is in the config's data array by object reference OR by primary key match.
|
|
457
588
|
* Used for DELETE events where we need to know if the entity still exists in the array.
|
|
458
|
-
*
|
|
459
|
-
*
|
|
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.
|
|
460
595
|
*
|
|
461
596
|
* @param config - The configuration to check
|
|
462
597
|
* @param entity - The entity to look for
|
|
598
|
+
* @param preDeleteValues - Pre-delete field snapshot (delete event payload's OldValues)
|
|
463
599
|
* @returns true if the entity is in the array (by reference or by primary key)
|
|
464
600
|
*/
|
|
465
|
-
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;
|
|
466
647
|
/**
|
|
467
648
|
* Determines if an immediate array mutation can be used instead of running a full view refresh.
|
|
468
649
|
* Immediate mutations are only safe when:
|
|
@@ -539,6 +720,18 @@ export declare abstract class BaseEngine<T> extends BaseSingleton<T> implements
|
|
|
539
720
|
* directly from the database. Passed through from {@link Load} when `forceRefresh` is true (i.e., `Config(true)`).
|
|
540
721
|
*/
|
|
541
722
|
protected LoadConfigs(configs: Partial<BaseEnginePropertyConfig>[], contextUser: UserInfo, bypassCache?: boolean): Promise<void>;
|
|
723
|
+
/**
|
|
724
|
+
* All-or-nothing permission gate: checks `CanRead` on every entity config. If ANY
|
|
725
|
+
* entity is denied, ALL configs are skipped — the engine is marked permission-constrained
|
|
726
|
+
* and its data arrays are set to empty `[]`. This prevents noisy permission-denied errors
|
|
727
|
+
* and endless retry loops for users with limited permissions (e.g., org-scoped SaaS roles).
|
|
728
|
+
*
|
|
729
|
+
* On the server side with a system user (who has all permissions), this method returns
|
|
730
|
+
* the original configs unchanged — no behavior change for privileged users.
|
|
731
|
+
*
|
|
732
|
+
* @returns The original configs array (all permissions pass) or an empty array (any denied)
|
|
733
|
+
*/
|
|
734
|
+
protected CheckPermissionsOrSkipAll(configs: BaseEnginePropertyConfig[], contextUser: UserInfo): BaseEnginePropertyConfig[];
|
|
542
735
|
/**
|
|
543
736
|
* Loads a single metadata configuration.
|
|
544
737
|
* @param config - The metadata configuration to load
|
|
@@ -546,6 +739,19 @@ export declare abstract class BaseEngine<T> extends BaseSingleton<T> implements
|
|
|
546
739
|
* @param bypassCache - When true, bypasses server-side cache to get fresh data from the database
|
|
547
740
|
*/
|
|
548
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;
|
|
549
755
|
/**
|
|
550
756
|
* Handles the process of loading a single config of type 'entity'.
|
|
551
757
|
* @param config
|
|
@@ -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;AAEvF,OAAO,EAAE,eAAe,EAAE,UAAU,EAAW,MAAM,MAAM,CAAC;AAG5D,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAI1C,OAAO,EAAE,qBAAqB,EAAqB,iBAAiB,EAAE,gBAAgB,EAAgB,aAAa,EAAE,MAAM,cAAc,CAAC;AAC1I,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAG3D,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAqB,MAAM,qBAAqB,CAAC;AAE3E;;GAEG;AACH,qBAAa,wBAAyB,SAAQ,QAAQ;IAClD;;OAEG;IACH,IAAI,EAAE,QAAQ,GAAG,SAAS,CAAY;IACtC;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,kBAAkB,CAAC,EAAE,qBAAqB,EAAE,CAAC;IAC7C;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,iBAAiB,GAAG,uBAAuB,CAAqB;IACxF;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;;;OAKG;IACH,WAAW,CAAC,EAAE,OAAO,CAAQ;IAC7B;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;;;;;;;OASG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,UAAU,CAAC,EAAE,QAAQ,GAAG,eAAe,CAAC;gBAE5B,IAAI,CAAC,EAAE,OAAO,CAAC,wBAAwB,CAAC;CAMvD;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC5B;;OAEG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;OAEG;IACH,WAAW,CAAC,EAAE,QAAQ,CAAC;IACvB;;OAEG;IACH,QAAQ,CAAC,EAAE,iBAAiB,CAAC;CAChC;AAED;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IAClC;;OAEG;IACH,MAAM,EAAE,wBAAwB,CAAC;IACjC;;;;;;OAMG;IACH,UAAU,EAAE,SAAS,GAAG,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACpD;;OAEG;IACH,IAAI,EAAE,OAAO,EAAE,CAAC;IAChB;;;OAGG;IACH,cAAc,CAAC,EAAE,UAAU,CAAC;CAC/B;AAED;;;;GAIG;AACH;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACpC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,MAAM,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,OAAO,EAAE,CAAC;IAChB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"baseEngine.d.ts","sourceRoot":"","sources":["../../src/generic/baseEngine.ts"],"names":[],"mappings":"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"}
|