summaryrefslogtreecommitdiff
path: root/node_modules/data-uri-to-buffer
diff options
context:
space:
mode:
authorakiyamn2023-09-24 23:22:21 +1000
committerakiyamn2023-09-24 23:22:21 +1000
commit4e87195739f2a5d9a05451b48773c8afdc680765 (patch)
tree9cba501844a4a11dcbdffc4050ed8189561c55ed /node_modules/data-uri-to-buffer
downloadprice-tracker-worker-4e87195739f2a5d9a05451b48773c8afdc680765.tar.gz
price-tracker-worker-4e87195739f2a5d9a05451b48773c8afdc680765.zip
Initial commit (by create-cloudflare CLI)
Diffstat (limited to 'node_modules/data-uri-to-buffer')
-rw-r--r--node_modules/data-uri-to-buffer/.travis.yml25
-rw-r--r--node_modules/data-uri-to-buffer/History.md55
-rw-r--r--node_modules/data-uri-to-buffer/README.md88
-rw-r--r--node_modules/data-uri-to-buffer/index.d.ts10
-rw-r--r--node_modules/data-uri-to-buffer/index.js70
-rw-r--r--node_modules/data-uri-to-buffer/package.json34
-rw-r--r--node_modules/data-uri-to-buffer/test/test.js175
7 files changed, 457 insertions, 0 deletions
diff --git a/node_modules/data-uri-to-buffer/.travis.yml b/node_modules/data-uri-to-buffer/.travis.yml
new file mode 100644
index 0000000..4e1d070
--- /dev/null
+++ b/node_modules/data-uri-to-buffer/.travis.yml
@@ -0,0 +1,25 @@
+sudo: false
+
+language: node_js
+
+node_js:
+ - "1"
+ - "2"
+ - "3"
+ - "4"
+ - "5"
+ - "6"
+ - "7"
+ - "8"
+
+install:
+ - PATH="`npm bin`:`npm bin -g`:$PATH"
+ # Install dependencies and build
+ - npm install
+
+script:
+ # Output useful info for debugging
+ - node --version
+ - npm --version
+ # Run tests
+ - npm test
diff --git a/node_modules/data-uri-to-buffer/History.md b/node_modules/data-uri-to-buffer/History.md
new file mode 100644
index 0000000..170c709
--- /dev/null
+++ b/node_modules/data-uri-to-buffer/History.md
@@ -0,0 +1,55 @@
+
+2.0.0 / 2017-07-18
+==================
+
+ * More correct media type handling
+ * add typings for Typescript
+
+1.2.0 / 2017-07-18
+==================
+
+ * Essentially identical to v1.0.0. Reverting changes from v1.1.0 because they are breaking changes and should be part of a major version bump
+ * Revert "More correct media type handling"
+ * Revert "add typings for Typescript"
+
+1.1.0 / 2017-07-17
+==================
+
+ * More correct media type handling
+ * Add typings for Typescript
+
+1.0.0 / 2017-06-09
+==================
+
+ * Bumping to v1.0.0 for semver semantics
+ * random updates for newer Node.js versions
+ * travis: test more node versions and fix v0.8
+
+0.0.4 / 2015-06-29
+==================
+
+ * package: update "mocha" to v2
+ * package: add RFC to the "keywords" section
+ * travis: test node v0.8, v0.10, and v0.12
+ * README: use SVG for Travis-CI badge
+ * test: more tests
+
+0.0.3 / 2014-01-08
+==================
+
+ * index: fix a URI with a comma in the data portion
+
+0.0.2 / 2014-01-08
+==================
+
+ * index: use unescape() instead of decodeURIComponent()
+ * test: add more tests from Mozilla
+
+0.0.1 / 2014-01-02
+==================
+
+ * add `README.md`
+ * index: default the `charset` property to "US-ASCII"
+ * default encoding is "ascii"
+ * default `type` to "text/plain" when none is given
+ * initial commit
diff --git a/node_modules/data-uri-to-buffer/README.md b/node_modules/data-uri-to-buffer/README.md
new file mode 100644
index 0000000..2463f1f
--- /dev/null
+++ b/node_modules/data-uri-to-buffer/README.md
@@ -0,0 +1,88 @@
+data-uri-to-buffer
+==================
+### Generate a Buffer instance from a [Data URI][rfc] string
+[![Build Status](https://travis-ci.org/TooTallNate/node-data-uri-to-buffer.svg?branch=master)](https://travis-ci.org/TooTallNate/node-data-uri-to-buffer)
+
+This module accepts a ["data" URI][rfc] String of data, and returns a
+node.js `Buffer` instance with the decoded data.
+
+
+Installation
+------------
+
+Install with `npm`:
+
+``` bash
+$ npm install data-uri-to-buffer
+```
+
+
+Example
+-------
+
+``` js
+var dataUriToBuffer = require('data-uri-to-buffer');
+
+// plain-text data is supported
+var uri = 'data:,Hello%2C%20World!';
+var decoded = dataUriToBuffer(uri);
+console.log(decoded.toString());
+// 'Hello, World!'
+
+// base64-encoded data is supported
+uri = 'data:text/plain;base64,SGVsbG8sIFdvcmxkIQ%3D%3D';
+decoded = dataUriToBuffer(uri);
+console.log(decoded.toString());
+// 'Hello, World!'
+```
+
+
+API
+---
+
+### dataUriToBuffer(String uri) → Buffer
+
+The `type` property on the Buffer instance gets set to the main type portion of
+the "mediatype" portion of the "data" URI, or defaults to `"text/plain"` if not
+specified.
+
+The `typeFull` property on the Buffer instance gets set to the entire
+"mediatype" portion of the "data" URI (including all parameters), or defaults
+to `"text/plain;charset=US-ASCII"` if not specified.
+
+The `charset` property on the Buffer instance gets set to the Charset portion of
+the "mediatype" portion of the "data" URI, or defaults to `"US-ASCII"` if the
+entire type is not specified, or defaults to `""` otherwise.
+
+*Note*: If the only the main type is specified but not the charset, e.g.
+`"data:text/plain,abc"`, the charset is set to the empty string. The spec only
+defaults to US-ASCII as charset if the entire type is not specified.
+
+
+License
+-------
+
+(The MIT License)
+
+Copyright (c) 2014 Nathan Rajlich <nathan@tootallnate.net>
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+'Software'), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+[rfc]: http://tools.ietf.org/html/rfc2397
diff --git a/node_modules/data-uri-to-buffer/index.d.ts b/node_modules/data-uri-to-buffer/index.d.ts
new file mode 100644
index 0000000..2401e25
--- /dev/null
+++ b/node_modules/data-uri-to-buffer/index.d.ts
@@ -0,0 +1,10 @@
+/// <reference types="node" />
+
+declare class MimeBuffer extends Buffer {
+ type: string;
+ typeFull: string;
+ charset: string;
+}
+
+declare function dataUriToBuffer(uri: string): MimeBuffer;
+export = dataUriToBuffer;
diff --git a/node_modules/data-uri-to-buffer/index.js b/node_modules/data-uri-to-buffer/index.js
new file mode 100644
index 0000000..8f8ac76
--- /dev/null
+++ b/node_modules/data-uri-to-buffer/index.js
@@ -0,0 +1,70 @@
+'use strict';
+
+/**
+ * Module exports.
+ */
+
+module.exports = dataUriToBuffer;
+
+/**
+ * Returns a `Buffer` instance from the given data URI `uri`.
+ *
+ * @param {String} uri Data URI to turn into a Buffer instance
+ * @return {Buffer} Buffer instance from Data URI
+ * @api public
+ */
+
+function dataUriToBuffer(uri) {
+ if (!/^data\:/i.test(uri)) {
+ throw new TypeError(
+ '`uri` does not appear to be a Data URI (must begin with "data:")'
+ );
+ }
+
+ // strip newlines
+ uri = uri.replace(/\r?\n/g, '');
+
+ // split the URI up into the "metadata" and the "data" portions
+ var firstComma = uri.indexOf(',');
+ if (-1 === firstComma || firstComma <= 4) {
+ throw new TypeError('malformed data: URI');
+ }
+
+ // remove the "data:" scheme and parse the metadata
+ var meta = uri.substring(5, firstComma).split(';');
+
+ var type = meta[0] || 'text/plain';
+ var typeFull = type;
+ var base64 = false;
+ var charset = '';
+ for (var i = 1; i < meta.length; i++) {
+ if ('base64' == meta[i]) {
+ base64 = true;
+ } else {
+ typeFull += ';' + meta[i];
+ if (0 == meta[i].indexOf('charset=')) {
+ charset = meta[i].substring(8);
+ }
+ }
+ }
+ // defaults to US-ASCII only if type is not provided
+ if (!meta[0] && !charset.length) {
+ typeFull += ';charset=US-ASCII';
+ charset = 'US-ASCII';
+ }
+
+ // get the encoded data portion and decode URI-encoded chars
+ var data = unescape(uri.substring(firstComma + 1));
+
+ var encoding = base64 ? 'base64' : 'ascii';
+ var buffer = Buffer.from ? Buffer.from(data, encoding) : new Buffer(data, encoding);
+
+ // set `.type` and `.typeFull` properties to MIME type
+ buffer.type = type;
+ buffer.typeFull = typeFull;
+
+ // set the `.charset` property
+ buffer.charset = charset;
+
+ return buffer;
+}
diff --git a/node_modules/data-uri-to-buffer/package.json b/node_modules/data-uri-to-buffer/package.json
new file mode 100644
index 0000000..cbd53f5
--- /dev/null
+++ b/node_modules/data-uri-to-buffer/package.json
@@ -0,0 +1,34 @@
+{
+ "name": "data-uri-to-buffer",
+ "version": "2.0.2",
+ "description": "Generate a Buffer instance from a Data URI string",
+ "main": "index.js",
+ "types": "index.d.ts",
+ "scripts": {
+ "test": "mocha --reporter spec"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/TooTallNate/node-data-uri-to-buffer.git"
+ },
+ "keywords": [
+ "data",
+ "uri",
+ "datauri",
+ "data-uri",
+ "buffer",
+ "convert",
+ "rfc2397",
+ "2397"
+ ],
+ "author": "Nathan Rajlich <nathan@tootallnate.net> (http://n8.io/)",
+ "license": "MIT",
+ "bugs": {
+ "url": "https://github.com/TooTallNate/node-data-uri-to-buffer/issues"
+ },
+ "homepage": "https://github.com/TooTallNate/node-data-uri-to-buffer",
+ "devDependencies": {
+ "@types/node": "^8.0.7",
+ "mocha": "^3.4.2"
+ }
+}
diff --git a/node_modules/data-uri-to-buffer/test/test.js b/node_modules/data-uri-to-buffer/test/test.js
new file mode 100644
index 0000000..2975e36
--- /dev/null
+++ b/node_modules/data-uri-to-buffer/test/test.js
@@ -0,0 +1,175 @@
+
+/**
+ * Module dependencies.
+ */
+
+var assert = require('assert');
+var dataUriToBuffer = require('../');
+
+describe('data-uri-to-buffer', function () {
+
+ it('should decode bare-bones Data URIs', function () {
+ var uri = 'data:,Hello%2C%20World!';
+
+ var buf = dataUriToBuffer(uri);
+ assert.equal('text/plain', buf.type);
+ assert.equal('text/plain;charset=US-ASCII', buf.typeFull);
+ assert.equal('US-ASCII', buf.charset);
+ assert.equal('Hello, World!', buf.toString());
+ });
+
+ it('should decode bare-bones "base64" Data URIs', function () {
+ var uri = 'data:text/plain;base64,SGVsbG8sIFdvcmxkIQ%3D%3D';
+
+ var buf = dataUriToBuffer(uri);
+ assert.equal('text/plain', buf.type);
+ assert.equal('Hello, World!', buf.toString());
+ });
+
+ it('should decode plain-text Data URIs', function () {
+ var html = '<!DOCTYPE html>'+
+ '<html lang="en">'+
+ '<head><title>Embedded Window</title></head>'+
+ '<body><h1>42</h1></body>'+
+ '</html>';
+
+ // Escape the HTML for URL formatting
+ var uri = 'data:text/html;charset=utf-8,' + encodeURIComponent(html);
+
+ var buf = dataUriToBuffer(uri);
+ assert.equal('text/html', buf.type);
+ assert.equal('utf-8', buf.charset);
+ assert.equal(html, buf.toString());
+ });
+
+ // the next 4 tests are from:
+ // https://bug161965.bugzilla.mozilla.org/attachment.cgi?id=94670&action=view
+
+ it('should decode "ISO-8859-8 in Base64" URIs', function () {
+ var uri = 'data:text/plain;charset=iso-8859-8-i;base64,+ezl7Q==';
+
+ var buf = dataUriToBuffer(uri);
+ assert.equal('text/plain', buf.type);
+ assert.equal('iso-8859-8-i', buf.charset);
+ assert.equal(4, buf.length);
+ assert.equal(0xf9, buf[0]);
+ assert.equal(0xec, buf[1]);
+ assert.equal(0xe5, buf[2]);
+ assert.equal(0xed, buf[3]);
+ });
+
+ it('should decode "ISO-8859-8 in URL-encoding" URIs', function () {
+ var uri = 'data:text/plain;charset=iso-8859-8-i,%f9%ec%e5%ed';
+
+ var buf = dataUriToBuffer(uri);
+ assert.equal('text/plain', buf.type);
+ assert.equal('iso-8859-8-i', buf.charset);
+ assert.equal(4, buf.length);
+ assert.equal(0xf9, buf[0]);
+ assert.equal(0xec, buf[1]);
+ assert.equal(0xe5, buf[2]);
+ assert.equal(0xed, buf[3]);
+ });
+
+ it('should decode "UTF-8 in Base64" URIs', function () {
+ var uri = 'data:text/plain;charset=UTF-8;base64,16nXnNeV150=';
+
+ var buf = dataUriToBuffer(uri);
+ assert.equal('text/plain', buf.type);
+ assert.equal('UTF-8', buf.charset);
+ assert.equal(8, buf.length);
+ assert.equal('שלום', buf.toString('utf8'));
+ });
+
+ it('should decode "UTF-8 in URL-encoding" URIs', function () {
+ var uri = 'data:text/plain;charset=UTF-8,%d7%a9%d7%9c%d7%95%d7%9d';
+
+ var buf = dataUriToBuffer(uri);
+ assert.equal('text/plain', buf.type);
+ assert.equal('UTF-8', buf.charset);
+ assert.equal(8, buf.length);
+ assert.equal('שלום', buf.toString('utf8'));
+ });
+
+ // this next one is from Wikipedia IIRC
+
+ it('should decode "base64" Data URIs with newlines', function () {
+ var uri = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA\n' +
+ 'AAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO\n' +
+ '9TXL0Y4OHwAAAABJRU5ErkJggg==';
+
+ var buf = dataUriToBuffer(uri);
+ assert.equal('image/png', buf.type);
+ assert.equal('iVBORw0KGgoAAAANSUhEUgAAAAUA' +
+ 'AAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO' +
+ '9TXL0Y4OHwAAAABJRU5ErkJggg==', buf.toString('base64'));
+ });
+
+ it('should decode a plain-text URI with a space character in it', function () {
+ var uri = 'data:,foo bar';
+
+ var buf = dataUriToBuffer(uri);
+ assert.equal('text/plain', buf.type);
+ assert.equal('foo bar', buf.toString());
+ });
+
+ it('should decode data with a "," comma char', function () {
+ var uri = 'data:,a,b';
+ var buf = dataUriToBuffer(uri);
+ assert.equal('text/plain', buf.type);
+ assert.equal('a,b', buf.toString());
+ });
+
+ it('should decode data with traditionally reserved characters like ";"', function () {
+ var uri = 'data:,;test';
+ var buf = dataUriToBuffer(uri);
+ assert.equal('text/plain', buf.type);
+ assert.equal(';test', buf.toString());
+ });
+
+ it('should not default to US-ASCII if main type is provided', function () {
+ var uri = 'data:text/plain,abc';
+ var buf = dataUriToBuffer(uri);
+ assert.equal('text/plain', buf.type);
+ assert.equal('text/plain', buf.typeFull);
+ assert.equal('', buf.charset);
+ assert.equal('abc', buf.toString());
+ });
+
+ it('should default to text/plain if main type is not provided', function () {
+ var uri = 'data:;charset=UTF-8,abc';
+ var buf = dataUriToBuffer(uri);
+ assert.equal('text/plain', buf.type);
+ assert.equal('text/plain;charset=UTF-8', buf.typeFull);
+ assert.equal('UTF-8', buf.charset);
+ assert.equal('abc', buf.toString());
+ });
+
+ it('should not allow charset without a leading ;', function () {
+ var uri = 'data:charset=UTF-8,abc';
+ var buf = dataUriToBuffer(uri);
+ assert.equal('charset=UTF-8', buf.type);
+ assert.equal('charset=UTF-8', buf.typeFull);
+ assert.equal('', buf.charset);
+ assert.equal('abc', buf.toString());
+ });
+
+ it('should allow custom media type parameters', function () {
+ var uri = 'data:application/javascript;version=1.8;charset=UTF-8,abc';
+ var buf = dataUriToBuffer(uri);
+ assert.equal('application/javascript', buf.type);
+ assert.equal('application/javascript;version=1.8;charset=UTF-8', buf.typeFull);
+ assert.equal('UTF-8', buf.charset);
+ assert.equal('abc', buf.toString());
+ });
+
+ it('should allow base64 annotation anywhere', function () {
+ var uri = 'data:text/plain;base64;charset=UTF-8,YWJj';
+ var buf = dataUriToBuffer(uri);
+ assert.equal('text/plain', buf.type);
+ assert.equal('text/plain;charset=UTF-8', buf.typeFull);
+ assert.equal('UTF-8', buf.charset);
+ assert.equal('abc', buf.toString());
+ });
+
+});