{"version":3,"file":"load.mjs","sourceRoot":"","sources":["../../src/load.ts"],"names":[],"mappings":"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","sourcesContent":["import Promise from '@dojo/shim/Promise';\nimport { AmdRequire, AmdDefine, NodeRequire } from './interfaces';\nimport { isPlugin, useDefault } from './load/util';\n\nexport type Require = AmdRequire | NodeRequire;\n\nexport interface Load {\n\t(require: Require, ...moduleIds: string[]): Promise<any[]>;\n\t(...moduleIds: string[]): Promise<any[]>;\n}\n\ndeclare const require: Require;\n\ndeclare const define: AmdDefine;\n\nexport function isAmdRequire(object: any): object is AmdRequire {\n\treturn typeof object.toUrl === 'function';\n}\n\nexport function isNodeRequire(object: any): object is NodeRequire {\n\treturn typeof object.resolve === 'function';\n}\n\nconst load: Load = (function(): Load {\n\tconst resolver = isAmdRequire(require)\n\t\t? require.toUrl\n\t\t: isNodeRequire(require) ? require.resolve : (resourceId: string) => resourceId;\n\n\tfunction pluginLoad(moduleIds: string[], load: Load, loader: (modulesIds: string[]) => Promise<any>) {\n\t\tconst pluginResourceIds: string[] = [];\n\t\tmoduleIds = moduleIds.map((id: string, i: number) => {\n\t\t\tconst parts = id.split('!');\n\t\t\tpluginResourceIds[i] = parts[1];\n\t\t\treturn parts[0];\n\t\t});\n\n\t\treturn loader(moduleIds).then((modules: any[]) => {\n\t\t\tpluginResourceIds.forEach((resourceId: string, i: number) => {\n\t\t\t\tif (typeof resourceId === 'string') {\n\t\t\t\t\tconst module = modules[i];\n\t\t\t\t\tconst defaultExport = module['default'] || module;\n\n\t\t\t\t\tif (isPlugin(defaultExport)) {\n\t\t\t\t\t\tresourceId =\n\t\t\t\t\t\t\ttypeof defaultExport.normalize === 'function'\n\t\t\t\t\t\t\t\t? defaultExport.normalize(resourceId, resolver)\n\t\t\t\t\t\t\t\t: resolver(resourceId);\n\n\t\t\t\t\t\tmodules[i] = defaultExport.load(resourceId, load);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn Promise.all(modules);\n\t\t});\n\t}\n\n\tif (typeof module === 'object' && typeof module.exports === 'object') {\n\t\treturn function load(contextualRequire: any, ...moduleIds: string[]): Promise<any[]> {\n\t\t\tif (typeof contextualRequire === 'string') {\n\t\t\t\tmoduleIds.unshift(contextualRequire);\n\t\t\t\tcontextualRequire = require;\n\t\t\t}\n\n\t\t\treturn pluginLoad(moduleIds, load, (moduleIds: string[]) => {\n\t\t\t\ttry {\n\t\t\t\t\treturn Promise.resolve(\n\t\t\t\t\t\tmoduleIds.map(function(moduleId): any {\n\t\t\t\t\t\t\treturn contextualRequire(moduleId.split('!')[0]);\n\t\t\t\t\t\t})\n\t\t\t\t\t);\n\t\t\t\t} catch (error) {\n\t\t\t\t\treturn Promise.reject(error);\n\t\t\t\t}\n\t\t\t});\n\t\t};\n\t} else if (typeof define === 'function' && define.amd) {\n\t\treturn function load(contextualRequire: any, ...moduleIds: string[]): Promise<any[]> {\n\t\t\tif (typeof contextualRequire === 'string') {\n\t\t\t\tmoduleIds.unshift(contextualRequire);\n\t\t\t\tcontextualRequire = require;\n\t\t\t}\n\n\t\t\treturn pluginLoad(moduleIds, load, (moduleIds: string[]) => {\n\t\t\t\treturn new Promise(function(resolve, reject) {\n\t\t\t\t\tlet errorHandle: { remove: () => void };\n\n\t\t\t\t\tif (typeof contextualRequire.on === 'function') {\n\t\t\t\t\t\terrorHandle = contextualRequire.on('error', (error: Error) => {\n\t\t\t\t\t\t\terrorHandle.remove();\n\t\t\t\t\t\t\treject(error);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tcontextualRequire(moduleIds, function(...modules: any[]) {\n\t\t\t\t\t\terrorHandle && errorHandle.remove();\n\t\t\t\t\t\tresolve(modules);\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t});\n\t\t};\n\t} else {\n\t\treturn function() {\n\t\t\treturn Promise.reject(new Error('Unknown loader'));\n\t\t};\n\t}\n})();\nexport default load;\n\nexport { isPlugin, useDefault };\n"]}