@memberjunction/scheduling-engine-base 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.
|
@@ -2,8 +2,9 @@
|
|
|
2
2
|
* @fileoverview Base scheduling engine with metadata caching
|
|
3
3
|
* @module @memberjunction/scheduling-engine-base
|
|
4
4
|
*/
|
|
5
|
-
import { BaseEngine, IMetadataProvider, UserInfo } from '@memberjunction/core';
|
|
5
|
+
import { BaseEngine, BaseEntityEvent, IMetadataProvider, UserInfo } from '@memberjunction/core';
|
|
6
6
|
import { MJScheduledJobEntity, MJScheduledJobTypeEntity, MJScheduledJobRunEntity } from '@memberjunction/core-entities';
|
|
7
|
+
import { Observable } from 'rxjs';
|
|
7
8
|
/**
|
|
8
9
|
* Base engine for scheduling system with metadata caching
|
|
9
10
|
*
|
|
@@ -20,6 +21,16 @@ export declare class SchedulingEngineBase extends BaseEngine<SchedulingEngineBas
|
|
|
20
21
|
private _scheduledJobs;
|
|
21
22
|
private _scheduledJobRuns;
|
|
22
23
|
private _activePollingInterval;
|
|
24
|
+
/**
|
|
25
|
+
* Fires whenever the set of active scheduled jobs changes (a job saved, deleted,
|
|
26
|
+
* or invalidated from another server). Emitted AFTER the Active-only filter has been
|
|
27
|
+
* re-applied to {@link ScheduledJobs}, so subscribers always observe a reconciled set.
|
|
28
|
+
*
|
|
29
|
+
* The server-side execution engine subscribes to this to wake a suspended poll timer
|
|
30
|
+
* when a job is activated after boot. No-op on the client (no subscribers).
|
|
31
|
+
* @see MJScheduledJobEntityExtended
|
|
32
|
+
*/
|
|
33
|
+
private _jobsChanged;
|
|
23
34
|
/**
|
|
24
35
|
* Configure the engine by loading metadata
|
|
25
36
|
*
|
|
@@ -68,6 +79,39 @@ export declare class SchedulingEngineBase extends BaseEngine<SchedulingEngineBas
|
|
|
68
79
|
* This should be called whenever jobs are added, modified, or deleted
|
|
69
80
|
*/
|
|
70
81
|
UpdatePollingInterval(): void;
|
|
82
|
+
/**
|
|
83
|
+
* Observable that fires whenever the active scheduled-job set changes (save, delete,
|
|
84
|
+
* or cross-server invalidation). The emitted set has already had the Active-only filter
|
|
85
|
+
* re-applied. Used server-side to wake a suspended poll timer when a job is activated.
|
|
86
|
+
*/
|
|
87
|
+
get JobsChanged$(): Observable<void>;
|
|
88
|
+
/**
|
|
89
|
+
* Re-apply the Active-only filter to {@link _scheduledJobs}.
|
|
90
|
+
*
|
|
91
|
+
* The base engine's event-driven refresh paths (immediate mutation, remote-invalidate)
|
|
92
|
+
* maintain the array by primary key but are unaware of our Status filter, so an
|
|
93
|
+
* activated/deactivated job can leave a stale entry. This restores the invariant that
|
|
94
|
+
* {@link ScheduledJobs} contains only Active jobs.
|
|
95
|
+
*/
|
|
96
|
+
private reapplyActiveJobFilter;
|
|
97
|
+
/**
|
|
98
|
+
* Extend the base auto-refresh handling: after the base engine reconciles our cached
|
|
99
|
+
* arrays for a Scheduled Jobs change, re-apply the Active-only filter and notify
|
|
100
|
+
* {@link JobsChanged$} subscribers.
|
|
101
|
+
*
|
|
102
|
+
* The `MJ: Scheduled Jobs` config has no Filter/OrderBy, so the base processes its
|
|
103
|
+
* save/delete/remote-invalidate events via the synchronous immediate-mutation path —
|
|
104
|
+
* meaning `_scheduledJobs` is fully reconciled by the time `super` resolves. This is NOT
|
|
105
|
+
* the debounced full-refresh path; if a Filter/OrderBy is ever added to that config,
|
|
106
|
+
* revisit the timing here.
|
|
107
|
+
*/
|
|
108
|
+
protected HandleIndividualBaseEntityEvent(event: BaseEntityEvent): Promise<boolean>;
|
|
109
|
+
/**
|
|
110
|
+
* Determine whether a BaseEntity event targets the `MJ: Scheduled Jobs` entity.
|
|
111
|
+
* Handles both the save/delete shape (carries a `baseEntity`) and the remote-invalidate
|
|
112
|
+
* shape (carries an `entityName` string).
|
|
113
|
+
*/
|
|
114
|
+
private isScheduledJobsEvent;
|
|
71
115
|
/**
|
|
72
116
|
* Get singleton instance
|
|
73
117
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SchedulingEngineBase.d.ts","sourceRoot":"","sources":["../src/SchedulingEngineBase.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAA4B,iBAAiB,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"SchedulingEngineBase.d.ts","sourceRoot":"","sources":["../src/SchedulingEngineBase.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAA4B,eAAe,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAC1H,OAAO,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AAExH,OAAO,EAAE,UAAU,EAAW,MAAM,MAAM,CAAC;AAE3C;;;;;;;;;;GAUG;AACH,qBAAa,oBAAqB,SAAQ,UAAU,CAAC,oBAAoB,CAAC;IACtE,OAAO,CAAC,kBAAkB,CAAkC;IAC5D,OAAO,CAAC,cAAc,CAA8B;IACpD,OAAO,CAAC,iBAAiB,CAAiC;IAC1D,OAAO,CAAC,sBAAsB,CAAwB;IAEtD;;;;;;;;OAQG;IACH,OAAO,CAAC,YAAY,CAAuB;IAE3C;;;;;;;;OAQG;IACU,MAAM,CACf,YAAY,CAAC,EAAE,OAAO,EACtB,WAAW,CAAC,EAAE,QAAQ,EACtB,QAAQ,CAAC,EAAE,iBAAiB,EAC5B,WAAW,GAAE,OAAe,EAC5B,cAAc,GAAE,OAAe,GAChC,OAAO,CAAC,OAAO,CAAC;IAuCnB;;OAEG;IACH,IAAW,iBAAiB,IAAI,wBAAwB,EAAE,CAEzD;IAED;;OAEG;IACH,IAAW,aAAa,IAAI,oBAAoB,EAAE,CAEjD;IAED;;OAEG;IACH,IAAW,gBAAgB,IAAI,uBAAuB,EAAE,CAEvD;IAED;;OAEG;IACI,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,wBAAwB,GAAG,SAAS;IAI3E;;OAEG;IACI,uBAAuB,CAAC,WAAW,EAAE,MAAM,GAAG,wBAAwB,GAAG,SAAS;IAIzF;;OAEG;IACI,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,oBAAoB,EAAE;IAI/D;;OAEG;IACI,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,uBAAuB,EAAE;IAI9D;;;OAGG;IACH,IAAW,qBAAqB,IAAI,MAAM,GAAG,IAAI,CAEhD;IAED;;;OAGG;IACI,qBAAqB,IAAI,IAAI;IAgCpC;;;;OAIG;IACH,IAAW,YAAY,IAAI,UAAU,CAAC,IAAI,CAAC,CAE1C;IAED;;;;;;;OAOG;IACH,OAAO,CAAC,sBAAsB;IAI9B;;;;;;;;;;OAUG;cACsB,+BAA+B,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC;IAWlG;;;;OAIG;IACH,OAAO,CAAC,oBAAoB;IAQ5B;;OAEG;IACH,WAAkB,QAAQ,IAAI,oBAAoB,CAEjD;CACJ"}
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import { BaseEngine } from '@memberjunction/core';
|
|
6
6
|
import { UUIDsEqual } from '@memberjunction/global';
|
|
7
|
+
import { Subject } from 'rxjs';
|
|
7
8
|
/**
|
|
8
9
|
* Base engine for scheduling system with metadata caching
|
|
9
10
|
*
|
|
@@ -22,6 +23,16 @@ export class SchedulingEngineBase extends BaseEngine {
|
|
|
22
23
|
this._scheduledJobs = [];
|
|
23
24
|
this._scheduledJobRuns = [];
|
|
24
25
|
this._activePollingInterval = 10000; // Default 10 seconds, null when no jobs
|
|
26
|
+
/**
|
|
27
|
+
* Fires whenever the set of active scheduled jobs changes (a job saved, deleted,
|
|
28
|
+
* or invalidated from another server). Emitted AFTER the Active-only filter has been
|
|
29
|
+
* re-applied to {@link ScheduledJobs}, so subscribers always observe a reconciled set.
|
|
30
|
+
*
|
|
31
|
+
* The server-side execution engine subscribes to this to wake a suspended poll timer
|
|
32
|
+
* when a job is activated after boot. No-op on the client (no subscribers).
|
|
33
|
+
* @see MJScheduledJobEntityExtended
|
|
34
|
+
*/
|
|
35
|
+
this._jobsChanged = new Subject();
|
|
25
36
|
}
|
|
26
37
|
/**
|
|
27
38
|
* Configure the engine by loading metadata
|
|
@@ -55,7 +66,7 @@ export class SchedulingEngineBase extends BaseEngine {
|
|
|
55
66
|
await this.Load(configs, provider, forceRefresh, contextUser);
|
|
56
67
|
// Filter jobs to only active if requested
|
|
57
68
|
if (!includeAllJobs) {
|
|
58
|
-
this.
|
|
69
|
+
this.reapplyActiveJobFilter();
|
|
59
70
|
}
|
|
60
71
|
// Filter runs to last 7 days if loaded
|
|
61
72
|
if (includeRuns) {
|
|
@@ -146,6 +157,56 @@ export class SchedulingEngineBase extends BaseEngine {
|
|
|
146
157
|
this._activePollingInterval = Math.max(10000, Math.min(604800000, halfInterval));
|
|
147
158
|
}
|
|
148
159
|
}
|
|
160
|
+
/**
|
|
161
|
+
* Observable that fires whenever the active scheduled-job set changes (save, delete,
|
|
162
|
+
* or cross-server invalidation). The emitted set has already had the Active-only filter
|
|
163
|
+
* re-applied. Used server-side to wake a suspended poll timer when a job is activated.
|
|
164
|
+
*/
|
|
165
|
+
get JobsChanged$() {
|
|
166
|
+
return this._jobsChanged.asObservable();
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Re-apply the Active-only filter to {@link _scheduledJobs}.
|
|
170
|
+
*
|
|
171
|
+
* The base engine's event-driven refresh paths (immediate mutation, remote-invalidate)
|
|
172
|
+
* maintain the array by primary key but are unaware of our Status filter, so an
|
|
173
|
+
* activated/deactivated job can leave a stale entry. This restores the invariant that
|
|
174
|
+
* {@link ScheduledJobs} contains only Active jobs.
|
|
175
|
+
*/
|
|
176
|
+
reapplyActiveJobFilter() {
|
|
177
|
+
this._scheduledJobs = this._scheduledJobs.filter(j => j.Status === 'Active');
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Extend the base auto-refresh handling: after the base engine reconciles our cached
|
|
181
|
+
* arrays for a Scheduled Jobs change, re-apply the Active-only filter and notify
|
|
182
|
+
* {@link JobsChanged$} subscribers.
|
|
183
|
+
*
|
|
184
|
+
* The `MJ: Scheduled Jobs` config has no Filter/OrderBy, so the base processes its
|
|
185
|
+
* save/delete/remote-invalidate events via the synchronous immediate-mutation path —
|
|
186
|
+
* meaning `_scheduledJobs` is fully reconciled by the time `super` resolves. This is NOT
|
|
187
|
+
* the debounced full-refresh path; if a Filter/OrderBy is ever added to that config,
|
|
188
|
+
* revisit the timing here.
|
|
189
|
+
*/
|
|
190
|
+
async HandleIndividualBaseEntityEvent(event) {
|
|
191
|
+
const handled = await super.HandleIndividualBaseEntityEvent(event);
|
|
192
|
+
if (this.isScheduledJobsEvent(event)) {
|
|
193
|
+
this.reapplyActiveJobFilter();
|
|
194
|
+
this._jobsChanged.next();
|
|
195
|
+
}
|
|
196
|
+
return handled;
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Determine whether a BaseEntity event targets the `MJ: Scheduled Jobs` entity.
|
|
200
|
+
* Handles both the save/delete shape (carries a `baseEntity`) and the remote-invalidate
|
|
201
|
+
* shape (carries an `entityName` string).
|
|
202
|
+
*/
|
|
203
|
+
isScheduledJobsEvent(event) {
|
|
204
|
+
const target = 'mj: scheduled jobs';
|
|
205
|
+
const name = event.type === 'remote-invalidate'
|
|
206
|
+
? event.entityName
|
|
207
|
+
: event.baseEntity?.EntityInfo?.Name;
|
|
208
|
+
return name?.toLowerCase().trim() === target;
|
|
209
|
+
}
|
|
149
210
|
/**
|
|
150
211
|
* Get singleton instance
|
|
151
212
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SchedulingEngineBase.js","sourceRoot":"","sources":["../src/SchedulingEngineBase.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"SchedulingEngineBase.js","sourceRoot":"","sources":["../src/SchedulingEngineBase.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@memberjunction/scheduling-engine-base",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "5.
|
|
4
|
+
"version": "5.45.0",
|
|
5
5
|
"description": "MemberJunction: Base Scheduling Engine Package - extended entity types and metadata caching, can be used anywhere.",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"types": "dist/index.d.ts",
|
|
@@ -16,10 +16,11 @@
|
|
|
16
16
|
"author": "MemberJunction.com",
|
|
17
17
|
"license": "ISC",
|
|
18
18
|
"dependencies": {
|
|
19
|
-
"@memberjunction/core": "5.
|
|
20
|
-
"@memberjunction/global": "5.
|
|
21
|
-
"@memberjunction/core-entities": "5.
|
|
22
|
-
"@memberjunction/scheduling-base-types": "5.
|
|
19
|
+
"@memberjunction/core": "5.45.0",
|
|
20
|
+
"@memberjunction/global": "5.45.0",
|
|
21
|
+
"@memberjunction/core-entities": "5.45.0",
|
|
22
|
+
"@memberjunction/scheduling-base-types": "5.45.0",
|
|
23
|
+
"rxjs": "^7.8.2"
|
|
23
24
|
},
|
|
24
25
|
"devDependencies": {
|
|
25
26
|
"@types/node": "24.10.11",
|