diff options
Diffstat (limited to 'vanilla/node_modules/data-urls/lib/parser.js')
| -rw-r--r-- | vanilla/node_modules/data-urls/lib/parser.js | 69 |
1 files changed, 0 insertions, 69 deletions
diff --git a/vanilla/node_modules/data-urls/lib/parser.js b/vanilla/node_modules/data-urls/lib/parser.js deleted file mode 100644 index f3f708f..0000000 --- a/vanilla/node_modules/data-urls/lib/parser.js +++ /dev/null @@ -1,69 +0,0 @@ -"use strict"; -const { MIMEType } = require("whatwg-mimetype"); -const { parseURL, serializeURL, percentDecodeString } = require("whatwg-url"); -const { stripLeadingAndTrailingASCIIWhitespace, 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 = percentDecodeString(encodedBody); - - // Can't use /i regexp flag because it isn't restricted to ASCII. - const mimeTypeBase64MatchResult = /(.*); *[Bb][Aa][Ss][Ee]64$/u.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 { - mimeTypeRecord = new MIMEType("text/plain;charset=US-ASCII"); - } - - return { - mimeType: mimeTypeRecord, - body - }; -}; |
