@memberjunction/react-runtime 2.91.0 → 2.93.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/.turbo/turbo-build.log +14 -16
- package/CHANGELOG.md +31 -0
- package/dist/compiler/babel-config.js.map +1 -1
- package/dist/compiler/component-compiler.d.ts.map +1 -1
- package/dist/compiler/component-compiler.js +13 -8
- package/dist/compiler/component-compiler.js.map +1 -1
- package/dist/compiler/index.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/registry/component-registry-service.d.ts +36 -0
- package/dist/registry/component-registry-service.d.ts.map +1 -0
- package/dist/registry/component-registry-service.js +303 -0
- package/dist/registry/component-registry-service.js.map +1 -0
- package/dist/registry/component-registry.js.map +1 -1
- package/dist/registry/component-resolver.d.ts +11 -2
- package/dist/registry/component-resolver.d.ts.map +1 -1
- package/dist/registry/component-resolver.js +63 -11
- package/dist/registry/component-resolver.js.map +1 -1
- package/dist/registry/index.d.ts +2 -0
- package/dist/registry/index.d.ts.map +1 -1
- package/dist/registry/index.js +3 -1
- package/dist/registry/index.js.map +1 -1
- package/dist/registry/registry-provider.d.ts +54 -0
- package/dist/registry/registry-provider.d.ts.map +1 -0
- package/dist/registry/registry-provider.js +3 -0
- package/dist/registry/registry-provider.js.map +1 -0
- package/dist/runtime/component-hierarchy.d.ts.map +1 -1
- package/dist/runtime/component-hierarchy.js +2 -1
- package/dist/runtime/component-hierarchy.js.map +1 -1
- package/dist/runtime/error-boundary.js.map +1 -1
- package/dist/runtime/index.js.map +1 -1
- package/dist/runtime/prop-builder.js.map +1 -1
- package/dist/runtime/react-root-manager.js.map +1 -1
- package/dist/runtime.umd.js +1 -1
- package/dist/types/index.d.ts +4 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/types/library-config.js.map +1 -1
- package/dist/utilities/cache-manager.js.map +1 -1
- package/dist/utilities/component-error-analyzer.js.map +1 -1
- package/dist/utilities/component-styles.js.map +1 -1
- package/dist/utilities/core-libraries.js.map +1 -1
- package/dist/utilities/index.js.map +1 -1
- package/dist/utilities/library-loader.js.map +1 -1
- package/dist/utilities/library-registry.js.map +1 -1
- package/dist/utilities/resource-manager.js.map +1 -1
- package/dist/utilities/standard-libraries.js.map +1 -1
- package/package.json +5 -6
- package/src/compiler/component-compiler.ts +18 -8
- package/src/index.ts +4 -2
- package/src/registry/component-registry-service.ts +560 -0
- package/src/registry/component-resolver.ts +104 -15
- package/src/registry/index.ts +9 -0
- package/src/registry/registry-provider.ts +119 -0
- package/src/runtime/component-hierarchy.ts +2 -1
- package/src/types/index.ts +3 -0
- package/tsconfig.json +2 -1
- package/tsconfig.tsbuildinfo +0 -1
package/dist/registry/index.js
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ComponentSpec = exports.ComponentResolver = exports.ComponentRegistry = void 0;
|
|
3
|
+
exports.ComponentSpec = exports.ComponentRegistryService = exports.ComponentResolver = exports.ComponentRegistry = void 0;
|
|
4
4
|
var component_registry_1 = require("./component-registry");
|
|
5
5
|
Object.defineProperty(exports, "ComponentRegistry", { enumerable: true, get: function () { return component_registry_1.ComponentRegistry; } });
|
|
6
6
|
var component_resolver_1 = require("./component-resolver");
|
|
7
7
|
Object.defineProperty(exports, "ComponentResolver", { enumerable: true, get: function () { return component_resolver_1.ComponentResolver; } });
|
|
8
|
+
var component_registry_service_1 = require("./component-registry-service");
|
|
9
|
+
Object.defineProperty(exports, "ComponentRegistryService", { enumerable: true, get: function () { return component_registry_service_1.ComponentRegistryService; } });
|
|
8
10
|
var interactive_component_types_1 = require("@memberjunction/interactive-component-types");
|
|
9
11
|
Object.defineProperty(exports, "ComponentSpec", { enumerable: true, get: function () { return interactive_component_types_1.ComponentSpec; } });
|
|
10
12
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/registry/index.ts"],"names":[],"mappings":";;;AAKA,2DAAyD;AAAhD,uHAAA,iBAAiB,OAAA;AAC1B,2DAA6E;AAApE,uHAAA,iBAAiB,OAAA;AAC1B,2FAA4E;AAAnE,4HAAA,aAAa,OAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/registry/index.ts"],"names":[],"mappings":";;;AAKA,2DAAyD;AAAhD,uHAAA,iBAAiB,OAAA;AAC1B,2DAA6E;AAApE,uHAAA,iBAAiB,OAAA;AAC1B,2EAAwE;AAA/D,sIAAA,wBAAwB,OAAA;AASjC,2FAA4E;AAAnE,4HAAA,aAAa,OAAA","sourcesContent":["/**\n * @fileoverview Registry module exports\n * @module @memberjunction/react-runtime/registry\n */\n\nexport { ComponentRegistry } from './component-registry';\nexport { ComponentResolver, ResolvedComponents } from './component-resolver';\nexport { ComponentRegistryService } from './component-registry-service';\nexport { \n RegistryProvider,\n RegistryComponentMetadata,\n RegistryComponentResponse,\n RegistrySearchFilters,\n ComponentDependencyInfo,\n DependencyTree\n} from './registry-provider';\nexport { ComponentSpec } from '@memberjunction/interactive-component-types';"]}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { ComponentSpec } from '@memberjunction/interactive-component-types';
|
|
2
|
+
export interface RegistryComponentMetadata {
|
|
3
|
+
name: string;
|
|
4
|
+
namespace: string;
|
|
5
|
+
version: string;
|
|
6
|
+
description: string;
|
|
7
|
+
title?: string;
|
|
8
|
+
type?: string;
|
|
9
|
+
status?: string;
|
|
10
|
+
properties?: ComponentSpec['properties'];
|
|
11
|
+
events?: ComponentSpec['events'];
|
|
12
|
+
libraries?: ComponentSpec['libraries'];
|
|
13
|
+
dependencies?: ComponentSpec['dependencies'];
|
|
14
|
+
sourceRegistryID?: string | null;
|
|
15
|
+
isLocal: boolean;
|
|
16
|
+
lastFetched?: Date;
|
|
17
|
+
cacheDuration?: number;
|
|
18
|
+
}
|
|
19
|
+
export interface RegistryComponentResponse {
|
|
20
|
+
metadata: RegistryComponentMetadata;
|
|
21
|
+
spec: ComponentSpec;
|
|
22
|
+
}
|
|
23
|
+
export interface RegistryProvider {
|
|
24
|
+
name: string;
|
|
25
|
+
fetchComponent(name: string, namespace: string, version?: string): Promise<RegistryComponentResponse>;
|
|
26
|
+
componentExists?(name: string, namespace: string, version?: string): Promise<boolean>;
|
|
27
|
+
getComponentVersions?(name: string, namespace: string): Promise<string[]>;
|
|
28
|
+
}
|
|
29
|
+
export interface RegistrySearchFilters {
|
|
30
|
+
type?: string;
|
|
31
|
+
status?: string;
|
|
32
|
+
namespace?: string;
|
|
33
|
+
query?: string;
|
|
34
|
+
limit?: number;
|
|
35
|
+
offset?: number;
|
|
36
|
+
}
|
|
37
|
+
export interface ComponentDependencyInfo {
|
|
38
|
+
name: string;
|
|
39
|
+
namespace: string;
|
|
40
|
+
version?: string;
|
|
41
|
+
isRequired: boolean;
|
|
42
|
+
location: 'embedded' | 'registry';
|
|
43
|
+
sourceRegistryID?: string | null;
|
|
44
|
+
}
|
|
45
|
+
export interface DependencyTree {
|
|
46
|
+
componentId: string;
|
|
47
|
+
name?: string;
|
|
48
|
+
namespace?: string;
|
|
49
|
+
version?: string;
|
|
50
|
+
dependencies?: DependencyTree[];
|
|
51
|
+
circular?: boolean;
|
|
52
|
+
totalCount?: number;
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=registry-provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry-provider.d.ts","sourceRoot":"","sources":["../../src/registry/registry-provider.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,aAAa,EAAE,MAAM,6CAA6C,CAAC;AAK5E,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC;IACzC,MAAM,CAAC,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC;IACjC,SAAS,CAAC,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC;IACvC,YAAY,CAAC,EAAE,aAAa,CAAC,cAAc,CAAC,CAAC;IAC7C,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,IAAI,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAKD,MAAM,WAAW,yBAAyB;IACxC,QAAQ,EAAE,yBAAyB,CAAC;IACpC,IAAI,EAAE,aAAa,CAAC;CACrB;AAKD,MAAM,WAAW,gBAAgB;IAI/B,IAAI,EAAE,MAAM,CAAC;IASb,cAAc,CACZ,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,yBAAyB,CAAC,CAAC;IAStC,eAAe,CAAC,CACd,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,OAAO,CAAC,CAAC;IAQpB,oBAAoB,CAAC,CACnB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;CACtB;AAKD,MAAM,WAAW,qBAAqB;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAKD,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,UAAU,GAAG,UAAU,CAAC;IAClC,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC;AAKD,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,cAAc,EAAE,CAAC;IAChC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry-provider.js","sourceRoot":"","sources":["../../src/registry/registry-provider.ts"],"names":[],"mappings":"","sourcesContent":["/**\n * @fileoverview Registry provider interfaces and implementations for component loading\n * @module @memberjunction/react-runtime/registry\n */\n\nimport { ComponentSpec } from '@memberjunction/interactive-component-types';\n\n/**\n * Metadata about a component from a registry\n */\nexport interface RegistryComponentMetadata {\n name: string;\n namespace: string;\n version: string;\n description: string;\n title?: string;\n type?: string;\n status?: string;\n properties?: ComponentSpec['properties'];\n events?: ComponentSpec['events'];\n libraries?: ComponentSpec['libraries'];\n dependencies?: ComponentSpec['dependencies'];\n sourceRegistryID?: string | null;\n isLocal: boolean;\n lastFetched?: Date;\n cacheDuration?: number;\n}\n\n/**\n * Response from fetching a component from a registry\n */\nexport interface RegistryComponentResponse {\n metadata: RegistryComponentMetadata;\n spec: ComponentSpec;\n}\n\n/**\n * Interface for registry providers that can fetch components\n */\nexport interface RegistryProvider {\n /**\n * Name of the registry provider\n */\n name: string;\n \n /**\n * Fetch a component from the registry\n * @param name - Component name\n * @param namespace - Component namespace\n * @param version - Component version (optional, defaults to latest)\n * @returns Component metadata and specification\n */\n fetchComponent(\n name: string,\n namespace: string,\n version?: string\n ): Promise<RegistryComponentResponse>;\n \n /**\n * Check if a component exists in the registry\n * @param name - Component name\n * @param namespace - Component namespace\n * @param version - Component version (optional)\n * @returns True if component exists\n */\n componentExists?(\n name: string,\n namespace: string,\n version?: string\n ): Promise<boolean>;\n \n /**\n * Get available versions of a component\n * @param name - Component name\n * @param namespace - Component namespace\n * @returns Array of available versions\n */\n getComponentVersions?(\n name: string,\n namespace: string\n ): Promise<string[]>;\n}\n\n/**\n * Search filters for registry queries\n */\nexport interface RegistrySearchFilters {\n type?: string;\n status?: string;\n namespace?: string;\n query?: string;\n limit?: number;\n offset?: number;\n}\n\n/**\n * Dependency information for a component\n */\nexport interface ComponentDependencyInfo {\n name: string;\n namespace: string;\n version?: string;\n isRequired: boolean;\n location: 'embedded' | 'registry';\n sourceRegistryID?: string | null;\n}\n\n/**\n * Tree structure for dependency resolution\n */\nexport interface DependencyTree {\n componentId: string;\n name?: string;\n namespace?: string;\n version?: string;\n dependencies?: DependencyTree[];\n circular?: boolean;\n totalCount?: number;\n}"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component-hierarchy.d.ts","sourceRoot":"","sources":["../../src/runtime/component-hierarchy.ts"],"names":[],"mappings":"AAMA,OAAO,EAGL,cAAc,EACf,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,6CAA6C,CAAC;AAE7F,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAKvE,MAAM,WAAW,2BAA2B;IAC1C,OAAO,EAAE,OAAO,CAAC;IACjB,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAC/B,MAAM,EAAE,0BAA0B,EAAE,CAAC;IACrC,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAKD,MAAM,WAAW,0BAA0B;IACzC,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,aAAa,GAAG,cAAc,GAAG,YAAY,CAAC;CACtD;AAKD,MAAM,WAAW,4BAA4B;IAE3C,MAAM,CAAC,EAAE,eAAe,CAAC;IAEzB,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B,aAAa,CAAC,EAAE,OAAO,CAAC;IAIxB,YAAY,EAAE,sBAAsB,EAAE,CAAC;CACxC;AAKD,qBAAa,2BAA2B;IAEpC,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,cAAc;gBAFd,QAAQ,EAAE,iBAAiB,EAC3B,QAAQ,EAAE,iBAAiB,EAC3B,cAAc,EAAE,cAAc;IASlC,iBAAiB,CACrB,QAAQ,EAAE,aAAa,EACvB,OAAO,EAAE,4BAA4B,GACpC,OAAO,CAAC,2BAA2B,CAAC;IA6DjC,uBAAuB,CAC3B,IAAI,EAAE,aAAa,EACnB,OAAO,EAAE;QACP,MAAM,CAAC,EAAE,eAAe,CAAC;QACzB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,aAAa,CAAC,EAAE,OAAO,CAAC;QACxB,YAAY,EAAE,sBAAsB,EAAE,CAAC;KACxC,GACA,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,0BAA0B,CAAA;KAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"component-hierarchy.d.ts","sourceRoot":"","sources":["../../src/runtime/component-hierarchy.ts"],"names":[],"mappings":"AAMA,OAAO,EAGL,cAAc,EACf,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,6CAA6C,CAAC;AAE7F,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAKvE,MAAM,WAAW,2BAA2B;IAC1C,OAAO,EAAE,OAAO,CAAC;IACjB,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAC/B,MAAM,EAAE,0BAA0B,EAAE,CAAC;IACrC,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAKD,MAAM,WAAW,0BAA0B;IACzC,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,aAAa,GAAG,cAAc,GAAG,YAAY,CAAC;CACtD;AAKD,MAAM,WAAW,4BAA4B;IAE3C,MAAM,CAAC,EAAE,eAAe,CAAC;IAEzB,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B,aAAa,CAAC,EAAE,OAAO,CAAC;IAIxB,YAAY,EAAE,sBAAsB,EAAE,CAAC;CACxC;AAKD,qBAAa,2BAA2B;IAEpC,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,cAAc;gBAFd,QAAQ,EAAE,iBAAiB,EAC3B,QAAQ,EAAE,iBAAiB,EAC3B,cAAc,EAAE,cAAc;IASlC,iBAAiB,CACrB,QAAQ,EAAE,aAAa,EACvB,OAAO,EAAE,4BAA4B,GACpC,OAAO,CAAC,2BAA2B,CAAC;IA6DjC,uBAAuB,CAC3B,IAAI,EAAE,aAAa,EACnB,OAAO,EAAE;QACP,MAAM,CAAC,EAAE,eAAe,CAAC;QACzB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,aAAa,CAAC,EAAE,OAAO,CAAC;QACxB,YAAY,EAAE,sBAAsB,EAAE,CAAC;KACxC,GACA,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,0BAA0B,CAAA;KAAE,CAAC;YAsFtD,uBAAuB;CAyCtC;AAWD,wBAAsB,0BAA0B,CAC9C,QAAQ,EAAE,aAAa,EACvB,QAAQ,EAAE,iBAAiB,EAC3B,QAAQ,EAAE,iBAAiB,EAC3B,cAAc,EAAE,cAAc,EAC9B,OAAO,EAAE,4BAA4B,GACpC,OAAO,CAAC,2BAA2B,CAAC,CAGtC;AAOD,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,EAAE,CA2BnE;AAOD,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,aAAa,GAAG,aAAa,EAAE,CASlF;AAQD,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,aAAa,EACvB,YAAY,GAAE,OAAe,GAC5B,MAAM,CAaR"}
|
|
@@ -64,6 +64,7 @@ class ComponentHierarchyRegistrar {
|
|
|
64
64
|
componentCode: spec.code,
|
|
65
65
|
styles,
|
|
66
66
|
libraries: spec.libraries,
|
|
67
|
+
dependencies: spec.dependencies,
|
|
67
68
|
allLibraries: options.allLibraries
|
|
68
69
|
};
|
|
69
70
|
console.log(`🔧 Compiling component ${spec.name} with libraries:`, {
|
|
@@ -82,7 +83,7 @@ class ComponentHierarchyRegistrar {
|
|
|
82
83
|
};
|
|
83
84
|
}
|
|
84
85
|
const componentFactory = compilationResult.component.component(this.runtimeContext, styles);
|
|
85
|
-
this.registry.register(spec.name, componentFactory.component, namespace, version);
|
|
86
|
+
this.registry.register(spec.name, componentFactory.component, spec.namespace || namespace, version);
|
|
86
87
|
return { success: true };
|
|
87
88
|
}
|
|
88
89
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component-hierarchy.js","sourceRoot":"","sources":["../../src/runtime/component-hierarchy.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"component-hierarchy.js","sourceRoot":"","sources":["../../src/runtime/component-hierarchy.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @fileoverview Component hierarchy registration utilities for MemberJunction React Runtime.\n * Provides functionality to register a hierarchy of components from Skip component specifications.\n * @module @memberjunction/react-runtime/hierarchy\n */\n\nimport { \n CompilationResult,\n CompileOptions,\n RuntimeContext\n} from '../types';\nimport { ComponentCompiler } from '../compiler';\nimport { ComponentRegistry } from '../registry';\n\nimport { ComponentSpec, ComponentStyles } from '@memberjunction/interactive-component-types';\nimport { UserInfo } from '@memberjunction/core';\nimport { ComponentLibraryEntity } from '@memberjunction/core-entities';\n\n/**\n * Result of a hierarchy registration operation\n */\nexport interface HierarchyRegistrationResult {\n success: boolean;\n registeredComponents: string[];\n errors: ComponentRegistrationError[];\n warnings: string[];\n}\n\n/**\n * Error information for component registration\n */\nexport interface ComponentRegistrationError {\n componentName: string;\n error: string;\n phase: 'compilation' | 'registration' | 'validation';\n}\n\n/**\n * Options for hierarchy registration\n */\nexport interface HierarchyRegistrationOptions {\n /** Component styles to apply to all components */\n styles?: ComponentStyles;\n /** Namespace for component registration */\n namespace?: string;\n /** Version for component registration */\n version?: string;\n /** Whether to continue on errors */\n continueOnError?: boolean;\n /** Whether to override existing components */\n allowOverride?: boolean;\n /**\n * Required, metadata for all possible libraries allowed by the system\n */\n allLibraries: ComponentLibraryEntity[];\n}\n\n/**\n * Utility class for registering component hierarchies\n */\nexport class ComponentHierarchyRegistrar {\n constructor(\n private compiler: ComponentCompiler,\n private registry: ComponentRegistry,\n private runtimeContext: RuntimeContext\n ) {}\n\n /**\n * Registers a complete component hierarchy from a root specification\n * @param rootSpec - The root component specification\n * @param options - Registration options\n * @returns Registration result with details about success/failures\n */\n async registerHierarchy(\n rootSpec: ComponentSpec,\n options: HierarchyRegistrationOptions\n ): Promise<HierarchyRegistrationResult> {\n const {\n styles,\n namespace = 'Global',\n version = 'v1',\n continueOnError = true,\n allowOverride = true\n } = options;\n\n console.log('🌳 ComponentHierarchyRegistrar.registerHierarchy:', {\n rootComponent: rootSpec.name,\n hasLibraries: !!(rootSpec.libraries && rootSpec.libraries.length > 0),\n libraryCount: rootSpec.libraries?.length || 0,\n libraries: rootSpec.libraries?.map(l => l.name)\n });\n\n const registeredComponents: string[] = [];\n const errors: ComponentRegistrationError[] = [];\n const warnings: string[] = [];\n\n // Register the root component\n const rootResult = await this.registerSingleComponent(\n rootSpec,\n { styles, namespace, version, allowOverride, allLibraries: options.allLibraries }\n );\n\n if (rootResult.success) {\n registeredComponents.push(rootSpec.name);\n } else {\n errors.push(rootResult.error!);\n if (!continueOnError) {\n return { success: false, registeredComponents, errors, warnings };\n }\n }\n\n // Register child components recursively\n const childComponents = rootSpec.dependencies || [];\n if (childComponents.length > 0) {\n const childResult = await this.registerChildComponents(\n childComponents,\n { styles, namespace, version, continueOnError, allowOverride, allLibraries: options.allLibraries },\n registeredComponents,\n errors,\n warnings\n );\n }\n\n return {\n success: errors.length === 0,\n registeredComponents,\n errors,\n warnings\n };\n }\n\n /**\n * Registers a single component from a specification\n * @param spec - Component specification\n * @param options - Registration options\n * @returns Registration result for this component\n */\n async registerSingleComponent(\n spec: ComponentSpec,\n options: {\n styles?: ComponentStyles;\n namespace?: string;\n version?: string;\n allowOverride?: boolean;\n allLibraries: ComponentLibraryEntity[];\n }\n ): Promise<{ success: boolean; error?: ComponentRegistrationError }> {\n const { styles, namespace = 'Global', version = 'v1', allowOverride = true } = options;\n\n try {\n // Skip if no component code\n if (!spec.code) {\n return {\n success: true,\n error: undefined\n };\n }\n\n // Check if component already exists\n const existingComponent = this.registry.get(spec.name, namespace, version);\n if (existingComponent && !allowOverride) {\n return {\n success: false,\n error: {\n componentName: spec.name,\n error: `Component already registered in ${namespace}/${version}`,\n phase: 'registration'\n }\n };\n }\n\n // Compile the component\n const compileOptions: CompileOptions = {\n componentName: spec.name,\n componentCode: spec.code,\n styles,\n libraries: spec.libraries, // Pass along library dependencies from the spec\n dependencies: spec.dependencies, // Pass along child component dependencies\n allLibraries: options.allLibraries\n };\n\n console.log(`🔧 Compiling component ${spec.name} with libraries:`, {\n libraryCount: spec.libraries?.length || 0,\n libraries: spec.libraries?.map(l => ({ name: l.name, globalVariable: l.globalVariable }))\n });\n\n const compilationResult = await this.compiler.compile(compileOptions);\n\n if (!compilationResult.success) {\n return {\n success: false,\n error: {\n componentName: spec.name,\n error: compilationResult.error?.message || 'Unknown compilation error',\n phase: 'compilation'\n }\n };\n }\n\n // Create component factory\n const componentFactory = compilationResult.component!.component(this.runtimeContext, styles);\n\n // Register the component\n this.registry.register(\n spec.name,\n componentFactory.component,\n spec.namespace || namespace,\n version\n );\n\n return { success: true };\n\n } catch (error) {\n return {\n success: false,\n error: {\n componentName: spec.name,\n error: error instanceof Error ? error.message : String(error),\n phase: 'registration'\n }\n };\n }\n }\n\n /**\n * Recursively registers child components\n * @param children - Array of child component specifications\n * @param options - Registration options\n * @param registeredComponents - Array to track registered components\n * @param errors - Array to collect errors\n * @param warnings - Array to collect warnings\n */\n private async registerChildComponents(\n children: ComponentSpec[],\n options: HierarchyRegistrationOptions,\n registeredComponents: string[],\n errors: ComponentRegistrationError[],\n warnings: string[]\n ): Promise<void> {\n for (const child of children) {\n // Register this child\n const childResult = await this.registerSingleComponent(child, {\n styles: options.styles,\n namespace: options.namespace,\n version: options.version,\n allowOverride: options.allowOverride,\n allLibraries: options.allLibraries\n });\n\n if (childResult.success) {\n if (child.code) {\n registeredComponents.push(child.name);\n }\n } else {\n errors.push(childResult.error!);\n if (!options.continueOnError) {\n return;\n }\n }\n\n // Register nested children recursively\n const nestedChildren = child.dependencies || [];\n if (nestedChildren.length > 0) {\n await this.registerChildComponents(\n nestedChildren,\n options,\n registeredComponents,\n errors,\n warnings\n );\n }\n }\n }\n}\n\n/**\n * Convenience function to register a component hierarchy\n * @param rootSpec - The root component specification\n * @param compiler - Component compiler instance\n * @param registry - Component registry instance\n * @param runtimeContext - Runtime context with React and other libraries\n * @param options - Registration options\n * @returns Registration result\n */\nexport async function registerComponentHierarchy(\n rootSpec: ComponentSpec,\n compiler: ComponentCompiler,\n registry: ComponentRegistry,\n runtimeContext: RuntimeContext,\n options: HierarchyRegistrationOptions\n): Promise<HierarchyRegistrationResult> {\n const registrar = new ComponentHierarchyRegistrar(compiler, registry, runtimeContext);\n return registrar.registerHierarchy(rootSpec, options);\n}\n\n/**\n * Validates a component specification before registration\n * @param spec - Component specification to validate\n * @returns Array of validation errors (empty if valid)\n */\nexport function validateComponentSpec(spec: ComponentSpec): string[] {\n const errors: string[] = [];\n\n if (!spec.name) {\n errors.push('Component specification must have a name');\n }\n\n // If componentCode is provided, do basic validation\n if (spec.code) {\n if (typeof spec.code !== 'string') {\n errors.push(`Component code for ${spec.name} must be a string`);\n }\n if (spec.code.trim().length === 0) {\n errors.push(`Component code for ${spec.name} cannot be empty`);\n }\n }\n\n // Validate child components recursively\n const children = spec.dependencies || [];\n children.forEach((child, index) => {\n const childErrors = validateComponentSpec(child);\n childErrors.forEach(error => {\n errors.push(`Child ${index} (${child.name || 'unnamed'}): ${error}`);\n });\n });\n\n return errors;\n}\n\n/**\n * Flattens a component hierarchy into a list of all components\n * @param rootSpec - The root component specification\n * @returns Array of all component specifications in the hierarchy\n */\nexport function flattenComponentHierarchy(rootSpec: ComponentSpec): ComponentSpec[] {\n const components: ComponentSpec[] = [rootSpec];\n \n const children = rootSpec.dependencies || [];\n children.forEach(child => {\n components.push(...flattenComponentHierarchy(child));\n });\n\n return components;\n}\n\n/**\n * Counts the total number of components in a hierarchy\n * @param rootSpec - The root component specification\n * @param includeEmpty - Whether to include components without code\n * @returns Total component count\n */\nexport function countComponentsInHierarchy(\n rootSpec: ComponentSpec,\n includeEmpty: boolean = false\n): number {\n let count = 0;\n \n if (includeEmpty || rootSpec.code) {\n count = 1;\n }\n\n const children = rootSpec.dependencies || [];\n children.forEach(child => {\n count += countComponentsInHierarchy(child, includeEmpty);\n });\n\n return count;\n}"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error-boundary.js","sourceRoot":"","sources":["../../src/runtime/error-boundary.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"error-boundary.js","sourceRoot":"","sources":["../../src/runtime/error-boundary.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @fileoverview React error boundary creation utilities.\n * Provides platform-agnostic error boundary components for React applications.\n * @module @memberjunction/react-runtime/runtime\n */\n\nimport { ErrorBoundaryOptions, ComponentError } from '../types';\n\n/**\n * Creates a React error boundary component class\n * @param React - React library instance\n * @param options - Error boundary options\n * @returns Error boundary component class\n */\nexport function createErrorBoundary(React: any, options: ErrorBoundaryOptions = {}): any {\n const {\n onError,\n fallback,\n logErrors = true,\n recovery = 'none'\n } = options;\n\n /**\n * Error boundary component class\n */\n return class ErrorBoundary extends React.Component {\n state: { hasError: boolean; error: Error | null; errorInfo: any; retryCount: number };\n\n constructor(props: any) {\n super(props);\n this.state = {\n hasError: false,\n error: null,\n errorInfo: null,\n retryCount: 0\n };\n }\n\n static getDerivedStateFromError(error: Error): any {\n // Update state to trigger fallback UI\n return { hasError: true, error };\n }\n\n componentDidCatch(error: Error, errorInfo: any) {\n // Log error if enabled\n if (logErrors) {\n console.error('React Error Boundary caught error:', error);\n console.error('Error Info:', errorInfo);\n }\n\n // Call custom error handler if provided\n if (onError) {\n try {\n onError(error, errorInfo);\n } catch (handlerError) {\n console.error('Error in custom error handler:', handlerError);\n }\n }\n\n // Update state with error details\n this.setState({ errorInfo });\n }\n\n handleRetry = () => {\n this.setState((prevState: any) => ({\n hasError: false,\n error: null,\n errorInfo: null,\n retryCount: prevState.retryCount + 1\n }));\n };\n\n handleReset = () => {\n this.setState({\n hasError: false,\n error: null,\n errorInfo: null,\n retryCount: 0\n });\n };\n\n render() {\n if (this.state.hasError) {\n // Use custom fallback if provided\n if (fallback) {\n if (typeof fallback === 'function') {\n return fallback({\n error: this.state.error,\n errorInfo: this.state.errorInfo,\n retry: this.handleRetry,\n reset: this.handleReset,\n retryCount: this.state.retryCount\n });\n }\n return fallback;\n }\n\n // Default error UI\n const showRetry = recovery === 'retry' && this.state.retryCount < 3;\n const showReset = recovery === 'reset';\n\n return React.createElement(\n 'div',\n {\n style: {\n padding: '20px',\n backgroundColor: '#f8f8f8',\n border: '1px solid #ddd',\n borderRadius: '4px',\n margin: '10px'\n }\n },\n React.createElement('h2', { style: { color: '#d32f2f' } }, 'Component Error'),\n React.createElement(\n 'p',\n { style: { color: '#666' } },\n 'An error occurred while rendering this component.'\n ),\n this.state.error && React.createElement(\n 'details',\n { style: { marginTop: '10px' } },\n React.createElement(\n 'summary',\n { style: { cursor: 'pointer', color: '#333' } },\n 'Error Details'\n ),\n React.createElement(\n 'pre',\n {\n style: {\n backgroundColor: '#f0f0f0',\n padding: '10px',\n marginTop: '10px',\n overflow: 'auto',\n fontSize: '12px'\n }\n },\n this.state.error.toString(),\n '\\n\\n',\n this.state.error.stack\n )\n ),\n (showRetry || showReset) && React.createElement(\n 'div',\n { style: { marginTop: '10px' } },\n showRetry && React.createElement(\n 'button',\n {\n onClick: this.handleRetry,\n style: {\n padding: '8px 16px',\n marginRight: '10px',\n backgroundColor: '#1976d2',\n color: 'white',\n border: 'none',\n borderRadius: '4px',\n cursor: 'pointer'\n }\n },\n `Retry (${3 - this.state.retryCount} attempts left)`\n ),\n showReset && React.createElement(\n 'button',\n {\n onClick: this.handleReset,\n style: {\n padding: '8px 16px',\n backgroundColor: '#757575',\n color: 'white',\n border: 'none',\n borderRadius: '4px',\n cursor: 'pointer'\n }\n },\n 'Reset Component'\n )\n )\n );\n }\n\n return this.props.children;\n }\n };\n}\n\n/**\n * Creates a functional error boundary wrapper using React hooks\n * @param React - React library instance\n * @param Component - Component to wrap\n * @param options - Error boundary options\n * @returns Wrapped component with error boundary\n */\nexport function withErrorBoundary(React: any, Component: any, options: ErrorBoundaryOptions = {}): any {\n const ErrorBoundaryComponent = createErrorBoundary(React, options);\n \n return (props: any) => {\n return React.createElement(\n ErrorBoundaryComponent,\n null,\n React.createElement(Component, props)\n );\n };\n}\n\n/**\n * Formats a component error for display or logging\n * @param error - Error to format\n * @param componentName - Name of the component where error occurred\n * @param phase - Phase when error occurred\n * @returns Formatted component error\n */\nexport function formatComponentError(\n error: Error,\n componentName: string,\n phase: ComponentError['phase']\n): ComponentError {\n return {\n message: error.message || 'Unknown error',\n stack: error.stack,\n componentName,\n phase,\n details: {\n name: error.name,\n timestamp: new Date().toISOString()\n }\n };\n}\n\n/**\n * Creates a simple error logger for error boundaries\n * @param componentName - Name of the component\n * @returns Error logging function\n */\nexport function createErrorLogger(componentName: string): (error: Error, errorInfo: any) => void {\n return (error: Error, errorInfo: any) => {\n console.group(`🚨 React Component Error: ${componentName}`);\n console.error('Error:', error);\n console.error('Component Stack:', errorInfo.componentStack);\n console.error('Props:', errorInfo.props);\n console.groupEnd();\n };\n}"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":";;;AAKA,mDAK0B;AAJxB,qHAAA,mBAAmB,OAAA;AACnB,mHAAA,iBAAiB,OAAA;AACjB,sHAAA,oBAAoB,OAAA;AACpB,mHAAA,iBAAiB,OAAA;AAInB,+CAUwB;AATtB,mHAAA,mBAAmB,OAAA;AACnB,kHAAA,kBAAkB,OAAA;AAClB,+GAAA,eAAe,OAAA;AACf,sHAAA,sBAAsB,OAAA;AACtB,0GAAA,UAAU,OAAA;AACV,sHAAA,sBAAsB,OAAA;AACtB,wHAAA,wBAAwB,OAAA;AACxB,gHAAA,gBAAgB,OAAA;AAIlB,6DAS+B;AAR7B,kIAAA,2BAA2B,OAAA;AAC3B,iIAAA,0BAA0B,OAAA;AAC1B,4HAAA,qBAAqB,OAAA;AACrB,gIAAA,yBAAyB,OAAA;AACzB,iIAAA,0BAA0B,OAAA;AAM5B,2DAI8B;AAH5B,sHAAA,gBAAgB,OAAA;AAChB,sHAAA,gBAAgB,OAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":";;;AAKA,mDAK0B;AAJxB,qHAAA,mBAAmB,OAAA;AACnB,mHAAA,iBAAiB,OAAA;AACjB,sHAAA,oBAAoB,OAAA;AACpB,mHAAA,iBAAiB,OAAA;AAInB,+CAUwB;AATtB,mHAAA,mBAAmB,OAAA;AACnB,kHAAA,kBAAkB,OAAA;AAClB,+GAAA,eAAe,OAAA;AACf,sHAAA,sBAAsB,OAAA;AACtB,0GAAA,UAAU,OAAA;AACV,sHAAA,sBAAsB,OAAA;AACtB,wHAAA,wBAAwB,OAAA;AACxB,gHAAA,gBAAgB,OAAA;AAIlB,6DAS+B;AAR7B,kIAAA,2BAA2B,OAAA;AAC3B,iIAAA,0BAA0B,OAAA;AAC1B,4HAAA,qBAAqB,OAAA;AACrB,gIAAA,yBAAyB,OAAA;AACzB,iIAAA,0BAA0B,OAAA;AAM5B,2DAI8B;AAH5B,sHAAA,gBAAgB,OAAA;AAChB,sHAAA,gBAAgB,OAAA","sourcesContent":["/**\n * @fileoverview Runtime module exports\n * @module @memberjunction/react-runtime/runtime\n */\n\nexport {\n createErrorBoundary,\n withErrorBoundary,\n formatComponentError,\n createErrorLogger\n} from './error-boundary';\n\n\nexport {\n buildComponentProps,\n normalizeCallbacks,\n normalizeStyles,\n validateComponentProps,\n mergeProps,\n createPropsTransformer,\n wrapCallbacksWithLogging,\n extractPropPaths,\n PropBuilderOptions\n} from './prop-builder';\n\nexport {\n ComponentHierarchyRegistrar,\n registerComponentHierarchy,\n validateComponentSpec,\n flattenComponentHierarchy,\n countComponentsInHierarchy,\n HierarchyRegistrationResult,\n ComponentRegistrationError,\n HierarchyRegistrationOptions\n} from './component-hierarchy';\n\nexport {\n ReactRootManager,\n reactRootManager,\n ManagedReactRoot\n} from './react-root-manager';"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prop-builder.js","sourceRoot":"","sources":["../../src/runtime/prop-builder.ts"],"names":[],"mappings":";;;AAqCA,SAAgB,mBAAmB,CACjC,OAAY,EAAE,EACd,YAAiB,EAAE,EACnB,YAAiB,EAAE,EACnB,YAAgC,EAAE,EAClC,aAAkC,EAAE,EACpC,MAAwB,EACxB,UAA8B,EAAE,EAChC,cAA2D;IAE3D,MAAM,EACJ,QAAQ,GAAG,IAAI,EACf,aAAa,EACb,cAAc,EACd,uBAAuB,GAAG,IAAI,EAC/B,GAAG,OAAO,CAAC;IAGZ,MAAM,eAAe,GAAG,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACnE,MAAM,gBAAgB,GAAG,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAGhF,MAAM,KAAK,GAAmB;QAC5B,IAAI,EAAE,eAAe;QACrB,SAAS,EAAE,gBAAgB;QAC3B,SAAS;QACT,SAAS,EAAE,kBAAkB,CAAC,SAAS,EAAE,uBAAuB,CAAC;QACjE,UAAU;QACV,MAAM,EAAE,eAAe,CAAC,MAAM,CAAC;QAC/B,cAAc;KACf,CAAC;IAGF,IAAI,QAAQ,EAAE,CAAC;QACb,sBAAsB,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAtCD,kDAsCC;AAGD,MAAM,uBAAuB,GAAG,IAAI,OAAO,EAA0B,CAAC;AAGtE,MAAM,4BAA4B,GAAG,IAAI,OAAO,EAA0B,CAAC;AAQ3E,MAAM,mBAAmB,GAAG,IAAI,OAAO,EAAgC,CAAC;AAGxE,SAAS,SAAS,CAAC,IAAS,EAAE,IAAS;IACrC,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAE/B,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC;IACjC,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAEvE,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEhC,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAEhD,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;QACxB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC;QACvC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;IACrD,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAQD,SAAgB,kBAAkB,CAAC,SAAc,EAAE,aAAqB,IAAI;IAC1E,MAAM,UAAU,GAAuB,EAAE,CAAC;IAG1C,IAAI,SAAS,CAAC,WAAW,IAAI,OAAO,SAAS,CAAC,WAAW,KAAK,UAAU,EAAE,CAAC;QACzE,UAAU,CAAC,WAAW,GAAG,SAAS,CAAC,WAAW,CAAC;IACjD,CAAC;IAED,IAAI,SAAS,CAAC,gBAAgB,IAAI,OAAO,SAAS,CAAC,gBAAgB,KAAK,UAAU,EAAE,CAAC;QACnF,UAAU,CAAC,gBAAgB,GAAG,SAAS,CAAC,gBAAgB,CAAC;IAC3D,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAbD,gDAaC;AAOD,SAAgB,eAAe,CAAC,MAAY;IAI1C,OAAO,MAAM,CAAC;AAChB,CAAC;AALD,0CAKC;AAOD,SAAgB,sBAAsB,CAAC,KAAqB;IAE1D,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QACpD,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IACtE,CAAC;IAGD,IAAI,KAAK,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAC9D,CAAC;IAGD,IAAI,KAAK,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAC9D,CAAC;IAGD,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;QAC5D,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IACjE,CAAC;IAGD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3D,IAAI,KAAK,KAAK,SAAS,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,CAAC;YACvD,MAAM,IAAI,KAAK,CAAC,uBAAuB,GAAG,sBAAsB,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;AACH,CAAC;AA3BD,wDA2BC;AAOD,SAAgB,UAAU,CAAC,GAAG,SAAoC;IAChE,MAAM,MAAM,GAAmB;QAC7B,IAAI,EAAE,EAAE;QACR,SAAS,EAAE,EAAE;QACb,SAAS,EAAE,EAAE;QACb,SAAS,EAAE,EAAE;QACb,UAAU,EAAE,EAAE;QACd,MAAM,EAAE,EAAqB;KAC9B,CAAC;IAEF,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE,CAAC;QAC9B,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,GAAG,EAAE,GAAG,MAAM,CAAC,IAAI,EAAE,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QAClD,CAAC;QAED,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;YACpB,MAAM,CAAC,SAAS,GAAG,EAAE,GAAG,MAAM,CAAC,SAAS,EAAE,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;QACjE,CAAC;QAED,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;YACpB,MAAM,CAAC,SAAS,GAAG,EAAE,GAAG,MAAM,CAAC,SAAS,EAAE,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;QACjE,CAAC;QAED,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;YACpB,MAAM,CAAC,SAAS,GAAG,EAAE,GAAG,MAAM,CAAC,SAAS,EAAE,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;QACjE,CAAC;QAED,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;YACrB,MAAM,CAAC,UAAU,GAAG,EAAE,GAAG,MAAM,CAAC,UAAU,EAAE,GAAG,KAAK,CAAC,UAAU,EAAE,CAAC;QACpE,CAAC;QAED,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,CAAC,MAAM,GAAG,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;QACxD,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AArCD,gCAqCC;AAOD,SAAgB,sBAAsB,CACpC,eAAoD;IAEpD,OAAO,CAAC,KAAqB,EAAE,EAAE;QAC/B,MAAM,WAAW,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC;QAEjC,KAAK,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC;YAClE,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAClC,IAAI,OAAO,GAAQ,WAAW,CAAC;YAG/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC9C,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC3B,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;gBAC7B,CAAC;gBACD,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;YAClC,CAAC;YAGD,MAAM,QAAQ,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACjD,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,SAAS,EAAE,CAAC;gBACpC,OAAO,CAAC,QAAQ,CAAC,GAAG,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;YACrD,CAAC;QACH,CAAC;QAED,OAAO,WAAW,CAAC;IACrB,CAAC,CAAC;AACJ,CAAC;AA3BD,wDA2BC;AAQD,SAAgB,wBAAwB,CACtC,SAA6B,EAC7B,aAAqB;IAErB,MAAM,OAAO,GAAuB,EAAE,CAAC;IAEvC,IAAI,SAAS,CAAC,WAAW,EAAE,CAAC;QAC1B,OAAO,CAAC,WAAW,GAAG,GAAG,EAAE;YACzB,OAAO,CAAC,GAAG,CAAC,IAAI,aAAa,sBAAsB,CAAC,CAAC;YACrD,SAAS,CAAC,WAAY,EAAE,CAAC;QAC3B,CAAC,CAAC;IACJ,CAAC;IAED,IAAI,SAAS,CAAC,gBAAgB,EAAE,CAAC;QAC/B,OAAO,CAAC,gBAAgB,GAAG,CAAC,UAAkB,EAAE,GAAQ,EAAE,EAAE;YAC1D,OAAO,CAAC,GAAG,CAAC,IAAI,aAAa,4BAA4B,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC;YAChF,SAAS,CAAC,gBAAiB,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;QAC/C,CAAC,CAAC;IACJ,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AArBD,4DAqBC;AAOD,SAAgB,gBAAgB,CAAC,aAAqB;IACpD,MAAM,KAAK,GAAa,EAAE,CAAC;IAG3B,MAAM,QAAQ,GAAG;QACf,qBAAqB;QACrB,0BAA0B;QAC1B,0BAA0B;QAC1B,0BAA0B;KAC3B,CAAC;IAEF,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,KAAK,CAAC;QACV,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YACtD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AAC7B,CAAC;AAnBD,4CAmBC"}
|
|
1
|
+
{"version":3,"file":"prop-builder.js","sourceRoot":"","sources":["../../src/runtime/prop-builder.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @fileoverview Props builder utilities for React components.\n * Provides utilities for constructing and validating component props.\n * @module @memberjunction/react-runtime/runtime\n */\n\nimport { ComponentStyles } from '@memberjunction/interactive-component-types';\nimport { ComponentProps, ComponentCallbacks } from '../types';\nimport { Subject, debounceTime, Subscription } from 'rxjs';\n\n/**\n * Options for building component props\n */\nexport interface PropBuilderOptions {\n /** Validate props before building */\n validate?: boolean;\n /** Merge with existing props */\n merge?: boolean;\n /** Transform data before passing to component */\n transformData?: (data: any) => any;\n /** Transform state before passing to component */\n transformState?: (state: any) => any;\n /** Debounce time for UpdateUserState callback in milliseconds */\n debounceUpdateUserState?: number;\n}\n\n/**\n * Builds component props from various sources\n * @param data - Component data\n * @param userState - User state object\n * @param utilities - Utility functions\n * @param callbacks - Component callbacks\n * @param components - Child components\n * @param styles - Component styles\n * @param options - Builder options\n * @returns Built component props\n */\nexport function buildComponentProps(\n data: any = {},\n userState: any = {},\n utilities: any = {},\n callbacks: ComponentCallbacks = {},\n components: Record<string, any> = {},\n styles?: ComponentStyles,\n options: PropBuilderOptions = {},\n onStateChanged?: (stateUpdate: Record<string, any>) => void\n): ComponentProps {\n const {\n validate = true,\n transformData,\n transformState,\n debounceUpdateUserState = 3000 // Default 3 seconds\n } = options;\n\n // Transform data if transformer provided\n const transformedData = transformData ? transformData(data) : data;\n const transformedState = transformState ? transformState(userState) : userState;\n\n // Build props object\n const props: ComponentProps = {\n data: transformedData,\n userState: transformedState,\n utilities,\n callbacks: normalizeCallbacks(callbacks, debounceUpdateUserState),\n components,\n styles: normalizeStyles(styles),\n onStateChanged\n };\n\n // Validate if enabled\n if (validate) {\n validateComponentProps(props);\n }\n\n return props;\n}\n\n// Store subjects for debouncing per component instance\nconst updateUserStateSubjects = new WeakMap<Function, Subject<any>>();\n\n// Store subscriptions for cleanup\nconst updateUserStateSubscriptions = new WeakMap<Function, Subscription>();\n\n// Loop detection state\ninterface LoopDetectionState {\n count: number;\n lastUpdate: number;\n lastState: any;\n}\nconst loopDetectionStates = new WeakMap<Function, LoopDetectionState>();\n\n// Deep equality check for objects\nfunction deepEqual(obj1: any, obj2: any): boolean {\n if (obj1 === obj2) return true;\n \n if (!obj1 || !obj2) return false;\n if (typeof obj1 !== 'object' || typeof obj2 !== 'object') return false;\n \n const keys1 = Object.keys(obj1);\n const keys2 = Object.keys(obj2);\n \n if (keys1.length !== keys2.length) return false;\n \n for (const key of keys1) {\n if (!keys2.includes(key)) return false;\n if (!deepEqual(obj1[key], obj2[key])) return false;\n }\n \n return true;\n}\n\n/**\n * Normalizes component callbacks\n * @param callbacks - Raw callbacks object\n * @param debounceMs - Debounce time for UpdateUserState in milliseconds\n * @returns Normalized callbacks\n */\nexport function normalizeCallbacks(callbacks: any, debounceMs: number = 3000): ComponentCallbacks {\n const normalized: ComponentCallbacks = {};\n\n // Ensure all callbacks are functions\n if (callbacks.RefreshData && typeof callbacks.RefreshData === 'function') {\n normalized.RefreshData = callbacks.RefreshData;\n }\n\n if (callbacks.OpenEntityRecord && typeof callbacks.OpenEntityRecord === 'function') {\n normalized.OpenEntityRecord = callbacks.OpenEntityRecord;\n }\n\n return normalized;\n}\n\n/**\n * Normalizes component styles\n * @param styles - Raw styles object\n * @returns Normalized styles\n */\nexport function normalizeStyles(styles?: any): any {\n // Pass through the full styles object as-is\n // This allows Skip components to access their full style structure\n // including colors, typography, borders, etc.\n return styles;\n}\n\n/**\n * Validates component props\n * @param props - Props to validate\n * @throws Error if validation fails\n */\nexport function validateComponentProps(props: ComponentProps): void {\n // Validate data\n if (props.data === null || props.data === undefined) {\n throw new Error('Component props.data cannot be null or undefined');\n }\n\n // Validate userState\n if (props.userState === null) {\n throw new Error('Component props.userState cannot be null');\n }\n\n // Validate utilities\n if (props.utilities === null) {\n throw new Error('Component props.utilities cannot be null');\n }\n\n // Validate callbacks\n if (!props.callbacks || typeof props.callbacks !== 'object') {\n throw new Error('Component props.callbacks must be an object');\n }\n\n // Validate callback functions\n for (const [key, value] of Object.entries(props.callbacks)) {\n if (value !== undefined && typeof value !== 'function') {\n throw new Error(`Component callback \"${key}\" must be a function`);\n }\n }\n}\n\n/**\n * Merges multiple prop objects\n * @param propsList - Array of props to merge\n * @returns Merged props\n */\nexport function mergeProps(...propsList: Partial<ComponentProps>[]): ComponentProps {\n const merged: ComponentProps = {\n data: {},\n userState: {},\n utilities: {},\n callbacks: {},\n components: {},\n styles: {} as ComponentStyles\n };\n\n for (const props of propsList) {\n if (props.data) {\n merged.data = { ...merged.data, ...props.data };\n }\n\n if (props.userState) {\n merged.userState = { ...merged.userState, ...props.userState };\n }\n\n if (props.utilities) {\n merged.utilities = { ...merged.utilities, ...props.utilities };\n }\n\n if (props.callbacks) {\n merged.callbacks = { ...merged.callbacks, ...props.callbacks };\n }\n\n if (props.components) {\n merged.components = { ...merged.components, ...props.components };\n }\n\n if (props.styles) {\n merged.styles = { ...merged.styles, ...props.styles };\n }\n }\n\n return merged;\n}\n \n/**\n * Creates a props transformer function\n * @param transformations - Map of prop paths to transformer functions\n * @returns Props transformer\n */\nexport function createPropsTransformer(\n transformations: Record<string, (value: any) => any>\n): (props: ComponentProps) => ComponentProps {\n return (props: ComponentProps) => {\n const transformed = { ...props };\n\n for (const [path, transformer] of Object.entries(transformations)) {\n const pathParts = path.split('.');\n let current: any = transformed;\n \n // Navigate to the parent of the target property\n for (let i = 0; i < pathParts.length - 1; i++) {\n if (!current[pathParts[i]]) {\n current[pathParts[i]] = {};\n }\n current = current[pathParts[i]];\n }\n\n // Apply transformation\n const lastPart = pathParts[pathParts.length - 1];\n if (current[lastPart] !== undefined) {\n current[lastPart] = transformer(current[lastPart]);\n }\n }\n\n return transformed;\n };\n}\n\n/**\n * Creates a callback wrapper that adds logging\n * @param callbacks - Original callbacks\n * @param componentName - Component name for logging\n * @returns Wrapped callbacks\n */\nexport function wrapCallbacksWithLogging(\n callbacks: ComponentCallbacks,\n componentName: string\n): ComponentCallbacks {\n const wrapped: ComponentCallbacks = {};\n\n if (callbacks.RefreshData) {\n wrapped.RefreshData = () => {\n console.log(`[${componentName}] RefreshData called`);\n callbacks.RefreshData!();\n };\n }\n\n if (callbacks.OpenEntityRecord) {\n wrapped.OpenEntityRecord = (entityName: string, key: any) => {\n console.log(`[${componentName}] OpenEntityRecord called:`, { entityName, key });\n callbacks.OpenEntityRecord!(entityName, key);\n };\n }\n\n return wrapped;\n}\n\n/**\n * Extracts props paths used by a component\n * @param componentCode - Component source code\n * @returns Array of prop paths\n */\nexport function extractPropPaths(componentCode: string): string[] {\n const paths: string[] = [];\n \n // Simple regex patterns to find prop access\n const patterns = [\n /props\\.data\\.(\\w+)/g,\n /props\\.userState\\.(\\w+)/g,\n /props\\.utilities\\.(\\w+)/g,\n /props\\.callbacks\\.(\\w+)/g\n ];\n\n for (const pattern of patterns) {\n let match;\n while ((match = pattern.exec(componentCode)) !== null) {\n paths.push(match[0]);\n }\n }\n\n return [...new Set(paths)]; // Remove duplicates\n}"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"react-root-manager.js","sourceRoot":"","sources":["../../src/runtime/react-root-manager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"react-root-manager.js","sourceRoot":"","sources":["../../src/runtime/react-root-manager.ts"],"names":[],"mappings":";;;AAKA,oEAAgE;AAehE,MAAa,gBAAgB;IAA7B;QACU,UAAK,GAAG,IAAI,GAAG,EAA4B,CAAC;QAC5C,mBAAc,GAAG,IAAI,GAAG,EAAU,CAAC;QACnC,iBAAY,GAAG,IAAI,GAAG,EAAsB,CAAC;IA8LvD,CAAC;IArLC,UAAU,CACR,SAAsB,EACtB,YAA6C,EAC7C,WAAoB;QAEpB,MAAM,MAAM,GAAG,cAAc,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;QAC3D,MAAM,IAAI,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;QAErC,MAAM,WAAW,GAAqB;YACpC,EAAE,EAAE,MAAM;YACV,IAAI;YACJ,SAAS;YACT,WAAW,EAAE,KAAK;YAClB,WAAW;SACZ,CAAC;QAEF,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QAGpC,IAAI,WAAW,EAAE,CAAC;YAChB,kCAAe,CAAC,iBAAiB,CAC/B,WAAW,EACX,IAAI,EACJ,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAC/B,CAAC;QACJ,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAQD,MAAM,CACJ,MAAc,EACd,OAAY,EACZ,UAAuB;QAEvB,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC3C,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,CAAC,IAAI,CAAC,cAAc,MAAM,YAAY,CAAC,CAAC;YAC/C,OAAO;QACT,CAAC;QAGD,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YAClC,OAAO,CAAC,IAAI,CAAC,cAAc,MAAM,sCAAsC,CAAC,CAAC;YACzE,OAAO;QACT,CAAC;QAGD,WAAW,CAAC,WAAW,GAAG,IAAI,CAAC;QAC/B,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAEhC,IAAI,CAAC;YACH,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACjC,WAAW,CAAC,cAAc,GAAG,IAAI,IAAI,EAAE,CAAC;YAGxC,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;gBAC1B,WAAW,CAAC,WAAW,GAAG,KAAK,CAAC;gBAChC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBAGnC,MAAM,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBACrD,IAAI,cAAc,EAAE,CAAC;oBACnB,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;oBACjC,cAAc,EAAE,CAAC;gBACnB,CAAC;gBAED,IAAI,UAAU,EAAE,CAAC;oBACf,UAAU,EAAE,CAAC;gBACf,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAEf,WAAW,CAAC,WAAW,GAAG,KAAK,CAAC;YAChC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACnC,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAOD,WAAW,CAAC,MAAc,EAAE,QAAiB,KAAK;QAChD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAC3C,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,OAAO,EAAE,CAAC;gBACV,OAAO;YACT,CAAC;YAED,MAAM,cAAc,GAAG,GAAG,EAAE;gBAC1B,IAAI,CAAC;oBACH,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;oBAC3B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;oBAC1B,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;oBAGnC,IAAI,WAAW,CAAC,SAAS,EAAE,CAAC;wBAE1B,OAAQ,WAAW,CAAC,SAAiB,CAAC,mBAAmB,CAAC;wBAE1D,WAAW,CAAC,SAAS,CAAC,SAAS,GAAG,EAAE,CAAC;oBACvC,CAAC;oBAED,OAAO,EAAE,CAAC;gBACZ,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,CAAC,KAAK,CAAC,+BAA+B,MAAM,GAAG,EAAE,KAAK,CAAC,CAAC;oBAE/D,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;oBAC1B,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;oBACnC,OAAO,EAAE,CAAC;gBACZ,CAAC;YACH,CAAC,CAAC;YAGF,IAAI,CAAC,WAAW,CAAC,WAAW,IAAI,KAAK,EAAE,CAAC;gBACtC,cAAc,EAAE,CAAC;YACnB,CAAC;iBAAM,CAAC;gBAEN,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE;oBACjC,cAAc,EAAE,CAAC;gBACnB,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAMD,KAAK,CAAC,qBAAqB,CAAC,WAAmB;QAC7C,MAAM,OAAO,GAAa,EAAE,CAAC;QAE7B,KAAK,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC/C,IAAI,WAAW,CAAC,WAAW,KAAK,WAAW,EAAE,CAAC;gBAC5C,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACvB,CAAC;QACH,CAAC;QAED,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7D,CAAC;IAOD,WAAW,CAAC,MAAc;QACxB,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACzC,CAAC;IAKD,QAAQ;QAKN,OAAO;YACL,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI;YAC3B,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI;YACxC,eAAe,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI;SACxC,CAAC;IACJ,CAAC;IAKD,KAAK,CAAC,OAAO;QACX,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QACjD,MAAM,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IACtE,CAAC;CACF;AAjMD,4CAiMC;AAGY,QAAA,gBAAgB,GAAG,IAAI,gBAAgB,EAAE,CAAC","sourcesContent":["/**\n * @fileoverview React root lifecycle management for preventing memory leaks\n * @module @memberjunction/react-runtime/runtime\n */\n\nimport { resourceManager } from '../utilities/resource-manager';\n\nexport interface ManagedReactRoot {\n id: string;\n root: any; // React root instance\n container: HTMLElement;\n isRendering: boolean;\n lastRenderTime?: Date;\n componentId?: string;\n}\n\n/**\n * Manages React root instances to prevent memory leaks and ensure proper cleanup.\n * Handles safe rendering and unmounting with protection against concurrent operations.\n */\nexport class ReactRootManager {\n private roots = new Map<string, ManagedReactRoot>();\n private renderingRoots = new Set<string>();\n private unmountQueue = new Map<string, () => void>();\n \n /**\n * Create a new managed React root\n * @param container - The DOM container element\n * @param createRootFn - Function to create the React root (e.g., ReactDOM.createRoot)\n * @param componentId - Optional component ID for resource tracking\n * @returns The root ID for future operations\n */\n createRoot(\n container: HTMLElement,\n createRootFn: (container: HTMLElement) => any,\n componentId?: string\n ): string {\n const rootId = `react-root-${Date.now()}-${Math.random()}`;\n const root = createRootFn(container);\n \n const managedRoot: ManagedReactRoot = {\n id: rootId,\n root,\n container,\n isRendering: false,\n componentId\n };\n \n this.roots.set(rootId, managedRoot);\n \n // Register with resource manager if component ID provided\n if (componentId) {\n resourceManager.registerReactRoot(\n componentId,\n root,\n () => this.unmountRoot(rootId)\n );\n }\n \n return rootId;\n }\n \n /**\n * Safely render content to a React root\n * @param rootId - The root ID\n * @param element - React element to render\n * @param onComplete - Optional callback when render completes\n */\n render(\n rootId: string,\n element: any,\n onComplete?: () => void\n ): void {\n const managedRoot = this.roots.get(rootId);\n if (!managedRoot) {\n console.warn(`React root ${rootId} not found`);\n return;\n }\n \n // Don't render if we're already unmounting\n if (this.unmountQueue.has(rootId)) {\n console.warn(`React root ${rootId} is being unmounted, skipping render`);\n return;\n }\n \n // Mark as rendering\n managedRoot.isRendering = true;\n this.renderingRoots.add(rootId);\n \n try {\n managedRoot.root.render(element);\n managedRoot.lastRenderTime = new Date();\n \n // Use microtask to ensure React has completed its work\n Promise.resolve().then(() => {\n managedRoot.isRendering = false;\n this.renderingRoots.delete(rootId);\n \n // Process any pending unmount\n const pendingUnmount = this.unmountQueue.get(rootId);\n if (pendingUnmount) {\n this.unmountQueue.delete(rootId);\n pendingUnmount();\n }\n \n if (onComplete) {\n onComplete();\n }\n });\n } catch (error) {\n // Clean up rendering state on error\n managedRoot.isRendering = false;\n this.renderingRoots.delete(rootId);\n throw error;\n }\n }\n \n /**\n * Safely unmount a React root\n * @param rootId - The root ID\n * @param force - Force unmount even if rendering\n */\n unmountRoot(rootId: string, force: boolean = false): Promise<void> {\n return new Promise((resolve) => {\n const managedRoot = this.roots.get(rootId);\n if (!managedRoot) {\n resolve();\n return;\n }\n \n const performUnmount = () => {\n try {\n managedRoot.root.unmount();\n this.roots.delete(rootId);\n this.renderingRoots.delete(rootId);\n \n // Clean up container to ensure no dangling references\n if (managedRoot.container) {\n // Clear React's internal references\n delete (managedRoot.container as any)._reactRootContainer;\n // Clear the container content without replacing the node\n managedRoot.container.innerHTML = '';\n }\n \n resolve();\n } catch (error) {\n console.error(`Error unmounting React root ${rootId}:`, error);\n // Still clean up our tracking even if unmount failed\n this.roots.delete(rootId);\n this.renderingRoots.delete(rootId);\n resolve();\n }\n };\n \n // If not rendering or force unmount, unmount immediately\n if (!managedRoot.isRendering || force) {\n performUnmount();\n } else {\n // Queue unmount for after rendering completes\n this.unmountQueue.set(rootId, () => {\n performUnmount();\n });\n }\n });\n }\n \n /**\n * Unmount all roots associated with a component\n * @param componentId - The component ID\n */\n async unmountComponentRoots(componentId: string): Promise<void> {\n const rootIds: string[] = [];\n \n for (const [rootId, managedRoot] of this.roots) {\n if (managedRoot.componentId === componentId) {\n rootIds.push(rootId);\n }\n }\n \n await Promise.all(rootIds.map(id => this.unmountRoot(id)));\n }\n \n /**\n * Check if a root is currently rendering\n * @param rootId - The root ID\n * @returns true if rendering\n */\n isRendering(rootId: string): boolean {\n return this.renderingRoots.has(rootId);\n }\n \n /**\n * Get statistics about managed roots\n */\n getStats(): {\n totalRoots: number;\n renderingRoots: number;\n pendingUnmounts: number;\n } {\n return {\n totalRoots: this.roots.size,\n renderingRoots: this.renderingRoots.size,\n pendingUnmounts: this.unmountQueue.size\n };\n }\n \n /**\n * Clean up all roots (for testing or shutdown)\n */\n async cleanup(): Promise<void> {\n const allRootIds = Array.from(this.roots.keys());\n await Promise.all(allRootIds.map(id => this.unmountRoot(id, true)));\n }\n}\n\n// Singleton instance\nexport const reactRootManager = new ReactRootManager();"]}
|