@memberjunction/core-actions 5.14.0 → 5.16.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/custom/integration/api-rate-limiter.action.js +6 -8
- package/dist/custom/integration/api-rate-limiter.action.js.map +1 -1
- package/dist/custom/utilities/external-change-detection.action.d.ts +11 -7
- package/dist/custom/utilities/external-change-detection.action.d.ts.map +1 -1
- package/dist/custom/utilities/external-change-detection.action.js +36 -69
- package/dist/custom/utilities/external-change-detection.action.js.map +1 -1
- package/package.json +27 -28
|
@@ -4,7 +4,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
4
4
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
6
|
};
|
|
7
|
-
import { RegisterClass } from "@memberjunction/global";
|
|
7
|
+
import { RegisterClass, BaseSingleton } from "@memberjunction/global";
|
|
8
8
|
import { BaseAction } from "@memberjunction/actions";
|
|
9
9
|
import axios from "axios";
|
|
10
10
|
import { Subject, Observable } from "rxjs";
|
|
@@ -12,15 +12,13 @@ import { concatMap } from "rxjs/operators";
|
|
|
12
12
|
/**
|
|
13
13
|
* Rate limiter singleton for managing API requests across action instances
|
|
14
14
|
*/
|
|
15
|
-
class APIRateLimiterManager {
|
|
15
|
+
class APIRateLimiterManager extends BaseSingleton {
|
|
16
16
|
constructor() {
|
|
17
|
+
super();
|
|
17
18
|
this.limiters = new Map();
|
|
18
19
|
}
|
|
19
|
-
static
|
|
20
|
-
|
|
21
|
-
APIRateLimiterManager.instance = new APIRateLimiterManager();
|
|
22
|
-
}
|
|
23
|
-
return APIRateLimiterManager.instance;
|
|
20
|
+
static get Instance() {
|
|
21
|
+
return APIRateLimiterManager.getInstance();
|
|
24
22
|
}
|
|
25
23
|
getRateLimiter(key, config) {
|
|
26
24
|
if (!this.limiters.has(key)) {
|
|
@@ -220,7 +218,7 @@ let APIRateLimiterAction = class APIRateLimiterAction extends BaseAction {
|
|
|
220
218
|
};
|
|
221
219
|
}
|
|
222
220
|
// Get or create rate limiter
|
|
223
|
-
const rateLimiterManager = APIRateLimiterManager.
|
|
221
|
+
const rateLimiterManager = APIRateLimiterManager.Instance;
|
|
224
222
|
const rateLimiter = rateLimiterManager.getRateLimiter(rateLimitKey, {
|
|
225
223
|
maxRequestsPerMinute,
|
|
226
224
|
maxConcurrent,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-rate-limiter.action.js","sourceRoot":"","sources":["../../../src/custom/integration/api-rate-limiter.action.ts"],"names":[],"mappings":";;;;;;AACA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"api-rate-limiter.action.js","sourceRoot":"","sources":["../../../src/custom/integration/api-rate-limiter.action.ts"],"names":[],"mappings":";;;;;;AACA,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,KAA6B,MAAM,OAAO,CAAC;AAClD,OAAO,EAAE,OAAO,EAAQ,UAAU,EAAE,MAAM,MAAM,CAAC;AACjD,OAAO,EAAE,SAAS,EAA0B,MAAM,gBAAgB,CAAC;AAEnE;;GAEG;AACH,MAAM,qBAAsB,SAAQ,aAAoC;IAGpE;QACI,KAAK,EAAE,CAAC;QAHJ,aAAQ,GAAgC,IAAI,GAAG,EAAE,CAAC;IAI1D,CAAC;IAED,MAAM,KAAK,QAAQ;QACf,OAAO,qBAAqB,CAAC,WAAW,EAAyB,CAAC;IACtE,CAAC;IAED,cAAc,CAAC,GAAW,EAAE,MAAuB;QAC/C,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;QACvD,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC;IACnC,CAAC;CACJ;AAiBD,MAAM,cAAc;IAMhB,YAAoB,MAAuB;QAAvB,WAAM,GAAN,MAAM,CAAiB;QALnC,kBAAa,GAAG,IAAI,OAAO,EAAiB,CAAC;QAC7C,iBAAY,GAAG,CAAC,CAAC;QACjB,gBAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACzB,mBAAc,GAAG,CAAC,CAAC;QAGvB,mCAAmC;QACnC,IAAI,CAAC,aAAa,CAAC,IAAI,CACnB,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CACrD,CAAC,SAAS,EAAE,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,WAA+B;QACzC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACnC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;gBACpB,MAAM,EAAE,WAAW;gBACnB,OAAO;gBACP,MAAM;gBACN,UAAU,EAAE,CAAC;aAChB,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;IAEO,cAAc,CAAC,OAAsB;QACzC,OAAO,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE;YAC7B,MAAM,cAAc,GAAG,KAAK,IAAI,EAAE;gBAC9B,0BAA0B;gBAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBACvB,MAAM,aAAa,GAAG,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC;gBAE7C,IAAI,aAAa,IAAI,KAAK,EAAE,CAAC;oBACzB,eAAe;oBACf,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;oBACtB,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC;gBAC3B,CAAC;gBAED,+BAA+B;gBAC/B,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,MAAM,CAAC,oBAAoB,EAAE,CAAC;oBACxD,MAAM,QAAQ,GAAG,KAAK,GAAG,aAAa,CAAC;oBACvC,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;oBAC5D,sBAAsB;oBACtB,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;oBACtB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBAClC,CAAC;gBAED,8BAA8B;gBAC9B,OAAO,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;oBACtD,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;gBAC3D,CAAC;gBAED,kBAAkB;gBAClB,IAAI,CAAC,YAAY,EAAE,CAAC;gBACpB,IAAI,CAAC,cAAc,EAAE,CAAC;gBAEtB,IAAI,CAAC;oBACD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;oBAC7C,IAAI,CAAC,cAAc,EAAE,CAAC;oBACtB,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;oBAC1B,QAAQ,CAAC,IAAI,EAAE,CAAC;oBAChB,QAAQ,CAAC,QAAQ,EAAE,CAAC;gBACxB,CAAC;gBAAC,OAAO,KAAU,EAAE,CAAC;oBAClB,IAAI,CAAC,cAAc,EAAE,CAAC;oBAEtB,wBAAwB;oBACxB,MAAM,aAAa,GAAG,KAAK,CAAC,QAAQ,EAAE,MAAM,KAAK,GAAG;wBAChC,KAAK,CAAC,QAAQ,EAAE,MAAM,KAAK,GAAG;wBAC9B,CAAC,KAAK,CAAC,QAAQ,EAAE,OAAO,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,uBAAuB,CAAC,KAAK,GAAG,CAAC,CAAC;oBAEzG,IAAI,aAAa,IAAI,IAAI,CAAC,MAAM,CAAC,gBAAgB,IAAI,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;wBAC/F,oBAAoB;wBACpB,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;wBAE5E,sBAAsB;wBACtB,UAAU,CAAC,GAAG,EAAE;4BACZ,OAAO,CAAC,UAAU,EAAE,CAAC;4BACrB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;wBACrC,CAAC,EAAE,WAAW,CAAC,CAAC;wBAEhB,QAAQ,CAAC,IAAI,EAAE,CAAC;wBAChB,QAAQ,CAAC,QAAQ,EAAE,CAAC;oBACxB,CAAC;yBAAM,CAAC;wBACJ,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;wBACtB,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;oBAC1B,CAAC;gBACL,CAAC;YACL,CAAC,CAAC;YAEF,cAAc,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;IACP,CAAC;CACJ;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AAEI,IAAM,oBAAoB,GAA1B,MAAM,oBAAqB,SAAQ,UAAU;IAEhD;;;;;;;;;;;;;;;;;OAiBG;IACO,KAAK,CAAC,iBAAiB,CAAC,MAAuB;QACrD,IAAI,CAAC;YACD,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YAC9C,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;YAC7E,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC;YAC5D,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAChD,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;YAChE,MAAM,oBAAoB,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,sBAAsB,EAAE,EAAE,CAAC,CAAC;YACtF,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC;YACvE,MAAM,gBAAgB,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,kBAAkB,EAAE,IAAI,CAAC,CAAC;YAChF,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;YAClE,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC;YACjE,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;YAE/D,+BAA+B;YAC/B,IAAI,CAAC,GAAG,EAAE,CAAC;gBACP,OAAO;oBACH,OAAO,EAAE,KAAK;oBACd,OAAO,EAAE,2BAA2B;oBACpC,UAAU,EAAE,aAAa;iBAC5B,CAAC;YACN,CAAC;YAED,IAAI,CAAC,YAAY,EAAE,CAAC;gBAChB,OAAO;oBACH,OAAO,EAAE,KAAK;oBACd,OAAO,EAAE,oCAAoC;oBAC7C,UAAU,EAAE,wBAAwB;iBACvC,CAAC;YACN,CAAC;YAED,6BAA6B;YAC7B,IAAI,oBAAoB,GAAG,CAAC,EAAE,CAAC;gBAC3B,OAAO;oBACH,OAAO,EAAE,KAAK;oBACd,OAAO,EAAE,yCAAyC;oBAClD,UAAU,EAAE,oBAAoB;iBACnC,CAAC;YACN,CAAC;YAED,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;gBACpB,OAAO;oBACH,OAAO,EAAE,KAAK;oBACd,OAAO,EAAE,kCAAkC;oBAC3C,UAAU,EAAE,0BAA0B;iBACzC,CAAC;YACN,CAAC;YAED,6BAA6B;YAC7B,MAAM,kBAAkB,GAAG,qBAAqB,CAAC,QAAQ,CAAC;YAC1D,MAAM,WAAW,GAAG,kBAAkB,CAAC,cAAc,CAAC,YAAY,EAAE;gBAChE,oBAAoB;gBACpB,aAAa;gBACb,gBAAgB;gBAChB,SAAS;gBACT,UAAU;aACb,CAAC,CAAC;YAEH,uBAAuB;YACvB,MAAM,MAAM,GAAuB;gBAC/B,GAAG;gBACH,MAAM,EAAE,MAAa;gBACrB,OAAO;gBACP,OAAO;gBACP,cAAc,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,0BAA0B;aACxD,CAAC;YAEF,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBACpD,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;YACvB,CAAC;YAED,6BAA6B;YAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC7B,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACnD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YAExC,6BAA6B;YAC7B,MAAM,gBAAgB,GAAQ,EAAE,CAAC;YACjC,MAAM,WAAW,GAAG;gBAChB,mBAAmB;gBACnB,uBAAuB;gBACvB,mBAAmB;gBACnB,oBAAoB;gBACpB,wBAAwB;gBACxB,oBAAoB;gBACpB,iBAAiB;gBACjB,qBAAqB;gBACrB,iBAAiB;aACpB,CAAC;YAEF,KAAK,MAAM,MAAM,IAAI,WAAW,EAAE,CAAC;gBAC/B,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC3B,gBAAgB,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gBACxD,CAAC;YACL,CAAC;YAED,wBAAwB;YACxB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;gBACf,IAAI,EAAE,gBAAgB;gBACtB,IAAI,EAAE,QAAQ;gBACd,KAAK,EAAE,QAAQ,CAAC,MAAM;aACzB,CAAC,CAAC;YAEH,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;gBACf,IAAI,EAAE,iBAAiB;gBACvB,IAAI,EAAE,QAAQ;gBACd,KAAK,EAAE,QAAQ,CAAC,OAAO;aAC1B,CAAC,CAAC;YAEH,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;gBACf,IAAI,EAAE,cAAc;gBACpB,IAAI,EAAE,QAAQ;gBACd,KAAK,EAAE,QAAQ,CAAC,IAAI;aACvB,CAAC,CAAC;YAEH,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;gBACf,IAAI,EAAE,eAAe;gBACrB,IAAI,EAAE,QAAQ;gBACd,KAAK,EAAE,gBAAgB;aAC1B,CAAC,CAAC;YAEH,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;gBACf,IAAI,EAAE,iBAAiB;gBACvB,IAAI,EAAE,QAAQ;gBACd,KAAK,EAAE,QAAQ;aAClB,CAAC,CAAC;YAEH,kCAAkC;YAClC,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,MAAM,GAAG,GAAG,CAAC;YAElE,OAAO;gBACH,OAAO,EAAE,IAAI;gBACb,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,QAAQ,CAAC,MAAM,EAAE;gBAC7D,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC;oBACpB,OAAO,EAAE,0CAA0C;oBACnD,MAAM,EAAE,QAAQ,CAAC,MAAM;oBACvB,UAAU,EAAE,QAAQ,CAAC,UAAU;oBAC/B,QAAQ,EAAE,QAAQ;oBAClB,aAAa,EAAE,gBAAgB;oBAC/B,YAAY,EAAE,YAAY;oBAC1B,IAAI,EAAE,QAAQ,CAAC,IAAI;iBACtB,EAAE,IAAI,EAAE,CAAC,CAAC;aACd,CAAC;QAEN,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,OAAO;gBACH,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,oCAAoC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;gBACrG,UAAU,EAAE,gBAAgB;aAC/B,CAAC;QACN,CAAC;IACL,CAAC;IAED;;OAEG;IACK,eAAe,CAAC,MAAuB,EAAE,IAAY,EAAE,YAAoB;QAC/E,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC/C,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;YAAE,OAAO,YAAY,CAAC;QAC/D,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAC1B,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC;IAC3C,CAAC;IAED;;OAEG;IACK,eAAe,CAAC,MAAuB,EAAE,IAAY,EAAE,YAAqB;QAChF,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC/C,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;YAAE,OAAO,YAAY,CAAC;QAC/D,IAAI,OAAO,KAAK,KAAK,SAAS;YAAE,OAAO,KAAK,CAAC;QAC7C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC5B,OAAO,KAAK,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC;QAC1C,CAAC;QACD,OAAO,YAAY,CAAC;IACxB,CAAC;IAED;;OAEG;IACK,aAAa,CAAC,MAAuB,EAAE,IAAY;QACvD,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QACnF,OAAO,KAAK,EAAE,KAAK,CAAC;IACxB,CAAC;CACJ,CAAA;AA3MY,oBAAoB;IADhC,aAAa,CAAC,UAAU,EAAE,kBAAkB,CAAC;GACjC,oBAAoB,CA2MhC"}
|
|
@@ -1,15 +1,19 @@
|
|
|
1
1
|
import { ActionResultSimple, RunActionParams } from "@memberjunction/actions-base";
|
|
2
2
|
import { BaseAction } from "@memberjunction/actions";
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
4
|
+
* Thin action wrapper for External Change Detection. Delegates to
|
|
5
|
+
* ExternalChangeDetectorEngine.DetectAndReplayChanges() which interleaves
|
|
6
|
+
* detection and replay per entity to keep memory bounded.
|
|
7
|
+
*
|
|
8
|
+
* Params:
|
|
9
|
+
* EntityList - Comma-separated entity names. If omitted, all eligible entities are processed.
|
|
10
|
+
* ReplayBatchSize - Concurrent record replays per entity. Default 20.
|
|
11
|
+
* DetectionBatchSize - Max parallel entity detection. Default 5.
|
|
12
|
+
* StaleTimeoutHours - Hours before a stuck run is considered stale. Default 24.
|
|
11
13
|
*/
|
|
12
14
|
export declare class ExternalChangeDetectionAction extends BaseAction {
|
|
13
15
|
protected InternalRunAction(params: RunActionParams): Promise<ActionResultSimple>;
|
|
16
|
+
private resolveEntityList;
|
|
17
|
+
private getIntParam;
|
|
14
18
|
}
|
|
15
19
|
//# sourceMappingURL=external-change-detection.action.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"external-change-detection.action.d.ts","sourceRoot":"","sources":["../../../src/custom/utilities/external-change-detection.action.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AACnF,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAMrD
|
|
1
|
+
{"version":3,"file":"external-change-detection.action.d.ts","sourceRoot":"","sources":["../../../src/custom/utilities/external-change-detection.action.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AACnF,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAMrD;;;;;;;;;;GAUG;AACH,qBACa,6BAA8B,SAAQ,UAAU;cACzC,iBAAiB,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAyBvF,OAAO,CAAC,iBAAiB;IAWzB,OAAO,CAAC,WAAW;CAMtB"}
|
|
@@ -9,81 +9,48 @@ import { Metadata } from "@memberjunction/core";
|
|
|
9
9
|
import { ExternalChangeDetectorEngine } from "@memberjunction/external-change-detection";
|
|
10
10
|
import { RegisterClass } from "@memberjunction/global";
|
|
11
11
|
/**
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
12
|
+
* Thin action wrapper for External Change Detection. Delegates to
|
|
13
|
+
* ExternalChangeDetectorEngine.DetectAndReplayChanges() which interleaves
|
|
14
|
+
* detection and replay per entity to keep memory bounded.
|
|
15
|
+
*
|
|
16
|
+
* Params:
|
|
17
|
+
* EntityList - Comma-separated entity names. If omitted, all eligible entities are processed.
|
|
18
|
+
* ReplayBatchSize - Concurrent record replays per entity. Default 20.
|
|
19
|
+
* DetectionBatchSize - Max parallel entity detection. Default 5.
|
|
20
|
+
* StaleTimeoutHours - Hours before a stuck run is considered stale. Default 24.
|
|
19
21
|
*/
|
|
20
22
|
let ExternalChangeDetectionAction = class ExternalChangeDetectionAction extends BaseAction {
|
|
21
23
|
async InternalRunAction(params) {
|
|
22
|
-
const
|
|
23
|
-
const
|
|
24
|
-
const
|
|
25
|
-
const autoReplayParam = params.Params.find(p => p.Name.trim().toLowerCase() === 'autoreplay');
|
|
26
|
-
const staleTimeoutParam = params.Params.find(p => p.Name.trim().toLowerCase() === 'staletimeouthours');
|
|
27
|
-
const replayBatchSize = replayBatchSizeParam && replayBatchSizeParam.Value ? parseInt(replayBatchSizeParam.Value) : 20;
|
|
28
|
-
const detectionBatchSize = detectionBatchSizeParam && detectionBatchSizeParam.Value ? parseInt(detectionBatchSizeParam.Value) : 10;
|
|
29
|
-
const staleTimeoutHours = staleTimeoutParam && staleTimeoutParam.Value ? parseInt(staleTimeoutParam.Value) : 24;
|
|
30
|
-
const autoReplay = autoReplayParam && autoReplayParam.Value !== undefined ?
|
|
31
|
-
(typeof autoReplayParam.Value === 'string' ? autoReplayParam.Value.toLowerCase() === 'true' : !!autoReplayParam.Value) :
|
|
32
|
-
true;
|
|
24
|
+
const replayBatchSize = this.getIntParam(params, 'replaybatchsize', 20);
|
|
25
|
+
const detectionBatchSize = this.getIntParam(params, 'detectionbatchsize', 5);
|
|
26
|
+
const staleTimeoutHours = this.getIntParam(params, 'staletimeouthours', 24);
|
|
33
27
|
await ExternalChangeDetectorEngine.Instance.Config(false, params.ContextUser);
|
|
34
|
-
|
|
35
|
-
|
|
28
|
+
const entities = this.resolveEntityList(params);
|
|
29
|
+
const result = await ExternalChangeDetectorEngine.Instance.DetectAndReplayChanges(entities, replayBatchSize, detectionBatchSize, staleTimeoutHours);
|
|
30
|
+
const summary = `${result.EntitiesProcessed} entities processed, ${result.EntitiesFailed} failed, ` +
|
|
31
|
+
`${result.TotalDetected} changes detected, ${result.TotalReplayed} replayed`;
|
|
32
|
+
return {
|
|
33
|
+
Success: result.Success,
|
|
34
|
+
Message: result.Success ? `${summary}.` : `${summary}. ${result.ErrorMessage || ''}`,
|
|
35
|
+
ResultCode: result.Success ? "SUCCESS" : "FAILED"
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
resolveEntityList(params) {
|
|
39
|
+
const entityListParam = params.Params.find(p => p.Name.trim().toLowerCase() === 'entitylist');
|
|
40
|
+
if (entityListParam?.Value && entityListParam.Value.length > 0) {
|
|
36
41
|
const md = new Metadata();
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
}
|
|
41
|
-
else {
|
|
42
|
-
changes = await ExternalChangeDetectorEngine.Instance.DetectChangesForAllEligibleEntities(detectionBatchSize);
|
|
43
|
-
}
|
|
44
|
-
if (changes && changes.Success) {
|
|
45
|
-
const changeCount = changes.Changes ? changes.Changes.length : 0;
|
|
46
|
-
const creations = changes.Changes.filter(c => c.Type === 'Create').length;
|
|
47
|
-
const updates = changes.Changes.filter(c => c.Type === 'Update').length;
|
|
48
|
-
const deletions = changes.Changes.filter(c => c.Type === 'Delete').length;
|
|
49
|
-
const summary = `Detected ${changeCount} changes (Creations: ${creations}, Updates: ${updates}, Deletions: ${deletions}).`;
|
|
50
|
-
if (!autoReplay) {
|
|
51
|
-
return {
|
|
52
|
-
Success: true,
|
|
53
|
-
Message: `${summary} AutoReplay is disabled, so no changes were replayed.`,
|
|
54
|
-
ResultCode: "SUCCESS"
|
|
55
|
-
};
|
|
56
|
-
}
|
|
57
|
-
if (changeCount === 0) {
|
|
58
|
-
return {
|
|
59
|
-
Success: true,
|
|
60
|
-
Message: "No changes detected.",
|
|
61
|
-
ResultCode: "SUCCESS"
|
|
62
|
-
};
|
|
63
|
-
}
|
|
64
|
-
// attempt to replay the changes
|
|
65
|
-
if (await ExternalChangeDetectorEngine.Instance.ReplayChanges(changes.Changes, replayBatchSize, staleTimeoutHours)) {
|
|
66
|
-
return {
|
|
67
|
-
Success: true,
|
|
68
|
-
Message: `${summary} All changes replayed successfully.`,
|
|
69
|
-
ResultCode: "SUCCESS"
|
|
70
|
-
};
|
|
71
|
-
}
|
|
72
|
-
else {
|
|
73
|
-
return {
|
|
74
|
-
Success: false,
|
|
75
|
-
Message: `${summary} Some or all changes failed to replay. Check the Record Change Replay Runs for details.`,
|
|
76
|
-
ResultCode: "FAILED"
|
|
77
|
-
};
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
else {
|
|
81
|
-
return {
|
|
82
|
-
Success: false,
|
|
83
|
-
Message: changes ? changes.ErrorMessage : "Unknown error during change detection",
|
|
84
|
-
ResultCode: "FAILED"
|
|
85
|
-
};
|
|
42
|
+
return entityListParam.Value.split(',')
|
|
43
|
+
.map((name) => md.EntityByName(name.trim()))
|
|
44
|
+
.filter((e) => !!e);
|
|
86
45
|
}
|
|
46
|
+
return ExternalChangeDetectorEngine.Instance.EligibleEntities;
|
|
47
|
+
}
|
|
48
|
+
getIntParam(params, name, defaultValue) {
|
|
49
|
+
const param = params.Params.find(p => p.Name.trim().toLowerCase() === name.toLowerCase());
|
|
50
|
+
if (!param?.Value)
|
|
51
|
+
return defaultValue;
|
|
52
|
+
const parsed = parseInt(param.Value, 10);
|
|
53
|
+
return isNaN(parsed) ? defaultValue : parsed;
|
|
87
54
|
}
|
|
88
55
|
};
|
|
89
56
|
ExternalChangeDetectionAction = __decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"external-change-detection.action.js","sourceRoot":"","sources":["../../../src/custom/utilities/external-change-detection.action.ts"],"names":[],"mappings":";;;;;;AACA,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAErD,OAAO,EAAc,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,
|
|
1
|
+
{"version":3,"file":"external-change-detection.action.js","sourceRoot":"","sources":["../../../src/custom/utilities/external-change-detection.action.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@memberjunction/core-actions",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "5.
|
|
4
|
+
"version": "5.16.0",
|
|
5
5
|
"description": "Library of generated and custom actions for the core MemberJunction framework. This library is maintained by MemberJunction and includes actions for use within the framework itself.",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"types": "dist/index.d.ts",
|
|
@@ -25,32 +25,32 @@
|
|
|
25
25
|
"dependencies": {
|
|
26
26
|
"@asamuzakjp/css-color": "^4.1.2",
|
|
27
27
|
"@dagrejs/dagre": "^1.1.8",
|
|
28
|
-
"@memberjunction/actions": "5.
|
|
29
|
-
"@memberjunction/actions-base": "5.
|
|
30
|
-
"@memberjunction/ai": "5.
|
|
31
|
-
"@memberjunction/ai-mcp-client": "5.
|
|
32
|
-
"@memberjunction/ai-agent-manager": "5.
|
|
33
|
-
"@memberjunction/ai-agents": "5.
|
|
34
|
-
"@memberjunction/ai-betty-bot": "5.
|
|
35
|
-
"@memberjunction/ai-core-plus": "5.
|
|
36
|
-
"@memberjunction/ai-engine-base": "5.
|
|
37
|
-
"@memberjunction/ai-prompts": "5.
|
|
38
|
-
"@memberjunction/ai-vector-sync": "5.
|
|
39
|
-
"@memberjunction/aiengine": "5.
|
|
40
|
-
"@memberjunction/code-execution": "5.
|
|
41
|
-
"@memberjunction/communication-engine": "5.
|
|
42
|
-
"@memberjunction/communication-types": "5.
|
|
43
|
-
"@memberjunction/content-autotagging": "5.
|
|
44
|
-
"@memberjunction/core": "5.
|
|
45
|
-
"@memberjunction/core-entities": "5.
|
|
46
|
-
"@memberjunction/core-entities-server": "5.
|
|
47
|
-
"@memberjunction/export-engine": "5.
|
|
48
|
-
"@memberjunction/external-change-detection": "5.
|
|
49
|
-
"@memberjunction/generic-database-provider": "5.
|
|
50
|
-
"@memberjunction/global": "5.
|
|
51
|
-
"@memberjunction/integration-engine": "5.
|
|
52
|
-
"@memberjunction/sqlserver-dataprovider": "5.
|
|
53
|
-
"@memberjunction/storage": "5.
|
|
28
|
+
"@memberjunction/actions": "5.16.0",
|
|
29
|
+
"@memberjunction/actions-base": "5.16.0",
|
|
30
|
+
"@memberjunction/ai": "5.16.0",
|
|
31
|
+
"@memberjunction/ai-mcp-client": "5.16.0",
|
|
32
|
+
"@memberjunction/ai-agent-manager": "5.16.0",
|
|
33
|
+
"@memberjunction/ai-agents": "5.16.0",
|
|
34
|
+
"@memberjunction/ai-betty-bot": "5.16.0",
|
|
35
|
+
"@memberjunction/ai-core-plus": "5.16.0",
|
|
36
|
+
"@memberjunction/ai-engine-base": "5.16.0",
|
|
37
|
+
"@memberjunction/ai-prompts": "5.16.0",
|
|
38
|
+
"@memberjunction/ai-vector-sync": "5.16.0",
|
|
39
|
+
"@memberjunction/aiengine": "5.16.0",
|
|
40
|
+
"@memberjunction/code-execution": "5.16.0",
|
|
41
|
+
"@memberjunction/communication-engine": "5.16.0",
|
|
42
|
+
"@memberjunction/communication-types": "5.16.0",
|
|
43
|
+
"@memberjunction/content-autotagging": "5.16.0",
|
|
44
|
+
"@memberjunction/core": "5.16.0",
|
|
45
|
+
"@memberjunction/core-entities": "5.16.0",
|
|
46
|
+
"@memberjunction/core-entities-server": "5.16.0",
|
|
47
|
+
"@memberjunction/export-engine": "5.16.0",
|
|
48
|
+
"@memberjunction/external-change-detection": "5.16.0",
|
|
49
|
+
"@memberjunction/generic-database-provider": "5.16.0",
|
|
50
|
+
"@memberjunction/global": "5.16.0",
|
|
51
|
+
"@memberjunction/integration-engine": "5.16.0",
|
|
52
|
+
"@memberjunction/sqlserver-dataprovider": "5.16.0",
|
|
53
|
+
"@memberjunction/storage": "5.16.0",
|
|
54
54
|
"@types/d3-cloud": "^1.2.9",
|
|
55
55
|
"@types/d3-force": "^3.0.10",
|
|
56
56
|
"@types/d3-hierarchy": "^3.1.7",
|
|
@@ -80,7 +80,6 @@
|
|
|
80
80
|
"mammoth": "^1.11.0",
|
|
81
81
|
"marked": "^17.0.1",
|
|
82
82
|
"mermaid": "^11.12.2",
|
|
83
|
-
"node-sql-parser": "^5.4.0",
|
|
84
83
|
"nunjucks": "^3.2.4",
|
|
85
84
|
"nwsapi": "^2.2.23",
|
|
86
85
|
"papaparse": "^5.5.3",
|