(scriptSrc: string)
| 94 | } |
| 95 | |
| 96 | public async load<T>(scriptSrc: string): Promise<T> { |
| 97 | this._initialize(); |
| 98 | |
| 99 | if (this._state === AMDModuleImporterState.InitializedExternal) { |
| 100 | return new Promise<T>(resolve => { |
| 101 | const tmpModuleId = generateUuid(); |
| 102 | globalThis.define(tmpModuleId, [scriptSrc], function (moduleResult: T) { |
| 103 | resolve(moduleResult); |
| 104 | }); |
| 105 | }); |
| 106 | } |
| 107 | |
| 108 | const defineCall = await (this._isWebWorker ? this._workerLoadScript(scriptSrc) : this._isRenderer ? this._rendererLoadScript(scriptSrc) : this._nodeJSLoadScript(scriptSrc)); |
| 109 | if (!defineCall) { |
| 110 | console.warn(`Did not receive a define call from script ${scriptSrc}`); |
| 111 | return <T>undefined; |
| 112 | } |
| 113 | // TODO@esm require, module |
| 114 | const exports = {}; |
| 115 | const dependencyObjs: any[] = []; |
| 116 | const dependencyModules: string[] = []; |
| 117 | |
| 118 | if (Array.isArray(defineCall.dependencies)) { |
| 119 | |
| 120 | for (const mod of defineCall.dependencies) { |
| 121 | if (mod === 'exports') { |
| 122 | dependencyObjs.push(exports); |
| 123 | } else { |
| 124 | dependencyModules.push(mod); |
| 125 | } |
| 126 | } |
| 127 | } |
| 128 | |
| 129 | if (dependencyModules.length > 0) { |
| 130 | throw new Error(`Cannot resolve dependencies for script ${scriptSrc}. The dependencies are: ${dependencyModules.join(', ')}`); |
| 131 | } |
| 132 | if (typeof defineCall.callback === 'function') { |
| 133 | return defineCall.callback(...dependencyObjs) ?? exports; |
| 134 | } else { |
| 135 | return defineCall.callback; |
| 136 | } |
| 137 | } |
| 138 | |
| 139 | private _rendererLoadScript(scriptSrc: string): Promise<DefineCall | undefined> { |
| 140 | return new Promise<DefineCall | undefined>((resolve, reject) => { |
nothing calls this directly
no test coverage detected