1 | ;
|
2 | var __importDefault = (this && this.__importDefault) || function (mod) {
|
3 | return (mod && mod.__esModule) ? mod : { "default": mod };
|
4 | };
|
5 | Object.defineProperty(exports, "__esModule", { value: true });
|
6 | const data_urls_1 = __importDefault(require("data-urls"));
|
7 | const fs_1 = __importDefault(require("fs"));
|
8 | const whatwg_encoding_1 = __importDefault(require("whatwg-encoding"));
|
9 | // TODO: Find out why TSLint complains about whitespace
|
10 | // tslint:disable:whitespace
|
11 | /**
|
12 | * Returns the string corresponding to the provided `url`.
|
13 | *
|
14 | * @param url URL for the text content.
|
15 | */
|
16 | async function getText(url) {
|
17 | switch (url.protocol) {
|
18 | case "data:":
|
19 | return getTextByDataUrl(url);
|
20 | case "file:":
|
21 | return getTextByFileUrl(url);
|
22 | default:
|
23 | throw new Error(`UnsupportedProtocol ${url.protocol} for: ${url}`);
|
24 | }
|
25 | }
|
26 | exports.getText = getText;
|
27 | // tslint:enable
|
28 | /**
|
29 | * Synchronous variant of `getText`.
|
30 | */
|
31 | function getTextSync(url) {
|
32 | switch (url.protocol) {
|
33 | case "data:":
|
34 | return getTextByDataUrl(url);
|
35 | case "file:":
|
36 | return getTextByFileUrlSync(url);
|
37 | default:
|
38 | throw new Error(`UnsupportedProtocol ${url.protocol} for: ${url}`);
|
39 | }
|
40 | }
|
41 | exports.getTextSync = getTextSync;
|
42 | function getTextByDataUrl(url) {
|
43 | const parsed = data_urls_1.default(url.toString());
|
44 | if (parsed === null) {
|
45 | throw new Error(`CannotParseDataUrl: ${url}`);
|
46 | }
|
47 | const charset = parsed.mimeType.parameters.get("charset");
|
48 | let encodingName;
|
49 | if (charset !== undefined) {
|
50 | encodingName = whatwg_encoding_1.default.labelToName(charset);
|
51 | }
|
52 | else {
|
53 | // Not sure what the default should be...
|
54 | encodingName = "UTF-8";
|
55 | }
|
56 | if (encodingName === null) {
|
57 | throw new Error(`Unable to resolve encoding for data URL: ${url}`);
|
58 | }
|
59 | return whatwg_encoding_1.default.decode(parsed.body, encodingName);
|
60 | }
|
61 | exports.getTextByDataUrl = getTextByDataUrl;
|
62 | async function getTextByFileUrl(url) {
|
63 | return fs_1.default.promises.readFile(url, { encoding: "UTF-8" });
|
64 | }
|
65 | exports.getTextByFileUrl = getTextByFileUrl;
|
66 | function getTextByFileUrlSync(url) {
|
67 | return fs_1.default.readFileSync(url, { encoding: "UTF-8" });
|
68 | }
|
69 | exports.getTextByFileUrlSync = getTextByFileUrlSync;
|
70 | function getTextSyncFromSourceStore(sources) {
|
71 | const cache = new Map();
|
72 | return (url) => {
|
73 | const cached = cache.get(url.toString());
|
74 | if (typeof cached === "string") {
|
75 | return cached;
|
76 | }
|
77 | const sourceText = getTextSync(url);
|
78 | cache.set(url.toString(), sourceText);
|
79 | return sourceText;
|
80 | };
|
81 | }
|
82 | exports.getTextSyncFromSourceStore = getTextSyncFromSourceStore;
|
83 |
|
84 | //# sourceMappingURL=data:application/json;charset=utf8;base64,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QUFDO1FBQzVDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ3RDLE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUMsQ0FBQztBQUNKLENBQUM7QUFYRCxnRUFXQyIsImZpbGUiOiJnZXQtdGV4dC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBkYXRhVXJscyBmcm9tIFwiZGF0YS11cmxzXCI7XG5pbXBvcnQgZnMgZnJvbSBcImZzXCI7XG5pbXBvcnQgdXJsTW9kIGZyb20gXCJ1cmxcIjtcbmltcG9ydCB3aGF0d2dFbmNvZGluZyBmcm9tIFwid2hhdHdnLWVuY29kaW5nXCI7XG5pbXBvcnQgeyBOdWxsYWJsZVNvdXJjZVRleHQgfSBmcm9tIFwiLi9zb3VyY2UtbWFwL3NvdXJjZS1zdG9yZVwiO1xuXG4vKipcbiAqIFJldHVybnMgdGhlIGBzdHJpbmdgIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHByb3ZpZGVkIFVSTCByZWNvcmQuXG4gKi9cbmV4cG9ydCB0eXBlIEdldFRleHQgPSAodXJsOiBSZWFkb25seTx1cmxNb2QuVVJMPikgPT4gUHJvbWlzZTxzdHJpbmc+O1xuXG4vKipcbiAqIFN5bmNocm9ub3VzIHZhcmlhbnQgb2YgYEdldFRleHRgLlxuICovXG5leHBvcnQgdHlwZSBHZXRUZXh0U3luYyA9ICh1cmw6IFJlYWRvbmx5PHVybE1vZC5VUkw+KSA9PiBzdHJpbmc7XG5cbi8vIFRPRE86IEZpbmQgb3V0IHdoeSBUU0xpbnQgY29tcGxhaW5zIGFib3V0IHdoaXRlc3BhY2Vcbi8vIHRzbGludDpkaXNhYmxlOndoaXRlc3BhY2Vcbi8qKlxuICogUmV0dXJucyB0aGUgc3RyaW5nIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHByb3ZpZGVkIGB1cmxgLlxuICpcbiAqIEBwYXJhbSB1cmwgVVJMIGZvciB0aGUgdGV4dCBjb250ZW50LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0VGV4dCh1cmw6IFJlYWRvbmx5PHVybE1vZC5VUkw+KTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgc3dpdGNoICh1cmwucHJvdG9jb2wpIHtcbiAgICBjYXNlIFwiZGF0YTpcIjpcbiAgICAgIHJldHVybiBnZXRUZXh0QnlEYXRhVXJsKHVybCk7XG4gICAgY2FzZSBcImZpbGU6XCI6XG4gICAgICByZXR1cm4gZ2V0VGV4dEJ5RmlsZVVybCh1cmwpO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkUHJvdG9jb2wgJHt1cmwucHJvdG9jb2x9IGZvcjogJHt1cmx9YCk7XG4gIH1cbn1cbi8vIHRzbGludDplbmFibGVcblxuLyoqXG4gKiBTeW5jaHJvbm91cyB2YXJpYW50IG9mIGBnZXRUZXh0YC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFRleHRTeW5jKHVybDogUmVhZG9ubHk8dXJsTW9kLlVSTD4pOiBzdHJpbmcge1xuICBzd2l0Y2ggKHVybC5wcm90b2NvbCkge1xuICAgIGNhc2UgXCJkYXRhOlwiOlxuICAgICAgcmV0dXJuIGdldFRleHRCeURhdGFVcmwodXJsKTtcbiAgICBjYXNlIFwiZmlsZTpcIjpcbiAgICAgIHJldHVybiBnZXRUZXh0QnlGaWxlVXJsU3luYyh1cmwpO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkUHJvdG9jb2wgJHt1cmwucHJvdG9jb2x9IGZvcjogJHt1cmx9YCk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFRleHRCeURhdGFVcmwodXJsOiBSZWFkb25seTx1cmxNb2QuVVJMPik6IHN0cmluZyB7XG4gIGNvbnN0IHBhcnNlZDogZGF0YVVybHMuRGF0YVVSTCB8IG51bGwgPSBkYXRhVXJscyh1cmwudG9TdHJpbmcoKSk7XG4gIGlmIChwYXJzZWQgPT09IG51bGwpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdFBhcnNlRGF0YVVybDogJHt1cmx9YCk7XG4gIH1cbiAgY29uc3QgY2hhcnNldDogc3RyaW5nIHwgdW5kZWZpbmVkID0gcGFyc2VkLm1pbWVUeXBlLnBhcmFtZXRlcnMuZ2V0KFwiY2hhcnNldFwiKTtcbiAgbGV0IGVuY29kaW5nTmFtZTogc3RyaW5nIHwgbnVsbDtcbiAgaWYgKGNoYXJzZXQgIT09IHVuZGVmaW5lZCkge1xuICAgIGVuY29kaW5nTmFtZSA9IHdoYXR3Z0VuY29kaW5nLmxhYmVsVG9OYW1lKGNoYXJzZXQpO1xuICB9IGVsc2Uge1xuICAgIC8vIE5vdCBzdXJlIHdoYXQgdGhlIGRlZmF1bHQgc2hvdWxkIGJlLi4uXG4gICAgZW5jb2RpbmdOYW1lID0gXCJVVEYtOFwiO1xuICB9XG4gIGlmIChlbmNvZGluZ05hbWUgPT09IG51bGwpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byByZXNvbHZlIGVuY29kaW5nIGZvciBkYXRhIFVSTDogJHt1cmx9YCk7XG4gIH1cbiAgcmV0dXJuIHdoYXR3Z0VuY29kaW5nLmRlY29kZShwYXJzZWQuYm9keSwgZW5jb2RpbmdOYW1lKTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldFRleHRCeUZpbGVVcmwodXJsOiBSZWFkb25seTx1cmxNb2QuVVJMPik6IFByb21pc2U8c3RyaW5nPiB7XG4gIHJldHVybiBmcy5wcm9taXNlcy5yZWFkRmlsZSh1cmwsIHtlbmNvZGluZzogXCJVVEYtOFwifSkgYXMgUHJvbWlzZTxzdHJpbmc+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGV4dEJ5RmlsZVVybFN5bmModXJsOiBSZWFkb25seTx1cmxNb2QuVVJMPik6IHN0cmluZyB7XG4gIHJldHVybiBmcy5yZWFkRmlsZVN5bmModXJsLCB7ZW5jb2Rpbmc6IFwiVVRGLThcIn0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGV4dFN5bmNGcm9tU291cmNlU3RvcmUoc291cmNlczogSXRlcmFibGU8W3N0cmluZywgTnVsbGFibGVTb3VyY2VUZXh0XT4pOiBHZXRUZXh0U3luYyB7XG4gIGNvbnN0IGNhY2hlOiBNYXA8c3RyaW5nLCBOdWxsYWJsZVNvdXJjZVRleHQ+ID0gbmV3IE1hcCgpO1xuICByZXR1cm4gKHVybDogUmVhZG9ubHk8dXJsTW9kLlVSTD4pOiBzdHJpbmcgPT4ge1xuICAgIGNvbnN0IGNhY2hlZDogTnVsbGFibGVTb3VyY2VUZXh0IHwgdW5kZWZpbmVkID0gY2FjaGUuZ2V0KHVybC50b1N0cmluZygpKTtcbiAgICBpZiAodHlwZW9mIGNhY2hlZCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgcmV0dXJuIGNhY2hlZDtcbiAgICB9XG4gICAgY29uc3Qgc291cmNlVGV4dDogc3RyaW5nID0gZ2V0VGV4dFN5bmModXJsKTtcbiAgICBjYWNoZS5zZXQodXJsLnRvU3RyaW5nKCksIHNvdXJjZVRleHQpO1xuICAgIHJldHVybiBzb3VyY2VUZXh0O1xuICB9O1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==
|