{"version":3,"sources":["out-editor/vs/loader.js"],"sourcesContent":["/*!-----------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.50.0-dev-20240525(a5e379c985d3263aacb1e811958c4663fea3db67)\n * Released under the MIT license\n * https://github.com/microsoft/vscode/blob/main/LICENSE.txt\n *-----------------------------------------------------------*/\n\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n'use strict';\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n/*---------------------------------------------------------------------------------------------\n *---------------------------------------------------------------------------------------------\n *---------------------------------------------------------------------------------------------\n *---------------------------------------------------------------------------------------------\n *---------------------------------------------------------------------------------------------\n * Please make sure to make edits in the .ts file at https://github.com/microsoft/vscode-loader/\n *---------------------------------------------------------------------------------------------\n *---------------------------------------------------------------------------------------------\n *---------------------------------------------------------------------------------------------\n *---------------------------------------------------------------------------------------------\n *--------------------------------------------------------------------------------------------*/\nconst _amdLoaderGlobal = this;\nconst _commonjsGlobal = typeof global === 'object' ? global : {};\nvar AMDLoader;\n(function (AMDLoader) {\n\tAMDLoader.global = _amdLoaderGlobal;\n\tclass Environment {\n\t\tget isWindows() {\n\t\t\tthis._detect();\n\t\t\treturn this._isWindows;\n\t\t}\n\t\tget isNode() {\n\t\t\tthis._detect();\n\t\t\treturn this._isNode;\n\t\t}\n\t\tget isElectronRenderer() {\n\t\t\tthis._detect();\n\t\t\treturn this._isElectronRenderer;\n\t\t}\n\t\tget isWebWorker() {\n\t\t\tthis._detect();\n\t\t\treturn this._isWebWorker;\n\t\t}\n\t\tget isElectronNodeIntegrationWebWorker() {\n\t\t\tthis._detect();\n\t\t\treturn this._isElectronNodeIntegrationWebWorker;\n\t\t}\n\t\tconstructor() {\n\t\t\tthis._detected = false;\n\t\t\tthis._isWindows = false;\n\t\t\tthis._isNode = false;\n\t\t\tthis._isElectronRenderer = false;\n\t\t\tthis._isWebWorker = false;\n\t\t\tthis._isElectronNodeIntegrationWebWorker = false;\n\t\t}\n\t\t_detect() {\n\t\t\tif (this._detected) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis._detected = true;\n\t\t\tthis._isWindows = Environment._isWindows();\n\t\t\tthis._isNode = (typeof module !== 'undefined' && !!module.exports);\n\t\t\tthis._isElectronRenderer = (typeof process !== 'undefined' && typeof process.versions !== 'undefined' && typeof process.versions.electron !== 'undefined' && process.type === 'renderer');\n\t\t\tthis._isWebWorker = (typeof AMDLoader.global.importScripts === 'function');\n\t\t\tthis._isElectronNodeIntegrationWebWorker = this._isWebWorker && (typeof process !== 'undefined' && typeof process.versions !== 'undefined' && typeof process.versions.electron !== 'undefined' && process.type === 'worker');\n\t\t}\n\t\tstatic _isWindows() {\n\t\t\tif (typeof navigator !== 'undefined') {\n\t\t\t\tif (navigator.userAgent && navigator.userAgent.indexOf('Windows') >= 0) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (typeof process !== 'undefined') {\n\t\t\t\treturn (process.platform === 'win32');\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t}\n\tAMDLoader.Environment = Environment;\n})(AMDLoader || (AMDLoader = {}));\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar AMDLoader;\n(function (AMDLoader) {\n\tclass LoaderEvent {\n\t\tconstructor(type, detail, timestamp) {\n\t\t\tthis.type = type;\n\t\t\tthis.detail = detail;\n\t\t\tthis.timestamp = timestamp;\n\t\t}\n\t}\n\tAMDLoader.LoaderEvent = LoaderEvent;\n\tclass LoaderEventRecorder {\n\t\tconstructor(loaderAvailableTimestamp) {\n\t\t\tthis._events = [new LoaderEvent(1 /* LoaderEventType.LoaderAvailable */, '', loaderAvailableTimestamp)];\n\t\t}\n\t\trecord(type, detail) {\n\t\t\tthis._events.push(new LoaderEvent(type, detail, AMDLoader.Utilities.getHighPerformanceTimestamp()));\n\t\t}\n\t\tgetEvents() {\n\t\t\treturn this._events;\n\t\t}\n\t}\n\tAMDLoader.LoaderEventRecorder = LoaderEventRecorder;\n\tclass NullLoaderEventRecorder {\n\t\trecord(type, detail) {\n\t\t\t// Nothing to do\n\t\t}\n\t\tgetEvents() {\n\t\t\treturn [];\n\t\t}\n\t}\n\tNullLoaderEventRecorder.INSTANCE = new NullLoaderEventRecorder();\n\tAMDLoader.NullLoaderEventRecorder = NullLoaderEventRecorder;\n})(AMDLoader || (AMDLoader = {}));\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar AMDLoader;\n(function (AMDLoader) {\n\tclass Utilities {\n\t\t/**\n\t\t * This method does not take care of / vs \\\n\t\t */\n\t\tstatic fileUriToFilePath(isWindows, uri) {\n\t\t\turi = decodeURI(uri).replace(/%23/g, '#');\n\t\t\tif (isWindows) {\n\t\t\t\tif (/^file:\\/\\/\\//.test(uri)) {\n\t\t\t\t\t// This is a URI without a hostname => return only the path segment\n\t\t\t\t\treturn uri.substr(8);\n\t\t\t\t}\n\t\t\t\tif (/^file:\\/\\//.test(uri)) {\n\t\t\t\t\treturn uri.substr(5);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tif (/^file:\\/\\//.test(uri)) {\n\t\t\t\t\treturn uri.substr(7);\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Not sure...\n\t\t\treturn uri;\n\t\t}\n\t\tstatic startsWith(haystack, needle) {\n\t\t\treturn haystack.length >= needle.length && haystack.substr(0, needle.length) === needle;\n\t\t}\n\t\tstatic endsWith(haystack, needle) {\n\t\t\treturn haystack.length >= needle.length && haystack.substr(haystack.length - needle.length) === needle;\n\t\t}\n\t\t// only check for \"?\" before \"#\" to ensure that there is a real Query-String\n\t\tstatic containsQueryString(url) {\n\t\t\treturn /^[^\\#]*\\?/gi.test(url);\n\t\t}\n\t\t/**\n\t\t * Does `url` start with http:// or https:// or file:// or / ?\n\t\t */\n\t\tstatic isAbsolutePath(url) {\n\t\t\treturn /^((http:\\/\\/)|(https:\\/\\/)|(file:\\/\\/)|(\\/))/.test(url);\n\t\t}\n\t\tstatic forEachProperty(obj, callback) {\n\t\t\tif (obj) {\n\t\t\t\tlet key;\n\t\t\t\tfor (key in obj) {\n\t\t\t\t\tif (obj.hasOwnProperty(key)) {\n\t\t\t\t\t\tcallback(key, obj[key]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tstatic isEmpty(obj) {\n\t\t\tlet isEmpty = true;\n\t\t\tUtilities.forEachProperty(obj, () => {\n\t\t\t\tisEmpty = false;\n\t\t\t});\n\t\t\treturn isEmpty;\n\t\t}\n\t\tstatic recursiveClone(obj) {\n\t\t\tif (!obj || typeof obj !== 'object' || obj instanceof RegExp) {\n\t\t\t\treturn obj;\n\t\t\t}\n\t\t\tif (!Array.isArray(obj) && Object.getPrototypeOf(obj) !== Object.prototype) {\n\t\t\t\t// only clone \"simple\" objects\n\t\t\t\treturn obj;\n\t\t\t}\n\t\t\tlet result = Array.isArray(obj) ? [] : {};\n\t\t\tUtilities.forEachProperty(obj, (key, value) => {\n\t\t\t\tif (value && typeof value === 'object') {\n\t\t\t\t\tresult[key] = Utilities.recursiveClone(value);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tresult[key] = value;\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn result;\n\t\t}\n\t\tstatic generateAnonymousModule() {\n\t\t\treturn '===anonymous' + (Utilities.NEXT_ANONYMOUS_ID++) + '===';\n\t\t}\n\t\tstatic isAnonymousModule(id) {\n\t\t\treturn Utilities.startsWith(id, '===anonymous');\n\t\t}\n\t\tstatic getHighPerformanceTimestamp() {\n\t\t\tif (!this.PERFORMANCE_NOW_PROBED) {\n\t\t\t\tthis.PERFORMANCE_NOW_PROBED = true;\n\t\t\t\tthis.HAS_PERFORMANCE_NOW = (AMDLoader.global.performance && typeof AMDLoader.global.performance.now === 'function');\n\t\t\t}\n\t\t\treturn (this.HAS_PERFORMANCE_NOW ? AMDLoader.global.performance.now() : Date.now());\n\t\t}\n\t}\n\tUtilities.NEXT_ANONYMOUS_ID = 1;\n\tUtilities.PERFORMANCE_NOW_PROBED = false;\n\tUtilities.HAS_PERFORMANCE_NOW = false;\n\tAMDLoader.Utilities = Utilities;\n})(AMDLoader || (AMDLoader = {}));\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar AMDLoader;\n(function (AMDLoader) {\n\tfunction ensureError(err) {\n\t\tif (err instanceof Error) {\n\t\t\treturn err;\n\t\t}\n\t\tconst result = new Error(err.message || String(err) || 'Unknown Error');\n\t\tif (err.stack) {\n\t\t\tresult.stack = err.stack;\n\t\t}\n\t\treturn result;\n\t}\n\tAMDLoader.ensureError = ensureError;\n\t;\n\tclass ConfigurationOptionsUtil {\n\t\t/**\n\t\t * Ensure configuration options make sense\n\t\t */\n\t\tstatic validateConfigurationOptions(options) {\n\t\t\tfunction defaultOnError(err) {\n\t\t\t\tif (err.phase === 'loading') {\n\t\t\t\t\tconsole.error('Loading \"' + err.moduleId + '\" failed');\n\t\t\t\t\tconsole.error(err);\n\t\t\t\t\tconsole.error('Here are the modules that depend on it:');\n\t\t\t\t\tconsole.error(err.neededBy);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (err.phase === 'factory') {\n\t\t\t\t\tconsole.error('The factory function of \"' + err.moduleId + '\" has thrown an exception');\n\t\t\t\t\tconsole.error(err);\n\t\t\t\t\tconsole.error('Here are the modules that depend on it:');\n\t\t\t\t\tconsole.error(err.neededBy);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\toptions = options || {};\n\t\t\tif (typeof options.baseUrl !== 'string') {\n\t\t\t\toptions.baseUrl = '';\n\t\t\t}\n\t\t\tif (typeof options.isBuild !== 'boolean') {\n\t\t\t\toptions.isBuild = false;\n\t\t\t}\n\t\t\tif (typeof options.paths !== 'object') {\n\t\t\t\toptions.paths = {};\n\t\t\t}\n\t\t\tif (typeof options.config !== 'object') {\n\t\t\t\toptions.config = {};\n\t\t\t}\n\t\t\tif (typeof options.catchError === 'undefined') {\n\t\t\t\toptions.catchError = false;\n\t\t\t}\n\t\t\tif (typeof options.recordStats === 'undefined') {\n\t\t\t\toptions.recordStats = false;\n\t\t\t}\n\t\t\tif (typeof options.urlArgs !== 'string') {\n\t\t\t\toptions.urlArgs = '';\n\t\t\t}\n\t\t\tif (typeof options.onError !== 'function') {\n\t\t\t\toptions.onError = defaultOnError;\n\t\t\t}\n\t\t\tif (!Array.isArray(options.ignoreDuplicateModules)) {\n\t\t\t\toptions.ignoreDuplicateModules = [];\n\t\t\t}\n\t\t\tif (options.baseUrl.length > 0) {\n\t\t\t\tif (!AMDLoader.Utilities.endsWith(options.baseUrl, '/')) {\n\t\t\t\t\toptions.baseUrl += '/';\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (typeof options.cspNonce !== 'string') {\n\t\t\t\toptions.cspNonce = '';\n\t\t\t}\n\t\t\tif (typeof options.preferScriptTags === 'undefined') {\n\t\t\t\toptions.preferScriptTags = false;\n\t\t\t}\n\t\t\tif (options.nodeCachedData && typeof options.nodeCachedData === 'object') {\n\t\t\t\tif (typeof options.nodeCachedData.seed !== 'string') {\n\t\t\t\t\toptions.nodeCachedData.seed = 'seed';\n\t\t\t\t}\n\t\t\t\tif (typeof options.nodeCachedData.writeDelay !== 'number' || options.nodeCachedData.writeDelay < 0) {\n\t\t\t\t\toptions.nodeCachedData.writeDelay = 1000 * 7;\n\t\t\t\t}\n\t\t\t\tif (!options.nodeCachedData.path || typeof options.nodeCachedData.path !== 'string') {\n\t\t\t\t\tconst err = ensureError(new Error('INVALID cached data configuration, \\'path\\' MUST be set'));\n\t\t\t\t\terr.phase = 'configuration';\n\t\t\t\t\toptions.onError(err);\n\t\t\t\t\toptions.nodeCachedData = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn options;\n\t\t}\n\t\tstatic mergeConfigurationOptions(overwrite = null, base = null) {\n\t\t\tlet result = AMDLoader.Utilities.recursiveClone(base || {});\n\t\t\t// Merge known properties and overwrite the unknown ones\n\t\t\tAMDLoader.Utilities.forEachProperty(overwrite, (key, value) => {\n\t\t\t\tif (key === 'ignoreDuplicateModules' && typeof result.ignoreDuplicateModules !== 'undefined') {\n\t\t\t\t\tresult.ignoreDuplicateModules = result.ignoreDuplicateModules.concat(value);\n\t\t\t\t}\n\t\t\t\telse if (key === 'paths' && typeof result.paths !== 'undefined') {\n\t\t\t\t\tAMDLoader.Utilities.forEachProperty(value, (key2, value2) => result.paths[key2] = value2);\n\t\t\t\t}\n\t\t\t\telse if (key === 'config' && typeof result.config !== 'undefined') {\n\t\t\t\t\tAMDLoader.Utilities.forEachProperty(value, (key2, value2) => result.config[key2] = value2);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tresult[key] = AMDLoader.Utilities.recursiveClone(value);\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn ConfigurationOptionsUtil.validateConfigurationOptions(result);\n\t\t}\n\t}\n\tAMDLoader.ConfigurationOptionsUtil = ConfigurationOptionsUtil;\n\tclass Configuration {\n\t\tconstructor(env, options) {\n\t\t\tthis._env = env;\n\t\t\tthis.options = ConfigurationOptionsUtil.mergeConfigurationOptions(options);\n\t\t\tthis._createIgnoreDuplicateModulesMap();\n\t\t\tthis._createSortedPathsRules();\n\t\t\tif (this.options.baseUrl === '') {\n\t\t\t\tif (this.options.nodeRequire && this.options.nodeRequire.main && this.options.nodeRequire.main.filename && this._env.isNode) {\n\t\t\t\t\tlet nodeMain = this.options.nodeRequire.main.filename;\n\t\t\t\t\tlet dirnameIndex = Math.max(nodeMain.lastIndexOf('/'), nodeMain.lastIndexOf('\\\\'));\n\t\t\t\t\tthis.options.baseUrl = nodeMain.substring(0, dirnameIndex + 1);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t_createIgnoreDuplicateModulesMap() {\n\t\t\t// Build a map out of the ignoreDuplicateModules array\n\t\t\tthis.ignoreDuplicateModulesMap = {};\n\t\t\tfor (let i = 0; i < this.options.ignoreDuplicateModules.length; i++) {\n\t\t\t\tthis.ignoreDuplicateModulesMap[this.options.ignoreDuplicateModules[i]] = true;\n\t\t\t}\n\t\t}\n\t\t_createSortedPathsRules() {\n\t\t\t// Create an array our of the paths rules, sorted descending by length to\n\t\t\t// result in a more specific -> less specific order\n\t\t\tthis.sortedPathsRules = [];\n\t\t\tAMDLoader.Utilities.forEachProperty(this.options.paths, (from, to) => {\n\t\t\t\tif (!Array.isArray(to)) {\n\t\t\t\t\tthis.sortedPathsRules.push({\n\t\t\t\t\t\tfrom: from,\n\t\t\t\t\t\tto: [to]\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tthis.sortedPathsRules.push({\n\t\t\t\t\t\tfrom: from,\n\t\t\t\t\t\tto: to\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t\tthis.sortedPathsRules.sort((a, b) => {\n\t\t\t\treturn b.from.length - a.from.length;\n\t\t\t});\n\t\t}\n\t\t/**\n\t\t * Clone current configuration and overwrite options selectively.\n\t\t * @param options The selective options to overwrite with.\n\t\t * @result A new configuration\n\t\t */\n\t\tcloneAndMerge(options) {\n\t\t\treturn new Configuration(this._env, ConfigurationOptionsUtil.mergeConfigurationOptions(options, this.options));\n\t\t}\n\t\t/**\n\t\t * Get current options bag. Useful for passing it forward to plugins.\n\t\t */\n\t\tgetOptionsLiteral() {\n\t\t\treturn this.options;\n\t\t}\n\t\t_applyPaths(moduleId) {\n\t\t\tlet pathRule;\n\t\t\tfor (let i = 0, len = this.sortedPathsRules.length; i < len; i++) {\n\t\t\t\tpathRule = this.sortedPathsRules[i];\n\t\t\t\tif (AMDLoader.Utilities.startsWith(moduleId, pathRule.from)) {\n\t\t\t\t\tlet result = [];\n\t\t\t\t\tfor (let j = 0, lenJ = pathRule.to.length; j < lenJ; j++) {\n\t\t\t\t\t\tresult.push(pathRule.to[j] + moduleId.substr(pathRule.from.length));\n\t\t\t\t\t}\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn [moduleId];\n\t\t}\n\t\t_addUrlArgsToUrl(url) {\n\t\t\tif (AMDLoader.Utilities.containsQueryString(url)) {\n\t\t\t\treturn url + '&' + this.options.urlArgs;\n\t\t\t}\n\t\t\telse {\n\t\t\t\treturn url + '?' + this.options.urlArgs;\n\t\t\t}\n\t\t}\n\t\t_addUrlArgsIfNecessaryToUrl(url) {\n\t\t\tif (this.options.urlArgs) {\n\t\t\t\treturn this._addUrlArgsToUrl(url);\n\t\t\t}\n\t\t\treturn url;\n\t\t}\n\t\t_addUrlArgsIfNecessaryToUrls(urls) {\n\t\t\tif (this.options.urlArgs) {\n\t\t\t\tfor (let i = 0, len = urls.length; i < len; i++) {\n\t\t\t\t\turls[i] = this._addUrlArgsToUrl(urls[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn urls;\n\t\t}\n\t\t/**\n\t\t * Transform a module id to a location. Appends .js to module ids\n\t\t */\n\t\tmoduleIdToPaths(moduleId) {\n\t\t\tif (this._env.isNode) {\n\t\t\t\tconst isNodeModule = (this.options.amdModulesPattern instanceof RegExp\n\t\t\t\t\t&& !this.options.amdModulesPattern.test(moduleId));\n\t\t\t\tif (isNodeModule) {\n\t\t\t\t\t// This is a node module...\n\t\t\t\t\tif (this.isBuild()) {\n\t\t\t\t\t\t// ...and we are at build time, drop it\n\t\t\t\t\t\treturn ['empty:'];\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\t// ...and at runtime we create a `shortcut`-path\n\t\t\t\t\t\treturn ['node|' + moduleId];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tlet result = moduleId;\n\t\t\tlet results;\n\t\t\tif (!AMDLoader.Utilities.endsWith(result, '.js') && !AMDLoader.Utilities.isAbsolutePath(result)) {\n\t\t\t\tresults = this._applyPaths(result);\n\t\t\t\tfor (let i = 0, len = results.length; i < len; i++) {\n\t\t\t\t\tif (this.isBuild() && results[i] === 'empty:') {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tif (!AMDLoader.Utilities.isAbsolutePath(results[i])) {\n\t\t\t\t\t\tresults[i] = this.options.baseUrl + results[i];\n\t\t\t\t\t}\n\t\t\t\t\tif (!AMDLoader.Utilities.endsWith(results[i], '.js') && !AMDLoader.Utilities.containsQueryString(results[i])) {\n\t\t\t\t\t\tresults[i] = results[i] + '.js';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tif (!AMDLoader.Utilities.endsWith(result, '.js') && !AMDLoader.Utilities.containsQueryString(result)) {\n\t\t\t\t\tresult = result + '.js';\n\t\t\t\t}\n\t\t\t\tresults = [result];\n\t\t\t}\n\t\t\treturn this._addUrlArgsIfNecessaryToUrls(results);\n\t\t}\n\t\t/**\n\t\t * Transform a module id or url to a location.\n\t\t */\n\t\trequireToUrl(url) {\n\t\t\tlet result = url;\n\t\t\tif (!AMDLoader.Utilities.isAbsolutePath(result)) {\n\t\t\t\tresult = this._applyPaths(result)[0];\n\t\t\t\tif (!AMDLoader.Utilities.isAbsolutePath(result)) {\n\t\t\t\t\tresult = this.options.baseUrl + result;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this._addUrlArgsIfNecessaryToUrl(result);\n\t\t}\n\t\t/**\n\t\t * Flag to indicate if current execution is as part of a build.\n\t\t */\n\t\tisBuild() {\n\t\t\treturn this.options.isBuild;\n\t\t}\n\t\tshouldInvokeFactory(strModuleId) {\n\t\t\tif (!this.options.isBuild) {\n\t\t\t\t// outside of a build, all factories should be invoked\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\t// during a build, only explicitly marked or anonymous modules get their factories invoked\n\t\t\tif (AMDLoader.Utilities.isAnonymousModule(strModuleId)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif (this.options.buildForceInvokeFactory && this.options.buildForceInvokeFactory[strModuleId]) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t\t/**\n\t\t * Test if module `moduleId` is expected to be defined multiple times\n\t\t */\n\t\tisDuplicateMessageIgnoredFor(moduleId) {\n\t\t\treturn this.ignoreDuplicateModulesMap.hasOwnProperty(moduleId);\n\t\t}\n\t\t/**\n\t\t * Get the configuration settings for the provided module id\n\t\t */\n\t\tgetConfigForModule(moduleId) {\n\t\t\tif (this.options.config) {\n\t\t\t\treturn this.options.config[moduleId];\n\t\t\t}\n\t\t}\n\t\t/**\n\t\t * Should errors be caught when executing module factories?\n\t\t */\n\t\tshouldCatchError() {\n\t\t\treturn this.options.catchError;\n\t\t}\n\t\t/**\n\t\t * Should statistics be recorded?\n\t\t */\n\t\tshouldRecordStats() {\n\t\t\treturn this.options.recordStats;\n\t\t}\n\t\t/**\n\t\t * Forward an error to the error handler.\n\t\t */\n\t\tonError(err) {\n\t\t\tthis.options.onError(err);\n\t\t}\n\t}\n\tAMDLoader.Configuration = Configuration;\n})(AMDLoader || (AMDLoader = {}));\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar AMDLoader;\n(function (AMDLoader) {\n\t/**\n\t * Load `scriptSrc` only once (avoid multiple