@memberjunction/core 1.7.0 → 1.8.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 (39) hide show
  1. package/dist/generic/baseEngine.d.ts +104 -6
  2. package/dist/generic/baseEngine.d.ts.map +1 -1
  3. package/dist/generic/baseEngine.js +173 -13
  4. package/dist/generic/baseEngine.js.map +1 -1
  5. package/dist/generic/baseEntity.d.ts +17 -2
  6. package/dist/generic/baseEntity.d.ts.map +1 -1
  7. package/dist/generic/baseEntity.js +42 -8
  8. package/dist/generic/baseEntity.js.map +1 -1
  9. package/dist/generic/baseInfo.d.ts +0 -3
  10. package/dist/generic/baseInfo.d.ts.map +1 -1
  11. package/dist/generic/baseInfo.js +3 -34
  12. package/dist/generic/baseInfo.js.map +1 -1
  13. package/dist/generic/compositeKey.d.ts +35 -4
  14. package/dist/generic/compositeKey.d.ts.map +1 -1
  15. package/dist/generic/compositeKey.js +62 -12
  16. package/dist/generic/compositeKey.js.map +1 -1
  17. package/dist/generic/entityInfo.d.ts +44 -15
  18. package/dist/generic/entityInfo.d.ts.map +1 -1
  19. package/dist/generic/entityInfo.js +60 -18
  20. package/dist/generic/entityInfo.js.map +1 -1
  21. package/dist/generic/logging.d.ts +28 -32
  22. package/dist/generic/logging.d.ts.map +1 -1
  23. package/dist/generic/logging.js +65 -36
  24. package/dist/generic/logging.js.map +1 -1
  25. package/dist/generic/providerBase.d.ts +15 -0
  26. package/dist/generic/providerBase.d.ts.map +1 -1
  27. package/dist/generic/securityInfo.d.ts +12 -12
  28. package/dist/generic/securityInfo.d.ts.map +1 -1
  29. package/dist/generic/securityInfo.js +12 -12
  30. package/dist/generic/securityInfo.js.map +1 -1
  31. package/dist/generic/transactionGroup.d.ts +26 -0
  32. package/dist/generic/transactionGroup.d.ts.map +1 -1
  33. package/dist/generic/transactionGroup.js +62 -1
  34. package/dist/generic/transactionGroup.js.map +1 -1
  35. package/dist/generic/util.d.ts +25 -0
  36. package/dist/generic/util.d.ts.map +1 -1
  37. package/dist/generic/util.js +66 -1
  38. package/dist/generic/util.js.map +1 -1
  39. package/package.json +2 -2
@@ -1,26 +1,55 @@
1
1
  import { BaseSingleton } from "@memberjunction/global";
2
2
  import { BehaviorSubject } from "rxjs";
3
3
  import { UserInfo } from "./securityInfo";
4
+ import { DatasetItemFilterType } from "./interfaces";
5
+ import { BaseInfo } from "./baseInfo";
4
6
  /**
5
7
  * Property configuration for the BaseEngine class to automatically load/set properties on the class.
6
8
  */
7
- export interface BaseEnginePropertyConfig {
9
+ export declare class BaseEnginePropertyConfig extends BaseInfo {
10
+ /**
11
+ * The type of item to load, either 'entity' or 'dataset', defaults to 'entity'
12
+ */
13
+ Type: 'entity' | 'dataset';
8
14
  /**
9
15
  * The name of the property in the class instance
10
16
  */
11
17
  PropertyName: string;
12
18
  /**
13
- * The entity name to load from the database
19
+ * The entity name to load from the database, required if Type is 'entity'
20
+ */
21
+ EntityName?: string;
22
+ /**
23
+ * The dataset name to load from the database, required if Type is 'dataset'
14
24
  */
15
- EntityName: string;
25
+ DatasetName?: string;
16
26
  /**
17
- * Optional, filters to apply to the data load
27
+ * Optional, filters to apply to the data load, applies only when type is 'entity'. Use DatasetItemFilters for dataset filters.
18
28
  */
19
29
  Filter?: string;
20
30
  /**
21
- * Optional, order by clause to apply to the data load
31
+ * Optional, filters to apply to each item in a dataset, only applies when type is 'dataset' and is optional in those cases.
32
+ */
33
+ DatasetItemFilters?: DatasetItemFilterType[];
34
+ /**
35
+ * Optional, only used if Type is 'dataset', specifies how to handle the results of the dataset load. Defaults to 'single_property' if not specified. When set to 'single_property', the entire dataset is set to the property specified by PropertyName.
36
+ * When set to 'individual_properties', each item in the dataset is set to a property on the object with the name of the item's key plus the item's Code name.
37
+ * For example, if the item's key is 'Demo' and the item's Code name is 'FirstItem', the property set on the object would be 'Demo_FirstItem'.
38
+ */
39
+ DatasetResultHandling?: 'single_property' | 'individual_properties';
40
+ /**
41
+ * Optional, order by clause to apply to the data load, only applies when type is 'entity'
22
42
  */
23
43
  OrderBy?: string;
44
+ /**
45
+ * Optional, expiration time in milliseconds
46
+ */
47
+ Expiration?: number;
48
+ /**
49
+ * Optional, whether to add the result to the object, defaults to true if not specified
50
+ */
51
+ AddToObject?: boolean;
52
+ constructor(init?: Partial<BaseEnginePropertyConfig>);
24
53
  }
25
54
  /**
26
55
  * 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
@@ -31,6 +60,10 @@ export declare abstract class BaseEngine<T> extends BaseSingleton<T> {
31
60
  private _loaded;
32
61
  private _loadingSubject;
33
62
  private _contextUser;
63
+ private _metadataConfigs;
64
+ private _dynamicConfigs;
65
+ private _dataMap;
66
+ private _expirationTimers;
34
67
  /**
35
68
  * Configures the engine by loading metadata from the database.
36
69
  */
@@ -42,14 +75,79 @@ export declare abstract class BaseEngine<T> extends BaseSingleton<T> {
42
75
  * @param contextUser
43
76
  * @returns
44
77
  */
45
- protected Load(configs: BaseEnginePropertyConfig[], forceRefresh?: boolean, contextUser?: UserInfo): Promise<void>;
78
+ protected Load(configs: Partial<BaseEnginePropertyConfig>[], forceRefresh?: boolean, contextUser?: UserInfo): Promise<void>;
79
+ /**
80
+ * Utility method to upgrade an object to a BaseEnginePropertyConfig object.
81
+ * @param obj
82
+ * @returns
83
+ */
84
+ protected UpgradeObjectToConfig(obj: any): BaseEnginePropertyConfig;
85
+ /**
86
+ * Loads the specified metadata configurations.
87
+ * @param configs - The metadata configurations to load
88
+ * @param contextUser - The context user information
89
+ */
90
+ protected LoadConfigs(configs: Partial<BaseEnginePropertyConfig>[], contextUser: UserInfo): Promise<void>;
91
+ /**
92
+ * Loads a single metadata configuration.
93
+ * @param config - The metadata configuration to load
94
+ * @param contextUser - The context user information
95
+ */
96
+ protected LoadSingleConfig(config: BaseEnginePropertyConfig, contextUser: UserInfo): Promise<void>;
97
+ /**
98
+ * Handles the process of loading a single config of type 'entity'.
99
+ * @param config
100
+ * @param contextUser
101
+ */
102
+ protected LoadSingleEntityConfig(config: BaseEnginePropertyConfig, contextUser: UserInfo): Promise<void>;
103
+ /**
104
+ * Handles the process of loading a single config of type 'dataset'.
105
+ * @param config
106
+ * @param contextUser
107
+ */
108
+ protected LoadSingleDatasetConfig(config: BaseEnginePropertyConfig, contextUser: UserInfo): Promise<void>;
109
+ /**
110
+ * Sets an expiration timer for a metadata property.
111
+ * @param propertyName - The name of the property
112
+ * @param expiration - The expiration time in milliseconds
113
+ */
114
+ private SetExpirationTimer;
115
+ /**
116
+ * Adds a dynamic metadata configuration at runtime.
117
+ * @param config - The metadata configuration to add
118
+ * @param contextUser - The context user information
119
+ */
120
+ AddDynamicConfig(config: BaseEnginePropertyConfig, contextUser?: UserInfo): Promise<void>;
121
+ /**
122
+ * Removes a dynamic metadata configuration at runtime.
123
+ * @param propertyName - The name of the property to remove
124
+ */
125
+ RemoveDynamicConfig(propertyName: string): void;
126
+ /**
127
+ * Refreshes a specific item.
128
+ * @param propertyName - The name of the property to refresh
129
+ */
130
+ RefreshItem(propertyName: string): Promise<void>;
131
+ /**
132
+ * Refreshes all items
133
+ */
134
+ RefreshAllItems(): Promise<void>;
46
135
  /**
47
136
  * Subclasses can override this method to perform additional loading tasks
48
137
  * @param contextUser
49
138
  */
50
139
  protected AdditionalLoading(contextUser?: UserInfo): Promise<void>;
140
+ /**
141
+ * Returns true if the data has been loaded, false otherwise.
142
+ */
51
143
  get Loaded(): boolean;
144
+ /**
145
+ * Returns the loading subject. You can call await Config() and after Config() comes back as true that means you're loaded. However you can also directly subscribe to this subject to get updates on the loading status.
146
+ */
52
147
  get LoadingSubject(): BehaviorSubject<boolean>;
148
+ /**
149
+ * Returns the context user set for the object, this is set via the Config() method.
150
+ */
53
151
  get ContextUser(): UserInfo;
54
152
  /**
55
153
  * Helper method for sub-classes to have a single line of code that will make sure the data is loaded before proceeding and will throw an error if not loaded.
@@ -1 +1 @@
1
- {"version":3,"file":"baseEngine.d.ts","sourceRoot":"","sources":["../../src/generic/baseEngine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,MAAM,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAI1C;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACrC;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;GAIG;AACH,8BAAsB,UAAU,CAAC,CAAC,CAAE,SAAQ,aAAa,CAAC,CAAC,CAAC;IACxD,OAAO,CAAC,OAAO,CAAkB;IACjC,OAAO,CAAC,eAAe,CAAiE;IACxF,OAAO,CAAC,YAAY,CAAW;IAE/B;;OAEG;aACa,MAAM,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,QAAQ;IAErE;;;;;;OAMG;cACa,IAAI,CAAC,OAAO,EAAE,wBAAwB,EAAE,EAAE,YAAY,GAAE,OAAe,EAAE,WAAW,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAwC/H;;;OAGG;cACa,iBAAiB,CAAC,WAAW,CAAC,EAAE,QAAQ;IAIxD,IAAW,MAAM,IAAI,OAAO,CAE3B;IAED,IAAW,cAAc,IAAI,eAAe,CAAC,OAAO,CAAC,CAEpD;IAED,IAAW,WAAW,IAAI,QAAQ,CAEjC;IAED;;OAEG;IACH,SAAS,CAAC,mBAAmB;CAIhC"}
1
+ {"version":3,"file":"baseEngine.d.ts","sourceRoot":"","sources":["../../src/generic/baseEngine.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,35 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.BaseEngine = void 0;
3
+ exports.BaseEngine = exports.BaseEnginePropertyConfig = void 0;
4
4
  const global_1 = require("@memberjunction/global");
5
5
  const rxjs_1 = require("rxjs");
6
6
  const runView_1 = require("../views/runView");
7
7
  const logging_1 = require("./logging");
8
+ const metadata_1 = require("./metadata");
9
+ const interfaces_1 = require("./interfaces");
10
+ const baseInfo_1 = require("./baseInfo");
11
+ /**
12
+ * Property configuration for the BaseEngine class to automatically load/set properties on the class.
13
+ */
14
+ class BaseEnginePropertyConfig extends baseInfo_1.BaseInfo {
15
+ constructor(init) {
16
+ super();
17
+ /**
18
+ * The type of item to load, either 'entity' or 'dataset', defaults to 'entity'
19
+ */
20
+ this.Type = 'entity';
21
+ /**
22
+ * Optional, only used if Type is 'dataset', specifies how to handle the results of the dataset load. Defaults to 'single_property' if not specified. When set to 'single_property', the entire dataset is set to the property specified by PropertyName.
23
+ * When set to 'individual_properties', each item in the dataset is set to a property on the object with the name of the item's key plus the item's Code name.
24
+ * For example, if the item's key is 'Demo' and the item's Code name is 'FirstItem', the property set on the object would be 'Demo_FirstItem'.
25
+ */
26
+ this.DatasetResultHandling = 'single_property';
27
+ // now copy the values from init to this object
28
+ if (init)
29
+ Object.assign(this, init);
30
+ }
31
+ }
32
+ exports.BaseEnginePropertyConfig = BaseEnginePropertyConfig;
8
33
  /**
9
34
  * 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
10
35
  * 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
@@ -15,6 +40,10 @@ class BaseEngine extends global_1.BaseSingleton {
15
40
  super(...arguments);
16
41
  this._loaded = false;
17
42
  this._loadingSubject = new rxjs_1.BehaviorSubject(false);
43
+ this._metadataConfigs = [];
44
+ this._dynamicConfigs = new Map();
45
+ this._dataMap = new Map();
46
+ this._expirationTimers = new Map();
18
47
  }
19
48
  /**
20
49
  * This method should be called by sub-classes to load up their specific metadata requirements. For more complex metadata
@@ -24,6 +53,8 @@ class BaseEngine extends global_1.BaseSingleton {
24
53
  * @returns
25
54
  */
26
55
  async Load(configs, forceRefresh = false, contextUser) {
56
+ if (metadata_1.Metadata.Provider.ProviderType === interfaces_1.ProviderType.Database && !contextUser)
57
+ throw new Error('For server-side use of all engine classes, you must provide the contextUser parameter');
27
58
  if (this._loadingSubject.value) {
28
59
  return new Promise((resolve) => {
29
60
  const subscription = this._loadingSubject.subscribe((loading) => {
@@ -38,18 +69,7 @@ class BaseEngine extends global_1.BaseSingleton {
38
69
  this._loadingSubject.next(true);
39
70
  try {
40
71
  this._contextUser = contextUser;
41
- const rv = new runView_1.RunView();
42
- for (const config of configs) {
43
- const result = await rv.RunView({
44
- EntityName: config.EntityName,
45
- ResultType: 'entity_object',
46
- ExtraFilter: config.Filter,
47
- OrderBy: config.OrderBy
48
- }, contextUser);
49
- if (result.Success) {
50
- this[config.PropertyName] = result.Results;
51
- }
52
- }
72
+ await this.LoadConfigs(configs, contextUser);
53
73
  await this.AdditionalLoading(contextUser); // Call the additional loading method
54
74
  this._loaded = true;
55
75
  }
@@ -61,6 +81,137 @@ class BaseEngine extends global_1.BaseSingleton {
61
81
  }
62
82
  }
63
83
  }
84
+ /**
85
+ * Utility method to upgrade an object to a BaseEnginePropertyConfig object.
86
+ * @param obj
87
+ * @returns
88
+ */
89
+ UpgradeObjectToConfig(obj) {
90
+ // if obj is not already an instance of BaseEnginePropertyConfig, create one
91
+ if (obj instanceof BaseEnginePropertyConfig)
92
+ return obj;
93
+ else
94
+ return new BaseEnginePropertyConfig(obj);
95
+ }
96
+ /**
97
+ * Loads the specified metadata configurations.
98
+ * @param configs - The metadata configurations to load
99
+ * @param contextUser - The context user information
100
+ */
101
+ async LoadConfigs(configs, contextUser) {
102
+ this._metadataConfigs = configs.map(c => this.UpgradeObjectToConfig(c));
103
+ await Promise.all(this._metadataConfigs.map(c => this.LoadSingleConfig(c, contextUser)));
104
+ }
105
+ /**
106
+ * Loads a single metadata configuration.
107
+ * @param config - The metadata configuration to load
108
+ * @param contextUser - The context user information
109
+ */
110
+ async LoadSingleConfig(config, contextUser) {
111
+ if (config.Type === 'dataset')
112
+ return await this.LoadSingleDatasetConfig(config, contextUser);
113
+ else
114
+ return await this.LoadSingleEntityConfig(config, contextUser);
115
+ }
116
+ /**
117
+ * Handles the process of loading a single config of type 'entity'.
118
+ * @param config
119
+ * @param contextUser
120
+ */
121
+ async LoadSingleEntityConfig(config, contextUser) {
122
+ const rv = new runView_1.RunView();
123
+ const result = await rv.RunView({
124
+ EntityName: config.EntityName,
125
+ ResultType: 'entity_object',
126
+ ExtraFilter: config.Filter,
127
+ OrderBy: config.OrderBy
128
+ }, contextUser);
129
+ if (result.Success) {
130
+ if (config.AddToObject !== false) {
131
+ this[config.PropertyName] = result.Results;
132
+ }
133
+ this._dataMap.set(config.PropertyName, { entityName: config.EntityName, data: result.Results });
134
+ if (config.Expiration) {
135
+ this.SetExpirationTimer(config.PropertyName, config.Expiration);
136
+ }
137
+ }
138
+ }
139
+ /**
140
+ * Handles the process of loading a single config of type 'dataset'.
141
+ * @param config
142
+ * @param contextUser
143
+ */
144
+ async LoadSingleDatasetConfig(config, contextUser) {
145
+ const md = new metadata_1.Metadata();
146
+ const result = await md.GetAndCacheDatasetByName(config.DatasetName, config.DatasetItemFilters);
147
+ if (result.Success) {
148
+ if (config.AddToObject !== false) {
149
+ if (config.DatasetResultHandling === 'single_property') {
150
+ this[config.PropertyName] = result.Results;
151
+ }
152
+ else {
153
+ // explode out the items within the DS into individual properties
154
+ for (const item of result.Results) {
155
+ this[`${config.PropertyName}_${item.Code}`] = item.Results;
156
+ }
157
+ }
158
+ }
159
+ this._dataMap.set(config.PropertyName, { datasetName: config.DatasetName, data: result.Results });
160
+ if (config.Expiration) {
161
+ this.SetExpirationTimer(config.PropertyName, config.Expiration);
162
+ }
163
+ }
164
+ }
165
+ /**
166
+ * Sets an expiration timer for a metadata property.
167
+ * @param propertyName - The name of the property
168
+ * @param expiration - The expiration time in milliseconds
169
+ */
170
+ SetExpirationTimer(propertyName, expiration) {
171
+ if (this._expirationTimers.has(propertyName)) {
172
+ clearTimeout(this._expirationTimers.get(propertyName));
173
+ }
174
+ const timer = setTimeout(() => this.RefreshItem(propertyName), expiration);
175
+ this._expirationTimers.set(propertyName, timer);
176
+ }
177
+ /**
178
+ * Adds a dynamic metadata configuration at runtime.
179
+ * @param config - The metadata configuration to add
180
+ * @param contextUser - The context user information
181
+ */
182
+ async AddDynamicConfig(config, contextUser) {
183
+ const c = this.UpgradeObjectToConfig(config);
184
+ this._dynamicConfigs.set(c.PropertyName, c);
185
+ await this.LoadSingleConfig(c, contextUser || this._contextUser);
186
+ }
187
+ /**
188
+ * Removes a dynamic metadata configuration at runtime.
189
+ * @param propertyName - The name of the property to remove
190
+ */
191
+ RemoveDynamicConfig(propertyName) {
192
+ this._dynamicConfigs.delete(propertyName);
193
+ this._dataMap.delete(propertyName);
194
+ if (this._expirationTimers.has(propertyName)) {
195
+ clearTimeout(this._expirationTimers.get(propertyName));
196
+ this._expirationTimers.delete(propertyName);
197
+ }
198
+ }
199
+ /**
200
+ * Refreshes a specific item.
201
+ * @param propertyName - The name of the property to refresh
202
+ */
203
+ async RefreshItem(propertyName) {
204
+ const config = this._metadataConfigs.find(c => c.PropertyName === propertyName) || this._dynamicConfigs.get(propertyName);
205
+ if (config) {
206
+ await this.LoadSingleConfig(config, this._contextUser);
207
+ }
208
+ }
209
+ /**
210
+ * Refreshes all items
211
+ */
212
+ async RefreshAllItems() {
213
+ await this.LoadConfigs([...this._metadataConfigs, ...Array.from(this._dynamicConfigs.values())], this._contextUser);
214
+ }
64
215
  /**
65
216
  * Subclasses can override this method to perform additional loading tasks
66
217
  * @param contextUser
@@ -68,12 +219,21 @@ class BaseEngine extends global_1.BaseSingleton {
68
219
  async AdditionalLoading(contextUser) {
69
220
  // Subclasses can override this method to perform additional loading tasks
70
221
  }
222
+ /**
223
+ * Returns true if the data has been loaded, false otherwise.
224
+ */
71
225
  get Loaded() {
72
226
  return this._loaded;
73
227
  }
228
+ /**
229
+ * Returns the loading subject. You can call await Config() and after Config() comes back as true that means you're loaded. However you can also directly subscribe to this subject to get updates on the loading status.
230
+ */
74
231
  get LoadingSubject() {
75
232
  return this._loadingSubject;
76
233
  }
234
+ /**
235
+ * Returns the context user set for the object, this is set via the Config() method.
236
+ */
77
237
  get ContextUser() {
78
238
  return this._contextUser;
79
239
  }
@@ -1 +1 @@
1
- {"version":3,"file":"baseEngine.js","sourceRoot":"","sources":["../../src/generic/baseEngine.ts"],"names":[],"mappings":";;;AAAA,mDAAuD;AACvD,+BAAuC;AAEvC,8CAA2C;AAC3C,uCAAqC;AAwBrC;;;;GAIG;AACH,MAAsB,UAAc,SAAQ,sBAAgB;IAA5D;;QACY,YAAO,GAAY,KAAK,CAAC;QACzB,oBAAe,GAA6B,IAAI,sBAAe,CAAU,KAAK,CAAC,CAAC;IAkF5F,CAAC;IA1EG;;;;;;OAMG;IACO,KAAK,CAAC,IAAI,CAAC,OAAmC,EAAE,eAAwB,KAAK,EAAE,WAAsB;QAC3G,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;YAC7B,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;gBACjC,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,EAAE;oBAC5D,IAAI,CAAC,OAAO,EAAE,CAAC;wBACX,YAAY,CAAC,WAAW,EAAE,CAAC;wBAC3B,OAAO,EAAE,CAAC;oBACd,CAAC;gBACL,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACP,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,YAAY,EAAE,CAAC;YAChC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChC,IAAI,CAAC;gBACD,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;gBAEhC,MAAM,EAAE,GAAG,IAAI,iBAAO,EAAE,CAAC;gBACzB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;oBAC3B,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC;wBAC5B,UAAU,EAAE,MAAM,CAAC,UAAU;wBAC7B,UAAU,EAAE,eAAe;wBAC3B,WAAW,EAAE,MAAM,CAAC,MAAM;wBAC1B,OAAO,EAAE,MAAM,CAAC,OAAO;qBAC1B,EAAE,WAAW,CAAC,CAAC;oBAEhB,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;wBAChB,IAAY,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC;oBACxD,CAAC;gBACL,CAAC;gBACD,MAAM,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,CAAC,qCAAqC;gBAChF,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YACxB,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACT,IAAA,kBAAQ,EAAC,CAAC,CAAC,CAAC;YAChB,CAAC;oBAAS,CAAC;gBACP,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACrC,CAAC;QACL,CAAC;IACL,CAAC;IAED;;;OAGG;IACO,KAAK,CAAC,iBAAiB,CAAC,WAAsB;QACpD,0EAA0E;IAC9E,CAAC;IAED,IAAW,MAAM;QACb,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;IAED,IAAW,cAAc;QACrB,OAAO,IAAI,CAAC,eAAe,CAAC;IAChC,CAAC;IAED,IAAW,WAAW;QAClB,OAAO,IAAI,CAAC,YAAY,CAAC;IAC7B,CAAC;IAED;;OAEG;IACO,mBAAmB;QACzB,IAAI,CAAC,IAAI,CAAC,MAAM;YACZ,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IACjE,CAAC;CACJ;AApFD,gCAoFC"}
1
+ {"version":3,"file":"baseEngine.js","sourceRoot":"","sources":["../../src/generic/baseEngine.ts"],"names":[],"mappings":";;;AAAA,mDAAuD;AACvD,+BAAuC;AAEvC,8CAA2C;AAC3C,uCAAqC;AACrC,yCAAsC;AACtC,6CAAmE;AACnE,yCAAsC;AAEtC;;GAEG;AACH,MAAa,wBAAyB,SAAQ,mBAAQ;IA4ClD,YAAY,IAAwC;QAChD,KAAK,EAAE,CAAC;QA5CZ;;WAEG;QACH,SAAI,GAAyB,QAAQ,CAAC;QAqBtC;;;;WAIG;QACH,0BAAqB,GAAiD,iBAAiB,CAAC;QAgBpF,+CAA+C;QAC/C,IAAI,IAAI;YACJ,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAClC,CAAC;CACJ;AAlDD,4DAkDC;AAGD;;;;GAIG;AACH,MAAsB,UAAc,SAAQ,sBAAgB;IAA5D;;QACY,YAAO,GAAY,KAAK,CAAC;QACzB,oBAAe,GAA6B,IAAI,sBAAe,CAAU,KAAK,CAAC,CAAC;QAEhF,qBAAgB,GAA+B,EAAE,CAAC;QAClD,oBAAe,GAA0C,IAAI,GAAG,EAAE,CAAC;QACnE,aAAQ,GAA4E,IAAI,GAAG,EAAE,CAAC;QAC9F,sBAAiB,GAAwB,IAAI,GAAG,EAAE,CAAC;IAiO/D,CAAC;IA1NG;;;;;;OAMG;IACO,KAAK,CAAC,IAAI,CAAC,OAA4C,EAAE,eAAwB,KAAK,EAAE,WAAsB;QACpH,IAAI,mBAAQ,CAAC,QAAQ,CAAC,YAAY,KAAK,yBAAY,CAAC,QAAQ,IAAI,CAAC,WAAW;YACxE,MAAM,IAAI,KAAK,CAAC,uFAAuF,CAAC,CAAA;QAC5G,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;YAC7B,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;gBACjC,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,EAAE;oBAC5D,IAAI,CAAC,OAAO,EAAE,CAAC;wBACX,YAAY,CAAC,WAAW,EAAE,CAAC;wBAC3B,OAAO,EAAE,CAAC;oBACd,CAAC;gBACL,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACP,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,YAAY,EAAE,CAAC;YAChC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChC,IAAI,CAAC;gBACD,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;gBAEhC,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;gBAC7C,MAAM,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,CAAC,qCAAqC;gBAChF,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YACxB,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACT,IAAA,kBAAQ,EAAC,CAAC,CAAC,CAAC;YAChB,CAAC;oBAAS,CAAC;gBACP,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACrC,CAAC;QACL,CAAC;IACL,CAAC;IAED;;;;OAIG;IACO,qBAAqB,CAAC,GAAQ;QACpC,4EAA4E;QAC5E,IAAI,GAAG,YAAY,wBAAwB;YACvC,OAAO,GAAG,CAAC;;YAEX,OAAO,IAAI,wBAAwB,CAAC,GAAG,CAAC,CAAC;IACjD,CAAC;IAED;;;;OAIG;IACO,KAAK,CAAC,WAAW,CAAC,OAA4C,EAAE,WAAqB;QAC3F,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC;QACxE,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;IAC7F,CAAC;IAED;;;;OAIG;IACO,KAAK,CAAC,gBAAgB,CAAC,MAAgC,EAAE,WAAqB;QACpF,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS;YACzB,OAAO,MAAM,IAAI,CAAC,uBAAuB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;;YAE/D,OAAO,MAAM,IAAI,CAAC,sBAAsB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACtE,CAAC;IAED;;;;OAIG;IACO,KAAK,CAAC,sBAAsB,CAAC,MAAgC,EAAE,WAAqB;QAC1F,MAAM,EAAE,GAAG,IAAI,iBAAO,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC;YAC5B,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,UAAU,EAAE,eAAe;YAC3B,WAAW,EAAE,MAAM,CAAC,MAAM;YAC1B,OAAO,EAAE,MAAM,CAAC,OAAO;SAC1B,EAAE,WAAW,CAAC,CAAC;QAEhB,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACjB,IAAI,MAAM,CAAC,WAAW,KAAK,KAAK,EAAE,CAAC;gBAC9B,IAAY,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC;YACxD,CAAC;YACD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,IAAI,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;YAEhG,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;gBACpB,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;YACpE,CAAC;QACL,CAAC;IACL,CAAC;IAED;;;;OAIG;IACO,KAAK,CAAC,uBAAuB,CAAC,MAAgC,EAAE,WAAqB;QAC3F,MAAM,EAAE,GAAG,IAAI,mBAAQ,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,wBAAwB,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,kBAAkB,CAAC,CAAA;QAC/F,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACjB,IAAI,MAAM,CAAC,WAAW,KAAK,KAAK,EAAE,CAAC;gBAC/B,IAAI,MAAM,CAAC,qBAAqB,KAAK,iBAAiB,EAAE,CAAC;oBACpD,IAAY,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC;gBACxD,CAAC;qBACI,CAAC;oBACF,iEAAiE;oBACjE,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;wBAC/B,IAAY,CAAC,GAAG,MAAM,CAAC,YAAY,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;oBACxE,CAAC;gBACL,CAAC;YACL,CAAC;YACD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,EAAE,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,IAAI,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;YAElG,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;gBACpB,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;YACpE,CAAC;QACL,CAAC;IACL,CAAC;IAED;;;;OAIG;IACK,kBAAkB,CAAC,YAAoB,EAAE,UAAkB;QAC/D,IAAI,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;YAC3C,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC;QAC3D,CAAC;QACD,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,UAAU,CAAC,CAAC;QAC3E,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,YAAY,EAAE,KAA0B,CAAC,CAAC;IACzE,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,gBAAgB,CAAC,MAAgC,EAAE,WAAsB;QAClF,MAAM,CAAC,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;QAC7C,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;QAC5C,MAAM,IAAI,CAAC,gBAAgB,CAAC,CAAC,EAAE,WAAW,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC;IACrE,CAAC;IAED;;;OAGG;IACI,mBAAmB,CAAC,YAAoB;QAC3C,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAC1C,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QACnC,IAAI,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;YAC3C,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC;YACvD,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAChD,CAAC;IACL,CAAC;IAGD;;;OAGG;IACI,KAAK,CAAC,WAAW,CAAC,YAAoB;QACzC,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,KAAK,YAAY,CAAC,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAC1H,IAAI,MAAM,EAAE,CAAC;YACT,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAC3D,CAAC;IACL,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,eAAe;QACxB,MAAM,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,IAAI,CAAC,gBAAgB,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;IACxH,CAAC;IAED;;;OAGG;IACO,KAAK,CAAC,iBAAiB,CAAC,WAAsB;QACpD,0EAA0E;IAC9E,CAAC;IAED;;OAEG;IACH,IAAW,MAAM;QACb,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;IAED;;OAEG;IACH,IAAW,cAAc;QACrB,OAAO,IAAI,CAAC,eAAe,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,IAAW,WAAW;QAClB,OAAO,IAAI,CAAC,YAAY,CAAC;IAC7B,CAAC;IAED;;OAEG;IACO,mBAAmB;QACzB,IAAI,CAAC,IAAI,CAAC,MAAM;YACZ,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IACjE,CAAC;CACJ;AAxOD,gCAwOC"}
@@ -132,7 +132,10 @@ export declare class BaseEntityResult {
132
132
  * Event type that is used to raise events and provided structured callbacks for any caller that is interested in registering for events.
133
133
  */
134
134
  export declare class BaseEntityEvent {
135
- type: 'new_record' | 'save' | 'delete' | 'other';
135
+ /**
136
+ * The type of event that is being raised. transaction_ready is used to indicate that a transaction is ready to be submitted for execution. The TransactionGroup class uses this to know that all async preprocessing is done and it can now submit the transaction.
137
+ */
138
+ type: 'new_record' | 'save' | 'delete' | 'transaction_ready' | 'other';
136
139
  payload: any;
137
140
  baseEntity: BaseEntity;
138
141
  }
@@ -156,10 +159,22 @@ export declare abstract class BaseEntity {
156
159
  * @returns
157
160
  */
158
161
  RegisterEventHandler(callback: (event: BaseEntityEvent) => void): Subscription;
162
+ /**
163
+ * If the entity object has a TransactionGroup associated with it, the TransactionGroup will be notified that we are doing some transaction pre-processing so that the TransactionGroup can
164
+ * properly wait for those pre-processing steps to complete before submitting the transaction. This method should generally NOT be called by anyone other than a provider that is handling
165
+ * the tier-specific processing for the entity object.
166
+ */
167
+ RegisterTransactionPreprocessing(): void;
168
+ /**
169
+ * Raises the transaction_ready event. This is used to indicate that the entity object is ready to be submitted for transaction processing. This is used by the TransactionGroup class to know when all async preprocessing is
170
+ * done and it can submit the transaction. This is an internal method and shouldn't be used by sub-classes or external callers in most cases. It is primarily used by Provider classes who are handling the tier-specific processing
171
+ * for the entity object.
172
+ */
173
+ RaiseReadyForTransaction(): void;
159
174
  /**
160
175
  * Used for raising events within the BaseEntity and can be used by sub-classes to raise events that are specific to the entity.
161
176
  */
162
- protected RaiseEvent(type: 'new_record' | 'save' | 'delete' | 'other', payload: any): void;
177
+ protected RaiseEvent(type: 'new_record' | 'save' | 'delete' | 'transaction_ready' | 'other', payload: any): void;
163
178
  /**
164
179
  * This method MUST be called right after the class is instantiated to provide an async/await pair for any asynchronous operations a given entity needs to do when it is first
165
180
  * created/configured. When you call Metadata/Provider GetEntityObject() this is done automatically for you. In nearly all cases you should go through GetEntityObject() anyway
@@ -1 +1 @@
1
- {"version":3,"file":"baseEntity.d.ts","sourceRoot":"","sources":["../../src/generic/baseEntity.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"baseEntity.d.ts","sourceRoot":"","sources":["../../src/generic/baseEntity.ts"],"names":[],"mappings":"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"}
@@ -279,6 +279,24 @@ class BaseEntity {
279
279
  RegisterEventHandler(callback) {
280
280
  return this._eventSubject.asObservable().subscribe(callback);
281
281
  }
282
+ /**
283
+ * If the entity object has a TransactionGroup associated with it, the TransactionGroup will be notified that we are doing some transaction pre-processing so that the TransactionGroup can
284
+ * properly wait for those pre-processing steps to complete before submitting the transaction. This method should generally NOT be called by anyone other than a provider that is handling
285
+ * the tier-specific processing for the entity object.
286
+ */
287
+ RegisterTransactionPreprocessing() {
288
+ if (this.TransactionGroup) {
289
+ this.TransactionGroup.RegisterPreprocessing(this);
290
+ }
291
+ }
292
+ /**
293
+ * Raises the transaction_ready event. This is used to indicate that the entity object is ready to be submitted for transaction processing. This is used by the TransactionGroup class to know when all async preprocessing is
294
+ * done and it can submit the transaction. This is an internal method and shouldn't be used by sub-classes or external callers in most cases. It is primarily used by Provider classes who are handling the tier-specific processing
295
+ * for the entity object.
296
+ */
297
+ RaiseReadyForTransaction() {
298
+ this.RaiseEvent('transaction_ready', null);
299
+ }
282
300
  /**
283
301
  * Used for raising events within the BaseEntity and can be used by sub-classes to raise events that are specific to the entity.
284
302
  */
@@ -674,20 +692,36 @@ class BaseEntity {
674
692
  // first check if the AllowCreateAPI/AllowUpdateAPI/AllowDeleteAPI settings are flipped on for the entity in question
675
693
  switch (type) {
676
694
  case entityInfo_1.EntityPermissionType.Create:
677
- if (!this.EntityInfo.AllowCreateAPI)
678
- throw new Error(`Create API is disabled for ${this.EntityInfo.Name}`);
695
+ if (!this.EntityInfo.AllowCreateAPI) {
696
+ if (throwError)
697
+ throw new Error(`Create API is disabled for ${this.EntityInfo.Name}`);
698
+ else
699
+ return false;
700
+ }
679
701
  break;
680
702
  case entityInfo_1.EntityPermissionType.Update:
681
- if (!this.EntityInfo.AllowUpdateAPI)
682
- throw new Error(`Update API is disabled for ${this.EntityInfo.Name}`);
703
+ if (!this.EntityInfo.AllowUpdateAPI) {
704
+ if (throwError)
705
+ throw new Error(`Update API is disabled for ${this.EntityInfo.Name}`);
706
+ else
707
+ return false;
708
+ }
683
709
  break;
684
710
  case entityInfo_1.EntityPermissionType.Delete:
685
- if (!this.EntityInfo.AllowDeleteAPI)
686
- throw new Error(`Delete API is disabled for ${this.EntityInfo.Name}`);
711
+ if (!this.EntityInfo.AllowDeleteAPI) {
712
+ if (throwError)
713
+ throw new Error(`Delete API is disabled for ${this.EntityInfo.Name}`);
714
+ else
715
+ return false;
716
+ }
687
717
  break;
688
718
  case entityInfo_1.EntityPermissionType.Read:
689
- if (!this.EntityInfo.IncludeInAPI)
690
- throw new Error(`API is disabled for ${this.EntityInfo.Name}`);
719
+ if (!this.EntityInfo.IncludeInAPI) {
720
+ if (throwError)
721
+ throw new Error(`API is disabled for ${this.EntityInfo.Name}`);
722
+ else
723
+ return false;
724
+ }
691
725
  break;
692
726
  }
693
727
  const permissions = this.EntityInfo.GetUserPermisions(u);