@memberjunction/react-runtime 2.75.0 → 2.77.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.
Files changed (52) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/CHANGELOG.md +23 -0
  3. package/dist/compiler/component-compiler.d.ts +0 -1
  4. package/dist/compiler/component-compiler.d.ts.map +1 -1
  5. package/dist/compiler/component-compiler.js +34 -25
  6. package/dist/index.d.ts +4 -1
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +10 -2
  9. package/dist/registry/component-registry.d.ts +1 -0
  10. package/dist/registry/component-registry.d.ts.map +1 -1
  11. package/dist/registry/component-registry.js +6 -3
  12. package/dist/runtime/index.d.ts +2 -1
  13. package/dist/runtime/index.d.ts.map +1 -1
  14. package/dist/runtime/index.js +4 -2
  15. package/dist/runtime/prop-builder.d.ts +1 -2
  16. package/dist/runtime/prop-builder.d.ts.map +1 -1
  17. package/dist/runtime/prop-builder.js +4 -76
  18. package/dist/runtime/react-root-manager.d.ts +26 -0
  19. package/dist/runtime/react-root-manager.d.ts.map +1 -0
  20. package/dist/runtime/react-root-manager.js +122 -0
  21. package/dist/types/index.d.ts +1 -0
  22. package/dist/types/index.d.ts.map +1 -1
  23. package/dist/utilities/cache-manager.d.ts +38 -0
  24. package/dist/utilities/cache-manager.d.ts.map +1 -0
  25. package/dist/utilities/cache-manager.js +156 -0
  26. package/dist/utilities/core-libraries.d.ts +5 -0
  27. package/dist/utilities/core-libraries.d.ts.map +1 -0
  28. package/dist/utilities/core-libraries.js +52 -0
  29. package/dist/utilities/index.d.ts +2 -0
  30. package/dist/utilities/index.d.ts.map +1 -1
  31. package/dist/utilities/index.js +2 -0
  32. package/dist/utilities/library-loader.d.ts +2 -2
  33. package/dist/utilities/library-loader.d.ts.map +1 -1
  34. package/dist/utilities/library-loader.js +52 -24
  35. package/dist/utilities/resource-manager.d.ts +34 -0
  36. package/dist/utilities/resource-manager.d.ts.map +1 -0
  37. package/dist/utilities/resource-manager.js +174 -0
  38. package/package.json +4 -4
  39. package/samples/entities-1.js +493 -0
  40. package/src/compiler/component-compiler.ts +64 -35
  41. package/src/index.ts +18 -1
  42. package/src/registry/component-registry.ts +14 -4
  43. package/src/runtime/index.ts +7 -2
  44. package/src/runtime/prop-builder.ts +5 -112
  45. package/src/runtime/react-root-manager.ts +218 -0
  46. package/src/types/index.ts +2 -0
  47. package/src/utilities/cache-manager.ts +253 -0
  48. package/src/utilities/core-libraries.ts +61 -0
  49. package/src/utilities/index.ts +3 -1
  50. package/src/utilities/library-loader.ts +111 -47
  51. package/src/utilities/resource-manager.ts +305 -0
  52. package/tsconfig.tsbuildinfo +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ export interface CacheEntry<T> {
2
+ value: T;
3
+ timestamp: number;
4
+ size?: number;
5
+ }
6
+ export interface CacheOptions {
7
+ maxSize?: number;
8
+ maxMemory?: number;
9
+ defaultTTL?: number;
10
+ cleanupInterval?: number;
11
+ }
12
+ export declare class CacheManager<T = any> {
13
+ private cache;
14
+ private memoryUsage;
15
+ private cleanupTimer?;
16
+ private readonly options;
17
+ constructor(options?: CacheOptions);
18
+ set(key: string, value: T, ttl?: number): void;
19
+ get(key: string): T | undefined;
20
+ has(key: string): boolean;
21
+ delete(key: string): boolean;
22
+ clear(): void;
23
+ getStats(): {
24
+ size: number;
25
+ memoryUsage: number;
26
+ maxSize: number;
27
+ maxMemory: number;
28
+ };
29
+ cleanup(): number;
30
+ destroy(): void;
31
+ private isExpired;
32
+ private evictLRU;
33
+ private evictByMemory;
34
+ private estimateSize;
35
+ private startCleanupTimer;
36
+ private stopCleanupTimer;
37
+ }
38
+ //# sourceMappingURL=cache-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache-manager.d.ts","sourceRoot":"","sources":["../../src/utilities/cache-manager.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,UAAU,CAAC,CAAC;IAC3B,KAAK,EAAE,CAAC,CAAC;IACT,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAMD,qBAAa,YAAY,CAAC,CAAC,GAAG,GAAG;IAC/B,OAAO,CAAC,KAAK,CAAoC;IACjD,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,YAAY,CAAC,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyB;gBAErC,OAAO,GAAE,YAAiB;IAgBtC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI;IAqC9C,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IAkB/B,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAezB,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAY5B,KAAK,IAAI,IAAI;IAQb,QAAQ,IAAI;QACV,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;KACnB;IAYD,OAAO,IAAI,MAAM;IAiBjB,OAAO,IAAI,IAAI;IAQf,OAAO,CAAC,SAAS;IASjB,OAAO,CAAC,QAAQ;IAmBhB,OAAO,CAAC,aAAa;IAerB,OAAO,CAAC,YAAY;IAkBpB,OAAO,CAAC,iBAAiB;IASzB,OAAO,CAAC,gBAAgB;CAMzB"}
@@ -0,0 +1,156 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CacheManager = void 0;
4
+ class CacheManager {
5
+ constructor(options = {}) {
6
+ this.cache = new Map();
7
+ this.memoryUsage = 0;
8
+ this.options = {
9
+ maxSize: options.maxSize || 1000,
10
+ maxMemory: options.maxMemory || 50 * 1024 * 1024,
11
+ defaultTTL: options.defaultTTL || 5 * 60 * 1000,
12
+ cleanupInterval: options.cleanupInterval || 60 * 1000
13
+ };
14
+ if (this.options.cleanupInterval > 0) {
15
+ this.startCleanupTimer();
16
+ }
17
+ }
18
+ set(key, value, ttl) {
19
+ const size = this.estimateSize(value);
20
+ const entry = {
21
+ value,
22
+ timestamp: Date.now(),
23
+ size
24
+ };
25
+ if (this.cache.size >= this.options.maxSize) {
26
+ this.evictLRU();
27
+ }
28
+ if (this.memoryUsage + size > this.options.maxMemory) {
29
+ this.evictByMemory(size);
30
+ }
31
+ const oldEntry = this.cache.get(key);
32
+ if (oldEntry) {
33
+ this.memoryUsage -= oldEntry.size || 0;
34
+ }
35
+ this.cache.set(key, entry);
36
+ this.memoryUsage += size;
37
+ if (ttl || this.options.defaultTTL) {
38
+ const timeout = ttl || this.options.defaultTTL;
39
+ setTimeout(() => this.delete(key), timeout);
40
+ }
41
+ }
42
+ get(key) {
43
+ const entry = this.cache.get(key);
44
+ if (!entry)
45
+ return undefined;
46
+ if (this.isExpired(entry)) {
47
+ this.delete(key);
48
+ return undefined;
49
+ }
50
+ entry.timestamp = Date.now();
51
+ return entry.value;
52
+ }
53
+ has(key) {
54
+ const entry = this.cache.get(key);
55
+ if (!entry)
56
+ return false;
57
+ if (this.isExpired(entry)) {
58
+ this.delete(key);
59
+ return false;
60
+ }
61
+ return true;
62
+ }
63
+ delete(key) {
64
+ const entry = this.cache.get(key);
65
+ if (entry) {
66
+ this.memoryUsage -= entry.size || 0;
67
+ return this.cache.delete(key);
68
+ }
69
+ return false;
70
+ }
71
+ clear() {
72
+ this.cache.clear();
73
+ this.memoryUsage = 0;
74
+ }
75
+ getStats() {
76
+ return {
77
+ size: this.cache.size,
78
+ memoryUsage: this.memoryUsage,
79
+ maxSize: this.options.maxSize,
80
+ maxMemory: this.options.maxMemory
81
+ };
82
+ }
83
+ cleanup() {
84
+ let removed = 0;
85
+ const now = Date.now();
86
+ for (const [key, entry] of this.cache) {
87
+ if (this.isExpired(entry, now)) {
88
+ this.delete(key);
89
+ removed++;
90
+ }
91
+ }
92
+ return removed;
93
+ }
94
+ destroy() {
95
+ this.stopCleanupTimer();
96
+ this.clear();
97
+ }
98
+ isExpired(entry, now) {
99
+ if (!this.options.defaultTTL)
100
+ return false;
101
+ const currentTime = now || Date.now();
102
+ return currentTime - entry.timestamp > this.options.defaultTTL;
103
+ }
104
+ evictLRU() {
105
+ let lruKey;
106
+ let lruTime = Infinity;
107
+ for (const [key, entry] of this.cache) {
108
+ if (entry.timestamp < lruTime) {
109
+ lruTime = entry.timestamp;
110
+ lruKey = key;
111
+ }
112
+ }
113
+ if (lruKey) {
114
+ this.delete(lruKey);
115
+ }
116
+ }
117
+ evictByMemory(requiredSize) {
118
+ const entries = Array.from(this.cache.entries())
119
+ .sort((a, b) => a[1].timestamp - b[1].timestamp);
120
+ let freedMemory = 0;
121
+ for (const [key, entry] of entries) {
122
+ if (freedMemory >= requiredSize)
123
+ break;
124
+ freedMemory += entry.size || 0;
125
+ this.delete(key);
126
+ }
127
+ }
128
+ estimateSize(value) {
129
+ if (typeof value === 'string') {
130
+ return value.length * 2;
131
+ }
132
+ else if (typeof value === 'object' && value !== null) {
133
+ try {
134
+ return JSON.stringify(value).length * 2;
135
+ }
136
+ catch {
137
+ return 1024;
138
+ }
139
+ }
140
+ else {
141
+ return 8;
142
+ }
143
+ }
144
+ startCleanupTimer() {
145
+ this.cleanupTimer = window.setInterval(() => {
146
+ this.cleanup();
147
+ }, this.options.cleanupInterval);
148
+ }
149
+ stopCleanupTimer() {
150
+ if (this.cleanupTimer) {
151
+ window.clearInterval(this.cleanupTimer);
152
+ this.cleanupTimer = undefined;
153
+ }
154
+ }
155
+ }
156
+ exports.CacheManager = CacheManager;
@@ -0,0 +1,5 @@
1
+ import { ExternalLibraryConfig } from '../types/library-config';
2
+ export declare const CORE_RUNTIME_LIBRARIES: ExternalLibraryConfig[];
3
+ export declare function getCoreRuntimeLibraries(): ExternalLibraryConfig[];
4
+ export declare function isCoreRuntimeLibrary(libraryId: string): boolean;
5
+ //# sourceMappingURL=core-libraries.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core-libraries.d.ts","sourceRoot":"","sources":["../../src/utilities/core-libraries.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAMhE,eAAO,MAAM,sBAAsB,EAAE,qBAAqB,EAwCzD,CAAC;AAKF,wBAAgB,uBAAuB,IAAI,qBAAqB,EAAE,CAEjE;AAKD,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAE/D"}
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isCoreRuntimeLibrary = exports.getCoreRuntimeLibraries = exports.CORE_RUNTIME_LIBRARIES = void 0;
4
+ exports.CORE_RUNTIME_LIBRARIES = [
5
+ {
6
+ id: 'react',
7
+ name: 'react',
8
+ displayName: 'React',
9
+ category: 'runtime',
10
+ globalVariable: 'React',
11
+ version: '18.2.0',
12
+ cdnUrl: 'https://unpkg.com/react@18.2.0/umd/react.production.min.js',
13
+ description: 'React core library',
14
+ isEnabled: true,
15
+ isCore: true,
16
+ isRuntimeOnly: true
17
+ },
18
+ {
19
+ id: 'react-dom',
20
+ name: 'react-dom',
21
+ displayName: 'ReactDOM',
22
+ category: 'runtime',
23
+ globalVariable: 'ReactDOM',
24
+ version: '18.2.0',
25
+ cdnUrl: 'https://unpkg.com/react-dom@18.2.0/umd/react-dom.production.min.js',
26
+ description: 'React DOM library',
27
+ isEnabled: true,
28
+ isCore: true,
29
+ isRuntimeOnly: true
30
+ },
31
+ {
32
+ id: 'babel-standalone',
33
+ name: '@babel/standalone',
34
+ displayName: 'Babel Standalone',
35
+ category: 'runtime',
36
+ globalVariable: 'Babel',
37
+ version: '7.24.4',
38
+ cdnUrl: 'https://unpkg.com/@babel/standalone@7.24.4/babel.min.js',
39
+ description: 'Babel compiler for JSX transformation',
40
+ isEnabled: true,
41
+ isCore: true,
42
+ isRuntimeOnly: true
43
+ }
44
+ ];
45
+ function getCoreRuntimeLibraries() {
46
+ return exports.CORE_RUNTIME_LIBRARIES;
47
+ }
48
+ exports.getCoreRuntimeLibraries = getCoreRuntimeLibraries;
49
+ function isCoreRuntimeLibrary(libraryId) {
50
+ return exports.CORE_RUNTIME_LIBRARIES.some(lib => lib.id === libraryId);
51
+ }
52
+ exports.isCoreRuntimeLibrary = isCoreRuntimeLibrary;
@@ -3,4 +3,6 @@ export * from './component-styles';
3
3
  export * from './standard-libraries';
4
4
  export * from './library-loader';
5
5
  export * from './component-error-analyzer';
6
+ export * from './resource-manager';
7
+ export * from './cache-manager';
6
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utilities/index.ts"],"names":[],"mappings":"AAKA,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,4BAA4B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utilities/index.ts"],"names":[],"mappings":"AAKA,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC"}
@@ -19,3 +19,5 @@ __exportStar(require("./component-styles"), exports);
19
19
  __exportStar(require("./standard-libraries"), exports);
20
20
  __exportStar(require("./library-loader"), exports);
21
21
  __exportStar(require("./component-error-analyzer"), exports);
22
+ __exportStar(require("./resource-manager"), exports);
23
+ __exportStar(require("./cache-manager"), exports);
@@ -1,5 +1,5 @@
1
1
  import { StandardLibraries } from './standard-libraries';
2
- import { LibraryConfiguration, LibraryLoadOptions as ConfigLoadOptions } from '../types/library-config';
2
+ import { LibraryConfiguration, ExternalLibraryConfig, LibraryLoadOptions as ConfigLoadOptions } from '../types/library-config';
3
3
  interface LoadedResource {
4
4
  element: HTMLScriptElement | HTMLLinkElement;
5
5
  promise: Promise<any>;
@@ -21,7 +21,7 @@ export interface LibraryLoadResult {
21
21
  }
22
22
  export declare class LibraryLoader {
23
23
  private static loadedResources;
24
- static loadAllLibraries(config?: LibraryConfiguration): Promise<LibraryLoadResult>;
24
+ static loadAllLibraries(config?: LibraryConfiguration, additionalLibraries?: ExternalLibraryConfig[]): Promise<LibraryLoadResult>;
25
25
  static loadLibrariesFromConfig(options?: ConfigLoadOptions): Promise<LibraryLoadResult>;
26
26
  static loadLibraries(options: LibraryLoadOptions): Promise<LibraryLoadResult>;
27
27
  private static loadScript;
@@ -1 +1 @@
1
- {"version":3,"file":"library-loader.d.ts","sourceRoot":"","sources":["../../src/utilities/library-loader.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,iBAAiB,EAElB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,oBAAoB,EAAyB,kBAAkB,IAAI,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAK/H,UAAU,cAAc;IACtB,OAAO,EAAE,iBAAiB,GAAG,eAAe,CAAC;IAC7C,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;CACvB;AAMD,MAAM,WAAW,kBAAkB;IAEjC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,eAAe,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CACzD;AAKD,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,GAAG,CAAC;IACX,QAAQ,EAAE,GAAG,CAAC;IACd,KAAK,EAAE,GAAG,CAAC;IACX,SAAS,EAAE,iBAAiB,CAAC;CAC9B;AAKD,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAC,eAAe,CAAqC;WAMtD,gBAAgB,CAAC,MAAM,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,iBAAiB,CAAC;WAW3E,uBAAuB,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC;WAgEhF,aAAa,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC;mBAuC9D,UAAU;IA+D/B,OAAO,CAAC,MAAM,CAAC,OAAO;IAwBtB,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAyChC,MAAM,CAAC,kBAAkB,IAAI,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC;IAOxD,MAAM,CAAC,UAAU,IAAI,IAAI;CAG1B"}
1
+ {"version":3,"file":"library-loader.d.ts","sourceRoot":"","sources":["../../src/utilities/library-loader.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,iBAAiB,EAElB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,kBAAkB,IAAI,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAU/H,UAAU,cAAc;IACtB,OAAO,EAAE,iBAAiB,GAAG,eAAe,CAAC;IAC7C,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;CACvB;AAMD,MAAM,WAAW,kBAAkB;IAEjC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,eAAe,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CACzD;AAKD,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,GAAG,CAAC;IACX,QAAQ,EAAE,GAAG,CAAC;IACd,KAAK,EAAE,GAAG,CAAC;IACX,SAAS,EAAE,iBAAiB,CAAC;CAC9B;AAKD,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAC,eAAe,CAAqC;WAQtD,gBAAgB,CAC3B,MAAM,CAAC,EAAE,oBAAoB,EAC7B,mBAAmB,CAAC,EAAE,qBAAqB,EAAE,GAC5C,OAAO,CAAC,iBAAiB,CAAC;WAwBhB,uBAAuB,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC;WAgEhF,aAAa,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC;mBAuC9D,UAAU;IAiF/B,OAAO,CAAC,MAAM,CAAC,OAAO;IA2BtB,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAmDhC,MAAM,CAAC,kBAAkB,IAAI,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC;IAOxD,MAAM,CAAC,UAAU,IAAI,IAAI;CAa1B"}
@@ -2,42 +2,55 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.LibraryLoader = void 0;
4
4
  const standard_libraries_1 = require("./standard-libraries");
5
+ const core_libraries_1 = require("./core-libraries");
6
+ const resource_manager_1 = require("./resource-manager");
7
+ const LIBRARY_LOADER_COMPONENT_ID = 'mj-react-runtime-library-loader-singleton';
5
8
  class LibraryLoader {
6
- static async loadAllLibraries(config) {
9
+ static async loadAllLibraries(config, additionalLibraries) {
7
10
  if (config) {
8
11
  standard_libraries_1.StandardLibraryManager.setConfiguration(config);
9
12
  }
13
+ if (additionalLibraries && additionalLibraries.length > 0) {
14
+ const currentConfig = standard_libraries_1.StandardLibraryManager.getConfiguration();
15
+ const mergedConfig = {
16
+ libraries: [...currentConfig.libraries, ...additionalLibraries],
17
+ metadata: {
18
+ ...currentConfig.metadata,
19
+ lastUpdated: new Date().toISOString()
20
+ }
21
+ };
22
+ standard_libraries_1.StandardLibraryManager.setConfiguration(mergedConfig);
23
+ }
10
24
  return this.loadLibrariesFromConfig();
11
25
  }
12
26
  static async loadLibrariesFromConfig(options) {
27
+ const coreLibraries = (0, core_libraries_1.getCoreRuntimeLibraries)();
28
+ const corePromises = coreLibraries.map(lib => this.loadScript(lib.cdnUrl, lib.globalVariable));
29
+ const coreResults = await Promise.all(corePromises);
30
+ const React = coreResults.find((_, i) => coreLibraries[i].globalVariable === 'React');
31
+ const ReactDOM = coreResults.find((_, i) => coreLibraries[i].globalVariable === 'ReactDOM');
32
+ const Babel = coreResults.find((_, i) => coreLibraries[i].globalVariable === 'Babel');
13
33
  const config = standard_libraries_1.StandardLibraryManager.getConfiguration();
14
34
  const enabledLibraries = standard_libraries_1.StandardLibraryManager.getEnabledLibraries();
15
- let librariesToLoad = enabledLibraries;
35
+ let pluginLibraries = enabledLibraries.filter(lib => !(0, core_libraries_1.isCoreRuntimeLibrary)(lib.id));
16
36
  if (options) {
17
37
  if (options.categories) {
18
- librariesToLoad = librariesToLoad.filter(lib => options.categories.includes(lib.category));
38
+ pluginLibraries = pluginLibraries.filter(lib => options.categories.includes(lib.category));
19
39
  }
20
40
  if (options.excludeRuntimeOnly) {
21
- librariesToLoad = librariesToLoad.filter(lib => !lib.isRuntimeOnly);
41
+ pluginLibraries = pluginLibraries.filter(lib => !lib.isRuntimeOnly);
22
42
  }
23
43
  }
24
- const runtimeLibs = librariesToLoad.filter(lib => lib.category === 'runtime');
25
- const componentLibs = librariesToLoad.filter(lib => lib.category !== 'runtime');
26
- const runtimePromises = runtimeLibs.map(lib => this.loadScript(lib.cdnUrl, lib.globalVariable));
27
- const runtimeResults = await Promise.all(runtimePromises);
28
- const React = runtimeResults.find((_, i) => runtimeLibs[i].globalVariable === 'React');
29
- const ReactDOM = runtimeResults.find((_, i) => runtimeLibs[i].globalVariable === 'ReactDOM');
30
- const Babel = runtimeResults.find((_, i) => runtimeLibs[i].globalVariable === 'Babel');
31
- componentLibs.forEach(lib => {
44
+ pluginLibraries.forEach(lib => {
32
45
  if (lib.cdnCssUrl) {
33
46
  this.loadCSS(lib.cdnCssUrl);
34
47
  }
35
48
  });
36
- const componentPromises = componentLibs.map(lib => this.loadScript(lib.cdnUrl, lib.globalVariable));
37
- const componentResults = await Promise.all(componentPromises);
49
+ const pluginPromises = pluginLibraries.map(lib => this.loadScript(lib.cdnUrl, lib.globalVariable));
50
+ const pluginResults = await Promise.all(pluginPromises);
38
51
  const libraries = {};
39
- componentLibs.forEach((lib, index) => {
40
- libraries[lib.globalVariable] = componentResults[index];
52
+ pluginLibraries.forEach((lib, index) => {
53
+ libraries[lib.globalVariable] = pluginResults[index];
41
54
  });
42
55
  return {
43
56
  React: React || window.React,
@@ -87,13 +100,18 @@ class LibraryLoader {
87
100
  script.src = url;
88
101
  script.async = true;
89
102
  script.crossOrigin = 'anonymous';
90
- script.onload = () => {
103
+ const cleanup = () => {
104
+ script.removeEventListener('load', onLoad);
105
+ script.removeEventListener('error', onError);
106
+ };
107
+ const onLoad = () => {
108
+ cleanup();
91
109
  const global = window[globalName];
92
110
  if (global) {
93
111
  resolve(global);
94
112
  }
95
113
  else {
96
- setTimeout(() => {
114
+ const timeoutId = resource_manager_1.resourceManager.setTimeout(LIBRARY_LOADER_COMPONENT_ID, () => {
97
115
  const delayedGlobal = window[globalName];
98
116
  if (delayedGlobal) {
99
117
  resolve(delayedGlobal);
@@ -101,13 +119,17 @@ class LibraryLoader {
101
119
  else {
102
120
  reject(new Error(`${globalName} not found after script load`));
103
121
  }
104
- }, 100);
122
+ }, 100, { url, globalName });
105
123
  }
106
124
  };
107
- script.onerror = () => {
125
+ const onError = () => {
126
+ cleanup();
108
127
  reject(new Error(`Failed to load script: ${url}`));
109
128
  };
129
+ script.addEventListener('load', onLoad);
130
+ script.addEventListener('error', onError);
110
131
  document.head.appendChild(script);
132
+ resource_manager_1.resourceManager.registerDOMElement(LIBRARY_LOADER_COMPONENT_ID, script);
111
133
  });
112
134
  this.loadedResources.set(url, {
113
135
  element: document.querySelector(`script[src="${url}"]`),
@@ -127,6 +149,7 @@ class LibraryLoader {
127
149
  link.rel = 'stylesheet';
128
150
  link.href = url;
129
151
  document.head.appendChild(link);
152
+ resource_manager_1.resourceManager.registerDOMElement(LIBRARY_LOADER_COMPONENT_ID, link);
130
153
  this.loadedResources.set(url, {
131
154
  element: link,
132
155
  promise: Promise.resolve()
@@ -139,7 +162,7 @@ class LibraryLoader {
139
162
  resolve(global);
140
163
  }
141
164
  else {
142
- setTimeout(() => {
165
+ resource_manager_1.resourceManager.setTimeout(LIBRARY_LOADER_COMPONENT_ID, () => {
143
166
  const delayedGlobal = window[globalName];
144
167
  if (delayedGlobal) {
145
168
  resolve(delayedGlobal);
@@ -147,7 +170,7 @@ class LibraryLoader {
147
170
  else {
148
171
  reject(new Error(`${globalName} not found after script load`));
149
172
  }
150
- }, 100);
173
+ }, 100, { context: 'waitForScriptLoad', globalName });
151
174
  }
152
175
  };
153
176
  if (script.complete || script.readyState === 'complete') {
@@ -155,16 +178,21 @@ class LibraryLoader {
155
178
  return;
156
179
  }
157
180
  const loadHandler = () => {
158
- script.removeEventListener('load', loadHandler);
159
181
  checkGlobal();
160
182
  };
161
- script.addEventListener('load', loadHandler);
183
+ resource_manager_1.resourceManager.addEventListener(LIBRARY_LOADER_COMPONENT_ID, script, 'load', loadHandler, { once: true });
162
184
  }
163
185
  static getLoadedResources() {
164
186
  return this.loadedResources;
165
187
  }
166
188
  static clearCache() {
189
+ this.loadedResources.forEach((resource, url) => {
190
+ if (resource.element && resource.element.parentNode) {
191
+ resource.element.parentNode.removeChild(resource.element);
192
+ }
193
+ });
167
194
  this.loadedResources.clear();
195
+ resource_manager_1.resourceManager.cleanupComponent(LIBRARY_LOADER_COMPONENT_ID);
168
196
  }
169
197
  }
170
198
  exports.LibraryLoader = LibraryLoader;
@@ -0,0 +1,34 @@
1
+ export interface ManagedResource {
2
+ type: 'timer' | 'interval' | 'animationFrame' | 'eventListener' | 'domElement' | 'observable' | 'reactRoot';
3
+ id: string | number;
4
+ cleanup: () => void;
5
+ metadata?: Record<string, any>;
6
+ }
7
+ export declare class ResourceManager {
8
+ private resources;
9
+ private globalResources;
10
+ private cleanupCallbacks;
11
+ setTimeout(componentId: string, callback: () => void, delay: number, metadata?: Record<string, any>): number;
12
+ setInterval(componentId: string, callback: () => void, delay: number, metadata?: Record<string, any>): number;
13
+ requestAnimationFrame(componentId: string, callback: FrameRequestCallback, metadata?: Record<string, any>): number;
14
+ clearTimeout(componentId: string, id: number): void;
15
+ clearInterval(componentId: string, id: number): void;
16
+ cancelAnimationFrame(componentId: string, id: number): void;
17
+ addEventListener(componentId: string, target: EventTarget, type: string, listener: EventListener, options?: AddEventListenerOptions): void;
18
+ registerDOMElement(componentId: string, element: HTMLElement, cleanup?: () => void): void;
19
+ registerReactRoot(componentId: string, root: any, unmountFn: () => void): void;
20
+ registerCleanup(componentId: string, cleanup: () => void): void;
21
+ registerGlobalResource(resource: ManagedResource): void;
22
+ private addResource;
23
+ private removeResource;
24
+ cleanupComponent(componentId: string): void;
25
+ cleanupGlobal(): void;
26
+ cleanupAll(): void;
27
+ getStats(): {
28
+ componentCount: number;
29
+ resourceCounts: Record<string, number>;
30
+ globalResourceCount: number;
31
+ };
32
+ }
33
+ export declare const resourceManager: ResourceManager;
34
+ //# sourceMappingURL=resource-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resource-manager.d.ts","sourceRoot":"","sources":["../../src/utilities/resource-manager.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,OAAO,GAAG,UAAU,GAAG,gBAAgB,GAAG,eAAe,GAAG,YAAY,GAAG,YAAY,GAAG,WAAW,CAAC;IAC5G,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAChC;AAMD,qBAAa,eAAe;IAC1B,OAAO,CAAC,SAAS,CAA2C;IAC5D,OAAO,CAAC,eAAe,CAA8B;IACrD,OAAO,CAAC,gBAAgB,CAAqC;IAK7D,UAAU,CACR,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,IAAI,EACpB,KAAK,EAAE,MAAM,EACb,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC7B,MAAM;IAmBT,WAAW,CACT,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,IAAI,EACpB,KAAK,EAAE,MAAM,EACb,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC7B,MAAM;IAgBT,qBAAqB,CACnB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,oBAAoB,EAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC7B,MAAM;IAmBT,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI;IAQnD,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI;IAQpD,oBAAoB,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI;IAQ3D,gBAAgB,CACd,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,WAAW,EACnB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,aAAa,EACvB,OAAO,CAAC,EAAE,uBAAuB,GAChC,IAAI;IAeP,kBAAkB,CAChB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,WAAW,EACpB,OAAO,CAAC,EAAE,MAAM,IAAI,GACnB,IAAI;IAoBP,iBAAiB,CACf,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,GAAG,EACT,SAAS,EAAE,MAAM,IAAI,GACpB,IAAI;IAYP,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,GAAG,IAAI;IAU/D,sBAAsB,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI;IAOvD,OAAO,CAAC,WAAW;IAUnB,OAAO,CAAC,cAAc;IAmBtB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IA+B3C,aAAa,IAAI,IAAI;IAcrB,UAAU,IAAI,IAAI;IAalB,QAAQ,IAAI;QACV,cAAc,EAAE,MAAM,CAAC;QACvB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACvC,mBAAmB,EAAE,MAAM,CAAC;KAC7B;CAeF;AAGD,eAAO,MAAM,eAAe,iBAAwB,CAAC"}