@memberjunction/global 5.8.0 → 5.9.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.
@@ -19,6 +19,25 @@ export interface DynamicPackageLoad {
19
19
  /** Whether this package should be loaded. Allows disabling without removing. */
20
20
  Enabled: boolean;
21
21
  }
22
+ /**
23
+ * Configuration returned by a startup function to declaratively register
24
+ * middleware, hooks, and plugins with the server startup pipeline.
25
+ *
26
+ * This type is intentionally a loose `Record<string, unknown>` because
27
+ * `@memberjunction/global` has no dependency on Express or Apollo types.
28
+ * The consuming layer (`@memberjunction/server-bootstrap`) casts this to
29
+ * `Partial<ServerExtensibilityOptions>` when merging into server options.
30
+ *
31
+ * Expected keys (typed by the consumer):
32
+ * - `ExpressMiddlewareBefore` — Express middleware before auth
33
+ * - `ExpressMiddlewarePostAuth` — Express middleware after auth
34
+ * - `ExpressMiddlewareAfter` — Express middleware after routes
35
+ * - `PreRunViewHooks` — Provider-level pre-RunView hooks
36
+ * - `PostRunViewHooks` — Provider-level post-RunView hooks
37
+ * - `PreSaveHooks` — Provider-level pre-Save hooks
38
+ * - `ApolloPlugins` — Apollo Server plugins
39
+ */
40
+ export type DynamicPackageResult = Record<string, unknown>;
22
41
  /**
23
42
  * Result of attempting to dynamically load a single package.
24
43
  */
@@ -29,6 +48,8 @@ export interface DynamicLoadResult {
29
48
  Success: boolean;
30
49
  /** Error message if the load failed */
31
50
  Error?: string;
51
+ /** Configuration returned by the startup function, if any */
52
+ Result?: DynamicPackageResult;
32
53
  }
33
54
  /**
34
55
  * Utility class for dynamically loading npm packages at runtime.
@@ -44,7 +65,7 @@ export declare class DynamicPackageLoader {
44
65
  * 1. Skips if `Enabled` is false
45
66
  * 2. Dynamically imports the package via `await import()`
46
67
  * 3. Calls the named `StartupExport` function if it exists
47
- * 4. Records success or failure
68
+ * 4. Records success or failure (including any returned configuration)
48
69
  *
49
70
  * Errors are isolated per-package — a broken package does not crash the server.
50
71
  * All enabled packages are loaded concurrently using Promise.all().
@@ -55,6 +76,9 @@ export declare class DynamicPackageLoader {
55
76
  static LoadPackages(packages: DynamicPackageLoad[]): Promise<DynamicLoadResult[]>;
56
77
  /**
57
78
  * Attempts to dynamically import a single package and call its startup export.
79
+ * If the startup function returns a value, it is captured as `Result` on the
80
+ * load result. This allows Open Apps to declaratively return middleware, hooks,
81
+ * and plugins that get merged into the server options.
58
82
  */
59
83
  private static LoadSinglePackage;
60
84
  }
@@ -1 +1 @@
1
- {"version":3,"file":"DynamicPackageLoader.d.ts","sourceRoot":"","sources":["../src/DynamicPackageLoader.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IAC/B,6CAA6C;IAC7C,WAAW,EAAE,MAAM,CAAC;IAEpB,oEAAoE;IACpE,aAAa,EAAE,MAAM,CAAC;IAEtB,2DAA2D;IAC3D,OAAO,EAAE,MAAM,CAAC;IAEhB,gFAAgF;IAChF,OAAO,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAC9B,sDAAsD;IACtD,WAAW,EAAE,MAAM,CAAC;IAEpB,gFAAgF;IAChF,OAAO,EAAE,OAAO,CAAC;IAEjB,uCAAuC;IACvC,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;GAMG;AACH,qBAAa,oBAAoB;IAC7B;;;;;;;;;;;;;OAaG;WACU,YAAY,CAAC,QAAQ,EAAE,kBAAkB,EAAE,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAKvF;;OAEG;mBACkB,iBAAiB;CAqBzC"}
1
+ {"version":3,"file":"DynamicPackageLoader.d.ts","sourceRoot":"","sources":["../src/DynamicPackageLoader.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IAC/B,6CAA6C;IAC7C,WAAW,EAAE,MAAM,CAAC;IAEpB,oEAAoE;IACpE,aAAa,EAAE,MAAM,CAAC;IAEtB,2DAA2D;IAC3D,OAAO,EAAE,MAAM,CAAC;IAEhB,gFAAgF;IAChF,OAAO,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,MAAM,oBAAoB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE3D;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAC9B,sDAAsD;IACtD,WAAW,EAAE,MAAM,CAAC;IAEpB,gFAAgF;IAChF,OAAO,EAAE,OAAO,CAAC;IAEjB,uCAAuC;IACvC,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,6DAA6D;IAC7D,MAAM,CAAC,EAAE,oBAAoB,CAAC;CACjC;AAED;;;;;;GAMG;AACH,qBAAa,oBAAoB;IAC7B;;;;;;;;;;;;;OAaG;WACU,YAAY,CAAC,QAAQ,EAAE,kBAAkB,EAAE,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAKvF;;;;;OAKG;mBACkB,iBAAiB;CA2BzC"}
@@ -19,7 +19,7 @@ export class DynamicPackageLoader {
19
19
  * 1. Skips if `Enabled` is false
20
20
  * 2. Dynamically imports the package via `await import()`
21
21
  * 3. Calls the named `StartupExport` function if it exists
22
- * 4. Records success or failure
22
+ * 4. Records success or failure (including any returned configuration)
23
23
  *
24
24
  * Errors are isolated per-package — a broken package does not crash the server.
25
25
  * All enabled packages are loaded concurrently using Promise.all().
@@ -33,14 +33,22 @@ export class DynamicPackageLoader {
33
33
  }
34
34
  /**
35
35
  * Attempts to dynamically import a single package and call its startup export.
36
+ * If the startup function returns a value, it is captured as `Result` on the
37
+ * load result. This allows Open Apps to declaratively return middleware, hooks,
38
+ * and plugins that get merged into the server options.
36
39
  */
37
40
  static async LoadSinglePackage(pkg) {
38
41
  try {
39
42
  const module = await import(pkg.PackageName);
43
+ let result;
40
44
  if (pkg.StartupExport && typeof module[pkg.StartupExport] === 'function') {
41
- module[pkg.StartupExport]();
45
+ const startupFn = module[pkg.StartupExport];
46
+ const returnValue = await Promise.resolve(startupFn());
47
+ if (returnValue && typeof returnValue === 'object') {
48
+ result = returnValue;
49
+ }
42
50
  }
43
- return { PackageName: pkg.PackageName, Success: true };
51
+ return { PackageName: pkg.PackageName, Success: true, Result: result };
44
52
  }
45
53
  catch (error) {
46
54
  const errorMessage = error instanceof Error ? error.message : String(error);
@@ -1 +1 @@
1
- {"version":3,"file":"DynamicPackageLoader.js","sourceRoot":"","sources":["../src/DynamicPackageLoader.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAkCH;;;;;;GAMG;AACH,MAAM,OAAO,oBAAoB;IAC7B;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,QAA8B;QACpD,MAAM,eAAe,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QACxD,OAAO,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAChG,CAAC;IAED;;OAEG;IACK,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,GAAuB;QAC1D,IAAI,CAAC;YACD,MAAM,MAAM,GAA4B,MAAM,MAAM,CAAC,GAAG,CAAC,WAAW,CAA4B,CAAC;YAEjG,IAAI,GAAG,CAAC,aAAa,IAAI,OAAO,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,UAAU,EAAE,CAAC;gBACtE,MAAM,CAAC,GAAG,CAAC,aAAa,CAAgB,EAAE,CAAC;YAChD,CAAC;YAED,OAAO,EAAE,WAAW,EAAE,GAAG,CAAC,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC3D,CAAC;QACD,OAAO,KAAc,EAAE,CAAC;YACpB,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC5E,OAAO,CAAC,KAAK,CAAC,kCAAkC,GAAG,CAAC,WAAW,KAAK,YAAY,EAAE,CAAC,CAAC;YAEpF,OAAO;gBACH,WAAW,EAAE,GAAG,CAAC,WAAW;gBAC5B,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,YAAY;aACtB,CAAC;QACN,CAAC;IACL,CAAC;CACJ"}
1
+ {"version":3,"file":"DynamicPackageLoader.js","sourceRoot":"","sources":["../src/DynamicPackageLoader.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAyDH;;;;;;GAMG;AACH,MAAM,OAAO,oBAAoB;IAC7B;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,QAA8B;QACpD,MAAM,eAAe,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QACxD,OAAO,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAChG,CAAC;IAED;;;;;OAKG;IACK,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,GAAuB;QAC1D,IAAI,CAAC;YACD,MAAM,MAAM,GAA4B,MAAM,MAAM,CAAC,GAAG,CAAC,WAAW,CAA4B,CAAC;YAEjG,IAAI,MAAwC,CAAC;YAE7C,IAAI,GAAG,CAAC,aAAa,IAAI,OAAO,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,UAAU,EAAE,CAAC;gBACvE,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,aAAa,CAA6E,CAAC;gBACxH,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;gBACvD,IAAI,WAAW,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE,CAAC;oBACjD,MAAM,GAAG,WAAW,CAAC;gBACzB,CAAC;YACL,CAAC;YAED,OAAO,EAAE,WAAW,EAAE,GAAG,CAAC,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QAC3E,CAAC;QACD,OAAO,KAAc,EAAE,CAAC;YACpB,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC5E,OAAO,CAAC,KAAK,CAAC,kCAAkC,GAAG,CAAC,WAAW,KAAK,YAAY,EAAE,CAAC,CAAC;YAEpF,OAAO;gBACH,WAAW,EAAE,GAAG,CAAC,WAAW;gBAC5B,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,YAAY;aACtB,CAAC;QACN,CAAC;IACL,CAAC;CACJ"}
package/dist/Global.d.ts CHANGED
@@ -14,10 +14,24 @@ export declare class MJGlobal extends BaseSingleton<MJGlobal> {
14
14
  private _components;
15
15
  private _classFactory;
16
16
  private _properties;
17
+ private _processUUID;
17
18
  /**
18
19
  * Returns the global instance of the MJGlobal class. This is a singleton class, so there is only one instance of it in the application. Do not directly create new instances of MJGlobal, always use this method to get the instance.
19
20
  */
20
21
  static get Instance(): MJGlobal;
22
+ /**
23
+ * A unique identifier for this process instance, generated once on first access
24
+ * using a v4 UUID. Used to distinguish this server from others in distributed
25
+ * cache invalidation scenarios (e.g., Redis pub/sub). The value persists for
26
+ * the lifetime of the process and is stable across multiple accesses.
27
+ *
28
+ * @example
29
+ * ```typescript
30
+ * const serverId = MJGlobal.Instance.ProcessUUID;
31
+ * // e.g., "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
32
+ * ```
33
+ */
34
+ get ProcessUUID(): string;
21
35
  RegisterComponent(component: MJ.IMJComponent): void;
22
36
  /**
23
37
  * Resets the class to its initial state. Use very carefully and sparingly.
@@ -1 +1 @@
1
- {"version":3,"file":"Global.d.ts","sourceRoot":"","sources":["../src/Global.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,aAAa,CAAA;AACjC,OAAO,EAA0B,UAAU,EAAE,MAAM,MAAM,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD;;GAEG;AACH,qBAAa,QAAS,SAAQ,aAAa,CAAC,QAAQ,CAAC;IAEjD,OAAO,CAAC,cAAc,CAAsC;IAM5D,OAAO,CAAC,oBAAoB,CAA4D;IAGxF,OAAO,CAAC,QAAQ,CAA8D;IAC9E,OAAO,CAAC,cAAc,CAAoE;IAE1F,OAAO,CAAC,WAAW,CAAyB;IAE5C,OAAO,CAAC,aAAa,CAAoC;IAEzD,OAAO,CAAC,WAAW,CAA6B;IAEhD;;OAEG;IACH,WAAkB,QAAQ,IAAI,QAAQ,CAErC;IAEM,iBAAiB,CAAC,SAAS,EAAE,EAAE,CAAC,YAAY;IAInD;;OAEG;IACI,KAAK;IAWZ;;;OAGG;IACI,UAAU,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO;IAKnC;;;;OAIG;IACI,gBAAgB,CAAC,UAAU,GAAE,OAAe,GAAG,UAAU,CAAC,EAAE,CAAC,OAAO,CAAC;IAI5E;;OAEG;IACH,IAAW,YAAY,IAAI,YAAY,CAEtC;IAED;;OAEG;IACH,IAAW,UAAU,IAAI,EAAE,CAAC,gBAAgB,EAAE,CAE7C;IAGD,OAAO,CAAC,YAAY,CAAkC;IACtD;;OAEG;IACH,IAAW,WAAW,IAAI,WAAW,CAEpC;CACJ"}
1
+ {"version":3,"file":"Global.d.ts","sourceRoot":"","sources":["../src/Global.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,aAAa,CAAA;AACjC,OAAO,EAA0B,UAAU,EAAE,MAAM,MAAM,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGhD;;GAEG;AACH,qBAAa,QAAS,SAAQ,aAAa,CAAC,QAAQ,CAAC;IAEjD,OAAO,CAAC,cAAc,CAAsC;IAM5D,OAAO,CAAC,oBAAoB,CAA4D;IAGxF,OAAO,CAAC,QAAQ,CAA8D;IAC9E,OAAO,CAAC,cAAc,CAAoE;IAE1F,OAAO,CAAC,WAAW,CAAyB;IAE5C,OAAO,CAAC,aAAa,CAAoC;IAEzD,OAAO,CAAC,WAAW,CAA6B;IAEhD,OAAO,CAAC,YAAY,CAAuB;IAE3C;;OAEG;IACH,WAAkB,QAAQ,IAAI,QAAQ,CAErC;IAED;;;;;;;;;;;OAWG;IACH,IAAW,WAAW,IAAI,MAAM,CAK/B;IAEM,iBAAiB,CAAC,SAAS,EAAE,EAAE,CAAC,YAAY;IAInD;;OAEG;IACI,KAAK;IAWZ;;;OAGG;IACI,UAAU,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO;IAKnC;;;;OAIG;IACI,gBAAgB,CAAC,UAAU,GAAE,OAAe,GAAG,UAAU,CAAC,EAAE,CAAC,OAAO,CAAC;IAI5E;;OAEG;IACH,IAAW,YAAY,IAAI,YAAY,CAEtC;IAED;;OAEG;IACH,IAAW,UAAU,IAAI,EAAE,CAAC,gBAAgB,EAAE,CAE7C;IAGD,OAAO,CAAC,YAAY,CAAkC;IACtD;;OAEG;IACH,IAAW,WAAW,IAAI,WAAW,CAEpC;CACJ"}
package/dist/Global.js CHANGED
@@ -2,6 +2,7 @@ import { Subject, ReplaySubject } from 'rxjs';
2
2
  import { ClassFactory } from './ClassFactory.js';
3
3
  import { ObjectCache } from './ObjectCache.js';
4
4
  import { BaseSingleton } from './BaseSingleton.js';
5
+ import { uuidv4 } from './util.js';
5
6
  /**
6
7
  * Global class used for coordinating events, creating class instances, and managing components across MemberJunction
7
8
  */
@@ -22,6 +23,7 @@ export class MJGlobal extends BaseSingleton {
22
23
  this._components = [];
23
24
  this._classFactory = new ClassFactory();
24
25
  this._properties = [];
26
+ this._processUUID = null;
25
27
  this._objectCache = new ObjectCache();
26
28
  }
27
29
  /**
@@ -30,6 +32,24 @@ export class MJGlobal extends BaseSingleton {
30
32
  static get Instance() {
31
33
  return super.getInstance();
32
34
  }
35
+ /**
36
+ * A unique identifier for this process instance, generated once on first access
37
+ * using a v4 UUID. Used to distinguish this server from others in distributed
38
+ * cache invalidation scenarios (e.g., Redis pub/sub). The value persists for
39
+ * the lifetime of the process and is stable across multiple accesses.
40
+ *
41
+ * @example
42
+ * ```typescript
43
+ * const serverId = MJGlobal.Instance.ProcessUUID;
44
+ * // e.g., "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
45
+ * ```
46
+ */
47
+ get ProcessUUID() {
48
+ if (!this._processUUID) {
49
+ this._processUUID = uuidv4();
50
+ }
51
+ return this._processUUID;
52
+ }
33
53
  RegisterComponent(component) {
34
54
  this._components.push(component);
35
55
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Global.js","sourceRoot":"","sources":["../src/Global.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,aAAa,EAAc,MAAM,MAAM,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD;;GAEG;AACH,MAAM,OAAO,QAAS,SAAQ,aAAuB;IAArD;;QACI,8CAA8C;QACtC,mBAAc,GAAwB,IAAI,OAAO,EAAE,CAAC;QAC5D,sFAAsF;QACtF,uFAAuF;QACvF,4EAA4E;QAC5E,uFAAuF;QACvF,wFAAwF;QAChF,yBAAoB,GAA8B,IAAI,aAAa,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAExF,sDAAsD;QAC9C,aAAQ,GAA2B,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;QACtE,mBAAc,GAA2B,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,CAAC;QAElF,gBAAW,GAAsB,EAAE,CAAC;QAEpC,kBAAa,GAAiB,IAAI,YAAY,EAAE,CAAC;QAEjD,gBAAW,GAA0B,EAAE,CAAC;QA4DxC,iBAAY,GAAgB,IAAI,WAAW,EAAE,CAAC;IAO1D,CAAC;IAjEG;;OAEG;IACI,MAAM,KAAK,QAAQ;QACtB,OAAO,KAAK,CAAC,WAAW,EAAY,CAAC;IACzC,CAAC;IAEM,iBAAiB,CAAC,SAA0B;QAC/C,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACrC,CAAC;IAED;;OAEG;IACI,KAAK;QACR,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;QAEtB,IAAI,CAAC,cAAc,GAAI,IAAI,OAAO,EAAE,CAAC;QACrC,IAAI,CAAC,oBAAoB,GAAG,IAAI,aAAa,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAE1D,sDAAsD;QACtD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;QACnD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,CAAC;IACnE,CAAC;IAED;;;OAGG;IACI,UAAU,CAAC,KAAiB;QAC/B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1C,CAAC;IAED;;;;OAIG;IACI,gBAAgB,CAAC,aAAsB,KAAK;QAC/C,OAAO,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;IAC5D,CAAC;IAED;;OAEG;IACH,IAAW,YAAY;QACnB,OAAO,IAAI,CAAC,aAAa,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,IAAW,UAAU;QACjB,OAAO,IAAI,CAAC,WAAW,CAAC;IAC5B,CAAC;IAID;;OAEG;IACH,IAAW,WAAW;QAClB,OAAO,IAAI,CAAC,YAAY,CAAC;IAC7B,CAAC;CACJ"}
1
+ {"version":3,"file":"Global.js","sourceRoot":"","sources":["../src/Global.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,aAAa,EAAc,MAAM,MAAM,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC;;GAEG;AACH,MAAM,OAAO,QAAS,SAAQ,aAAuB;IAArD;;QACI,8CAA8C;QACtC,mBAAc,GAAwB,IAAI,OAAO,EAAE,CAAC;QAC5D,sFAAsF;QACtF,uFAAuF;QACvF,4EAA4E;QAC5E,uFAAuF;QACvF,wFAAwF;QAChF,yBAAoB,GAA8B,IAAI,aAAa,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAExF,sDAAsD;QAC9C,aAAQ,GAA2B,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;QACtE,mBAAc,GAA2B,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,CAAC;QAElF,gBAAW,GAAsB,EAAE,CAAC;QAEpC,kBAAa,GAAiB,IAAI,YAAY,EAAE,CAAC;QAEjD,gBAAW,GAA0B,EAAE,CAAC;QAExC,iBAAY,GAAkB,IAAI,CAAC;QA+EnC,iBAAY,GAAgB,IAAI,WAAW,EAAE,CAAC;IAO1D,CAAC;IApFG;;OAEG;IACI,MAAM,KAAK,QAAQ;QACtB,OAAO,KAAK,CAAC,WAAW,EAAY,CAAC;IACzC,CAAC;IAED;;;;;;;;;;;OAWG;IACH,IAAW,WAAW;QAClB,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACrB,IAAI,CAAC,YAAY,GAAG,MAAM,EAAE,CAAC;QACjC,CAAC;QACD,OAAO,IAAI,CAAC,YAAY,CAAC;IAC7B,CAAC;IAEM,iBAAiB,CAAC,SAA0B;QAC/C,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACrC,CAAC;IAED;;OAEG;IACI,KAAK;QACR,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;QAEtB,IAAI,CAAC,cAAc,GAAI,IAAI,OAAO,EAAE,CAAC;QACrC,IAAI,CAAC,oBAAoB,GAAG,IAAI,aAAa,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAE1D,sDAAsD;QACtD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;QACnD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,CAAC;IACnE,CAAC;IAED;;;OAGG;IACI,UAAU,CAAC,KAAiB;QAC/B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1C,CAAC;IAED;;;;OAIG;IACI,gBAAgB,CAAC,aAAsB,KAAK;QAC/C,OAAO,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;IAC5D,CAAC;IAED;;OAEG;IACH,IAAW,YAAY;QACnB,OAAO,IAAI,CAAC,aAAa,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,IAAW,UAAU;QACjB,OAAO,IAAI,CAAC,WAAW,CAAC;IAC5B,CAAC;IAID;;OAEG;IACH,IAAW,WAAW;QAClB,OAAO,IAAI,CAAC,YAAY,CAAC;IAC7B,CAAC;CACJ"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=DynamicPackageLoader.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DynamicPackageLoader.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/DynamicPackageLoader.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,122 @@
1
+ import { describe, it, expect, vi, beforeEach } from 'vitest';
2
+ import { DynamicPackageLoader } from '../DynamicPackageLoader.js';
3
+ describe('DynamicPackageLoader', () => {
4
+ beforeEach(() => {
5
+ vi.restoreAllMocks();
6
+ });
7
+ describe('LoadSinglePackage — startup function return values', () => {
8
+ it('should capture a DynamicPackageResult returned by the startup function', async () => {
9
+ const mockResult = {
10
+ ExpressMiddlewarePostAuth: [vi.fn()],
11
+ PreRunViewHooks: [vi.fn()],
12
+ };
13
+ vi.doMock('fake-saas-package', () => ({
14
+ LoadSaaSServer: () => mockResult,
15
+ }));
16
+ const pkg = {
17
+ PackageName: 'fake-saas-package',
18
+ StartupExport: 'LoadSaaSServer',
19
+ AppName: 'TestSaaS',
20
+ Enabled: true,
21
+ };
22
+ const results = await DynamicPackageLoader.LoadPackages([pkg]);
23
+ expect(results).toHaveLength(1);
24
+ expect(results[0].Success).toBe(true);
25
+ expect(results[0].Result).toBeDefined();
26
+ expect(results[0].Result).toEqual(mockResult);
27
+ });
28
+ it('should capture async DynamicPackageResult from startup function', async () => {
29
+ const mockResult = {
30
+ PreSaveHooks: [vi.fn()],
31
+ };
32
+ vi.doMock('fake-async-package', () => ({
33
+ LoadAsyncServer: async () => mockResult,
34
+ }));
35
+ const pkg = {
36
+ PackageName: 'fake-async-package',
37
+ StartupExport: 'LoadAsyncServer',
38
+ AppName: 'TestAsync',
39
+ Enabled: true,
40
+ };
41
+ const results = await DynamicPackageLoader.LoadPackages([pkg]);
42
+ expect(results).toHaveLength(1);
43
+ expect(results[0].Success).toBe(true);
44
+ expect(results[0].Result).toEqual(mockResult);
45
+ });
46
+ it('should set Result to undefined when startup function returns void', async () => {
47
+ vi.doMock('fake-void-package', () => ({
48
+ LoadVoidServer: () => { },
49
+ }));
50
+ const pkg = {
51
+ PackageName: 'fake-void-package',
52
+ StartupExport: 'LoadVoidServer',
53
+ AppName: 'TestVoid',
54
+ Enabled: true,
55
+ };
56
+ const results = await DynamicPackageLoader.LoadPackages([pkg]);
57
+ expect(results).toHaveLength(1);
58
+ expect(results[0].Success).toBe(true);
59
+ expect(results[0].Result).toBeUndefined();
60
+ });
61
+ it('should set Result to undefined when no StartupExport is specified', async () => {
62
+ vi.doMock('fake-no-export-package', () => ({
63
+ SomeExport: 'not a function',
64
+ }));
65
+ const pkg = {
66
+ PackageName: 'fake-no-export-package',
67
+ StartupExport: '',
68
+ AppName: 'TestNoExport',
69
+ Enabled: true,
70
+ };
71
+ const results = await DynamicPackageLoader.LoadPackages([pkg]);
72
+ expect(results).toHaveLength(1);
73
+ expect(results[0].Success).toBe(true);
74
+ expect(results[0].Result).toBeUndefined();
75
+ });
76
+ it('should skip disabled packages', async () => {
77
+ const pkg = {
78
+ PackageName: 'fake-disabled-package',
79
+ StartupExport: 'LoadServer',
80
+ AppName: 'TestDisabled',
81
+ Enabled: false,
82
+ };
83
+ const results = await DynamicPackageLoader.LoadPackages([pkg]);
84
+ expect(results).toHaveLength(0);
85
+ });
86
+ it('should handle import failure gracefully and return error', async () => {
87
+ const pkg = {
88
+ PackageName: 'non-existent-package-xyz',
89
+ StartupExport: 'LoadServer',
90
+ AppName: 'TestFailure',
91
+ Enabled: true,
92
+ };
93
+ // Suppress the console.error from the loader
94
+ const consoleSpy = vi.spyOn(console, 'error').mockImplementation(() => { });
95
+ const results = await DynamicPackageLoader.LoadPackages([pkg]);
96
+ expect(results).toHaveLength(1);
97
+ expect(results[0].Success).toBe(false);
98
+ expect(results[0].Error).toBeDefined();
99
+ expect(results[0].Result).toBeUndefined();
100
+ consoleSpy.mockRestore();
101
+ });
102
+ it('should load multiple packages concurrently and collect all results', async () => {
103
+ const resultA = { PreRunViewHooks: [vi.fn()] };
104
+ const resultB = { PreSaveHooks: [vi.fn()] };
105
+ vi.doMock('fake-package-a', () => ({
106
+ LoadA: () => resultA,
107
+ }));
108
+ vi.doMock('fake-package-b', () => ({
109
+ LoadB: () => resultB,
110
+ }));
111
+ const packages = [
112
+ { PackageName: 'fake-package-a', StartupExport: 'LoadA', AppName: 'A', Enabled: true },
113
+ { PackageName: 'fake-package-b', StartupExport: 'LoadB', AppName: 'B', Enabled: true },
114
+ ];
115
+ const results = await DynamicPackageLoader.LoadPackages(packages);
116
+ expect(results).toHaveLength(2);
117
+ expect(results[0].Result).toEqual(resultA);
118
+ expect(results[1].Result).toEqual(resultB);
119
+ });
120
+ });
121
+ });
122
+ //# sourceMappingURL=DynamicPackageLoader.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DynamicPackageLoader.test.js","sourceRoot":"","sources":["../../src/__tests__/DynamicPackageLoader.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ProcessUUID.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProcessUUID.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/ProcessUUID.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,53 @@
1
+ import { describe, it, expect, beforeEach } from 'vitest';
2
+ import { MJGlobal } from '../Global.js';
3
+ import { GetGlobalObjectStore } from '../util.js';
4
+ /**
5
+ * Helper to clear the MJGlobal singleton from the global object store
6
+ * so each test starts with a clean slate.
7
+ */
8
+ function clearMJGlobalSingleton() {
9
+ const g = GetGlobalObjectStore();
10
+ if (g) {
11
+ for (const key of Object.keys(g)) {
12
+ if (key.startsWith('___SINGLETON__')) {
13
+ delete g[key];
14
+ }
15
+ }
16
+ }
17
+ }
18
+ describe('MJGlobal.ProcessUUID', () => {
19
+ beforeEach(() => {
20
+ clearMJGlobalSingleton();
21
+ });
22
+ it('should return a string', () => {
23
+ const uuid = MJGlobal.Instance.ProcessUUID;
24
+ expect(typeof uuid).toBe('string');
25
+ });
26
+ it('should return a valid UUID v4 format', () => {
27
+ const uuid = MJGlobal.Instance.ProcessUUID;
28
+ // UUID v4 format: xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx (y is 8, 9, a, or b)
29
+ const uuidV4Regex = /^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
30
+ expect(uuid).toMatch(uuidV4Regex);
31
+ });
32
+ it('should return the same UUID on repeated calls (stable within a process)', () => {
33
+ const uuid1 = MJGlobal.Instance.ProcessUUID;
34
+ const uuid2 = MJGlobal.Instance.ProcessUUID;
35
+ const uuid3 = MJGlobal.Instance.ProcessUUID;
36
+ expect(uuid1).toBe(uuid2);
37
+ expect(uuid2).toBe(uuid3);
38
+ });
39
+ it('should return a non-empty string', () => {
40
+ const uuid = MJGlobal.Instance.ProcessUUID;
41
+ expect(uuid.length).toBeGreaterThan(0);
42
+ expect(uuid.length).toBe(36); // Standard UUID length with hyphens
43
+ });
44
+ it('should generate a new UUID for a new MJGlobal instance', () => {
45
+ const uuid1 = MJGlobal.Instance.ProcessUUID;
46
+ // Clear and get a fresh singleton
47
+ clearMJGlobalSingleton();
48
+ const uuid2 = MJGlobal.Instance.ProcessUUID;
49
+ // Different singleton instances should get different UUIDs
50
+ expect(uuid1).not.toBe(uuid2);
51
+ });
52
+ });
53
+ //# sourceMappingURL=ProcessUUID.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProcessUUID.test.js","sourceRoot":"","sources":["../../src/__tests__/ProcessUUID.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAE/C;;;GAGG;AACH,SAAS,sBAAsB;IAC3B,MAAM,CAAC,GAAG,oBAAoB,EAAE,CAAC;IACjC,IAAI,CAAC,EAAE,CAAC;QACJ,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/B,IAAI,GAAG,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;gBACnC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC;YAClB,CAAC;QACL,CAAC;IACL,CAAC;AACL,CAAC;AAED,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IAClC,UAAU,CAAC,GAAG,EAAE;QACZ,sBAAsB,EAAE,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;QAC9B,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC;QAC3C,MAAM,CAAC,OAAO,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC5C,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC;QAC3C,4EAA4E;QAC5E,MAAM,WAAW,GAAG,wEAAwE,CAAC;QAC7F,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yEAAyE,EAAE,GAAG,EAAE;QAC/E,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC;QAC5C,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC;QAC5C,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC;QAC5C,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1B,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QACxC,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC;QAC3C,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QACvC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,oCAAoC;IACtE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;QAC9D,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC;QAC5C,kCAAkC;QAClC,sBAAsB,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC;QAC5C,2DAA2D;QAC3D,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
@@ -39,8 +39,9 @@ const EXCLUDE_PATTERNS = [
39
39
  ];
40
40
  /** Known exceptions — files where .ID === is comparing non-UUID values (e.g., numeric IDs, string enum values) */
41
41
  const KNOWN_EXCEPTIONS = {
42
- // Add file paths (relative to packages/) and the reason they're excepted
43
- // Example: 'SomePackage/src/file.ts': ['Uses numeric IDs, not UUIDs'],
42
+ // Add file paths (relative to packages/) and the reason they're excepted
43
+ // Example: 'SomePackage/src/file.ts': ['Uses numeric IDs, not UUIDs'],
44
+ 'Angular/Explorer/dashboards/src/Integration/components/mapping-workspace/mapping-workspace.component.ts': ['LocalID is a local string identifier (e.g. "pending-1"), not a UUID'],
44
45
  };
45
46
  function shouldScanFile(filePath) {
46
47
  if (!filePath.endsWith('.ts'))
@@ -1 +1 @@
1
- {"version":3,"file":"UUIDCompliance.test.js","sourceRoot":"","sources":["../../src/__tests__/UUIDCompliance.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"UUIDCompliance.test.js","sourceRoot":"","sources":["../../src/__tests__/UUIDCompliance.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@memberjunction/global",
3
3
  "type": "module",
4
- "version": "5.8.0",
4
+ "version": "5.9.0",
5
5
  "description": "MemberJunction: Global Object - Needed for ALL other MJ components",
6
6
  "main": "dist/index.js",
7
7
  "types": "dist/index.d.ts",