@memberjunction/actions 6.2.0-edge.1 → 6.2.0-edge.3

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.
@@ -21,6 +21,19 @@ export declare class EntityActionEngineServer extends BaseSingleton<EntityAction
21
21
  * its own _contextUser distinct from the shared base cache. Falls back to the base's when not set.
22
22
  */
23
23
  private _contextUser?;
24
+ /**
25
+ * Cache of invocation-type instances, keyed by `InvocationType.Name`. Mirrors
26
+ * `CommunicationEngine._providerInstanceCache`: an `EntityActionInvocationBase` subclass can own
27
+ * its own internal bounded cache (e.g. the Script invocation type's `_scriptCache` in
28
+ * `EntityActionInvocationTypes.ts`), but that cache only pays off if the instance itself survives
29
+ * across calls. Without this cache, `RunEntityAction()` asked `ClassFactory.CreateInstance` for a
30
+ * brand-new instance on every single invocation — so `_scriptCache` was rebuilt from empty and
31
+ * discarded before a second lookup could ever hit it, recompiling every Script-type action's
32
+ * `new Function(...)` from source on every call. Bounded by the number of distinct registered
33
+ * invocation type names (a handful, admin-managed via `MJ: Entity Action Invocation Types`), so no
34
+ * eviction is needed.
35
+ */
36
+ private _invocationInstanceCache;
24
37
  /** Ensures the single EntityActionEngineBase cache is loaded. Delegates entirely to the base. */
25
38
  Config(forceRefresh?: boolean, contextUser?: UserInfo, provider?: IMetadataProvider): Promise<void>;
26
39
  /** True once the underlying EntityActionEngineBase cache has loaded. */
@@ -1 +1 @@
1
- {"version":3,"file":"EntityActionEngine.d.ts","sourceRoot":"","sources":["../../src/entity-actions/EntityActionEngine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAY,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,0BAA0B,EAAE,8BAA8B,EAAE,kCAAkC,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAE1K,OAAO,EAA0B,4BAA4B,EAAE,kBAAkB,EAAE,4BAA4B,EAAE,MAAM,8BAA8B,CAAC;AAEtJ;;GAEG;AACH,qBAAa,wBAAyB,SAAQ,aAAa,CAAC,wBAAwB,CAAC;IACjF,WAAkB,QAAQ,IAAI,wBAAwB,CAErD;IAED;;;;;;;OAOG;IACH,OAAO,KAAK,IAAI,GAEf;IAED;;;OAGG;IACH,OAAO,CAAC,YAAY,CAAC,CAAW;IAEhC,iGAAiG;IACpF,MAAM,CAAC,YAAY,GAAE,OAAe,EAAE,WAAW,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAOvH,wEAAwE;IACxE,IAAW,MAAM,IAAI,OAAO,CAA6B;IAEzD,IAAW,WAAW,IAAI,QAAQ,CAAuD;IACzF,IAAW,WAAW,CAAC,KAAK,EAAE,QAAQ,EAAgC;IAGtE,IAAW,eAAe,IAAI,kCAAkC,EAAE,CAAsC;IACxG,IAAW,OAAO,IAAI,0BAA0B,EAAE,CAA8B;IAChF,IAAW,WAAW,IAAI,8BAA8B,EAAE,CAAkC;IAC5F,IAAW,aAAa,IAAI,4BAA4B,EAAE,CAAoC;IAC9F,IAAW,MAAM,IAAI,yBAAyB,EAAE,CAA6B;IAGtE,sBAAsB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,UAAU,GAAG,4BAA4B,EAAE;IAGtH,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,4BAA4B,EAAE;IAGtE,uCAAuC,CAAC,UAAU,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,UAAU,GAAG,4BAA4B,EAAE;IAKtK;;;;;;;OAOG;IACU,eAAe,CAAC,MAAM,EAAE,4BAA4B,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;CAqBzG"}
1
+ {"version":3,"file":"EntityActionEngine.d.ts","sourceRoot":"","sources":["../../src/entity-actions/EntityActionEngine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAY,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,0BAA0B,EAAE,8BAA8B,EAAE,kCAAkC,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAE1K,OAAO,EAA0B,4BAA4B,EAAE,kBAAkB,EAAE,4BAA4B,EAAE,MAAM,8BAA8B,CAAC;AAEtJ;;GAEG;AACH,qBAAa,wBAAyB,SAAQ,aAAa,CAAC,wBAAwB,CAAC;IACjF,WAAkB,QAAQ,IAAI,wBAAwB,CAErD;IAED;;;;;;;OAOG;IACH,OAAO,KAAK,IAAI,GAEf;IAED;;;OAGG;IACH,OAAO,CAAC,YAAY,CAAC,CAAW;IAEhC;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,wBAAwB,CAAsD;IAEtF,iGAAiG;IACpF,MAAM,CAAC,YAAY,GAAE,OAAe,EAAE,WAAW,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAOvH,wEAAwE;IACxE,IAAW,MAAM,IAAI,OAAO,CAA6B;IAEzD,IAAW,WAAW,IAAI,QAAQ,CAAuD;IACzF,IAAW,WAAW,CAAC,KAAK,EAAE,QAAQ,EAAgC;IAGtE,IAAW,eAAe,IAAI,kCAAkC,EAAE,CAAsC;IACxG,IAAW,OAAO,IAAI,0BAA0B,EAAE,CAA8B;IAChF,IAAW,WAAW,IAAI,8BAA8B,EAAE,CAAkC;IAC5F,IAAW,aAAa,IAAI,4BAA4B,EAAE,CAAoC;IAC9F,IAAW,MAAM,IAAI,yBAAyB,EAAE,CAA6B;IAGtE,sBAAsB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,UAAU,GAAG,4BAA4B,EAAE;IAGtH,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,4BAA4B,EAAE;IAGtE,uCAAuC,CAAC,UAAU,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,UAAU,GAAG,4BAA4B,EAAE;IAKtK;;;;;;;OAOG;IACU,eAAe,CAAC,MAAM,EAAE,4BAA4B,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;CA0BzG"}
@@ -5,6 +5,22 @@ import { EntityActionEngineBase } from "@memberjunction/actions-base";
5
5
  * The purpose of this class is to handle the invocation of actions for entities in all of the supported invocation contexts.
6
6
  */
7
7
  export class EntityActionEngineServer extends BaseSingleton {
8
+ constructor() {
9
+ super(...arguments);
10
+ /**
11
+ * Cache of invocation-type instances, keyed by `InvocationType.Name`. Mirrors
12
+ * `CommunicationEngine._providerInstanceCache`: an `EntityActionInvocationBase` subclass can own
13
+ * its own internal bounded cache (e.g. the Script invocation type's `_scriptCache` in
14
+ * `EntityActionInvocationTypes.ts`), but that cache only pays off if the instance itself survives
15
+ * across calls. Without this cache, `RunEntityAction()` asked `ClassFactory.CreateInstance` for a
16
+ * brand-new instance on every single invocation — so `_scriptCache` was rebuilt from empty and
17
+ * discarded before a second lookup could ever hit it, recompiling every Script-type action's
18
+ * `new Function(...)` from source on every call. Bounded by the number of distinct registered
19
+ * invocation type names (a handful, admin-managed via `MJ: Entity Action Invocation Types`), so no
20
+ * eviction is needed.
21
+ */
22
+ this._invocationInstanceCache = new Map();
23
+ }
8
24
  static get Instance() {
9
25
  return super.getInstance();
10
26
  }
@@ -66,9 +82,14 @@ export class EntityActionEngineServer extends BaseSingleton {
66
82
  if (!params.InvocationType)
67
83
  throw new Error('Invalid invocation type provided');
68
84
  // now we have the invocation type, use the name as the key for ClassFactory create instance to get what we need
69
- const invocationInstance = MJGlobal.Instance.ClassFactory.CreateInstance(EntityActionInvocationBase, params.InvocationType.Name);
70
- if (!invocationInstance)
71
- throw new Error('Error creating instance of invocation type');
85
+ const invocationTypeName = params.InvocationType.Name;
86
+ let invocationInstance = this._invocationInstanceCache.get(invocationTypeName);
87
+ if (!invocationInstance) {
88
+ invocationInstance = MJGlobal.Instance.ClassFactory.CreateInstance(EntityActionInvocationBase, invocationTypeName);
89
+ if (!invocationInstance)
90
+ throw new Error('Error creating instance of invocation type');
91
+ this._invocationInstanceCache.set(invocationTypeName, invocationInstance);
92
+ }
72
93
  // now we have the instance, invoke the action
73
94
  return invocationInstance.InvokeAction(params);
74
95
  }
@@ -1 +1 @@
1
- {"version":3,"file":"EntityActionEngine.js","sourceRoot":"","sources":["../../src/entity-actions/EntityActionEngine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAGjE,OAAO,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAC3E,OAAO,EAAE,sBAAsB,EAAkF,MAAM,8BAA8B,CAAC;AAEtJ;;GAEG;AACH,MAAM,OAAO,wBAAyB,SAAQ,aAAuC;IAC1E,MAAM,KAAK,QAAQ;QACtB,OAAO,KAAK,CAAC,WAAW,EAA4B,CAAC;IACzD,CAAC;IAED;;;;;;;OAOG;IACH,IAAY,IAAI;QACZ,OAAO,sBAAsB,CAAC,QAAQ,CAAC;IAC3C,CAAC;IAQD,iGAAiG;IAC1F,KAAK,CAAC,MAAM,CAAC,eAAwB,KAAK,EAAE,WAAsB,EAAE,QAA4B;QACnG,IAAI,WAAW,EAAE,CAAC;YACd,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;QACpC,CAAC;QACD,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;IAChE,CAAC;IAED,wEAAwE;IACxE,IAAW,MAAM,KAAc,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAEzD,IAAW,WAAW,KAAe,OAAO,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IACzF,IAAW,WAAW,CAAC,KAAe,IAAI,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC;IAEtE,6FAA6F;IAC7F,IAAW,eAAe,KAA2C,OAAO,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;IACxG,IAAW,OAAO,KAAmC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IAChF,IAAW,WAAW,KAAuC,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IAC5F,IAAW,aAAa,KAAqC,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;IAC9F,IAAW,MAAM,KAAkC,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAE7E,wBAAwB;IACjB,sBAAsB,CAAC,UAAkB,EAAE,MAA0C;QACxF,OAAO,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAChE,CAAC;IACM,oBAAoB,CAAC,QAAgB;QACxC,OAAO,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IACpD,CAAC;IACM,uCAAuC,CAAC,UAAkB,EAAE,cAAsB,EAAE,MAA0C;QACjI,OAAO,IAAI,CAAC,IAAI,CAAC,uCAAuC,CAAC,UAAU,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC;IACjG,CAAC;IAGD;;;;;;;OAOG;IACI,KAAK,CAAC,eAAe,CAAC,MAAoC;QAC7D;;;;WAIG;QACH,IAAI,CAAC,MAAM,CAAC,YAAY;YACpB,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;QAE/D,wDAAwD;QACxD,IAAI,CAAC,MAAM,CAAC,cAAc;YACtB,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;QAExD,gHAAgH;QAChH,MAAM,kBAAkB,GAAG,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,cAAc,CAA6B,0BAA0B,EAAE,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAC7J,IAAI,CAAC,kBAAkB;YACnB,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;QAElE,8CAA8C;QAC9C,OAAO,kBAAkB,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IACnD,CAAC;CACJ"}
1
+ {"version":3,"file":"EntityActionEngine.js","sourceRoot":"","sources":["../../src/entity-actions/EntityActionEngine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAGjE,OAAO,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAC3E,OAAO,EAAE,sBAAsB,EAAkF,MAAM,8BAA8B,CAAC;AAEtJ;;GAEG;AACH,MAAM,OAAO,wBAAyB,SAAQ,aAAuC;IAArF;;QAuBI;;;;;;;;;;;WAWG;QACK,6BAAwB,GAA4C,IAAI,GAAG,EAAE,CAAC;IAqE1F,CAAC;IAvGU,MAAM,KAAK,QAAQ;QACtB,OAAO,KAAK,CAAC,WAAW,EAA4B,CAAC;IACzD,CAAC;IAED;;;;;;;OAOG;IACH,IAAY,IAAI;QACZ,OAAO,sBAAsB,CAAC,QAAQ,CAAC;IAC3C,CAAC;IAsBD,iGAAiG;IAC1F,KAAK,CAAC,MAAM,CAAC,eAAwB,KAAK,EAAE,WAAsB,EAAE,QAA4B;QACnG,IAAI,WAAW,EAAE,CAAC;YACd,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;QACpC,CAAC;QACD,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;IAChE,CAAC;IAED,wEAAwE;IACxE,IAAW,MAAM,KAAc,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAEzD,IAAW,WAAW,KAAe,OAAO,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IACzF,IAAW,WAAW,CAAC,KAAe,IAAI,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC;IAEtE,6FAA6F;IAC7F,IAAW,eAAe,KAA2C,OAAO,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;IACxG,IAAW,OAAO,KAAmC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IAChF,IAAW,WAAW,KAAuC,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IAC5F,IAAW,aAAa,KAAqC,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;IAC9F,IAAW,MAAM,KAAkC,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAE7E,wBAAwB;IACjB,sBAAsB,CAAC,UAAkB,EAAE,MAA0C;QACxF,OAAO,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAChE,CAAC;IACM,oBAAoB,CAAC,QAAgB;QACxC,OAAO,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IACpD,CAAC;IACM,uCAAuC,CAAC,UAAkB,EAAE,cAAsB,EAAE,MAA0C;QACjI,OAAO,IAAI,CAAC,IAAI,CAAC,uCAAuC,CAAC,UAAU,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC;IACjG,CAAC;IAGD;;;;;;;OAOG;IACI,KAAK,CAAC,eAAe,CAAC,MAAoC;QAC7D;;;;WAIG;QACH,IAAI,CAAC,MAAM,CAAC,YAAY;YACpB,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;QAE/D,wDAAwD;QACxD,IAAI,CAAC,MAAM,CAAC,cAAc;YACtB,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;QAExD,gHAAgH;QAChH,MAAM,kBAAkB,GAAG,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC;QACtD,IAAI,kBAAkB,GAAG,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QAC/E,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACtB,kBAAkB,GAAG,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,cAAc,CAA6B,0BAA0B,EAAE,kBAAkB,CAAC,CAAC;YAC/I,IAAI,CAAC,kBAAkB;gBACnB,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;YAClE,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,CAAC;QAC9E,CAAC;QAED,8CAA8C;QAC9C,OAAO,kBAAkB,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IACnD,CAAC;CACJ"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@memberjunction/actions",
3
3
  "type": "module",
4
- "version": "6.2.0-edge.1",
4
+ "version": "6.2.0-edge.3",
5
5
  "description": "Main library for MemberJunction Actions. This library is only intended to be imported on the server side.",
6
6
  "main": "dist/index.js",
7
7
  "types": "dist/index.d.ts",
@@ -16,14 +16,14 @@
16
16
  "vitest": "^3.1.1"
17
17
  },
18
18
  "dependencies": {
19
- "@memberjunction/action-runtime": "6.2.0-edge.1",
20
- "@memberjunction/actions-base": "6.2.0-edge.1",
21
- "@memberjunction/ai": "6.2.0-edge.1",
22
- "@memberjunction/code-execution": "6.2.0-edge.1",
23
- "@memberjunction/core": "6.2.0-edge.1",
24
- "@memberjunction/core-entities": "6.2.0-edge.1",
25
- "@memberjunction/doc-utils": "6.2.0-edge.1",
26
- "@memberjunction/global": "6.2.0-edge.1"
19
+ "@memberjunction/action-runtime": "6.2.0-edge.3",
20
+ "@memberjunction/actions-base": "6.2.0-edge.3",
21
+ "@memberjunction/ai": "6.2.0-edge.3",
22
+ "@memberjunction/code-execution": "6.2.0-edge.3",
23
+ "@memberjunction/core": "6.2.0-edge.3",
24
+ "@memberjunction/core-entities": "6.2.0-edge.3",
25
+ "@memberjunction/doc-utils": "6.2.0-edge.3",
26
+ "@memberjunction/global": "6.2.0-edge.3"
27
27
  },
28
28
  "repository": {
29
29
  "type": "git",