{"version":3,"file":"text.mjs","sourceRoot":"","sources":["../../src/text.ts"],"names":[],"mappings":"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","sourcesContent":["import Promise from '@dojo/shim/Promise';\nimport has from './has';\nimport request from './request';\nimport { NodeRequire, AmdRequire, AmdConfig } from './interfaces';\nimport { Require, isAmdRequire } from './load';\n\ndeclare const require: Require;\n\n/*\n * Strips <?xml ...?> declarations so that external SVG and XML\n * documents can be added to a document without worry. Also, if the string\n * is an HTML document, only the part inside the body tag is returned.\n */\nfunction strip(text: string): string {\n\tif (!text) {\n\t\treturn '';\n\t}\n\n\ttext = text.replace(/^\\s*<\\?xml(\\s)+version=[\\'\\\"](\\d)*.(\\d)*[\\'\\\"](\\s)*\\?>/im, '');\n\tlet matches = text.match(/<body[^>]*>\\s*([\\s\\S]+)\\s*<\\/body>/im);\n\ttext = matches ? matches[1] : text;\n\n\treturn text;\n}\n\n/*\n * Host-specific method to retrieve text\n */\nlet getText: (url: string, callback: (value: string | null) => void) => void;\n\nif (has('host-browser')) {\n\tgetText = function(url: string, callback: (value: string | null) => void): void {\n\t\trequest(url).then((response) => {\n\t\t\tresponse.text().then((data) => {\n\t\t\t\tcallback(data);\n\t\t\t});\n\t\t});\n\t};\n} else if (has('host-node')) {\n\tlet fs = isAmdRequire(require) && require.nodeRequire ? require.nodeRequire('fs') : (<NodeRequire>require)('fs');\n\tgetText = function(url: string, callback: (value: string) => void): void {\n\t\tfs.readFile(url, { encoding: 'utf8' }, function(error: Error, data: string): void {\n\t\t\tif (error) {\n\t\t\t\tthrow error;\n\t\t\t}\n\n\t\t\tcallback(data);\n\t\t});\n\t};\n} else {\n\tgetText = function(): void {\n\t\tthrow new Error('dojo/text not supported on this platform');\n\t};\n}\n\n/*\n * Cache of previously-loaded text resources\n */\nlet textCache: { [key: string]: any } = {};\n\n/*\n * Cache of pending text resources\n */\nlet pending: { [key: string]: any } = {};\n\nexport function get(url: string): Promise<string | null> {\n\tlet promise = new Promise<string | null>(function(resolve, reject) {\n\t\tgetText(url, function(text) {\n\t\t\tresolve(text);\n\t\t});\n\t});\n\n\treturn promise;\n}\n\nexport function normalize(id: string, toAbsMid: (moduleId: string) => string): string {\n\tlet parts = id.split('!');\n\tlet url = parts[0];\n\n\treturn (/^\\./.test(url) ? toAbsMid(url) : url) + (parts[1] ? '!' + parts[1] : '');\n}\n\nexport function load(id: string, require: AmdRequire, load: (value?: any) => void, config?: AmdConfig): void {\n\tlet parts = id.split('!');\n\tlet stripFlag = parts.length > 1;\n\tlet mid = parts[0];\n\tlet url = require.toUrl(mid);\n\tlet text: string | undefined;\n\n\tfunction finish(text: string): void {\n\t\tload(stripFlag ? strip(text) : text);\n\t}\n\n\tif (mid in textCache) {\n\t\ttext = textCache[mid];\n\t} else if (url in textCache) {\n\t\ttext = textCache[url];\n\t}\n\n\tif (!text) {\n\t\tif (pending[url]) {\n\t\t\tpending[url].push(finish);\n\t\t} else {\n\t\t\tlet pendingList = (pending[url] = [finish]);\n\t\t\tgetText(url, function(value) {\n\t\t\t\ttextCache[mid] = textCache[url] = value;\n\t\t\t\tfor (let i = 0; i < pendingList.length; ) {\n\t\t\t\t\tpendingList[i++](value || '');\n\t\t\t\t}\n\t\t\t\tdelete pending[url];\n\t\t\t});\n\t\t}\n\t} else {\n\t\tfinish(text);\n\t}\n}\n"]}