diff options
Diffstat (limited to 'alarm/node_modules/data-urls/lib')
-rw-r--r-- | alarm/node_modules/data-urls/lib/parser.js | 74 | ||||
-rw-r--r-- | alarm/node_modules/data-urls/lib/utils.js | 23 |
2 files changed, 0 insertions, 97 deletions
diff --git a/alarm/node_modules/data-urls/lib/parser.js b/alarm/node_modules/data-urls/lib/parser.js deleted file mode 100644 index 37be0ef..0000000 --- a/alarm/node_modules/data-urls/lib/parser.js +++ /dev/null @@ -1,74 +0,0 @@ -"use strict"; -const MIMEType = require("whatwg-mimetype"); -const { parseURL, serializeURL } = require("whatwg-url"); -const { - stripLeadingAndTrailingASCIIWhitespace, - stringPercentDecode, - isomorphicDecode, - forgivingBase64Decode -} = require("./utils.js"); - -module.exports = stringInput => { - const urlRecord = parseURL(stringInput); - - if (urlRecord === null) { - return null; - } - - return module.exports.fromURLRecord(urlRecord); -}; - -module.exports.fromURLRecord = urlRecord => { - if (urlRecord.scheme !== "data") { - return null; - } - - const input = serializeURL(urlRecord, true).substring("data:".length); - - let position = 0; - - let mimeType = ""; - while (position < input.length && input[position] !== ",") { - mimeType += input[position]; - ++position; - } - mimeType = stripLeadingAndTrailingASCIIWhitespace(mimeType); - - if (position === input.length) { - return null; - } - - ++position; - - const encodedBody = input.substring(position); - - let body = stringPercentDecode(encodedBody); - - // Can't use /i regexp flag because it isn't restricted to ASCII. - const mimeTypeBase64MatchResult = /(.*); *[Bb][Aa][Ss][Ee]64$/.exec(mimeType); - if (mimeTypeBase64MatchResult) { - const stringBody = isomorphicDecode(body); - body = forgivingBase64Decode(stringBody); - - if (body === null) { - return null; - } - mimeType = mimeTypeBase64MatchResult[1]; - } - - if (mimeType.startsWith(";")) { - mimeType = "text/plain" + mimeType; - } - - let mimeTypeRecord; - try { - mimeTypeRecord = new MIMEType(mimeType); - } catch (e) { - mimeTypeRecord = new MIMEType("text/plain;charset=US-ASCII"); - } - - return { - mimeType: mimeTypeRecord, - body - }; -}; diff --git a/alarm/node_modules/data-urls/lib/utils.js b/alarm/node_modules/data-urls/lib/utils.js deleted file mode 100644 index 213029f..0000000 --- a/alarm/node_modules/data-urls/lib/utils.js +++ /dev/null @@ -1,23 +0,0 @@ -"use strict"; -const { percentDecode } = require("whatwg-url"); -const { atob } = require("abab"); - -exports.stripLeadingAndTrailingASCIIWhitespace = string => { - return string.replace(/^[ \t\n\f\r]+/, "").replace(/[ \t\n\f\r]+$/, ""); -}; - -exports.stringPercentDecode = input => { - return percentDecode(Buffer.from(input, "utf-8")); -}; - -exports.isomorphicDecode = input => { - return input.toString("binary"); -}; - -exports.forgivingBase64Decode = data => { - const asString = atob(data); - if (asString === null) { - return null; - } - return Buffer.from(asString, "binary"); -}; |