@memberjunction/core-actions 5.47.0 → 5.48.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/code-execution/execute-code-service-provider.d.ts +32 -0
- package/dist/custom/code-execution/execute-code-service-provider.d.ts.map +1 -0
- package/dist/custom/code-execution/execute-code-service-provider.js +48 -0
- package/dist/custom/code-execution/execute-code-service-provider.js.map +1 -0
- package/dist/custom/code-execution/execute-code.action.d.ts.map +1 -1
- package/dist/custom/code-execution/execute-code.action.js +5 -2
- package/dist/custom/code-execution/execute-code.action.js.map +1 -1
- package/dist/custom/integration/api-rate-limiter.action.d.ts +42 -0
- package/dist/custom/integration/api-rate-limiter.action.d.ts.map +1 -1
- package/dist/custom/integration/api-rate-limiter.action.js +31 -9
- package/dist/custom/integration/api-rate-limiter.action.js.map +1 -1
- package/dist/custom/lists/add-records-to-list.action.d.ts +4 -0
- package/dist/custom/lists/add-records-to-list.action.d.ts.map +1 -1
- package/dist/custom/lists/add-records-to-list.action.js +25 -4
- package/dist/custom/lists/add-records-to-list.action.js.map +1 -1
- package/package.json +38 -38
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared, persistent `CodeExecutionService` for the "Execute Code" action.
|
|
3
|
+
*
|
|
4
|
+
* @module @memberjunction/core-actions
|
|
5
|
+
*/
|
|
6
|
+
import { CodeExecutionService } from '@memberjunction/code-execution';
|
|
7
|
+
import { BaseSingleton, IShutdownable } from '@memberjunction/global';
|
|
8
|
+
/**
|
|
9
|
+
* Owns a single, process-lifetime `CodeExecutionService` (and its underlying forked
|
|
10
|
+
* worker-process pool) shared across every `ExecuteCodeAction` invocation.
|
|
11
|
+
*
|
|
12
|
+
* Prior to this fix, `ExecuteCodeAction.InternalRunAction` called `new CodeExecutionService()`
|
|
13
|
+
* on every action run. `CodeExecutionService.execute()` auto-initializes on first use, which
|
|
14
|
+
* forks `WorkerPool`'s configured number of OS child processes (default 2) — and the action
|
|
15
|
+
* never called `shutdown()`, so those processes (and their open IPC channels) were never
|
|
16
|
+
* reaped. Every "Execute Code" action run leaked two live child processes for the life of the
|
|
17
|
+
* host process. Mirrors the singleton pattern already used by `RuntimeActionExecutor`
|
|
18
|
+
* (`packages/Actions/Runtime/src/RuntimeActionExecutor.ts`) for the same underlying service,
|
|
19
|
+
* which amortizes the isolate cold-start cost across calls instead of paying it (and leaking
|
|
20
|
+
* workers) on every single invocation.
|
|
21
|
+
*/
|
|
22
|
+
export declare class ExecuteCodeServiceProvider extends BaseSingleton<ExecuteCodeServiceProvider> implements IShutdownable {
|
|
23
|
+
private _service;
|
|
24
|
+
protected constructor();
|
|
25
|
+
static get Instance(): ExecuteCodeServiceProvider;
|
|
26
|
+
readonly ShutdownName = "ExecuteCodeServiceProvider";
|
|
27
|
+
/** Lazy-accessor so the worker pool isn't forked until the first "Execute Code" action call. */
|
|
28
|
+
GetService(): CodeExecutionService;
|
|
29
|
+
/** Gracefully tears down the worker pool. Idempotent — safe to call more than once. */
|
|
30
|
+
Shutdown(): Promise<void>;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=execute-code-service-provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execute-code-service-provider.d.ts","sourceRoot":"","sources":["../../../src/custom/code-execution/execute-code-service-provider.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,aAAa,EAAoB,MAAM,wBAAwB,CAAC;AAExF;;;;;;;;;;;;;GAaG;AACH,qBAAa,0BAA2B,SAAQ,aAAa,CAAC,0BAA0B,CAAE,YAAW,aAAa;IAC9G,OAAO,CAAC,QAAQ,CAAqC;IAErD,SAAS;IAKT,WAAkB,QAAQ,IAAI,0BAA0B,CAEvD;IAED,SAAgB,YAAY,gCAAgC;IAE5D,gGAAgG;IACzF,UAAU,IAAI,oBAAoB;IAOzC,uFAAuF;IAC1E,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAOzC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared, persistent `CodeExecutionService` for the "Execute Code" action.
|
|
3
|
+
*
|
|
4
|
+
* @module @memberjunction/core-actions
|
|
5
|
+
*/
|
|
6
|
+
import { CodeExecutionService } from '@memberjunction/code-execution';
|
|
7
|
+
import { BaseSingleton, ShutdownRegistry } from '@memberjunction/global';
|
|
8
|
+
/**
|
|
9
|
+
* Owns a single, process-lifetime `CodeExecutionService` (and its underlying forked
|
|
10
|
+
* worker-process pool) shared across every `ExecuteCodeAction` invocation.
|
|
11
|
+
*
|
|
12
|
+
* Prior to this fix, `ExecuteCodeAction.InternalRunAction` called `new CodeExecutionService()`
|
|
13
|
+
* on every action run. `CodeExecutionService.execute()` auto-initializes on first use, which
|
|
14
|
+
* forks `WorkerPool`'s configured number of OS child processes (default 2) — and the action
|
|
15
|
+
* never called `shutdown()`, so those processes (and their open IPC channels) were never
|
|
16
|
+
* reaped. Every "Execute Code" action run leaked two live child processes for the life of the
|
|
17
|
+
* host process. Mirrors the singleton pattern already used by `RuntimeActionExecutor`
|
|
18
|
+
* (`packages/Actions/Runtime/src/RuntimeActionExecutor.ts`) for the same underlying service,
|
|
19
|
+
* which amortizes the isolate cold-start cost across calls instead of paying it (and leaking
|
|
20
|
+
* workers) on every single invocation.
|
|
21
|
+
*/
|
|
22
|
+
export class ExecuteCodeServiceProvider extends BaseSingleton {
|
|
23
|
+
constructor() {
|
|
24
|
+
super();
|
|
25
|
+
this._service = null;
|
|
26
|
+
this.ShutdownName = 'ExecuteCodeServiceProvider';
|
|
27
|
+
ShutdownRegistry.Instance.Register(this);
|
|
28
|
+
}
|
|
29
|
+
static get Instance() {
|
|
30
|
+
return super.getInstance();
|
|
31
|
+
}
|
|
32
|
+
/** Lazy-accessor so the worker pool isn't forked until the first "Execute Code" action call. */
|
|
33
|
+
GetService() {
|
|
34
|
+
if (!this._service) {
|
|
35
|
+
this._service = new CodeExecutionService();
|
|
36
|
+
}
|
|
37
|
+
return this._service;
|
|
38
|
+
}
|
|
39
|
+
/** Gracefully tears down the worker pool. Idempotent — safe to call more than once. */
|
|
40
|
+
async Shutdown() {
|
|
41
|
+
if (this._service) {
|
|
42
|
+
const service = this._service;
|
|
43
|
+
this._service = null;
|
|
44
|
+
await service.shutdown();
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=execute-code-service-provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execute-code-service-provider.js","sourceRoot":"","sources":["../../../src/custom/code-execution/execute-code-service-provider.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,aAAa,EAAiB,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAExF;;;;;;;;;;;;;GAaG;AACH,MAAM,OAAO,0BAA2B,SAAQ,aAAyC;IAGrF;QACI,KAAK,EAAE,CAAC;QAHJ,aAAQ,GAAgC,IAAI,CAAC;QAWrC,iBAAY,GAAG,4BAA4B,CAAC;QAPxD,gBAAgB,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC7C,CAAC;IAEM,MAAM,KAAK,QAAQ;QACtB,OAAO,KAAK,CAAC,WAAW,EAA8B,CAAC;IAC3D,CAAC;IAID,gGAAgG;IACzF,UAAU;QACb,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACjB,IAAI,CAAC,QAAQ,GAAG,IAAI,oBAAoB,EAAE,CAAC;QAC/C,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAED,uFAAuF;IAChF,KAAK,CAAC,QAAQ;QACjB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChB,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC;YAC9B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACrB,MAAM,OAAO,CAAC,QAAQ,EAAE,CAAC;QAC7B,CAAC;IACL,CAAC;CACJ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execute-code.action.d.ts","sourceRoot":"","sources":["../../../src/custom/code-execution/execute-code.action.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAErD,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAQnF;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,qBACa,iBAAkB,SAAQ,UAAU;IAC7C;;;;;OAKG;cACa,iBAAiB,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"execute-code.action.d.ts","sourceRoot":"","sources":["../../../src/custom/code-execution/execute-code.action.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAErD,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAQnF;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,qBACa,iBAAkB,SAAQ,UAAU;IAC7C;;;;;OAKG;cACa,iBAAiB,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAwFvF;;;OAGG;IACH,OAAO,CAAC,cAAc;IAStB;;;OAGG;IACH,OAAO,CAAC,eAAe;IASvB;;;OAGG;IACH,OAAO,CAAC,cAAc;CAOzB"}
|
|
@@ -14,8 +14,8 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
14
14
|
};
|
|
15
15
|
import { BaseAction } from '@memberjunction/actions';
|
|
16
16
|
import { RegisterClass } from '@memberjunction/global';
|
|
17
|
-
import { CodeExecutionService } from '@memberjunction/code-execution';
|
|
18
17
|
import { LogError } from '@memberjunction/core';
|
|
18
|
+
import { ExecuteCodeServiceProvider } from './execute-code-service-provider.js';
|
|
19
19
|
/**
|
|
20
20
|
* Action for executing JavaScript code in a sandboxed environment
|
|
21
21
|
*
|
|
@@ -80,7 +80,10 @@ let ExecuteCodeAction = class ExecuteCodeAction extends BaseAction {
|
|
|
80
80
|
}
|
|
81
81
|
}
|
|
82
82
|
// 2. Delegate to service (DIRECT IMPORT - not another action!)
|
|
83
|
-
|
|
83
|
+
// Reuse the shared, process-lifetime CodeExecutionService instead of
|
|
84
|
+
// `new CodeExecutionService()` per call — that used to fork a fresh
|
|
85
|
+
// worker-process pool on every invocation and never shut it down.
|
|
86
|
+
const executionService = ExecuteCodeServiceProvider.Instance.GetService();
|
|
84
87
|
const executionParams = {
|
|
85
88
|
code,
|
|
86
89
|
language,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execute-code.action.js","sourceRoot":"","sources":["../../../src/custom/code-execution/execute-code.action.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;;;;;;;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"execute-code.action.js","sourceRoot":"","sources":["../../../src/custom/code-execution/execute-code.action.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,47 @@
|
|
|
1
1
|
import { ActionResultSimple, RunActionParams } from "@memberjunction/actions-base";
|
|
2
|
+
import { BaseSingleton } from "@memberjunction/global";
|
|
2
3
|
import { BaseAction } from "@memberjunction/actions";
|
|
4
|
+
import { AxiosRequestConfig } from "axios";
|
|
5
|
+
/**
|
|
6
|
+
* Rate limiter singleton for managing API requests across action instances.
|
|
7
|
+
*
|
|
8
|
+
* `limiters` is keyed by the caller-supplied `RateLimitKey` action parameter, so its key
|
|
9
|
+
* space is not bounded at compile time (a dynamic key per record/tenant/timestamp would
|
|
10
|
+
* grow it without bound). Bounded via `MJLruCache` rather than a raw `Map`; the `onEvict`
|
|
11
|
+
* hook disposes the evicted `APIRateLimiter`'s RxJS subscription so it doesn't also leak.
|
|
12
|
+
*/
|
|
13
|
+
export declare class APIRateLimiterManager extends BaseSingleton<APIRateLimiterManager> {
|
|
14
|
+
private limiters;
|
|
15
|
+
constructor();
|
|
16
|
+
static get Instance(): APIRateLimiterManager;
|
|
17
|
+
getRateLimiter(key: string, config: RateLimitConfig): APIRateLimiter;
|
|
18
|
+
}
|
|
19
|
+
export interface RateLimitConfig {
|
|
20
|
+
maxRequestsPerMinute: number;
|
|
21
|
+
maxConcurrent: number;
|
|
22
|
+
retryOnRateLimit: boolean;
|
|
23
|
+
backoffMs: number;
|
|
24
|
+
maxRetries: number;
|
|
25
|
+
}
|
|
26
|
+
export declare class APIRateLimiter {
|
|
27
|
+
private config;
|
|
28
|
+
private requestQueue$;
|
|
29
|
+
private queueSubscription;
|
|
30
|
+
private requestCount;
|
|
31
|
+
private windowStart;
|
|
32
|
+
private activeRequests;
|
|
33
|
+
constructor(config: RateLimitConfig);
|
|
34
|
+
/**
|
|
35
|
+
* Releases this limiter's RxJS subscription and completes its queue Subject.
|
|
36
|
+
* Called by `APIRateLimiterManager`'s `MJLruCache` `onEvict` hook when this limiter
|
|
37
|
+
* ages out or is displaced by LRU pressure — without it, the `concatMap().subscribe()`
|
|
38
|
+
* above stays live (and referenced by the Subject) for the life of the process even
|
|
39
|
+
* after the limiter is no longer reachable from `limiters`.
|
|
40
|
+
*/
|
|
41
|
+
dispose(): void;
|
|
42
|
+
execute(axiosConfig: AxiosRequestConfig): Promise<any>;
|
|
43
|
+
private processRequest;
|
|
44
|
+
}
|
|
3
45
|
/**
|
|
4
46
|
* Action that adds rate limiting to any API endpoint
|
|
5
47
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-rate-limiter.action.d.ts","sourceRoot":"","sources":["../../../src/custom/integration/api-rate-limiter.action.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"api-rate-limiter.action.d.ts","sourceRoot":"","sources":["../../../src/custom/integration/api-rate-limiter.action.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AACnF,OAAO,EAAiB,aAAa,EAAc,MAAM,wBAAwB,CAAC;AAClF,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAc,EAAE,kBAAkB,EAAE,MAAM,OAAO,CAAC;AAIlD;;;;;;;GAOG;AACH,qBAAa,qBAAsB,SAAQ,aAAa,CAAC,qBAAqB,CAAC;IAC3E,OAAO,CAAC,QAAQ,CAAqC;;IAWrD,MAAM,KAAK,QAAQ,IAAI,qBAAqB,CAE3C;IAED,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,GAAG,cAAc;CAQvE;AAED,MAAM,WAAW,eAAe;IAC5B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACtB;AASD,qBAAa,cAAc;IAOX,OAAO,CAAC,MAAM;IAN1B,OAAO,CAAC,aAAa,CAAgC;IACrD,OAAO,CAAC,iBAAiB,CAAe;IACxC,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,cAAc,CAAK;gBAEP,MAAM,EAAE,eAAe;IAO3C;;;;;;OAMG;IACI,OAAO,IAAI,IAAI;IAKhB,OAAO,CAAC,WAAW,EAAE,kBAAkB,GAAG,OAAO,CAAC,GAAG,CAAC;IAW5D,OAAO,CAAC,cAAc;CAmEzB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AACH,qBACa,oBAAqB,SAAQ,UAAU;IAEhD;;;;;;;;;;;;;;;;;OAiBG;cACa,iBAAiB,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAyJvF;;OAEG;IACH,OAAO,CAAC,eAAe;IAOvB;;OAEG;IACH,OAAO,CAAC,eAAe;IAUvB;;OAEG;IACH,OAAO,CAAC,aAAa;CAIxB"}
|
|
@@ -4,30 +4,41 @@ 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, BaseSingleton } from "@memberjunction/global";
|
|
7
|
+
import { RegisterClass, BaseSingleton, MJLruCache } from "@memberjunction/global";
|
|
8
8
|
import { BaseAction } from "@memberjunction/actions";
|
|
9
9
|
import axios from "axios";
|
|
10
10
|
import { Subject, Observable } from "rxjs";
|
|
11
11
|
import { concatMap } from "rxjs/operators";
|
|
12
12
|
/**
|
|
13
|
-
* Rate limiter singleton for managing API requests across action instances
|
|
13
|
+
* Rate limiter singleton for managing API requests across action instances.
|
|
14
|
+
*
|
|
15
|
+
* `limiters` is keyed by the caller-supplied `RateLimitKey` action parameter, so its key
|
|
16
|
+
* space is not bounded at compile time (a dynamic key per record/tenant/timestamp would
|
|
17
|
+
* grow it without bound). Bounded via `MJLruCache` rather than a raw `Map`; the `onEvict`
|
|
18
|
+
* hook disposes the evicted `APIRateLimiter`'s RxJS subscription so it doesn't also leak.
|
|
14
19
|
*/
|
|
15
|
-
class APIRateLimiterManager extends BaseSingleton {
|
|
20
|
+
export class APIRateLimiterManager extends BaseSingleton {
|
|
16
21
|
constructor() {
|
|
17
22
|
super();
|
|
18
|
-
this.limiters = new
|
|
23
|
+
this.limiters = new MJLruCache({
|
|
24
|
+
maxSize: 200,
|
|
25
|
+
ttlMs: 60 * 60 * 1000,
|
|
26
|
+
onEvict: (_key, limiter) => limiter.dispose(),
|
|
27
|
+
});
|
|
19
28
|
}
|
|
20
29
|
static get Instance() {
|
|
21
30
|
return APIRateLimiterManager.getInstance();
|
|
22
31
|
}
|
|
23
32
|
getRateLimiter(key, config) {
|
|
24
|
-
|
|
25
|
-
|
|
33
|
+
let limiter = this.limiters.Get(key);
|
|
34
|
+
if (!limiter) {
|
|
35
|
+
limiter = new APIRateLimiter(config);
|
|
36
|
+
this.limiters.Set(key, limiter);
|
|
26
37
|
}
|
|
27
|
-
return
|
|
38
|
+
return limiter;
|
|
28
39
|
}
|
|
29
40
|
}
|
|
30
|
-
class APIRateLimiter {
|
|
41
|
+
export class APIRateLimiter {
|
|
31
42
|
constructor(config) {
|
|
32
43
|
this.config = config;
|
|
33
44
|
this.requestQueue$ = new Subject();
|
|
@@ -35,7 +46,18 @@ class APIRateLimiter {
|
|
|
35
46
|
this.windowStart = Date.now();
|
|
36
47
|
this.activeRequests = 0;
|
|
37
48
|
// Process queue with rate limiting
|
|
38
|
-
this.requestQueue$.pipe(concatMap(request => this.processRequest(request))).subscribe();
|
|
49
|
+
this.queueSubscription = this.requestQueue$.pipe(concatMap(request => this.processRequest(request))).subscribe();
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Releases this limiter's RxJS subscription and completes its queue Subject.
|
|
53
|
+
* Called by `APIRateLimiterManager`'s `MJLruCache` `onEvict` hook when this limiter
|
|
54
|
+
* ages out or is displaced by LRU pressure — without it, the `concatMap().subscribe()`
|
|
55
|
+
* above stays live (and referenced by the Subject) for the life of the process even
|
|
56
|
+
* after the limiter is no longer reachable from `limiters`.
|
|
57
|
+
*/
|
|
58
|
+
dispose() {
|
|
59
|
+
this.queueSubscription.unsubscribe();
|
|
60
|
+
this.requestQueue$.complete();
|
|
39
61
|
}
|
|
40
62
|
async execute(axiosConfig) {
|
|
41
63
|
return new Promise((resolve, reject) => {
|
|
@@ -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,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":"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"}
|
|
@@ -18,6 +18,10 @@ import { BaseAction } from "@memberjunction/actions";
|
|
|
18
18
|
*/
|
|
19
19
|
export declare class AddRecordsToListAction extends BaseAction {
|
|
20
20
|
protected InternalRunAction(params: RunActionParams): Promise<ActionResultSimple>;
|
|
21
|
+
/**
|
|
22
|
+
* Runs `worker` over `items` with at most `limit` operations in flight.
|
|
23
|
+
*/
|
|
24
|
+
private forEachConcurrent;
|
|
21
25
|
private getStringParam;
|
|
22
26
|
private getArrayParam;
|
|
23
27
|
private getBooleanParam;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add-records-to-list.action.d.ts","sourceRoot":"","sources":["../../../src/custom/lists/add-records-to-list.action.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAEnF,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAIrD;;;;;;;;;;;;;;;GAeG;AACH,qBACa,sBAAuB,SAAQ,UAAU;cAEpC,iBAAiB,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"add-records-to-list.action.d.ts","sourceRoot":"","sources":["../../../src/custom/lists/add-records-to-list.action.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAEnF,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAIrD;;;;;;;;;;;;;;;GAeG;AACH,qBACa,sBAAuB,SAAQ,UAAU;cAEpC,iBAAiB,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,kBAAkB,CAAC;IA4IvF;;OAEG;YACW,iBAAiB;IAgB/B,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,aAAa;IAoBrB,OAAO,CAAC,eAAe;IAYvB,OAAO,CAAC,cAAc;CAOvB"}
|
|
@@ -77,17 +77,23 @@ let AddRecordsToListAction = class AddRecordsToListAction extends BaseAction {
|
|
|
77
77
|
}
|
|
78
78
|
}
|
|
79
79
|
}
|
|
80
|
-
// Add records to list
|
|
80
|
+
// Add records to list. Writes run with bounded concurrency —
|
|
81
|
+
// per-record error isolation is preserved (one bad record fails only
|
|
82
|
+
// itself), but wall clock no longer scales 1:1 with record count.
|
|
81
83
|
let addedCount = 0;
|
|
82
84
|
let skippedCount = 0;
|
|
83
85
|
let failedCount = 0;
|
|
84
86
|
const errors = [];
|
|
87
|
+
const toAdd = [];
|
|
85
88
|
for (const recordId of recordIds) {
|
|
86
|
-
// Skip if already exists
|
|
87
89
|
if (skipDuplicates && existingRecordIds.has(recordId)) {
|
|
88
90
|
skippedCount++;
|
|
89
|
-
continue;
|
|
90
91
|
}
|
|
92
|
+
else {
|
|
93
|
+
toAdd.push(recordId);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
await this.forEachConcurrent(toAdd, 10, async (recordId) => {
|
|
91
97
|
try {
|
|
92
98
|
const listDetail = await md.GetEntityObject('MJ: List Details', params.ContextUser);
|
|
93
99
|
listDetail.NewRecord();
|
|
@@ -112,7 +118,7 @@ let AddRecordsToListAction = class AddRecordsToListAction extends BaseAction {
|
|
|
112
118
|
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
113
119
|
errors.push(`Error adding record '${recordId}': ${errorMessage}`);
|
|
114
120
|
}
|
|
115
|
-
}
|
|
121
|
+
});
|
|
116
122
|
// Prepare result
|
|
117
123
|
const result = {
|
|
118
124
|
TotalRecords: recordIds.length,
|
|
@@ -145,6 +151,21 @@ let AddRecordsToListAction = class AddRecordsToListAction extends BaseAction {
|
|
|
145
151
|
};
|
|
146
152
|
}
|
|
147
153
|
}
|
|
154
|
+
/**
|
|
155
|
+
* Runs `worker` over `items` with at most `limit` operations in flight.
|
|
156
|
+
*/
|
|
157
|
+
async forEachConcurrent(items, limit, worker) {
|
|
158
|
+
let next = 0;
|
|
159
|
+
const lanes = Array.from({ length: Math.min(limit, items.length) }, async () => {
|
|
160
|
+
while (true) {
|
|
161
|
+
const idx = next++;
|
|
162
|
+
if (idx >= items.length)
|
|
163
|
+
return;
|
|
164
|
+
await worker(items[idx]);
|
|
165
|
+
}
|
|
166
|
+
});
|
|
167
|
+
await Promise.all(lanes);
|
|
168
|
+
}
|
|
148
169
|
getStringParam(params, name) {
|
|
149
170
|
const param = params.Params.find(p => p.Name.toLowerCase() === name.toLowerCase() && p.Type === 'Input');
|
|
150
171
|
return param?.Value != null ? String(param.Value) : undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add-records-to-list.action.js","sourceRoot":"","sources":["../../../src/custom/lists/add-records-to-list.action.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"add-records-to-list.action.js","sourceRoot":"","sources":["../../../src/custom/lists/add-records-to-list.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.48.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,43 +25,43 @@
|
|
|
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-agent-manager": "5.
|
|
32
|
-
"@memberjunction/ai-agents": "5.
|
|
33
|
-
"@memberjunction/ai-betty-bot": "5.
|
|
34
|
-
"@memberjunction/ai-core-plus": "5.
|
|
35
|
-
"@memberjunction/ai-engine-base": "5.
|
|
36
|
-
"@memberjunction/ai-mcp-client": "5.
|
|
37
|
-
"@memberjunction/ai-prompts": "5.
|
|
38
|
-
"@memberjunction/ai-vector-sync": "5.
|
|
39
|
-
"@memberjunction/aiengine": "5.
|
|
40
|
-
"@memberjunction/clustering-engine": "5.
|
|
41
|
-
"@memberjunction/code-execution": "5.
|
|
42
|
-
"@memberjunction/communication-engine": "5.
|
|
43
|
-
"@memberjunction/communication-types": "5.
|
|
44
|
-
"@memberjunction/content-autotagging": "5.
|
|
45
|
-
"@memberjunction/core": "5.
|
|
46
|
-
"@memberjunction/core-entities": "5.
|
|
47
|
-
"@memberjunction/core-entities-server": "5.
|
|
48
|
-
"@memberjunction/esignature": "5.
|
|
49
|
-
"@memberjunction/export-engine": "5.
|
|
50
|
-
"@memberjunction/external-change-detection": "5.
|
|
51
|
-
"@memberjunction/generic-database-provider": "5.
|
|
52
|
-
"@memberjunction/geo-core": "5.
|
|
53
|
-
"@memberjunction/global": "5.
|
|
54
|
-
"@memberjunction/integration-engine": "5.
|
|
55
|
-
"@memberjunction/interactive-component-types": "5.
|
|
56
|
-
"@memberjunction/lists": "5.
|
|
57
|
-
"@memberjunction/lists-base": "5.
|
|
58
|
-
"@memberjunction/react-linter": "5.
|
|
59
|
-
"@memberjunction/record-set-processor": "5.
|
|
60
|
-
"@memberjunction/record-set-processor-base": "5.
|
|
61
|
-
"@memberjunction/search-engine": "5.
|
|
62
|
-
"@memberjunction/sql-dialect": "5.
|
|
63
|
-
"@memberjunction/sqlserver-dataprovider": "5.
|
|
64
|
-
"@memberjunction/storage": "5.
|
|
28
|
+
"@memberjunction/actions": "5.48.0",
|
|
29
|
+
"@memberjunction/actions-base": "5.48.0",
|
|
30
|
+
"@memberjunction/ai": "5.48.0",
|
|
31
|
+
"@memberjunction/ai-agent-manager": "5.48.0",
|
|
32
|
+
"@memberjunction/ai-agents": "5.48.0",
|
|
33
|
+
"@memberjunction/ai-betty-bot": "5.48.0",
|
|
34
|
+
"@memberjunction/ai-core-plus": "5.48.0",
|
|
35
|
+
"@memberjunction/ai-engine-base": "5.48.0",
|
|
36
|
+
"@memberjunction/ai-mcp-client": "5.48.0",
|
|
37
|
+
"@memberjunction/ai-prompts": "5.48.0",
|
|
38
|
+
"@memberjunction/ai-vector-sync": "5.48.0",
|
|
39
|
+
"@memberjunction/aiengine": "5.48.0",
|
|
40
|
+
"@memberjunction/clustering-engine": "5.48.0",
|
|
41
|
+
"@memberjunction/code-execution": "5.48.0",
|
|
42
|
+
"@memberjunction/communication-engine": "5.48.0",
|
|
43
|
+
"@memberjunction/communication-types": "5.48.0",
|
|
44
|
+
"@memberjunction/content-autotagging": "5.48.0",
|
|
45
|
+
"@memberjunction/core": "5.48.0",
|
|
46
|
+
"@memberjunction/core-entities": "5.48.0",
|
|
47
|
+
"@memberjunction/core-entities-server": "5.48.0",
|
|
48
|
+
"@memberjunction/esignature": "5.48.0",
|
|
49
|
+
"@memberjunction/export-engine": "5.48.0",
|
|
50
|
+
"@memberjunction/external-change-detection": "5.48.0",
|
|
51
|
+
"@memberjunction/generic-database-provider": "5.48.0",
|
|
52
|
+
"@memberjunction/geo-core": "5.48.0",
|
|
53
|
+
"@memberjunction/global": "5.48.0",
|
|
54
|
+
"@memberjunction/integration-engine": "5.48.0",
|
|
55
|
+
"@memberjunction/interactive-component-types": "5.48.0",
|
|
56
|
+
"@memberjunction/lists": "5.48.0",
|
|
57
|
+
"@memberjunction/lists-base": "5.48.0",
|
|
58
|
+
"@memberjunction/react-linter": "5.48.0",
|
|
59
|
+
"@memberjunction/record-set-processor": "5.48.0",
|
|
60
|
+
"@memberjunction/record-set-processor-base": "5.48.0",
|
|
61
|
+
"@memberjunction/search-engine": "5.48.0",
|
|
62
|
+
"@memberjunction/sql-dialect": "5.48.0",
|
|
63
|
+
"@memberjunction/sqlserver-dataprovider": "5.48.0",
|
|
64
|
+
"@memberjunction/storage": "5.48.0",
|
|
65
65
|
"@types/d3-cloud": "^1.2.9",
|
|
66
66
|
"@types/d3-force": "^3.0.10",
|
|
67
67
|
"@types/d3-hierarchy": "^3.1.7",
|