From 96fadea1b54e2532f7a1feb9685fcdc986523972 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 23 Dec 2020 15:15:38 +0300 Subject: [PATCH 1/3] chore(deps): bump node-notifier from 8.0.0 to 8.0.1 (#139) Bumps [node-notifier](https://github.com/mikaelbr/node-notifier) from 8.0.0 to 8.0.1. - [Release notes](https://github.com/mikaelbr/node-notifier/releases) - [Changelog](https://github.com/mikaelbr/node-notifier/blob/v8.0.1/CHANGELOG.md) - [Commits](https://github.com/mikaelbr/node-notifier/compare/v8.0.0...v8.0.1) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6cd0d7f..ab4e630 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6783,8 +6783,7 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=", - "dev": true, - "optional": true + "dev": true }, "handlebars": { "version": "4.7.6", @@ -7414,7 +7413,6 @@ "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", "dev": true, - "optional": true, "requires": { "is-docker": "^2.0.0" } @@ -10068,11 +10066,10 @@ "dev": true }, "node-notifier": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-8.0.0.tgz", - "integrity": "sha512-46z7DUmcjoYdaWyXouuFNNfUo6eFa94t23c53c+lG/9Cvauk4a98rAUp9672X5dxGdQmLpPzTxzu8f/OeEPaFA==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-8.0.1.tgz", + "integrity": "sha512-BvEXF+UmsnAfYfoapKM9nGxnP+Wn7P91YfXmrKnfcYCx6VBeoN5Ez5Ogck6I8Bi5k4RlpqRYaw75pAwzX9OphA==", "dev": true, - "optional": true, "requires": { "growly": "^1.3.0", "is-wsl": "^2.2.0", @@ -10087,7 +10084,6 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", "dev": true, - "optional": true, "requires": { "lru-cache": "^6.0.0" } @@ -10097,7 +10093,6 @@ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, - "optional": true, "requires": { "isexe": "^2.0.0" } @@ -11387,8 +11382,7 @@ "version": "0.1.1", "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", - "dev": true, - "optional": true + "dev": true }, "sigmund": { "version": "1.0.1", @@ -12446,8 +12440,7 @@ "version": "8.3.1", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.1.tgz", "integrity": "sha512-FOmRr+FmWEIG8uhZv6C2bTgEVXsHk08kE7mPlrBbEe+c3r9pjceVPgupIfNIhc4yx55H69OXANrUaSuu9eInKg==", - "dev": true, - "optional": true + "dev": true }, "v8-compile-cache": { "version": "2.2.0", From 4a0c8fbfb5fe7825a9c0ac82fb4e80e94defd7f8 Mon Sep 17 00:00:00 2001 From: Alexey Lavinsky Date: Thu, 24 Dec 2020 19:16:23 +0300 Subject: [PATCH 2/3] refactor: next --- .github/workflows/nodejs.yml | 2 +- package-lock.json | 952 +++-- package.json | 23 +- src/index.js | 12 +- src/options.json | 1 + src/parse-data-url.js | 214 +- src/utils.js | 16 +- test/__snapshots__/parseDataUrl.test.js.snap | 3258 ++++++++++++++++++ test/fixtures/json/data-urls.json | 369 -- test/helpers/compile.js | 5 +- test/helpers/getCompiler.js | 6 +- test/helpers/getErrors.js | 4 +- test/helpers/getWarnings.js | 5 +- test/helpers/normalizeErrors.js | 5 +- test/parseDataUrl.test.js | 201 +- 15 files changed, 4123 insertions(+), 950 deletions(-) create mode 100644 test/__snapshots__/parseDataUrl.test.js.snap delete mode 100644 test/fixtures/json/data-urls.json diff --git a/.github/workflows/nodejs.yml b/.github/workflows/nodejs.yml index 748c9f8..111b251 100644 --- a/.github/workflows/nodejs.yml +++ b/.github/workflows/nodejs.yml @@ -56,7 +56,7 @@ jobs: matrix: os: [ubuntu-latest, windows-latest, macos-latest] node-version: [10.x, 12.x, 14.x] - webpack-version: [4, latest] + webpack-version: [latest] runs-on: ${{ matrix.os }} diff --git a/package-lock.json b/package-lock.json index ab4e630..256638e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,9 +5,9 @@ "requires": true, "dependencies": { "@babel/cli": { - "version": "7.12.8", - "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.12.8.tgz", - "integrity": "sha512-/6nQj11oaGhLmZiuRUfxsujiPDc9BBReemiXgIbxc+M5W+MIiFKYwvNDJvBfnGKNsJTKbUfEheKc9cwoPHAVQA==", + "version": "7.12.10", + "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.12.10.tgz", + "integrity": "sha512-+y4ZnePpvWs1fc/LhZRTHkTesbXkyBYuOB+5CyodZqrEuETXi3zOVfpAQIdgC3lXbHLTDG9dQosxR9BhvLKDLQ==", "dev": true, "requires": { "@nicolo-ribaudo/chokidar-2": "2.1.8-no-fsevents", @@ -31,9 +31,9 @@ } }, "@babel/code-frame": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", - "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", + "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", "dev": true, "requires": { "@babel/highlight": "^7.10.4" @@ -46,25 +46,24 @@ "dev": true }, "@babel/core": { - "version": "7.12.9", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.9.tgz", - "integrity": "sha512-gTXYh3M5wb7FRXQy+FErKFAv90BnlOuNn1QkCK2lREoPAjrQCO49+HVSrFoe5uakFAF5eenS75KbO2vQiLrTMQ==", + "version": "7.12.10", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.10.tgz", + "integrity": "sha512-eTAlQKq65zHfkHZV0sIVODCPGVgoo1HdBlbSLi9CqOzuZanMv2ihzY+4paiKr1mH+XmYESMAmJ/dpZ68eN6d8w==", "dev": true, "requires": { "@babel/code-frame": "^7.10.4", - "@babel/generator": "^7.12.5", + "@babel/generator": "^7.12.10", "@babel/helper-module-transforms": "^7.12.1", "@babel/helpers": "^7.12.5", - "@babel/parser": "^7.12.7", + "@babel/parser": "^7.12.10", "@babel/template": "^7.12.7", - "@babel/traverse": "^7.12.9", - "@babel/types": "^7.12.7", + "@babel/traverse": "^7.12.10", + "@babel/types": "^7.12.10", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.1", "json5": "^2.1.2", "lodash": "^4.17.19", - "resolve": "^1.3.2", "semver": "^5.4.1", "source-map": "^0.5.0" }, @@ -93,12 +92,12 @@ } }, "@babel/generator": { - "version": "7.12.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.12.5.tgz", - "integrity": "sha512-m16TQQJ8hPt7E+OS/XVQg/7U184MLXtvuGbCdA7na61vha+ImkyyNM/9DDA0unYCVZn3ZOhng+qz48/KBOT96A==", + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.12.11.tgz", + "integrity": "sha512-Ggg6WPOJtSi8yYQvLVjG8F/TlpWDlKx0OpS4Kt+xMQPs5OaGYWy+v1A+1TvxI6sAMGZpKWWoAQ1DaeQbImlItA==", "dev": true, "requires": { - "@babel/types": "^7.12.5", + "@babel/types": "^7.12.11", "jsesc": "^2.5.1", "source-map": "^0.5.0" }, @@ -112,12 +111,12 @@ } }, "@babel/helper-annotate-as-pure": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz", - "integrity": "sha512-XQlqKQP4vXFB7BN8fEEerrmYvHp3fK/rBkRFz9jaJbzK0B1DSfej9Kc7ZzE8Z/OnId1jpJdNAZ3BFQjWG68rcA==", + "version": "7.12.10", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.10.tgz", + "integrity": "sha512-XplmVbC1n+KY6jL8/fgLVXXUauDIB+lD5+GsQEh6F6GBF1dq1qy4DP4yXWzDKcoqXB3X58t61e85Fitoww4JVQ==", "dev": true, "requires": { - "@babel/types": "^7.10.4" + "@babel/types": "^7.12.10" } }, "@babel/helper-builder-binary-assignment-operator-visitor": { @@ -186,23 +185,23 @@ } }, "@babel/helper-function-name": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", - "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.11.tgz", + "integrity": "sha512-AtQKjtYNolKNi6nNNVLQ27CP6D9oFR6bq/HPYSizlzbp7uC1M59XJe8L+0uXjbIaZaUJF99ruHqVGiKXU/7ybA==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.10.4", - "@babel/template": "^7.10.4", - "@babel/types": "^7.10.4" + "@babel/helper-get-function-arity": "^7.12.10", + "@babel/template": "^7.12.7", + "@babel/types": "^7.12.11" } }, "@babel/helper-get-function-arity": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", - "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", + "version": "7.12.10", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.10.tgz", + "integrity": "sha512-mm0n5BPjR06wh9mPQaDdXWDoll/j5UpCAPl1x8fS71GHm7HA6Ua2V4ylG1Ju8lvcTOietbPNNPaSilKj+pj+Ag==", "dev": true, "requires": { - "@babel/types": "^7.10.4" + "@babel/types": "^7.12.10" } }, "@babel/helper-hoist-variables": { @@ -250,12 +249,12 @@ } }, "@babel/helper-optimise-call-expression": { - "version": "7.12.7", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.7.tgz", - "integrity": "sha512-I5xc9oSJ2h59OwyUqjv95HRyzxj53DAubUERgQMrpcCEYQyToeHA+NEcUEsVWB4j53RDeskeBJ0SgRAYHDBckw==", + "version": "7.12.10", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.10.tgz", + "integrity": "sha512-4tpbU0SrSTjjt65UMWSrUOPZTsgvPgGG4S8QSTNHacKzpS51IVWGDj0yCwyeZND/i+LSN2g/O63jEXEWm49sYQ==", "dev": true, "requires": { - "@babel/types": "^7.12.7" + "@babel/types": "^7.12.10" } }, "@babel/helper-plugin-utils": { @@ -276,15 +275,15 @@ } }, "@babel/helper-replace-supers": { - "version": "7.12.5", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.12.5.tgz", - "integrity": "sha512-5YILoed0ZyIpF4gKcpZitEnXEJ9UoDRki1Ey6xz46rxOzfNMAhVIJMoune1hmPVxh40LRv1+oafz7UsWX+vyWA==", + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.12.11.tgz", + "integrity": "sha512-q+w1cqmhL7R0FNzth/PLLp2N+scXEK/L2AHbXUyydxp828F4FEa5WcVoqui9vFRiHDQErj9Zof8azP32uGVTRA==", "dev": true, "requires": { - "@babel/helper-member-expression-to-functions": "^7.12.1", - "@babel/helper-optimise-call-expression": "^7.10.4", - "@babel/traverse": "^7.12.5", - "@babel/types": "^7.12.5" + "@babel/helper-member-expression-to-functions": "^7.12.7", + "@babel/helper-optimise-call-expression": "^7.12.10", + "@babel/traverse": "^7.12.10", + "@babel/types": "^7.12.11" } }, "@babel/helper-simple-access": { @@ -306,24 +305,24 @@ } }, "@babel/helper-split-export-declaration": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz", - "integrity": "sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg==", + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.11.tgz", + "integrity": "sha512-LsIVN8j48gHgwzfocYUSkO/hjYAOJqlpJEc7tGXcIm4cubjVUf8LGW6eWRyxEu7gA25q02p0rQUWoCI33HNS5g==", "dev": true, "requires": { - "@babel/types": "^7.11.0" + "@babel/types": "^7.12.11" } }, "@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", + "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", "dev": true }, "@babel/helper-validator-option": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.1.tgz", - "integrity": "sha512-YpJabsXlJVWP0USHjnC/AQDTLlZERbON577YUVO/wLpqyj6HAtVYnWaQaN0iUN+1/tWn3c+uKKXjRut5115Y2A==", + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.11.tgz", + "integrity": "sha512-TBFCyj939mFSdeX7U7DDj32WtzYY7fDcalgq8v3fBZMNOJQNn7nOYzMaUCiPxPYfCup69mtIpqlKgMZLvQ8Xhw==", "dev": true }, "@babel/helper-wrap-function": { @@ -361,15 +360,15 @@ } }, "@babel/parser": { - "version": "7.12.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.12.7.tgz", - "integrity": "sha512-oWR02Ubp4xTLCAqPRiNIuMVgNO5Aif/xpXtabhzW2HWUD47XJsAB4Zd/Rg30+XeQA3juXigV7hlquOTmwqLiwg==", + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.12.11.tgz", + "integrity": "sha512-N3UxG+uuF4CMYoNj8AhnbAcJF0PiuJ9KHuy1lQmkYsxTer/MAH9UBNHsBoAX/4s6NvlDD047No8mYVGGzLL4hg==", "dev": true }, "@babel/plugin-proposal-async-generator-functions": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.12.1.tgz", - "integrity": "sha512-d+/o30tJxFxrA1lhzJqiUcEJdI6jKlNregCv5bASeGf2Q4MXmnwH7viDo7nhx1/ohf09oaH8j1GVYG/e3Yqk6A==", + "version": "7.12.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.12.12.tgz", + "integrity": "sha512-nrz9y0a4xmUrRq51bYkWJIO5SBZyG2ys2qinHsN0zHDHVsUaModrkpyWWWXfGqYQmOL3x9sQIcTNN/pBGpo09A==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4", @@ -655,9 +654,9 @@ } }, "@babel/plugin-transform-block-scoping": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.1.tgz", - "integrity": "sha512-zJyAC9sZdE60r1nVQHblcfCj29Dh2Y0DOvlMkcqSo0ckqjiCwNiUezUKw+RjOCwGfpLRwnAeQ2XlLpsnGkvv9w==", + "version": "7.12.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.12.tgz", + "integrity": "sha512-VOEPQ/ExOVqbukuP7BYJtI5ZxxsmegTwzZ04j1aF0dkSypGo9XpDHuOrABsJu+ie+penpSJheDJ11x1BEZNiyQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" @@ -911,9 +910,9 @@ } }, "@babel/plugin-transform-typeof-symbol": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.1.tgz", - "integrity": "sha512-EPGgpGy+O5Kg5pJFNDKuxt9RdmTgj5sgrus2XVeMp/ZIbOESadgILUbm50SNpghOh3/6yrbsH+NB5+WJTmsA7Q==", + "version": "7.12.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.10.tgz", + "integrity": "sha512-JQ6H8Rnsogh//ijxspCjc21YPd3VLVoYtAwv3zQmqAt8YGYUtdo5usNhdl4b9/Vir2kPFZl6n1h0PfUz4hJhaA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" @@ -939,16 +938,16 @@ } }, "@babel/preset-env": { - "version": "7.12.7", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.12.7.tgz", - "integrity": "sha512-OnNdfAr1FUQg7ksb7bmbKoby4qFOHw6DKWWUNB9KqnnCldxhxJlP+21dpyaWFmf2h0rTbOkXJtAGevY3XW1eew==", + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.12.11.tgz", + "integrity": "sha512-j8Tb+KKIXKYlDBQyIOy4BLxzv1NUOwlHfZ74rvW+Z0Gp4/cI2IMDPBWAgWceGcE7aep9oL/0K9mlzlMGxA8yNw==", "dev": true, "requires": { "@babel/compat-data": "^7.12.7", "@babel/helper-compilation-targets": "^7.12.5", "@babel/helper-module-imports": "^7.12.5", "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-validator-option": "^7.12.1", + "@babel/helper-validator-option": "^7.12.11", "@babel/plugin-proposal-async-generator-functions": "^7.12.1", "@babel/plugin-proposal-class-properties": "^7.12.1", "@babel/plugin-proposal-dynamic-import": "^7.12.1", @@ -977,7 +976,7 @@ "@babel/plugin-transform-arrow-functions": "^7.12.1", "@babel/plugin-transform-async-to-generator": "^7.12.1", "@babel/plugin-transform-block-scoped-functions": "^7.12.1", - "@babel/plugin-transform-block-scoping": "^7.12.1", + "@babel/plugin-transform-block-scoping": "^7.12.11", "@babel/plugin-transform-classes": "^7.12.1", "@babel/plugin-transform-computed-properties": "^7.12.1", "@babel/plugin-transform-destructuring": "^7.12.1", @@ -1003,12 +1002,12 @@ "@babel/plugin-transform-spread": "^7.12.1", "@babel/plugin-transform-sticky-regex": "^7.12.7", "@babel/plugin-transform-template-literals": "^7.12.1", - "@babel/plugin-transform-typeof-symbol": "^7.12.1", + "@babel/plugin-transform-typeof-symbol": "^7.12.10", "@babel/plugin-transform-unicode-escapes": "^7.12.1", "@babel/plugin-transform-unicode-regex": "^7.12.1", "@babel/preset-modules": "^0.1.3", - "@babel/types": "^7.12.7", - "core-js-compat": "^3.7.0", + "@babel/types": "^7.12.11", + "core-js-compat": "^3.8.0", "semver": "^5.5.0" } }, @@ -1046,17 +1045,17 @@ } }, "@babel/traverse": { - "version": "7.12.9", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.12.9.tgz", - "integrity": "sha512-iX9ajqnLdoU1s1nHt36JDI9KG4k+vmI8WgjK5d+aDTwQbL2fUnzedNedssA645Ede3PM2ma1n8Q4h2ohwXgMXw==", + "version": "7.12.12", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.12.12.tgz", + "integrity": "sha512-s88i0X0lPy45RrLM8b9mz8RPH5FqO9G9p7ti59cToE44xFm1Q+Pjh5Gq4SXBbtb88X7Uy7pexeqRIQDDMNkL0w==", "dev": true, "requires": { - "@babel/code-frame": "^7.10.4", - "@babel/generator": "^7.12.5", - "@babel/helper-function-name": "^7.10.4", - "@babel/helper-split-export-declaration": "^7.11.0", - "@babel/parser": "^7.12.7", - "@babel/types": "^7.12.7", + "@babel/code-frame": "^7.12.11", + "@babel/generator": "^7.12.11", + "@babel/helper-function-name": "^7.12.11", + "@babel/helper-split-export-declaration": "^7.12.11", + "@babel/parser": "^7.12.11", + "@babel/types": "^7.12.12", "debug": "^4.1.0", "globals": "^11.1.0", "lodash": "^4.17.19" @@ -1080,12 +1079,12 @@ } }, "@babel/types": { - "version": "7.12.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.7.tgz", - "integrity": "sha512-MNyI92qZq6jrQkXvtIiykvl4WtoRrVV9MPn+ZfsoEENjiWcBQ3ZSHrkxnJWgWtLX3XXqX5hrSQ+X69wkmesXuQ==", + "version": "7.12.12", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.12.tgz", + "integrity": "sha512-lnIX7piTxOH22xE7fDXDbSHg9MM1/6ORnafpJmov5rs0kX5g4BZxeXNJLXsMRiO0U5Rb8/FvMS6xlTnTHvxonQ==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.10.4", + "@babel/helper-validator-identifier": "^7.12.11", "lodash": "^4.17.19", "to-fast-properties": "^2.0.0" } @@ -1471,9 +1470,9 @@ "dev": true }, "@eslint/eslintrc": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.2.1.tgz", - "integrity": "sha512-XRUeBZ5zBWLYgSANMpThFddrZZkEbGHgUdt5UJjZfnlN9BGCiUBrf+nvbRupSjMvqzwnQN0qwCmOxITt1cfywA==", + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.2.2.tgz", + "integrity": "sha512-EfB5OHNYp1F4px/LI/FEnGylop7nOqkQ1LRzCM0KccA2U8tvV8w01KBv37LbO7nW4H+YhKyo2LcJhRwjjV17QQ==", "dev": true, "requires": { "ajv": "^6.12.4", @@ -2205,9 +2204,9 @@ } }, "@types/babel__traverse": { - "version": "7.0.16", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.0.16.tgz", - "integrity": "sha512-S63Dt4CZOkuTmpLGGWtT/mQdVORJOpx6SZWGVaP56dda/0Nx5nEe82K7/LAm8zYr6SfMq+1N2OreIOrHAx656w==", + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.11.0.tgz", + "integrity": "sha512-kSjgDMZONiIfSH1Nxcr5JIRMwUetDki63FSQfpTCz8ogF3Ulqm8+mr5f78dUYs6vMiB6gBusQqfQmBvHZj/lwg==", "dev": true, "requires": { "@babel/types": "^7.3.0" @@ -2285,7 +2284,8 @@ "@types/json-schema": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.6.tgz", - "integrity": "sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw==" + "integrity": "sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw==", + "dev": true }, "@types/json5": { "version": "0.0.29", @@ -2306,9 +2306,9 @@ "dev": true }, "@types/node": { - "version": "14.14.10", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.10.tgz", - "integrity": "sha512-J32dgx2hw8vXrSbu4ZlVhn1Nm3GbeCFNw2FWL8S5QKucHGY0cyNwjdQdO+KMBZ4wpmC7KhLCiNsdk1RFRIYUQQ==", + "version": "14.14.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.14.tgz", + "integrity": "sha512-UHnOPWVWV1z+VV8k6L1HhG7UbGBgIdghqF3l9Ny9ApPghbjICXkUJSd/b9gOgQfjM1r+37cipdw/HJ3F6ICEnQ==", "dev": true }, "@types/normalize-package-data": { @@ -2336,9 +2336,9 @@ "dev": true }, "@types/yargs": { - "version": "15.0.11", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.11.tgz", - "integrity": "sha512-jfcNBxHFYJ4nPIacsi3woz1+kvUO6s1CyeEhtnDHBjHUMNj5UlW2GynmnSgiJJEdNg9yW5C8lfoNRZrHGv5EqA==", + "version": "15.0.12", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.12.tgz", + "integrity": "sha512-f+fD/fQAo3BCbCDlrUpznF1A5Zp9rB0noS5vnoormHSIPFKL0Z2DcUJ3Gxp5ytH4uLRNxy7AwYUC9exZzqGMAw==", "dev": true, "requires": { "@types/yargs-parser": "*" @@ -2351,177 +2351,177 @@ "dev": true }, "@webassemblyjs/ast": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", - "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.1.tgz", + "integrity": "sha512-uMu1nCWn2Wxyy126LlGqRVlhdTOsO/bsBRI4dNq3+6SiSuRKRQX6ejjKgh82LoGAPSq72lDUiQ4FWVaf0PecYw==", "dev": true, "requires": { - "@webassemblyjs/helper-module-context": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/wast-parser": "1.9.0" + "@webassemblyjs/helper-module-context": "1.9.1", + "@webassemblyjs/helper-wasm-bytecode": "1.9.1", + "@webassemblyjs/wast-parser": "1.9.1" } }, "@webassemblyjs/floating-point-hex-parser": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz", - "integrity": "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.1.tgz", + "integrity": "sha512-5VEKu024RySmLKTTBl9q1eO/2K5jk9ZS+2HXDBLA9s9p5IjkaXxWiDb/+b7wSQp6FRdLaH1IVGIfOex58Na2pg==", "dev": true }, "@webassemblyjs/helper-api-error": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz", - "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.1.tgz", + "integrity": "sha512-y1lGmfm38djrScwpeL37rRR9f1D6sM8RhMpvM7CYLzOlHVboouZokXK/G88BpzW0NQBSvCCOnW5BFhten4FPfA==", "dev": true }, "@webassemblyjs/helper-buffer": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz", - "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.1.tgz", + "integrity": "sha512-uS6VSgieHbk/m4GSkMU5cqe/5TekdCzQso4revCIEQ3vpGZgqSSExi4jWpTWwDpAHOIAb1Jfrs0gUB9AA4n71w==", "dev": true }, "@webassemblyjs/helper-code-frame": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz", - "integrity": "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.1.tgz", + "integrity": "sha512-ZQ2ZT6Evk4DPIfD+92AraGYaFIqGm4U20e7FpXwl7WUo2Pn1mZ1v8VGH8i+Y++IQpxPbQo/UyG0Khs7eInskzA==", "dev": true, "requires": { - "@webassemblyjs/wast-printer": "1.9.0" + "@webassemblyjs/wast-printer": "1.9.1" } }, "@webassemblyjs/helper-fsm": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz", - "integrity": "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.1.tgz", + "integrity": "sha512-J32HGpveEqqcKFS0YbgicB0zAlpfIxJa5MjxDxhu3i5ltPcVfY5EPvKQ1suRguFPehxiUs+/hfkwPEXom/l0lw==", "dev": true }, "@webassemblyjs/helper-module-context": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz", - "integrity": "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.1.tgz", + "integrity": "sha512-IEH2cMmEQKt7fqelLWB5e/cMdZXf2rST1JIrzWmf4XBt3QTxGdnnLvV4DYoN8pJjOx0VYXsWg+yF16MmJtolZg==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.9.0" + "@webassemblyjs/ast": "1.9.1" } }, "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", - "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.1.tgz", + "integrity": "sha512-i2rGTBqFUcSXxyjt2K4vm/3kkHwyzG6o427iCjcIKjOqpWH8SEem+xe82jUk1iydJO250/CvE5o7hzNAMZf0dQ==", "dev": true }, "@webassemblyjs/helper-wasm-section": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz", - "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.1.tgz", + "integrity": "sha512-FetqzjtXZr2d57IECK+aId3D0IcGweeM0CbAnJHkYJkcRTHP+YcMb7Wmc0j21h5UWBpwYGb9dSkK/93SRCTrGg==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-buffer": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0" + "@webassemblyjs/ast": "1.9.1", + "@webassemblyjs/helper-buffer": "1.9.1", + "@webassemblyjs/helper-wasm-bytecode": "1.9.1", + "@webassemblyjs/wasm-gen": "1.9.1" } }, "@webassemblyjs/ieee754": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz", - "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.1.tgz", + "integrity": "sha512-EvTG9M78zP1MmkBpUjGQHZc26DzPGZSLIPxYHCjQsBMo60Qy2W34qf8z0exRDtxBbRIoiKa5dFyWer/7r1aaSQ==", "dev": true, "requires": { "@xtuc/ieee754": "^1.2.0" } }, "@webassemblyjs/leb128": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz", - "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.1.tgz", + "integrity": "sha512-Oc04ub0vFfLnF+2/+ki3AE+anmW4sv9uNBqb+79fgTaPv6xJsOT0dhphNfL3FrME84CbX/D1T9XT8tjFo0IIiw==", "dev": true, "requires": { "@xtuc/long": "4.2.2" } }, "@webassemblyjs/utf8": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz", - "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.1.tgz", + "integrity": "sha512-llkYtppagjCodFjo0alWOUhAkfOiQPQDIc5oA6C9sFAXz7vC9QhZf/f8ijQIX+A9ToM3c9Pq85X0EX7nx9gVhg==", "dev": true }, "@webassemblyjs/wasm-edit": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz", - "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.1.tgz", + "integrity": "sha512-S2IaD6+x9B2Xi8BCT0eGsrXXd8UxAh2LVJpg1ZMtHXnrDcsTtIX2bDjHi40Hio6Lc62dWHmKdvksI+MClCYbbw==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-buffer": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/helper-wasm-section": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0", - "@webassemblyjs/wasm-opt": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0", - "@webassemblyjs/wast-printer": "1.9.0" + "@webassemblyjs/ast": "1.9.1", + "@webassemblyjs/helper-buffer": "1.9.1", + "@webassemblyjs/helper-wasm-bytecode": "1.9.1", + "@webassemblyjs/helper-wasm-section": "1.9.1", + "@webassemblyjs/wasm-gen": "1.9.1", + "@webassemblyjs/wasm-opt": "1.9.1", + "@webassemblyjs/wasm-parser": "1.9.1", + "@webassemblyjs/wast-printer": "1.9.1" } }, "@webassemblyjs/wasm-gen": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz", - "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.1.tgz", + "integrity": "sha512-bqWI0S4lBQsEN5FTZ35vYzfKUJvtjNnBobB1agCALH30xNk1LToZ7Z8eiaR/Z5iVECTlBndoRQV3F6mbEqE/fg==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/ieee754": "1.9.0", - "@webassemblyjs/leb128": "1.9.0", - "@webassemblyjs/utf8": "1.9.0" + "@webassemblyjs/ast": "1.9.1", + "@webassemblyjs/helper-wasm-bytecode": "1.9.1", + "@webassemblyjs/ieee754": "1.9.1", + "@webassemblyjs/leb128": "1.9.1", + "@webassemblyjs/utf8": "1.9.1" } }, "@webassemblyjs/wasm-opt": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz", - "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.1.tgz", + "integrity": "sha512-gSf7I7YWVXZ5c6XqTEqkZjVs8K1kc1k57vsB6KBQscSagDNbAdxt6MwuJoMjsE1yWY1tsuL+pga268A6u+Fdkg==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-buffer": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0" + "@webassemblyjs/ast": "1.9.1", + "@webassemblyjs/helper-buffer": "1.9.1", + "@webassemblyjs/wasm-gen": "1.9.1", + "@webassemblyjs/wasm-parser": "1.9.1" } }, "@webassemblyjs/wasm-parser": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz", - "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.1.tgz", + "integrity": "sha512-ImM4N2T1MEIond0MyE3rXvStVxEmivQrDKf/ggfh5pP6EHu3lL/YTAoSrR7shrbKNPpeKpGesW1LIK/L4kqduw==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-api-error": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/ieee754": "1.9.0", - "@webassemblyjs/leb128": "1.9.0", - "@webassemblyjs/utf8": "1.9.0" + "@webassemblyjs/ast": "1.9.1", + "@webassemblyjs/helper-api-error": "1.9.1", + "@webassemblyjs/helper-wasm-bytecode": "1.9.1", + "@webassemblyjs/ieee754": "1.9.1", + "@webassemblyjs/leb128": "1.9.1", + "@webassemblyjs/utf8": "1.9.1" } }, "@webassemblyjs/wast-parser": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz", - "integrity": "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.1.tgz", + "integrity": "sha512-2xVxejXSvj3ls/o2TR/zI6p28qsGupjHhnHL6URULQRcXmryn3w7G83jQMcT7PHqUfyle65fZtWLukfdLdE7qw==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/floating-point-hex-parser": "1.9.0", - "@webassemblyjs/helper-api-error": "1.9.0", - "@webassemblyjs/helper-code-frame": "1.9.0", - "@webassemblyjs/helper-fsm": "1.9.0", + "@webassemblyjs/ast": "1.9.1", + "@webassemblyjs/floating-point-hex-parser": "1.9.1", + "@webassemblyjs/helper-api-error": "1.9.1", + "@webassemblyjs/helper-code-frame": "1.9.1", + "@webassemblyjs/helper-fsm": "1.9.1", "@xtuc/long": "4.2.2" } }, "@webassemblyjs/wast-printer": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz", - "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.1.tgz", + "integrity": "sha512-tDV8V15wm7mmbAH6XvQRU1X+oPGmeOzYsd6h7hlRLz6QpV4Ec/KKxM8OpLtFmQPLCreGxTp+HuxtH4pRIZyL9w==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/wast-parser": "1.9.0", + "@webassemblyjs/ast": "1.9.1", + "@webassemblyjs/wast-parser": "1.9.1", "@xtuc/long": "4.2.2" } }, @@ -2538,39 +2538,6 @@ "path-exists": "^4.0.0", "schema-utils": "^1.0.0", "user-meta": "^1.0.0" - }, - "dependencies": { - "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "dev": true, - "requires": { - "minimist": "^1.2.0" - } - }, - "loader-utils": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", - "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" - } - }, - "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "dev": true, - "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - } - } } }, "@webpack-contrib/eslint-config-webpack": { @@ -2654,6 +2621,7 @@ "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, "requires": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -2670,7 +2638,8 @@ "ajv-keywords": { "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==" + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true }, "ansi-colors": { "version": "4.1.1", @@ -2834,9 +2803,9 @@ "dev": true }, "astral-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", - "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", "dev": true }, "async-each": { @@ -3043,9 +3012,9 @@ } }, "babel-preset-current-node-syntax": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.0.tgz", - "integrity": "sha512-mGkvkpocWJes1CmMKtgGUwCeeq0pOhALyymozzDWYomHTbDLwueDYG6p4TK1YOeYHCzBzYPsWkgTto10JubI1Q==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", + "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", "dev": true, "requires": { "@babel/plugin-syntax-async-generators": "^7.8.4", @@ -3145,7 +3114,8 @@ "big.js": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==" + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true }, "binary-extensions": { "version": "1.13.1", @@ -3200,14 +3170,14 @@ "dev": true }, "browserslist": { - "version": "4.15.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.15.0.tgz", - "integrity": "sha512-IJ1iysdMkGmjjYeRlDU8PQejVwxvVO5QOfXH7ylW31GO6LwNRSmm/SgRXtNsEXqMLl2e+2H5eEJ7sfynF8TCaQ==", + "version": "4.16.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.0.tgz", + "integrity": "sha512-/j6k8R0p3nxOC6kx5JGAxsnhc9ixaWJfYc+TNTzxg6+ARaESAvQGV7h0uNOB4t+pLQJZWzcrMxXOxjgsCj3dqQ==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001164", + "caniuse-lite": "^1.0.30001165", "colorette": "^1.2.1", - "electron-to-chromium": "^1.3.612", + "electron-to-chromium": "^1.3.621", "escalade": "^3.1.1", "node-releases": "^1.1.67" } @@ -3278,9 +3248,9 @@ } }, "caniuse-lite": { - "version": "1.0.30001165", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001165.tgz", - "integrity": "sha512-8cEsSMwXfx7lWSUMA2s08z9dIgsnR5NAqjXP23stdsU3AUWkCr/rr4s4OFtHXn5XXr6+7kam3QFVoYyXNPdJPA==", + "version": "1.0.30001170", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001170.tgz", + "integrity": "sha512-Dd4d/+0tsK0UNLrZs3CvNukqalnVTRrxb5mcQm8rHL49t7V5ZaTygwXkrq+FB+dVDf++4ri8eJnFEJAB8332PA==", "dev": true }, "capture-exit": { @@ -3497,12 +3467,6 @@ "color-convert": "^2.0.1" } }, - "astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true - }, "color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -4612,18 +4576,18 @@ "dev": true }, "core-js": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.8.0.tgz", - "integrity": "sha512-W2VYNB0nwQQE7tKS7HzXd7r2y/y2SVJl4ga6oH/dnaLFzM0o2lB2P3zCkWj5Wc/zyMYjtgd5Hmhk0ObkQFZOIA==", + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.8.1.tgz", + "integrity": "sha512-9Id2xHY1W7m8hCl8NkhQn5CufmF/WuR30BTRewvCXc1aZd3kMECwNZ69ndLbekKfakw9Rf2Xyc+QR6E7Gg+obg==", "dev": true }, "core-js-compat": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.8.0.tgz", - "integrity": "sha512-o9QKelQSxQMYWHXc/Gc4L8bx/4F7TTraE5rhuN8I7mKBt5dBIUpXpIR3omv70ebr8ST5R3PqbDQr+ZI3+Tt1FQ==", + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.8.1.tgz", + "integrity": "sha512-a16TLmy9NVD1rkjUGbwuyWkiDoN0FDpAwrfLONvHFQx0D9k7J9y0srwMT8QP/Z6HE3MIFaVynEeYwZwPX1o5RQ==", "dev": true, "requires": { - "browserslist": "^4.14.7", + "browserslist": "^4.15.0", "semver": "7.0.0" }, "dependencies": { @@ -5199,9 +5163,9 @@ } }, "electron-to-chromium": { - "version": "1.3.615", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.615.tgz", - "integrity": "sha512-fNYTQXoUhNc6RmHDlGN4dgcLURSBIqQCN7ls6MuQ741+NJyLNRz8DxAC+pZpOKfRs6cfY0lv2kWdy8Oxf9j4+A==", + "version": "1.3.632", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.632.tgz", + "integrity": "sha512-LkaEH9HHr9fodmm3txF4nFMyHN3Yr50HcpD/DBHpLCxzM9doV8AV0er6aBWva4IDs2aA9kGguces0rp+WKL7rg==", "dev": true }, "emittery": { @@ -5219,7 +5183,8 @@ "emojis-list": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==" + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true }, "end-of-stream": { "version": "1.4.4", @@ -5231,13 +5196,13 @@ } }, "enhanced-resolve": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.4.0.tgz", - "integrity": "sha512-ZmqfWURB2lConOBM1JdCVfPyMRv5RdKWktLXO6123p97ovVm2CLBgw9t5MBj3jJWA6eHyOeIws9iJQoGFR4euQ==", + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.4.1.tgz", + "integrity": "sha512-4GbyIMzYktTFoRSmkbgZ1LU+RXwf4AQ8Z+rSuuh1dC8plp0PPeaWvx6+G4hh4KnUJ48VoxKbNyA1QQQIUpXjYA==", "dev": true, "requires": { "graceful-fs": "^4.2.4", - "tapable": "^2.0.0" + "tapable": "^2.2.0" } }, "enquirer": { @@ -5362,13 +5327,13 @@ } }, "eslint": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.14.0.tgz", - "integrity": "sha512-5YubdnPXrlrYAFCKybPuHIAH++PINe1pmKNc5wQRB9HSbqIK1ywAnntE3Wwua4giKu0bjligf1gLF6qxMGOYRA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.16.0.tgz", + "integrity": "sha512-iVWPS785RuDA4dWuhhgXTNrGxHHK3a8HLSMBgbbU59ruJDubUraXN8N5rn7kb8tG6sjg74eE0RA3YWT51eusEw==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", - "@eslint/eslintrc": "^0.2.1", + "@eslint/eslintrc": "^0.2.2", "ajv": "^6.10.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", @@ -5378,10 +5343,10 @@ "eslint-scope": "^5.1.1", "eslint-utils": "^2.1.0", "eslint-visitor-keys": "^2.0.0", - "espree": "^7.3.0", + "espree": "^7.3.1", "esquery": "^1.2.0", "esutils": "^2.0.2", - "file-entry-cache": "^5.0.1", + "file-entry-cache": "^6.0.0", "functional-red-black-tree": "^1.0.1", "glob-parent": "^5.0.0", "globals": "^12.1.0", @@ -5401,7 +5366,7 @@ "semver": "^7.2.1", "strip-ansi": "^6.0.0", "strip-json-comments": "^3.1.0", - "table": "^5.2.3", + "table": "^6.0.4", "text-table": "^0.2.0", "v8-compile-cache": "^2.0.3" }, @@ -5559,21 +5524,10 @@ } }, "eslint-config-prettier": { - "version": "6.15.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-6.15.0.tgz", - "integrity": "sha512-a1+kOYLR8wMGustcgAjdydMsQ2A/2ipRPwRKUmfYaSxc9ZPcrku080Ctl6zrZzZNs/U82MjSv+qKREkoq3bJaw==", - "dev": true, - "requires": { - "get-stdin": "^6.0.0" - }, - "dependencies": { - "get-stdin": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", - "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", - "dev": true - } - } + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-7.1.0.tgz", + "integrity": "sha512-9sm5/PxaFG7qNJvJzTROMM1Bk1ozXVTKI0buKOyb0Bsr1hrwi0H/TzxF/COtf1uxikIK8SwhX7K6zg78jAzbeA==", + "dev": true }, "eslint-import-resolver-node": { "version": "0.3.4", @@ -5765,13 +5719,13 @@ "dev": true }, "espree": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.0.tgz", - "integrity": "sha512-dksIWsvKCixn1yrEXO8UosNSxaDoSYpq9reEjZSbHLpT5hpaCAKTLBwq0RHtLrIr+c0ByiYzWT8KTMRzoRCNlw==", + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", + "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", "dev": true, "requires": { "acorn": "^7.4.0", - "acorn-jsx": "^5.2.0", + "acorn-jsx": "^5.3.1", "eslint-visitor-keys": "^1.3.0" }, "dependencies": { @@ -6044,7 +5998,8 @@ "fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true }, "fast-glob": { "version": "3.2.4", @@ -6117,7 +6072,8 @@ "fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true }, "fast-levenshtein": { "version": "2.0.6", @@ -6126,9 +6082,9 @@ "dev": true }, "fastq": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.9.0.tgz", - "integrity": "sha512-i7FVWL8HhVY+CTkwFxkN2mk3h+787ixS5S63eb78diVRc1MCssarHq3W5cj0av7YDSwmaV928RNag+U1etRQ7w==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.10.0.tgz", + "integrity": "sha512-NL2Qc5L3iQEsyYzweq7qfgy5OtXCmGzGvhElGEd/SoFWEMOEczNh5s5ocaF01HDetxz+p8ecjNPA6cZxxIHmzA==", "dev": true, "requires": { "reusify": "^1.0.4" @@ -6153,12 +6109,12 @@ } }, "file-entry-cache": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", - "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.0.tgz", + "integrity": "sha512-fqoO76jZ3ZnYrXLDRxBR1YvOvc0k844kcOg40bgsPrE25LAb/PDqTY+ho64Xh2c8ZXgIKldchCFHczG2UVRcWA==", "dev": true, "requires": { - "flat-cache": "^2.0.1" + "flat-cache": "^3.0.4" } }, "fill-range": { @@ -6204,31 +6160,19 @@ } }, "flat-cache": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", - "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", "dev": true, "requires": { - "flatted": "^2.0.0", - "rimraf": "2.6.3", - "write": "1.0.3" - }, - "dependencies": { - "rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - } + "flatted": "^3.1.0", + "rimraf": "^3.0.2" } }, "flatted": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", - "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.0.tgz", + "integrity": "sha512-tW+UkmtNg/jv9CSofAKvgVcO7c2URjhTdW1ZTkcAritblu8tajiYy7YisnIflEwtKssCtOxpnBRoCB7iap0/TA==", "dev": true }, "for-in": { @@ -6340,9 +6284,9 @@ "dev": true }, "get-intrinsic": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.0.1.tgz", - "integrity": "sha512-ZnWP+AmS1VUaLgTRy47+zKtjTxz+0xMpx3I52i+aalBK1QP19ggLF3Db89KJX7kjfOfP2eoa01qc++GwPgufPg==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.0.2.tgz", + "integrity": "sha512-aeX0vrFm21ILl3+JpFFRNe9aUvp6VFZb2/CTbgLb8j75kOhvoNYjt9d8KA/tJG4gSo8nzEDedRl0h7vDmBYRVg==", "dev": true, "requires": { "function-bind": "^1.1.1", @@ -6783,7 +6727,8 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=", - "dev": true + "dev": true, + "optional": true }, "handlebars": { "version": "4.7.6", @@ -6941,9 +6886,9 @@ "dev": true }, "husky": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/husky/-/husky-4.3.0.tgz", - "integrity": "sha512-tTMeLCLqSBqnflBZnlVDhpaIMucSGaYyX6855jM4AguGeWCeSzNdb1mfyWduTZ3pe3SJVvVWGL0jO1iKZVPfTA==", + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/husky/-/husky-4.3.6.tgz", + "integrity": "sha512-o6UjVI8xtlWRL5395iWq9LKDyp/9TE7XMOTvIpEVzW638UcGxTmV5cfel6fsk/jbZSTlvfGVJf2svFtybcIZag==", "dev": true, "requires": { "chalk": "^4.0.0", @@ -7039,9 +6984,9 @@ "dev": true }, "import-fresh": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.2.tgz", - "integrity": "sha512-cTPNrlvJT6twpYy+YmKUKrTSjWFs3bjYjAhCwm+z4EOCubZxAuO+hHpRN64TqjEaYSHs7tJAE0w1CKMGmsG/lw==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, "requires": { "parent-module": "^1.0.0", @@ -7106,9 +7051,9 @@ "dev": true }, "ini": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", "dev": true }, "interpret": { @@ -7281,9 +7226,9 @@ } }, "is-negative-zero": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.0.tgz", - "integrity": "sha1-lVOxIbD6wohp2p7UWeIMdUN4hGE=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", + "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", "dev": true }, "is-number": { @@ -7413,6 +7358,7 @@ "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", "dev": true, + "optional": true, "requires": { "is-docker": "^2.0.0" } @@ -9018,9 +8964,9 @@ "dev": true }, "js-yaml": { - "version": "3.14.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", - "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "dev": true, "requires": { "argparse": "^1.0.7", @@ -9111,7 +9057,8 @@ "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true }, "json-stable-stringify-without-jsonify": { "version": "1.0.1", @@ -9129,6 +9076,7 @@ "version": "2.1.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", + "dev": true, "requires": { "minimist": "^1.2.5" } @@ -9204,9 +9152,9 @@ "dev": true }, "lint-staged": { - "version": "10.5.2", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-10.5.2.tgz", - "integrity": "sha512-e8AYR1TDlzwB8VVd38Xu2lXDZf6BcshVqKVuBQThDJRaJLobqKnpbm4dkwJ2puypQNbLr9KF/9mfA649mAGvjA==", + "version": "10.5.3", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-10.5.3.tgz", + "integrity": "sha512-TanwFfuqUBLufxCc3RUtFEkFraSPNR3WzWcGF39R3f2J7S9+iF9W0KTVLfSy09lYGmZS5NDCxjNvhGMSJyFCWg==", "dev": true, "requires": { "chalk": "^4.1.0", @@ -9270,9 +9218,9 @@ "dev": true }, "commander": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.0.tgz", - "integrity": "sha512-zP4jEKbe8SHzKJYQmq8Y9gYjtO/POJLgIdKgV7B9qNmABVFVc+ctqSX6iXh4mCpJfRBOabiZ2YKPg8ciDw6C+Q==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", "dev": true }, "cross-spawn": { @@ -9532,13 +9480,25 @@ "dev": true }, "loader-utils": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", - "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, "requires": { "big.js": "^5.2.2", "emojis-list": "^3.0.0", - "json5": "^2.1.2" + "json5": "^1.0.1" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + } } }, "locate-path": { @@ -9663,49 +9623,6 @@ "cli-cursor": "^3.1.0", "slice-ansi": "^4.0.0", "wrap-ansi": "^6.2.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - } - } } }, "loud-rejection": { @@ -9873,7 +9790,8 @@ "minimist": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true }, "minimist-options": { "version": "4.1.0", @@ -9907,15 +9825,6 @@ } } }, - "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } - }, "modify-values": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz", @@ -10070,6 +9979,7 @@ "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-8.0.1.tgz", "integrity": "sha512-BvEXF+UmsnAfYfoapKM9nGxnP+Wn7P91YfXmrKnfcYCx6VBeoN5Ez5Ogck6I8Bi5k4RlpqRYaw75pAwzX9OphA==", "dev": true, + "optional": true, "requires": { "growly": "^1.3.0", "is-wsl": "^2.2.0", @@ -10084,6 +9994,7 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", "dev": true, + "optional": true, "requires": { "lru-cache": "^6.0.0" } @@ -10093,6 +10004,7 @@ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, + "optional": true, "requires": { "isexe": "^2.0.0" } @@ -10774,7 +10686,8 @@ "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true }, "q": { "version": "1.5.1", @@ -11281,13 +11194,14 @@ } }, "schema-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", - "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, "requires": { - "@types/json-schema": "^7.0.6", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" } }, "semver": { @@ -11382,7 +11296,8 @@ "version": "0.1.1", "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", - "dev": true + "dev": true, + "optional": true }, "sigmund": { "version": "1.0.1", @@ -11409,20 +11324,38 @@ "dev": true }, "slice-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", - "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", "dev": true, "requires": { - "ansi-styles": "^3.2.0", - "astral-regex": "^1.0.0", - "is-fullwidth-code-point": "^2.0.0" + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" }, "dependencies": { - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true } } @@ -11961,55 +11894,15 @@ "dev": true }, "table": { - "version": "5.4.6", - "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", - "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/table/-/table-6.0.4.tgz", + "integrity": "sha512-sBT4xRLdALd+NFBvwOz8bw4b15htyythha+q+DVZqy2RS08PPC8O2sZFgJYEY7bJvbCFKccs+WIZ/cd+xxTWCw==", "dev": true, "requires": { - "ajv": "^6.10.2", - "lodash": "^4.17.14", - "slice-ansi": "^2.1.0", - "string-width": "^3.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - } + "ajv": "^6.12.4", + "lodash": "^4.17.20", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.0" } }, "tapable": { @@ -12075,6 +11968,17 @@ "requires": { "yocto-queue": "^0.1.0" } + }, + "schema-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", + "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.6", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } } } }, @@ -12302,9 +12206,9 @@ } }, "uglify-js": { - "version": "3.12.1", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.12.1.tgz", - "integrity": "sha512-o8lHP20KjIiQe5b/67Rh68xEGRrc2SRsCuuoYclXXoC74AfSRGblU1HKzJWH3HxPZ+Ort85fWHpSX7KwBUC9CQ==", + "version": "3.12.3", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.12.3.tgz", + "integrity": "sha512-feZzR+kIcSVuLi3s/0x0b2Tx4Iokwqt+8PJM7yRHKuldg4MLdam4TCFeICv+lgDtuYiCtdmrtIP+uN9LWvDasw==", "dev": true, "optional": true }, @@ -12405,6 +12309,7 @@ "version": "4.4.0", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.0.tgz", "integrity": "sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g==", + "dev": true, "requires": { "punycode": "^2.1.0" } @@ -12437,10 +12342,11 @@ "dev": true }, "uuid": { - "version": "8.3.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.1.tgz", - "integrity": "sha512-FOmRr+FmWEIG8uhZv6C2bTgEVXsHk08kE7mPlrBbEe+c3r9pjceVPgupIfNIhc4yx55H69OXANrUaSuu9eInKg==", - "dev": true + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "optional": true }, "v8-compile-cache": { "version": "2.2.0", @@ -12449,9 +12355,9 @@ "dev": true }, "v8-to-istanbul": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-7.0.0.tgz", - "integrity": "sha512-fLL2rFuQpMtm9r8hrAV2apXX/WqHJ6+IC4/eQVdMDGBUgH/YMV4Gv3duk3kjmyg6uiQWBAA9nJwue4iJUOkHeA==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-7.1.0.tgz", + "integrity": "sha512-uXUVqNUCLa0AH1vuVxzi+MI4RfxEOKt9pBgKwHbgH7st8Kv2P1m+jvWNnektzBh5QShF3ODgKmUFCf38LnVz1g==", "dev": true, "requires": { "@types/istanbul-lib-coverage": "^2.0.1", @@ -12516,9 +12422,9 @@ } }, "watchpack": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.0.1.tgz", - "integrity": "sha512-vO8AKGX22ZRo6PiOFM9dC0re8IcKh8Kd/aH2zeqUc6w4/jBGlTy2P7fTC6ekT0NjVeGjgU2dGC5rNstKkeLEQg==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.1.0.tgz", + "integrity": "sha512-UjgD1mqjkG99+3lgG36at4wPnUXNvis2v1utwTgQ43C22c4LD71LsYMExdWXh4HZ+RmW+B0t1Vrg2GpXAkTOQw==", "dev": true, "requires": { "glob-to-regexp": "^0.4.1", @@ -12532,17 +12438,17 @@ "dev": true }, "webpack": { - "version": "5.9.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.9.0.tgz", - "integrity": "sha512-YnnqIV/uAS5ZrNpctSv378qV7HmbJ74DL+XfvMxzbX1bV9e7eeT6eEWU4wuUw33CNr/HspBh7R/xQlVjTEyAeA==", + "version": "5.11.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.11.0.tgz", + "integrity": "sha512-ubWv7iP54RqAC/VjixgpnLLogCFbAfSOREcSWnnOlZEU8GICC5eKmJSu6YEnph2N2amKqY9rvxSwgyHxVqpaRw==", "dev": true, "requires": { "@types/eslint-scope": "^3.7.0", "@types/estree": "^0.0.45", - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-module-context": "1.9.0", - "@webassemblyjs/wasm-edit": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0", + "@webassemblyjs/ast": "1.9.1", + "@webassemblyjs/helper-module-context": "1.9.1", + "@webassemblyjs/wasm-edit": "1.9.1", + "@webassemblyjs/wasm-parser": "1.9.1", "acorn": "^8.0.4", "browserslist": "^4.14.5", "chrome-trace-event": "^1.0.2", @@ -12555,7 +12461,7 @@ "loader-runner": "^4.1.0", "mime-types": "^2.1.27", "neo-async": "^2.6.2", - "pkg-dir": "^4.2.0", + "pkg-dir": "^5.0.0", "schema-utils": "^3.0.0", "tapable": "^2.1.1", "terser-webpack-plugin": "^5.0.3", @@ -12569,13 +12475,61 @@ "integrity": "sha512-XNP0PqF1XD19ZlLKvB7cMmnZswW4C/03pRHgirB30uSJTaS3A3V1/P4sS3HPvFmjoriPCJQs+JDSbm4bL1TxGQ==", "dev": true }, + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "requires": { + "p-locate": "^5.0.0" + } + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "requires": { + "p-limit": "^3.0.2" + } + }, "pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-5.0.0.tgz", + "integrity": "sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==", "dev": true, "requires": { - "find-up": "^4.0.0" + "find-up": "^5.0.0" + } + }, + "schema-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", + "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.6", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" } } } @@ -12622,7 +12576,8 @@ "whatwg-mimetype": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", - "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==" + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", + "dev": true }, "whatwg-url": { "version": "8.4.0", @@ -12711,15 +12666,6 @@ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true }, - "write": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", - "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", - "dev": true, - "requires": { - "mkdirp": "^0.5.1" - } - }, "write-file-atomic": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", @@ -12733,9 +12679,9 @@ } }, "ws": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.0.tgz", - "integrity": "sha512-kyFwXuV/5ymf+IXhS6f0+eAFvydbaBW3zjpT6hUdAh/hbVjTIB5EHBGi0bPoCLSK2wcuz3BrEkB9LrYv1Nm4NQ==", + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.1.tgz", + "integrity": "sha512-pTsP8UAfhy3sk1lSk/O/s4tjD0CRwvMnzvwr4OKGX7ZvqZtUyx4KIJB5JWbkykPoc55tixMGgTNoh3k4FkNGFQ==", "dev": true }, "xml-name-validator": { diff --git a/package.json b/package.json index fa9fcda..7b367e8 100644 --- a/package.json +++ b/package.json @@ -38,20 +38,17 @@ "dist" ], "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" + "webpack": "^5.0.0" }, "dependencies": { "abab": "^2.0.5", "iconv-lite": "^0.6.2", - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0", - "source-map": "^0.6.1", - "whatwg-mimetype": "^2.3.0" + "source-map": "^0.6.1" }, "devDependencies": { - "@babel/cli": "^7.12.8", - "@babel/core": "^7.12.9", - "@babel/preset-env": "^7.12.7", + "@babel/cli": "^7.12.10", + "@babel/core": "^7.12.10", + "@babel/preset-env": "^7.12.11", "@commitlint/cli": "^11.0.0", "@commitlint/config-conventional": "^11.0.0", "@webpack-contrib/defaults": "^6.3.0", @@ -60,17 +57,17 @@ "cross-env": "^7.0.3", "del": "^6.0.0", "del-cli": "^3.0.1", - "eslint": "^7.14.0", - "eslint-config-prettier": "^6.15.0", + "eslint": "^7.16.0", + "eslint-config-prettier": "^7.1.0", "eslint-plugin-import": "^2.22.1", - "husky": "^4.3.0", + "husky": "^4.3.6", "jest": "^26.6.3", - "lint-staged": "^10.5.2", + "lint-staged": "^10.5.3", "memfs": "^3.2.0", "npm-run-all": "^4.1.5", "prettier": "^2.2.1", "standard-version": "^9.0.0", - "webpack": "^5.9.0" + "webpack": "^5.11.0" }, "keywords": [ "webpack" diff --git a/src/index.js b/src/index.js index 862234d..d3fe4a6 100644 --- a/src/index.js +++ b/src/index.js @@ -4,22 +4,12 @@ */ import path from "path"; -import { getOptions } from "loader-utils"; -import { validate } from "schema-utils"; - import schema from "./options.json"; import { getSourceMappingURL, fetchFromURL, flattenSourceMap } from "./utils"; export default async function loader(input, inputMap) { - const options = getOptions(this); - - validate(schema, options, { - name: "Source Map Loader", - baseDataPath: "options", - }); - + const options = this.getOptions(schema); const { sourceMappingURL, replacementString } = getSourceMappingURL(input); - const callback = this.async(); if (!sourceMappingURL) { diff --git a/src/options.json b/src/options.json index 41fc5b4..6e6850a 100644 --- a/src/options.json +++ b/src/options.json @@ -1,4 +1,5 @@ { + "title": "Source Map Loader options", "type": "object", "additionalProperties": false, "properties": { diff --git a/src/parse-data-url.js b/src/parse-data-url.js index 722970b..bc9803a 100644 --- a/src/parse-data-url.js +++ b/src/parse-data-url.js @@ -1,6 +1,67 @@ -import MIMEType from "whatwg-mimetype"; import { atob } from "abab"; +const removeLeadingAndTrailingHTTPWhitespace = (string) => + string.replace(/^[ \t\n\r]+/, "").replace(/[ \t\n\r]+$/, ""); + +const removeTrailingHTTPWhitespace = (string) => + string.replace(/[ \t\n\r]+$/, ""); + +const isHTTPWhitespaceChar = (char) => + char === " " || char === "\t" || char === "\n" || char === "\r"; + +const solelyContainsHTTPTokenCodePoints = (string) => + /^[-!#$%&'*+.^_`|~A-Za-z0-9]*$/.test(string); + +const soleyContainsHTTPQuotedStringTokenCodePoints = (string) => + /^[\t\u0020-\u007E\u0080-\u00FF]*$/.test(string); + +const asciiLowercase = (string) => + string.replace(/[A-Z]/g, (l) => l.toLowerCase()); + +const collectAnHTTPQuotedString = (input, position) => { + let value = ""; + + // eslint-disable-next-line no-param-reassign + position += 1; + + // eslint-disable-next-line no-constant-condition + while (true) { + while ( + position < input.length && + input[position] !== '"' && + input[position] !== "\\" + ) { + value += input[position]; + // eslint-disable-next-line no-param-reassign + position += 1; + } + + if (position >= input.length) { + break; + } + + const quoteOrBackslash = input[position]; + + // eslint-disable-next-line no-param-reassign + position += 1; + + if (quoteOrBackslash === "\\") { + if (position >= input.length) { + value += "\\"; + break; + } + + value += input[position]; + // eslint-disable-next-line no-param-reassign + position += 1; + } else { + break; + } + } + + return [value, position]; +}; + function isASCIIHex(c) { return ( (c >= 0x30 && c <= 0x39) || @@ -56,14 +117,16 @@ export default function parseDataUrl(stringInput) { const input = parsedUrl.toString().substring(5); let position = 0; - let mimeType = ""; + let mediaType = ""; while (position < input.length && input[position] !== ",") { - mimeType += input[position]; + mediaType += input[position]; position += 1; } - mimeType = mimeType.replace(/^[ \t\n\f\r]+/, "").replace(/[ \t\n\f\r]+$/, ""); + mediaType = mediaType + .replace(/^[ \t\n\f\r]+/, "") + .replace(/[ \t\n\f\r]+$/, ""); if (position === input.length) { return null; @@ -76,7 +139,9 @@ export default function parseDataUrl(stringInput) { let body = Buffer.from(percentDecodeBytes(Buffer.from(encodedBody, "utf-8"))); // Can't use /i regexp flag because it isn't restricted to ASCII. - const mimeTypeBase64MatchResult = /(.*); *[Bb][Aa][Ss][Ee]64$/.exec(mimeType); + const mimeTypeBase64MatchResult = /(.*); *[Bb][Aa][Ss][Ee]64$/.exec( + mediaType + ); if (mimeTypeBase64MatchResult) { const stringBody = body.toString("binary"); @@ -88,20 +153,141 @@ export default function parseDataUrl(stringInput) { body = Buffer.from(asString, "binary"); - [, mimeType] = mimeTypeBase64MatchResult; + [, mediaType] = mimeTypeBase64MatchResult; } - if (mimeType.startsWith(";")) { - mimeType = `text/plain ${mimeType}`; + if (mediaType.startsWith(";")) { + mediaType = `text/plain ${mediaType}`; } - let mimeTypeRecord; + const result = { + // eslint-disable-next-line no-undefined + type: undefined, + // eslint-disable-next-line no-undefined + subtype: undefined, + parameters: new Map(), + isBase64: Boolean(mimeTypeBase64MatchResult), + body, + }; - try { - mimeTypeRecord = new MIMEType(mimeType); - } catch (e) { - mimeTypeRecord = new MIMEType("text/plain;charset=US-ASCII"); + if (!mediaType) { + return result; + } + + const inputMediaType = removeLeadingAndTrailingHTTPWhitespace(mediaType); + + let positionMediaType = 0; + let type = ""; + + while ( + positionMediaType < inputMediaType.length && + inputMediaType[positionMediaType] !== "/" + ) { + type += inputMediaType[positionMediaType]; + positionMediaType += 1; + } + + if (type.length === 0 || !solelyContainsHTTPTokenCodePoints(type)) { + return result; + } + + if (positionMediaType >= inputMediaType.length) { + return result; + } + + // Skips past "/" + positionMediaType += 1; + + let subtype = ""; + + while ( + positionMediaType < inputMediaType.length && + inputMediaType[positionMediaType] !== ";" + ) { + subtype += inputMediaType[positionMediaType]; + positionMediaType += 1; + } + + subtype = removeTrailingHTTPWhitespace(subtype); + + if (subtype.length === 0 || !solelyContainsHTTPTokenCodePoints(subtype)) { + return result; + } + + result.type = asciiLowercase(type); + result.subtype = asciiLowercase(subtype); + + while (positionMediaType < inputMediaType.length) { + // Skip past ";" + positionMediaType += 1; + + while (isHTTPWhitespaceChar(inputMediaType[positionMediaType])) { + positionMediaType += 1; + } + + let parameterName = ""; + + while ( + positionMediaType < inputMediaType.length && + inputMediaType[positionMediaType] !== ";" && + inputMediaType[positionMediaType] !== "=" + ) { + parameterName += inputMediaType[positionMediaType]; + positionMediaType += 1; + } + + parameterName = asciiLowercase(parameterName); + + if (positionMediaType < inputMediaType.length) { + if (inputMediaType[positionMediaType] === ";") { + // eslint-disable-next-line no-continue + continue; + } + + // Skip past "=" + positionMediaType += 1; + } + + let parameterValue = ""; + + if (inputMediaType[positionMediaType] === '"') { + [parameterValue, positionMediaType] = collectAnHTTPQuotedString( + inputMediaType, + positionMediaType + ); + + while ( + positionMediaType < inputMediaType.length && + inputMediaType[positionMediaType] !== ";" + ) { + positionMediaType += 1; + } + } else { + while ( + positionMediaType < inputMediaType.length && + inputMediaType[positionMediaType] !== ";" + ) { + parameterValue += inputMediaType[positionMediaType]; + positionMediaType += 1; + } + + parameterValue = removeTrailingHTTPWhitespace(parameterValue); + + if (parameterValue === "") { + // eslint-disable-next-line no-continue + continue; + } + } + + if ( + parameterName.length > 0 && + solelyContainsHTTPTokenCodePoints(parameterName) && + soleyContainsHTTPQuotedStringTokenCodePoints(parameterValue) && + !result.parameters.has(parameterName) + ) { + result.parameters.set(parameterName, parameterValue); + } } - return { mimeType: mimeTypeRecord, body }; + return result; } diff --git a/src/utils.js b/src/utils.js index b7caea2..d175ea1 100644 --- a/src/utils.js +++ b/src/utils.js @@ -2,9 +2,7 @@ import path from "path"; import urlUtils from "url"; import sourceMap from "source-map"; - import { decode } from "iconv-lite"; -import { urlToRequest } from "loader-utils"; import parseDataURL from "./parse-data-url"; import labelsToNames from "./labels-to-names"; @@ -97,15 +95,13 @@ function getSourceMappingURL(code) { }; } -function getAbsolutePath(context, url, sourceRoot) { - const request = urlToRequest(url, true); - +function getAbsolutePath(context, request, sourceRoot) { if (sourceRoot) { if (path.isAbsolute(sourceRoot)) { return path.join(sourceRoot, request); } - return path.join(context, urlToRequest(sourceRoot, true), request); + return path.join(context, sourceRoot, request); } return path.join(context, request); @@ -115,10 +111,12 @@ function fetchFromDataURL(loaderContext, sourceURL) { const dataURL = parseDataURL(sourceURL); if (dataURL) { - dataURL.encodingName = - labelToName(dataURL.mimeType.parameters.get("charset")) || "UTF-8"; + // https://tools.ietf.org/html/rfc4627 + // JSON text SHALL be encoded in Unicode. The default encoding is UTF-8. + const encodingName = + labelToName(dataURL.parameters.get("charset")) || "UTF-8"; - return decode(dataURL.body, dataURL.encodingName); + return decode(dataURL.body, encodingName); } throw new Error(`Failed to parse source map from "data" URL: ${sourceURL}`); diff --git a/test/__snapshots__/parseDataUrl.test.js.snap b/test/__snapshots__/parseDataUrl.test.js.snap new file mode 100644 index 0000000..f6d1569 --- /dev/null +++ b/test/__snapshots__/parseDataUrl.test.js.snap @@ -0,0 +1,3258 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`parse-data-url should work with url by "0" index 1`] = ` +Object { + "original": "data://test/,X", + "parsed": Object { + "body": Object { + "data": Array [ + 88, + ], + "type": "Buffer", + }, + "isBase64": false, + "parameters": Map {}, + "subtype": undefined, + "type": undefined, + }, +} +`; + +exports[`parse-data-url should work with url by "1" index 1`] = ` +Object { + "original": "http://domain.com", + "parsed": null, +} +`; + +exports[`parse-data-url should work with url by "2" index 1`] = ` +Object { + "original": "data://test:test/,X", + "parsed": null, +} +`; + +exports[`parse-data-url should work with url by "3" index 1`] = ` +Object { + "original": "data:,X", + "parsed": Object { + "body": Object { + "data": Array [ + 88, + ], + "type": "Buffer", + }, + "isBase64": false, + "parameters": Map {}, + "subtype": undefined, + "type": undefined, + }, +} +`; + +exports[`parse-data-url should work with url by "4" index 1`] = ` +Object { + "original": "data:text/html", + "parsed": null, +} +`; + +exports[`parse-data-url should work with url by "5" index 1`] = ` +Object { + "original": "data:text/html ;charset=x ", + "parsed": null, +} +`; + +exports[`parse-data-url should work with url by "6" index 1`] = ` +Object { + "original": "data:,", + "parsed": Object { + "body": Object { + "data": Array [], + "type": "Buffer", + }, + "isBase64": false, + "parameters": Map {}, + "subtype": undefined, + "type": undefined, + }, +} +`; + +exports[`parse-data-url should work with url by "7" index 1`] = ` +Object { + "original": "data:,X#X", + "parsed": Object { + "body": Object { + "data": Array [ + 88, + ], + "type": "Buffer", + }, + "isBase64": false, + "parameters": Map {}, + "subtype": undefined, + "type": undefined, + }, +} +`; + +exports[`parse-data-url should work with url by "8" index 1`] = ` +Object { + "original": "data:,%FF", + "parsed": Object { + "body": Object { + "data": Array [ + 255, + ], + "type": "Buffer", + }, + "isBase64": false, + "parameters": Map {}, + "subtype": undefined, + "type": undefined, + }, +} +`; + +exports[`parse-data-url should work with url by "9" index 1`] = ` +Object { + "original": "data:text/plain,X", + "parsed": Object { + "body": Object { + "data": Array [ + 88, + ], + "type": "Buffer", + }, + "isBase64": false, + "parameters": Map {}, + "subtype": "plain", + "type": "text", + }, +} +`; + +exports[`parse-data-url should work with url by "10" index 1`] = ` +Object { + "original": "data:text/plain ,X", + "parsed": Object { + "body": Object { + "data": Array [ + 88, + ], + "type": "Buffer", + }, + "isBase64": false, + "parameters": Map {}, + "subtype": "plain", + "type": "text", + }, +} +`; + +exports[`parse-data-url should work with url by "11" index 1`] = ` +Object { + "original": "data:text/plain%20,X", + "parsed": Object { + "body": Object { + "data": Array [ + 88, + ], + "type": "Buffer", + }, + "isBase64": false, + "parameters": Map {}, + "subtype": "plain%20", + "type": "text", + }, +} +`; + +exports[`parse-data-url should work with url by "12" index 1`] = ` +Object { + "original": "data:text/plain ,X", + "parsed": Object { + "body": Object { + "data": Array [ + 88, + ], + "type": "Buffer", + }, + "isBase64": false, + "parameters": Map {}, + "subtype": "plain%0c", + "type": "text", + }, +} +`; + +exports[`parse-data-url should work with url by "13" index 1`] = ` +Object { + "original": "data:text/plain%0C,X", + "parsed": Object { + "body": Object { + "data": Array [ + 88, + ], + "type": "Buffer", + }, + "isBase64": false, + "parameters": Map {}, + "subtype": "plain%0c", + "type": "text", + }, +} +`; + +exports[`parse-data-url should work with url by "14" index 1`] = ` +Object { + "original": "data:text/plain;,X", + "parsed": Object { + "body": Object { + "data": Array [ + 88, + ], + "type": "Buffer", + }, + "isBase64": false, + "parameters": Map {}, + "subtype": "plain", + "type": "text", + }, +} +`; + +exports[`parse-data-url should work with url by "15" index 1`] = ` +Object { + "original": "data:;x=x;charset=x,X", + "parsed": Object { + "body": Object { + "data": Array [ + 88, + ], + "type": "Buffer", + }, + "isBase64": false, + "parameters": Map { + "x" => "x", + "charset" => "x", + }, + "subtype": "plain", + "type": "text", + }, +} +`; + +exports[`parse-data-url should work with url by "16" index 1`] = ` +Object { + "original": "data:;x=x,X", + "parsed": Object { + "body": Object { + "data": Array [ + 88, + ], + "type": "Buffer", + }, + "isBase64": false, + "parameters": Map { + "x" => "x", + }, + "subtype": "plain", + "type": "text", + }, +} +`; + +exports[`parse-data-url should work with url by "17" index 1`] = ` +Object { + "original": "data:text/plain;charset=windows-1252,%C2%B1", + "parsed": Object { + "body": Object { + "data": Array [ + 194, + 177, + ], + "type": "Buffer", + }, + "isBase64": false, + "parameters": Map { + "charset" => "windows-1252", + }, + "subtype": "plain", + "type": "text", + }, +} +`; + +exports[`parse-data-url should work with url by "18" index 1`] = ` +Object { + "original": "data:text/plain;Charset=UTF-8,%C2%B1", + "parsed": Object { + "body": Object { + "data": Array [ + 194, + 177, + ], + "type": "Buffer", + }, + "isBase64": false, + "parameters": Map { + "charset" => "UTF-8", + }, + "subtype": "plain", + "type": "text", + }, +} +`; + +exports[`parse-data-url should work with url by "19" index 1`] = ` +Object { + "original": "data:image/gif,%C2%B1", + "parsed": Object { + "body": Object { + "data": Array [ + 194, + 177, + ], + "type": "Buffer", + }, + "isBase64": false, + "parameters": Map {}, + "subtype": "gif", + "type": "image", + }, +} +`; + +exports[`parse-data-url should work with url by "20" index 1`] = ` +Object { + "original": "data:IMAGE/gif,%C2%B1", + "parsed": Object { + "body": Object { + "data": Array [ + 194, + 177, + ], + "type": "Buffer", + }, + "isBase64": false, + "parameters": Map {}, + "subtype": "gif", + "type": "image", + }, +} +`; + +exports[`parse-data-url should work with url by "21" index 1`] = ` +Object { + "original": "data:IMAGE/gif;hi=x,%C2%B1", + "parsed": Object { + "body": Object { + "data": Array [ + 194, + 177, + ], + "type": "Buffer", + }, + "isBase64": false, + "parameters": Map { + "hi" => "x", + }, + "subtype": "gif", + "type": "image", + }, +} +`; + +exports[`parse-data-url should work with url by "22" index 1`] = ` +Object { + "original": "data:IMAGE/gif;CHARSET=x,%C2%B1", + "parsed": Object { + "body": Object { + "data": Array [ + 194, + 177, + ], + "type": "Buffer", + }, + "isBase64": false, + "parameters": Map { + "charset" => "x", + }, + "subtype": "gif", + "type": "image", + }, +} +`; + +exports[`parse-data-url should work with url by "23" index 1`] = ` +Object { + "original": "data: ,%FF", + "parsed": Object { + "body": Object { + "data": Array [ + 255, + ], + "type": "Buffer", + }, + "isBase64": false, + "parameters": Map {}, + "subtype": undefined, + "type": undefined, + }, +} +`; + +exports[`parse-data-url should work with url by "24" index 1`] = ` +Object { + "original": "data:%20,%FF", + "parsed": Object { + "body": Object { + "data": Array [ + 255, + ], + "type": "Buffer", + }, + "isBase64": false, + "parameters": Map {}, + "subtype": undefined, + "type": undefined, + }, +} +`; + +exports[`parse-data-url should work with url by "25" index 1`] = ` +Object { + "original": "data: ,%FF", + "parsed": Object { + "body": Object { + "data": Array [ + 255, + ], + "type": "Buffer", + }, + "isBase64": false, + "parameters": Map {}, + "subtype": undefined, + "type": undefined, + }, +} +`; + +exports[`parse-data-url should work with url by "26" index 1`] = ` +Object { + "original": "data:%1F,%FF", + "parsed": Object { + "body": Object { + "data": Array [ + 255, + ], + "type": "Buffer", + }, + "isBase64": false, + "parameters": Map {}, + "subtype": undefined, + "type": undefined, + }, +} +`; + +exports[`parse-data-url should work with url by "27" index 1`] = ` +Object { + "original": "data:,%FF", + "parsed": Object { + "body": Object { + "data": Array [ + 255, + ], + "type": "Buffer", + }, + "isBase64": false, + "parameters": Map {}, + "subtype": undefined, + "type": undefined, + }, +} +`; + +exports[`parse-data-url should work with url by "28" index 1`] = ` +Object { + "original": "data:%00,%FF", + "parsed": Object { + "body": Object { + "data": Array [ + 255, + ], + "type": "Buffer", + }, + "isBase64": false, + "parameters": Map {}, + "subtype": undefined, + "type": undefined, + }, +} +`; + +exports[`parse-data-url should work with url by "29" index 1`] = ` +Object { + "original": "data:text/html ,X", + "parsed": Object { + "body": Object { + "data": Array [ + 88, + ], + "type": "Buffer", + }, + "isBase64": false, + "parameters": Map {}, + "subtype": "html", + "type": "text", + }, +} +`; + +exports[`parse-data-url should work with url by "30" index 1`] = ` +Object { + "original": "data:text / html,X", + "parsed": Object { + "body": Object { + "data": Array [ + 88, + ], + "type": "Buffer", + }, + "isBase64": false, + "parameters": Map {}, + "subtype": undefined, + "type": undefined, + }, +} +`; + +exports[`parse-data-url should work with url by "31" index 1`] = ` +Object { + "original": "data:†,X", + "parsed": Object { + "body": Object { + "data": Array [ + 88, + ], + "type": "Buffer", + }, + "isBase64": false, + "parameters": Map {}, + "subtype": undefined, + "type": undefined, + }, +} +`; + +exports[`parse-data-url should work with url by "32" index 1`] = ` +Object { + "original": "data:†/†,X", + "parsed": Object { + "body": Object { + "data": Array [ + 88, + ], + "type": "Buffer", + }, + "isBase64": false, + "parameters": Map {}, + "subtype": "%e2%80%a0", + "type": "%e2%80%a0", + }, +} +`; + +exports[`parse-data-url should work with url by "33" index 1`] = ` +Object { + "original": "data:X,X", + "parsed": Object { + "body": Object { + "data": Array [ + 88, + ], + "type": "Buffer", + }, + "isBase64": false, + "parameters": Map {}, + "subtype": undefined, + "type": undefined, + }, +} +`; + +exports[`parse-data-url should work with url by "34" index 1`] = ` +Object { + "original": "data:image/png,X X", + "parsed": Object { + "body": Object { + "data": Array [ + 88, + 32, + 88, + ], + "type": "Buffer", + }, + "isBase64": false, + "parameters": Map {}, + "subtype": "png", + "type": "image", + }, +} +`; + +exports[`parse-data-url should work with url by "35" index 1`] = ` +Object { + "original": "data:application/javascript,X X", + "parsed": Object { + "body": Object { + "data": Array [ + 88, + 32, + 88, + ], + "type": "Buffer", + }, + "isBase64": false, + "parameters": Map {}, + "subtype": "javascript", + "type": "application", + }, +} +`; + +exports[`parse-data-url should work with url by "36" index 1`] = ` +Object { + "original": "data:application/xml,X X", + "parsed": Object { + "body": Object { + "data": Array [ + 88, + 32, + 88, + ], + "type": "Buffer", + }, + "isBase64": false, + "parameters": Map {}, + "subtype": "xml", + "type": "application", + }, +} +`; + +exports[`parse-data-url should work with url by "37" index 1`] = ` +Object { + "original": "data:text/javascript,X X", + "parsed": Object { + "body": Object { + "data": Array [ + 88, + 32, + 88, + ], + "type": "Buffer", + }, + "isBase64": false, + "parameters": Map {}, + "subtype": "javascript", + "type": "text", + }, +} +`; + +exports[`parse-data-url should work with url by "38" index 1`] = ` +Object { + "original": "data:text/plain,X X", + "parsed": Object { + "body": Object { + "data": Array [ + 88, + 32, + 88, + ], + "type": "Buffer", + }, + "isBase64": false, + "parameters": Map {}, + "subtype": "plain", + "type": "text", + }, +} +`; + +exports[`parse-data-url should work with url by "39" index 1`] = ` +Object { + "original": "data:unknown/unknown,X X", + "parsed": Object { + "body": Object { + "data": Array [ + 88, + 32, + 88, + ], + "type": "Buffer", + }, + "isBase64": false, + "parameters": Map {}, + "subtype": "unknown", + "type": "unknown", + }, +} +`; + +exports[`parse-data-url should work with url by "40" index 1`] = ` +Object { + "original": "data:text/plain;a=\\",\\",X", + "parsed": Object { + "body": Object { + "data": Array [ + 34, + 44, + 88, + ], + "type": "Buffer", + }, + "isBase64": false, + "parameters": Map { + "a" => "", + }, + "subtype": "plain", + "type": "text", + }, +} +`; + +exports[`parse-data-url should work with url by "41" index 1`] = ` +Object { + "original": "data:text/plain;a=%2C,X", + "parsed": Object { + "body": Object { + "data": Array [ + 88, + ], + "type": "Buffer", + }, + "isBase64": false, + "parameters": Map { + "a" => "%2C", + }, + "subtype": "plain", + "type": "text", + }, +} +`; + +exports[`parse-data-url should work with url by "42" index 1`] = ` +Object { + "original": "data:;base64;base64,WA", + "parsed": Object { + "body": Object { + "data": Array [ + 88, + ], + "type": "Buffer", + }, + "isBase64": true, + "parameters": Map {}, + "subtype": "plain", + "type": "text", + }, +} +`; + +exports[`parse-data-url should work with url by "43" index 1`] = ` +Object { + "original": "data:x/x;base64;base64,WA", + "parsed": Object { + "body": Object { + "data": Array [ + 88, + ], + "type": "Buffer", + }, + "isBase64": true, + "parameters": Map {}, + "subtype": "x", + "type": "x", + }, +} +`; + +exports[`parse-data-url should work with url by "44" index 1`] = ` +Object { + "original": "data:x/x;base64;charset=x,WA", + "parsed": Object { + "body": Object { + "data": Array [ + 87, + 65, + ], + "type": "Buffer", + }, + "isBase64": false, + "parameters": Map { + "charset" => "x", + }, + "subtype": "x", + "type": "x", + }, +} +`; + +exports[`parse-data-url should work with url by "45" index 1`] = ` +Object { + "original": "data:x/x;base64;charset=x;base64,WA", + "parsed": Object { + "body": Object { + "data": Array [ + 88, + ], + "type": "Buffer", + }, + "isBase64": true, + "parameters": Map { + "charset" => "x", + }, + "subtype": "x", + "type": "x", + }, +} +`; + +exports[`parse-data-url should work with url by "46" index 1`] = ` +Object { + "original": "data:x/x;base64;base64x,WA", + "parsed": Object { + "body": Object { + "data": Array [ + 87, + 65, + ], + "type": "Buffer", + }, + "isBase64": false, + "parameters": Map {}, + "subtype": "x", + "type": "x", + }, +} +`; + +exports[`parse-data-url should work with url by "47" index 1`] = ` +Object { + "original": "data:;base64,W%20A", + "parsed": Object { + "body": Object { + "data": Array [ + 88, + ], + "type": "Buffer", + }, + "isBase64": true, + "parameters": Map {}, + "subtype": undefined, + "type": undefined, + }, +} +`; + +exports[`parse-data-url should work with url by "48" index 1`] = ` +Object { + "original": "data:;base64,W%0CA", + "parsed": Object { + "body": Object { + "data": Array [ + 88, + ], + "type": "Buffer", + }, + "isBase64": true, + "parameters": Map {}, + "subtype": undefined, + "type": undefined, + }, +} +`; + +exports[`parse-data-url should work with url by "49" index 1`] = ` +Object { + "original": "data:x;base64x,WA", + "parsed": Object { + "body": Object { + "data": Array [ + 87, + 65, + ], + "type": "Buffer", + }, + "isBase64": false, + "parameters": Map {}, + "subtype": undefined, + "type": undefined, + }, +} +`; + +exports[`parse-data-url should work with url by "50" index 1`] = ` +Object { + "original": "data:x;base64;x,WA", + "parsed": Object { + "body": Object { + "data": Array [ + 87, + 65, + ], + "type": "Buffer", + }, + "isBase64": false, + "parameters": Map {}, + "subtype": undefined, + "type": undefined, + }, +} +`; + +exports[`parse-data-url should work with url by "51" index 1`] = ` +Object { + "original": "data:x;base64=x,WA", + "parsed": Object { + "body": Object { + "data": Array [ + 87, + 65, + ], + "type": "Buffer", + }, + "isBase64": false, + "parameters": Map {}, + "subtype": undefined, + "type": undefined, + }, +} +`; + +exports[`parse-data-url should work with url by "52" index 1`] = ` +Object { + "original": "data:; base64,WA", + "parsed": Object { + "body": Object { + "data": Array [ + 88, + ], + "type": "Buffer", + }, + "isBase64": true, + "parameters": Map {}, + "subtype": undefined, + "type": undefined, + }, +} +`; + +exports[`parse-data-url should work with url by "53" index 1`] = ` +Object { + "original": "data:; base64,WA", + "parsed": Object { + "body": Object { + "data": Array [ + 88, + ], + "type": "Buffer", + }, + "isBase64": true, + "parameters": Map {}, + "subtype": undefined, + "type": undefined, + }, +} +`; + +exports[`parse-data-url should work with url by "54" index 1`] = ` +Object { + "original": "data: ;charset=x ; base64,WA", + "parsed": Object { + "body": Object { + "data": Array [ + 88, + ], + "type": "Buffer", + }, + "isBase64": true, + "parameters": Map { + "charset" => "x", + }, + "subtype": "plain", + "type": "text", + }, +} +`; + +exports[`parse-data-url should work with url by "55" index 1`] = ` +Object { + "original": "data:;base64;,WA", + "parsed": Object { + "body": Object { + "data": Array [ + 87, + 65, + ], + "type": "Buffer", + }, + "isBase64": false, + "parameters": Map {}, + "subtype": "plain", + "type": "text", + }, +} +`; + +exports[`parse-data-url should work with url by "56" index 1`] = ` +Object { + "original": "data:;base64 ,WA", + "parsed": Object { + "body": Object { + "data": Array [ + 88, + ], + "type": "Buffer", + }, + "isBase64": true, + "parameters": Map {}, + "subtype": undefined, + "type": undefined, + }, +} +`; + +exports[`parse-data-url should work with url by "57" index 1`] = ` +Object { + "original": "data:;base64 ,WA", + "parsed": Object { + "body": Object { + "data": Array [ + 88, + ], + "type": "Buffer", + }, + "isBase64": true, + "parameters": Map {}, + "subtype": undefined, + "type": undefined, + }, +} +`; + +exports[`parse-data-url should work with url by "58" index 1`] = ` +Object { + "original": "data:;base 64,WA", + "parsed": Object { + "body": Object { + "data": Array [ + 87, + 65, + ], + "type": "Buffer", + }, + "isBase64": false, + "parameters": Map {}, + "subtype": "plain", + "type": "text", + }, +} +`; + +exports[`parse-data-url should work with url by "59" index 1`] = ` +Object { + "original": "data:;BASe64,WA", + "parsed": Object { + "body": Object { + "data": Array [ + 88, + ], + "type": "Buffer", + }, + "isBase64": true, + "parameters": Map {}, + "subtype": undefined, + "type": undefined, + }, +} +`; + +exports[`parse-data-url should work with url by "60" index 1`] = ` +Object { + "original": "data:;%62ase64,WA", + "parsed": Object { + "body": Object { + "data": Array [ + 87, + 65, + ], + "type": "Buffer", + }, + "isBase64": false, + "parameters": Map {}, + "subtype": "plain", + "type": "text", + }, +} +`; + +exports[`parse-data-url should work with url by "61" index 1`] = ` +Object { + "original": "data:%3Bbase64,WA", + "parsed": Object { + "body": Object { + "data": Array [ + 87, + 65, + ], + "type": "Buffer", + }, + "isBase64": false, + "parameters": Map {}, + "subtype": undefined, + "type": undefined, + }, +} +`; + +exports[`parse-data-url should work with url by "62" index 1`] = ` +Object { + "original": "data:;charset=x,X", + "parsed": Object { + "body": Object { + "data": Array [ + 88, + ], + "type": "Buffer", + }, + "isBase64": false, + "parameters": Map { + "charset" => "x", + }, + "subtype": "plain", + "type": "text", + }, +} +`; + +exports[`parse-data-url should work with url by "63" index 1`] = ` +Object { + "original": "data:; charset=x,X", + "parsed": Object { + "body": Object { + "data": Array [ + 88, + ], + "type": "Buffer", + }, + "isBase64": false, + "parameters": Map { + "charset" => "x", + }, + "subtype": "plain", + "type": "text", + }, +} +`; + +exports[`parse-data-url should work with url by "64" index 1`] = ` +Object { + "original": "data:;charset =x,X", + "parsed": Object { + "body": Object { + "data": Array [ + 88, + ], + "type": "Buffer", + }, + "isBase64": false, + "parameters": Map {}, + "subtype": "plain", + "type": "text", + }, +} +`; + +exports[`parse-data-url should work with url by "65" index 1`] = ` +Object { + "original": "data:;charset= x,X", + "parsed": Object { + "body": Object { + "data": Array [ + 88, + ], + "type": "Buffer", + }, + "isBase64": false, + "parameters": Map { + "charset" => " x", + }, + "subtype": "plain", + "type": "text", + }, +} +`; + +exports[`parse-data-url should work with url by "66" index 1`] = ` +Object { + "original": "data:;charset=,X", + "parsed": Object { + "body": Object { + "data": Array [ + 88, + ], + "type": "Buffer", + }, + "isBase64": false, + "parameters": Map {}, + "subtype": "plain", + "type": "text", + }, +} +`; + +exports[`parse-data-url should work with url by "67" index 1`] = ` +Object { + "original": "data:;charset,X", + "parsed": Object { + "body": Object { + "data": Array [ + 88, + ], + "type": "Buffer", + }, + "isBase64": false, + "parameters": Map {}, + "subtype": "plain", + "type": "text", + }, +} +`; + +exports[`parse-data-url should work with url by "68" index 1`] = ` +Object { + "original": "data:;charset=\\"x\\",X", + "parsed": Object { + "body": Object { + "data": Array [ + 88, + ], + "type": "Buffer", + }, + "isBase64": false, + "parameters": Map { + "charset" => "x", + }, + "subtype": "plain", + "type": "text", + }, +} +`; + +exports[`parse-data-url should work with url by "69" index 1`] = ` +Object { + "original": "data:;CHARSET=\\"X\\",X", + "parsed": Object { + "body": Object { + "data": Array [ + 88, + ], + "type": "Buffer", + }, + "isBase64": false, + "parameters": Map { + "charset" => "X", + }, + "subtype": "plain", + "type": "text", + }, +} +`; + +exports[`parse-data-url should work with url by "70" index 1`] = ` +Object { + "original": "no-data:;CHARSET=\\"X\\",X", + "parsed": null, +} +`; + +exports[`parse-data-url should work with url by "71" index 1`] = ` +Object { + "original": "data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==", + "parsed": Object { + "body": Object { + "data": Array [ + 71, + 73, + 70, + 56, + 57, + 97, + 1, + 0, + 1, + 0, + 128, + 0, + 0, + 255, + 255, + 255, + 0, + 0, + 0, + 33, + 249, + 4, + 1, + 0, + 0, + 0, + 0, + 44, + 0, + 0, + 0, + 0, + 1, + 0, + 1, + 0, + 0, + 2, + 2, + 68, + 1, + 0, + 59, + ], + "type": "Buffer", + }, + "isBase64": true, + "parameters": Map {}, + "subtype": "gif", + "type": "image", + }, +} +`; + +exports[`parse-data-url should work with url by "72" index 1`] = ` +Object { + "original": "DATA:IMAGE/GIF;BASE64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==", + "parsed": Object { + "body": Object { + "data": Array [ + 71, + 73, + 70, + 56, + 57, + 97, + 1, + 0, + 1, + 0, + 128, + 0, + 0, + 255, + 255, + 255, + 0, + 0, + 0, + 33, + 249, + 4, + 1, + 0, + 0, + 0, + 0, + 44, + 0, + 0, + 0, + 0, + 1, + 0, + 1, + 0, + 0, + 2, + 2, + 68, + 1, + 0, + 59, + ], + "type": "Buffer", + }, + "isBase64": true, + "parameters": Map {}, + "subtype": "gif", + "type": "image", + }, +} +`; + +exports[`parse-data-url should work with url by "73" index 1`] = ` +Object { + "original": "data:,Hello%2C%20World!", + "parsed": Object { + "body": Object { + "data": Array [ + 72, + 101, + 108, + 108, + 111, + 44, + 32, + 87, + 111, + 114, + 108, + 100, + 33, + ], + "type": "Buffer", + }, + "isBase64": false, + "parameters": Map {}, + "subtype": undefined, + "type": undefined, + }, +} +`; + +exports[`parse-data-url should work with url by "74" index 1`] = ` +Object { + "original": "data:,%%%", + "parsed": Object { + "body": Object { + "data": Array [ + 37, + 37, + 37, + ], + "type": "Buffer", + }, + "isBase64": false, + "parameters": Map {}, + "subtype": undefined, + "type": undefined, + }, +} +`; + +exports[`parse-data-url should work with url by "75" index 1`] = ` +Object { + "original": "data:,%%a", + "parsed": Object { + "body": Object { + "data": Array [ + 37, + 37, + 97, + ], + "type": "Buffer", + }, + "isBase64": false, + "parameters": Map {}, + "subtype": undefined, + "type": undefined, + }, +} +`; + +exports[`parse-data-url should work with url by "76" index 1`] = ` +Object { + "original": "data:,%%1", + "parsed": Object { + "body": Object { + "data": Array [ + 37, + 37, + 49, + ], + "type": "Buffer", + }, + "isBase64": false, + "parameters": Map {}, + "subtype": undefined, + "type": undefined, + }, +} +`; + +exports[`parse-data-url should work with url by "77" index 1`] = ` +Object { + "original": "data:,%1%", + "parsed": Object { + "body": Object { + "data": Array [ + 37, + 49, + 37, + ], + "type": "Buffer", + }, + "isBase64": false, + "parameters": Map {}, + "subtype": undefined, + "type": undefined, + }, +} +`; + +exports[`parse-data-url should work with url by "78" index 1`] = ` +Object { + "original": "data:,a", + "parsed": Object { + "body": Object { + "data": Array [ + 97, + ], + "type": "Buffer", + }, + "isBase64": false, + "parameters": Map {}, + "subtype": undefined, + "type": undefined, + }, +} +`; + +exports[`parse-data-url should work with url by "79" index 1`] = ` +Object { + "original": "data:, a", + "parsed": Object { + "body": Object { + "data": Array [ + 32, + 97, + ], + "type": "Buffer", + }, + "isBase64": false, + "parameters": Map {}, + "subtype": undefined, + "type": undefined, + }, +} +`; + +exports[`parse-data-url should work with url by "80" index 1`] = ` +Object { + "original": "data:,a ", + "parsed": Object { + "body": Object { + "data": Array [ + 97, + ], + "type": "Buffer", + }, + "isBase64": false, + "parameters": Map {}, + "subtype": undefined, + "type": undefined, + }, +} +`; + +exports[`parse-data-url should work with url by "81" index 1`] = ` +Object { + "original": "data:, a ", + "parsed": Object { + "body": Object { + "data": Array [ + 32, + 97, + ], + "type": "Buffer", + }, + "isBase64": false, + "parameters": Map {}, + "subtype": undefined, + "type": undefined, + }, +} +`; + +exports[`parse-data-url should work with url by "82" index 1`] = ` +Object { + "original": "data:,a b", + "parsed": Object { + "body": Object { + "data": Array [ + 97, + 98, + ], + "type": "Buffer", + }, + "isBase64": false, + "parameters": Map {}, + "subtype": undefined, + "type": undefined, + }, +} +`; + +exports[`parse-data-url should work with url by "83" index 1`] = ` +Object { + "original": "data:,a +b", + "parsed": Object { + "body": Object { + "data": Array [ + 97, + 98, + ], + "type": "Buffer", + }, + "isBase64": false, + "parameters": Map {}, + "subtype": undefined, + "type": undefined, + }, +} +`; + +exports[`parse-data-url should work with url by "84" index 1`] = ` +Object { + "original": "data:,a b", + "parsed": Object { + "body": Object { + "data": Array [ + 97, + 12, + 98, + ], + "type": "Buffer", + }, + "isBase64": false, + "parameters": Map {}, + "subtype": undefined, + "type": undefined, + }, +} +`; + +exports[`parse-data-url should work with url by "85" index 1`] = ` +Object { + "original": "data:,a +b", + "parsed": Object { + "body": Object { + "data": Array [ + 97, + 98, + ], + "type": "Buffer", + }, + "isBase64": false, + "parameters": Map {}, + "subtype": undefined, + "type": undefined, + }, +} +`; + +exports[`parse-data-url should work with url by "86" index 1`] = ` +Object { + "original": "data:,a b", + "parsed": Object { + "body": Object { + "data": Array [ + 97, + 32, + 98, + ], + "type": "Buffer", + }, + "isBase64": false, + "parameters": Map {}, + "subtype": undefined, + "type": undefined, + }, +} +`; + +exports[`parse-data-url should work with url by "87" index 1`] = ` +Object { + "original": "data:,ab\\\\u00a0cd", + "parsed": Object { + "body": Object { + "data": Array [ + 97, + 98, + 92, + 117, + 48, + 48, + 97, + 48, + 99, + 100, + ], + "type": "Buffer", + }, + "isBase64": false, + "parameters": Map {}, + "subtype": undefined, + "type": undefined, + }, +} +`; + +exports[`parse-data-url should work with url by "88" index 1`] = ` +Object { + "original": "data:,ab\\\\t\\\\n\\\\f\\\\r cd", + "parsed": Object { + "body": Object { + "data": Array [ + 97, + 98, + 92, + 116, + 92, + 110, + 92, + 102, + 92, + 114, + 32, + 99, + 100, + ], + "type": "Buffer", + }, + "isBase64": false, + "parameters": Map {}, + "subtype": undefined, + "type": undefined, + }, +} +`; + +exports[`parse-data-url should work with url by "89" index 1`] = ` +Object { + "original": "data:, \\\\t\\\\n\\\\f\\\\r ab\\\\t\\\\n\\\\f\\\\r cd\\\\t\\\\n\\\\f\\\\r ", + "parsed": Object { + "body": Object { + "data": Array [ + 32, + 92, + 116, + 92, + 110, + 92, + 102, + 92, + 114, + 32, + 97, + 98, + 92, + 116, + 92, + 110, + 92, + 102, + 92, + 114, + 32, + 99, + 100, + 92, + 116, + 92, + 110, + 92, + 102, + 92, + 114, + ], + "type": "Buffer", + }, + "isBase64": false, + "parameters": Map {}, + "subtype": undefined, + "type": undefined, + }, +} +`; + +exports[`parse-data-url should work with url by "90" index 1`] = ` +Object { + "original": "data:, ab\\\\t\\\\n\\\\f\\\\r =\\\\t\\\\n\\\\f\\\\r =\\\\t\\\\n\\\\f\\\\r ", + "parsed": Object { + "body": Object { + "data": Array [ + 32, + 97, + 98, + 92, + 116, + 92, + 110, + 92, + 102, + 92, + 114, + 32, + 61, + 92, + 116, + 92, + 110, + 92, + 102, + 92, + 114, + 32, + 61, + 92, + 116, + 92, + 110, + 92, + 102, + 92, + 114, + ], + "type": "Buffer", + }, + "isBase64": false, + "parameters": Map {}, + "subtype": undefined, + "type": undefined, + }, +} +`; + +exports[`parse-data-url should work with url by "91" index 1`] = ` +Object { + "original": "data:,/", + "parsed": Object { + "body": Object { + "data": Array [ + 47, + ], + "type": "Buffer", + }, + "isBase64": false, + "parameters": Map {}, + "subtype": undefined, + "type": undefined, + }, +} +`; + +exports[`parse-data-url should work with url by "92" index 1`] = ` +Object { + "original": "data:,/A", + "parsed": Object { + "body": Object { + "data": Array [ + 47, + 65, + ], + "type": "Buffer", + }, + "isBase64": false, + "parameters": Map {}, + "subtype": undefined, + "type": undefined, + }, +} +`; + +exports[`parse-data-url should work with url by "93" index 1`] = ` +Object { + "original": "data:text/plain;base64,abcd", + "parsed": Object { + "body": Object { + "data": Array [ + 105, + 183, + 29, + ], + "type": "Buffer", + }, + "isBase64": true, + "parameters": Map {}, + "subtype": "plain", + "type": "text", + }, +} +`; + +exports[`parse-data-url should work with url by "94" index 1`] = ` +Object { + "original": "data:text/plain;base64, abcd", + "parsed": Object { + "body": Object { + "data": Array [ + 105, + 183, + 29, + ], + "type": "Buffer", + }, + "isBase64": true, + "parameters": Map {}, + "subtype": "plain", + "type": "text", + }, +} +`; + +exports[`parse-data-url should work with url by "95" index 1`] = ` +Object { + "original": "data:text/plain;base64,abcd ", + "parsed": Object { + "body": Object { + "data": Array [ + 105, + 183, + 29, + ], + "type": "Buffer", + }, + "isBase64": true, + "parameters": Map {}, + "subtype": "plain", + "type": "text", + }, +} +`; + +exports[`parse-data-url should work with url by "96" index 1`] = ` +Object { + "original": "data:text/plain;base64, abcd===", + "parsed": null, +} +`; + +exports[`parse-data-url should work with url by "97" index 1`] = ` +Object { + "original": "data:text/plain;base64,abcd=== ", + "parsed": null, +} +`; + +exports[`parse-data-url should work with url by "98" index 1`] = ` +Object { + "original": "data:text/plain;base64,abcd ===", + "parsed": null, +} +`; + +exports[`parse-data-url should work with url by "99" index 1`] = ` +Object { + "original": "data:text/plain;base64,a", + "parsed": null, +} +`; + +exports[`parse-data-url should work with url by "100" index 1`] = ` +Object { + "original": "data:text/plain;base64,ab", + "parsed": Object { + "body": Object { + "data": Array [ + 105, + ], + "type": "Buffer", + }, + "isBase64": true, + "parameters": Map {}, + "subtype": "plain", + "type": "text", + }, +} +`; + +exports[`parse-data-url should work with url by "101" index 1`] = ` +Object { + "original": "data:text/plain;base64,abc", + "parsed": Object { + "body": Object { + "data": Array [ + 105, + 183, + ], + "type": "Buffer", + }, + "isBase64": true, + "parameters": Map {}, + "subtype": "plain", + "type": "text", + }, +} +`; + +exports[`parse-data-url should work with url by "102" index 1`] = ` +Object { + "original": "data:text/plain;base64,abcde", + "parsed": null, +} +`; + +exports[`parse-data-url should work with url by "103" index 1`] = ` +Object { + "original": "data:text/plain;base64,𐀀", + "parsed": null, +} +`; + +exports[`parse-data-url should work with url by "104" index 1`] = ` +Object { + "original": "data:text/plain;base64,=", + "parsed": null, +} +`; + +exports[`parse-data-url should work with url by "105" index 1`] = ` +Object { + "original": "data:text/plain;base64,==", + "parsed": null, +} +`; + +exports[`parse-data-url should work with url by "106" index 1`] = ` +Object { + "original": "data:text/plain;base64,===", + "parsed": null, +} +`; + +exports[`parse-data-url should work with url by "107" index 1`] = ` +Object { + "original": "data:text/plain;base64,====", + "parsed": null, +} +`; + +exports[`parse-data-url should work with url by "108" index 1`] = ` +Object { + "original": "data:text/plain;base64,=====", + "parsed": null, +} +`; + +exports[`parse-data-url should work with url by "109" index 1`] = ` +Object { + "original": "data:text/plain;base64,a=", + "parsed": null, +} +`; + +exports[`parse-data-url should work with url by "110" index 1`] = ` +Object { + "original": "data:text/plain;base64,a==", + "parsed": null, +} +`; + +exports[`parse-data-url should work with url by "111" index 1`] = ` +Object { + "original": "data:text/plain;base64,a===", + "parsed": null, +} +`; + +exports[`parse-data-url should work with url by "112" index 1`] = ` +Object { + "original": "data:text/plain;base64,a====", + "parsed": null, +} +`; + +exports[`parse-data-url should work with url by "113" index 1`] = ` +Object { + "original": "data:text/plain;base64,a=====", + "parsed": null, +} +`; + +exports[`parse-data-url should work with url by "114" index 1`] = ` +Object { + "original": "data:text/plain;base64,ab=", + "parsed": null, +} +`; + +exports[`parse-data-url should work with url by "115" index 1`] = ` +Object { + "original": "data:text/plain;base64,ab==", + "parsed": Object { + "body": Object { + "data": Array [ + 105, + ], + "type": "Buffer", + }, + "isBase64": true, + "parameters": Map {}, + "subtype": "plain", + "type": "text", + }, +} +`; + +exports[`parse-data-url should work with url by "116" index 1`] = ` +Object { + "original": "data:text/plain;base64,ab===", + "parsed": null, +} +`; + +exports[`parse-data-url should work with url by "117" index 1`] = ` +Object { + "original": "data:text/plain;base64,ab====", + "parsed": null, +} +`; + +exports[`parse-data-url should work with url by "118" index 1`] = ` +Object { + "original": "data:text/plain;base64,ab=====", + "parsed": null, +} +`; + +exports[`parse-data-url should work with url by "119" index 1`] = ` +Object { + "original": "data:text/plain;base64,abc=", + "parsed": Object { + "body": Object { + "data": Array [ + 105, + 183, + ], + "type": "Buffer", + }, + "isBase64": true, + "parameters": Map {}, + "subtype": "plain", + "type": "text", + }, +} +`; + +exports[`parse-data-url should work with url by "120" index 1`] = ` +Object { + "original": "data:text/plain;base64,abc==", + "parsed": null, +} +`; + +exports[`parse-data-url should work with url by "121" index 1`] = ` +Object { + "original": "data:text/plain;base64,abc===", + "parsed": null, +} +`; + +exports[`parse-data-url should work with url by "122" index 1`] = ` +Object { + "original": "data:text/plain;base64,abc====", + "parsed": null, +} +`; + +exports[`parse-data-url should work with url by "123" index 1`] = ` +Object { + "original": "data:text/plain;base64,abc=====", + "parsed": null, +} +`; + +exports[`parse-data-url should work with url by "124" index 1`] = ` +Object { + "original": "data:text/plain;base64,abcd=", + "parsed": null, +} +`; + +exports[`parse-data-url should work with url by "125" index 1`] = ` +Object { + "original": "data:text/plain;base64,abcd==", + "parsed": null, +} +`; + +exports[`parse-data-url should work with url by "126" index 1`] = ` +Object { + "original": "data:text/plain;base64,abcd===", + "parsed": null, +} +`; + +exports[`parse-data-url should work with url by "127" index 1`] = ` +Object { + "original": "data:text/plain;base64,abcd====", + "parsed": null, +} +`; + +exports[`parse-data-url should work with url by "128" index 1`] = ` +Object { + "original": "data:text/plain;base64,abcd=====", + "parsed": null, +} +`; + +exports[`parse-data-url should work with url by "129" index 1`] = ` +Object { + "original": "data:text/plain;base64,abcde=", + "parsed": null, +} +`; + +exports[`parse-data-url should work with url by "130" index 1`] = ` +Object { + "original": "data:text/plain;base64,abcde==", + "parsed": null, +} +`; + +exports[`parse-data-url should work with url by "131" index 1`] = ` +Object { + "original": "data:text/plain;base64,abcde===", + "parsed": null, +} +`; + +exports[`parse-data-url should work with url by "132" index 1`] = ` +Object { + "original": "data:text/plain;base64,abcde====", + "parsed": null, +} +`; + +exports[`parse-data-url should work with url by "133" index 1`] = ` +Object { + "original": "data:text/plain;base64,abcde=====", + "parsed": null, +} +`; + +exports[`parse-data-url should work with url by "134" index 1`] = ` +Object { + "original": "data:text/plain;base64,=a", + "parsed": null, +} +`; + +exports[`parse-data-url should work with url by "135" index 1`] = ` +Object { + "original": "data:text/plain;base64,=a=", + "parsed": null, +} +`; + +exports[`parse-data-url should work with url by "136" index 1`] = ` +Object { + "original": "data:text/plain;base64,a=b", + "parsed": null, +} +`; + +exports[`parse-data-url should work with url by "137" index 1`] = ` +Object { + "original": "data:text/plain;base64,a=b=", + "parsed": null, +} +`; + +exports[`parse-data-url should work with url by "138" index 1`] = ` +Object { + "original": "data:text/plain;base64,ab=c", + "parsed": null, +} +`; + +exports[`parse-data-url should work with url by "139" index 1`] = ` +Object { + "original": "data:text/plain;base64,ab=c=", + "parsed": null, +} +`; + +exports[`parse-data-url should work with url by "140" index 1`] = ` +Object { + "original": "data:text/plain;base64,abc=d", + "parsed": null, +} +`; + +exports[`parse-data-url should work with url by "141" index 1`] = ` +Object { + "original": "data:text/plain;base64,abc=d=", + "parsed": null, +} +`; + +exports[`parse-data-url should work with url by "142" index 1`] = ` +Object { + "original": "data:text/plain;base64,ab cd", + "parsed": Object { + "body": Object { + "data": Array [ + 105, + 183, + 29, + ], + "type": "Buffer", + }, + "isBase64": true, + "parameters": Map {}, + "subtype": "plain", + "type": "text", + }, +} +`; + +exports[`parse-data-url should work with url by "143" index 1`] = ` +Object { + "original": "data:text/plain;base64,ab +cd", + "parsed": Object { + "body": Object { + "data": Array [ + 105, + 183, + 29, + ], + "type": "Buffer", + }, + "isBase64": true, + "parameters": Map {}, + "subtype": "plain", + "type": "text", + }, +} +`; + +exports[`parse-data-url should work with url by "144" index 1`] = ` +Object { + "original": "data:text/plain;base64,ab cd", + "parsed": Object { + "body": Object { + "data": Array [ + 105, + 183, + 29, + ], + "type": "Buffer", + }, + "isBase64": true, + "parameters": Map {}, + "subtype": "plain", + "type": "text", + }, +} +`; + +exports[`parse-data-url should work with url by "145" index 1`] = ` +Object { + "original": "data:text/plain;base64,ab +cd", + "parsed": Object { + "body": Object { + "data": Array [ + 105, + 183, + 29, + ], + "type": "Buffer", + }, + "isBase64": true, + "parameters": Map {}, + "subtype": "plain", + "type": "text", + }, +} +`; + +exports[`parse-data-url should work with url by "146" index 1`] = ` +Object { + "original": "data:text/plain;base64,ab cd", + "parsed": Object { + "body": Object { + "data": Array [ + 105, + 183, + 29, + ], + "type": "Buffer", + }, + "isBase64": true, + "parameters": Map {}, + "subtype": "plain", + "type": "text", + }, +} +`; + +exports[`parse-data-url should work with url by "147" index 1`] = ` +Object { + "original": "data:text/plain;base64,ab cd", + "parsed": null, +} +`; + +exports[`parse-data-url should work with url by "148" index 1`] = ` +Object { + "original": "data:text/plain;base64,ab + + cd", + "parsed": Object { + "body": Object { + "data": Array [ + 105, + 183, + 29, + ], + "type": "Buffer", + }, + "isBase64": true, + "parameters": Map {}, + "subtype": "plain", + "type": "text", + }, +} +`; + +exports[`parse-data-url should work with url by "149" index 1`] = ` +Object { + "original": "data:text/plain;base64, + + ab + + cd + + ", + "parsed": Object { + "body": Object { + "data": Array [ + 105, + 183, + 29, + ], + "type": "Buffer", + }, + "isBase64": true, + "parameters": Map {}, + "subtype": "plain", + "type": "text", + }, +} +`; + +exports[`parse-data-url should work with url by "150" index 1`] = ` +Object { + "original": "data:text/plain;base64,ab + + = + + = + + ", + "parsed": Object { + "body": Object { + "data": Array [ + 105, + ], + "type": "Buffer", + }, + "isBase64": true, + "parameters": Map {}, + "subtype": "plain", + "type": "text", + }, +} +`; + +exports[`parse-data-url should work with url by "151" index 1`] = ` +Object { + "original": "data:text/plain;base64,A", + "parsed": null, +} +`; + +exports[`parse-data-url should work with url by "152" index 1`] = ` +Object { + "original": "data:text/plain;base64,/A", + "parsed": Object { + "body": Object { + "data": Array [ + 252, + ], + "type": "Buffer", + }, + "isBase64": true, + "parameters": Map {}, + "subtype": "plain", + "type": "text", + }, +} +`; + +exports[`parse-data-url should work with url by "153" index 1`] = ` +Object { + "original": "data:text/plain;base64,//A", + "parsed": Object { + "body": Object { + "data": Array [ + 255, + 240, + ], + "type": "Buffer", + }, + "isBase64": true, + "parameters": Map {}, + "subtype": "plain", + "type": "text", + }, +} +`; + +exports[`parse-data-url should work with url by "154" index 1`] = ` +Object { + "original": "data:text/plain;base64,///A", + "parsed": Object { + "body": Object { + "data": Array [ + 255, + 255, + 192, + ], + "type": "Buffer", + }, + "isBase64": true, + "parameters": Map {}, + "subtype": "plain", + "type": "text", + }, +} +`; + +exports[`parse-data-url should work with url by "155" index 1`] = ` +Object { + "original": "data:text/plain;base64,////A", + "parsed": null, +} +`; + +exports[`parse-data-url should work with url by "156" index 1`] = ` +Object { + "original": "data:text/plain;base64,/", + "parsed": null, +} +`; + +exports[`parse-data-url should work with url by "157" index 1`] = ` +Object { + "original": "data:text/plain;base64,A/", + "parsed": Object { + "body": Object { + "data": Array [ + 3, + ], + "type": "Buffer", + }, + "isBase64": true, + "parameters": Map {}, + "subtype": "plain", + "type": "text", + }, +} +`; + +exports[`parse-data-url should work with url by "158" index 1`] = ` +Object { + "original": "data:text/plain;base64,AA/", + "parsed": Object { + "body": Object { + "data": Array [ + 0, + 15, + ], + "type": "Buffer", + }, + "isBase64": true, + "parameters": Map {}, + "subtype": "plain", + "type": "text", + }, +} +`; + +exports[`parse-data-url should work with url by "159" index 1`] = ` +Object { + "original": "data:text/plain;base64,AAAA/", + "parsed": null, +} +`; + +exports[`parse-data-url should work with url by "160" index 1`] = ` +Object { + "original": "data:text/plain;base64,AAA/", + "parsed": Object { + "body": Object { + "data": Array [ + 0, + 0, + 63, + ], + "type": "Buffer", + }, + "isBase64": true, + "parameters": Map {}, + "subtype": "plain", + "type": "text", + }, +} +`; + +exports[`parse-data-url should work with url by "161" index 1`] = ` +Object { + "original": "data:text/plain;base64,\\\\0nonsense", + "parsed": null, +} +`; + +exports[`parse-data-url should work with url by "162" index 1`] = ` +Object { + "original": "data:text/plain;base64,abcd\\\\0nonsense", + "parsed": null, +} +`; + +exports[`parse-data-url should work with url by "163" index 1`] = ` +Object { + "original": "data:,Hello%2C%20World!", + "parsed": Object { + "body": Object { + "data": Array [ + 72, + 101, + 108, + 108, + 111, + 44, + 32, + 87, + 111, + 114, + 108, + 100, + 33, + ], + "type": "Buffer", + }, + "isBase64": false, + "parameters": Map {}, + "subtype": undefined, + "type": undefined, + }, +} +`; + +exports[`parse-data-url should work with url by "164" index 1`] = ` +Object { + "original": "data:,Привет%2C%20Мир!", + "parsed": Object { + "body": Object { + "data": Array [ + 208, + 159, + 209, + 128, + 208, + 184, + 208, + 178, + 208, + 181, + 209, + 130, + 44, + 32, + 208, + 156, + 208, + 184, + 209, + 128, + 33, + ], + "type": "Buffer", + }, + "isBase64": false, + "parameters": Map {}, + "subtype": undefined, + "type": undefined, + }, +} +`; + +exports[`parse-data-url should work with url by "165" index 1`] = ` +Object { + "original": "data:text/plain;base64,SGVsbG8sIFdvcmxkIQ==", + "parsed": Object { + "body": Object { + "data": Array [ + 72, + 101, + 108, + 108, + 111, + 44, + 32, + 87, + 111, + 114, + 108, + 100, + 33, + ], + "type": "Buffer", + }, + "isBase64": true, + "parameters": Map {}, + "subtype": "plain", + "type": "text", + }, +} +`; + +exports[`parse-data-url should work with url by "166" index 1`] = ` +Object { + "original": "data:text/html,%3Ch1%3EHello%2C%20World!%3C%2Fh1%3E", + "parsed": Object { + "body": Object { + "data": Array [ + 60, + 104, + 49, + 62, + 72, + 101, + 108, + 108, + 111, + 44, + 32, + 87, + 111, + 114, + 108, + 100, + 33, + 60, + 47, + 104, + 49, + 62, + ], + "type": "Buffer", + }, + "isBase64": false, + "parameters": Map {}, + "subtype": "html", + "type": "text", + }, +} +`; + +exports[`parse-data-url should work with url by "167" index 1`] = ` +Object { + "original": "data:text/html, +", + "parsed": Object { + "body": Object { + "data": Array [ + 60, + 115, + 99, + 114, + 105, + 112, + 116, + 62, + 97, + 108, + 101, + 114, + 116, + 40, + 39, + 104, + 105, + 39, + 41, + 59, + 60, + 47, + 115, + 99, + 114, + 105, + 112, + 116, + 62, + ], + "type": "Buffer", + }, + "isBase64": false, + "parameters": Map {}, + "subtype": "html", + "type": "text", + }, +} +`; + +exports[`parse-data-url should work with url by "168" index 1`] = ` +Object { + "original": "data:,а", + "parsed": Object { + "body": Object { + "data": Array [ + 208, + 176, + ], + "type": "Buffer", + }, + "isBase64": false, + "parameters": Map {}, + "subtype": undefined, + "type": undefined, + }, +} +`; + +exports[`parse-data-url should work with url by "169" index 1`] = ` +Object { + "original": "data:,a", + "parsed": Object { + "body": Object { + "data": Array [ + 97, + ], + "type": "Buffer", + }, + "isBase64": false, + "parameters": Map {}, + "subtype": undefined, + "type": undefined, + }, +} +`; + +exports[`parse-data-url should work with url by "170" index 1`] = ` +Object { + "original": "data:text/plain;,hello", + "parsed": Object { + "body": Object { + "data": Array [ + 104, + 101, + 108, + 108, + 111, + ], + "type": "Buffer", + }, + "isBase64": false, + "parameters": Map {}, + "subtype": "plain", + "type": "text", + }, +} +`; + +exports[`parse-data-url should work with url by "171" index 1`] = ` +Object { + "original": "data:text;,hello", + "parsed": Object { + "body": Object { + "data": Array [ + 104, + 101, + 108, + 108, + 111, + ], + "type": "Buffer", + }, + "isBase64": false, + "parameters": Map {}, + "subtype": undefined, + "type": undefined, + }, +} +`; + +exports[`parse-data-url should work with url by "172" index 1`] = ` +Object { + "original": "data:text/0000;,hello", + "parsed": Object { + "body": Object { + "data": Array [ + 104, + 101, + 108, + 108, + 111, + ], + "type": "Buffer", + }, + "isBase64": false, + "parameters": Map {}, + "subtype": "0000", + "type": "text", + }, +} +`; + +exports[`parse-data-url should work with url by "173" index 1`] = ` +Object { + "original": "data:text/ ;,hello", + "parsed": Object { + "body": Object { + "data": Array [ + 104, + 101, + 108, + 108, + 111, + ], + "type": "Buffer", + }, + "isBase64": false, + "parameters": Map {}, + "subtype": undefined, + "type": undefined, + }, +} +`; + +exports[`parse-data-url should work with url by "174" index 1`] = ` +Object { + "original": "data:text/html;charset=foo,

%D0%9F%D1%80%D0%B8%D0%B2%D0%B5%D1%82%2C%20World!<%2Fh1>", + "parsed": Object { + "body": Object { + "data": Array [ + 60, + 104, + 49, + 62, + 208, + 159, + 209, + 128, + 208, + 184, + 208, + 178, + 208, + 181, + 209, + 130, + 44, + 32, + 87, + 111, + 114, + 108, + 100, + 33, + 60, + 47, + 104, + 49, + 62, + ], + "type": "Buffer", + }, + "isBase64": false, + "parameters": Map { + "charset" => "foo", + }, + "subtype": "html", + "type": "text", + }, +} +`; + +exports[`parse-data-url should work with url by "175" index 1`] = ` +Object { + "original": "data:text/html;charset=utf-8;charset=foo,

%D0%9F%D1%80%D0%B8%D0%B2%D0%B5%D1%82%2C%20World!<%2Fh1>", + "parsed": Object { + "body": Object { + "data": Array [ + 60, + 104, + 49, + 62, + 208, + 159, + 209, + 128, + 208, + 184, + 208, + 178, + 208, + 181, + 209, + 130, + 44, + 32, + 87, + 111, + 114, + 108, + 100, + 33, + 60, + 47, + 104, + 49, + 62, + ], + "type": "Buffer", + }, + "isBase64": false, + "parameters": Map { + "charset" => "utf-8", + }, + "subtype": "html", + "type": "text", + }, +} +`; + +exports[`parse-data-url should work with url by "176" index 1`] = ` +Object { + "original": "data:text/html;charset=utf-8;foo=bar,

%D0%9F%D1%80%D0%B8%D0%B2%D0%B5%D1%82%2C%20World!<%2Fh1>", + "parsed": Object { + "body": Object { + "data": Array [ + 60, + 104, + 49, + 62, + 208, + 159, + 209, + 128, + 208, + 184, + 208, + 178, + 208, + 181, + 209, + 130, + 44, + 32, + 87, + 111, + 114, + 108, + 100, + 33, + 60, + 47, + 104, + 49, + 62, + ], + "type": "Buffer", + }, + "isBase64": false, + "parameters": Map { + "charset" => "utf-8", + "foo" => "bar", + }, + "subtype": "html", + "type": "text", + }, +} +`; + +exports[`parse-data-url should work with url by "177" index 1`] = ` +Object { + "original": "data:text/html;charset=utf-8;foo=bar;foo=baz,

%D0%9F%D1%80%D0%B8%D0%B2%D0%B5%D1%82%2C%20World!<%2Fh1>", + "parsed": Object { + "body": Object { + "data": Array [ + 60, + 104, + 49, + 62, + 208, + 159, + 209, + 128, + 208, + 184, + 208, + 178, + 208, + 181, + 209, + 130, + 44, + 32, + 87, + 111, + 114, + 108, + 100, + 33, + 60, + 47, + 104, + 49, + 62, + ], + "type": "Buffer", + }, + "isBase64": false, + "parameters": Map { + "charset" => "utf-8", + "foo" => "bar", + }, + "subtype": "html", + "type": "text", + }, +} +`; + +exports[`parse-data-url should work with url by "178" index 1`] = ` +Object { + "original": "data:application/json;charset=utf-8;base64,eyJmb28iOiJiYXIifQ==", + "parsed": Object { + "body": Object { + "data": Array [ + 123, + 34, + 102, + 111, + 111, + 34, + 58, + 34, + 98, + 97, + 114, + 34, + 125, + ], + "type": "Buffer", + }, + "isBase64": true, + "parameters": Map { + "charset" => "utf-8", + }, + "subtype": "json", + "type": "application", + }, +} +`; + +exports[`parse-data-url should work with url by "179" index 1`] = ` +Object { + "original": "data:application/json;base64,eyJmb28iOiJiYXIifQ==", + "parsed": Object { + "body": Object { + "data": Array [ + 123, + 34, + 102, + 111, + 111, + 34, + 58, + 34, + 98, + 97, + 114, + 34, + 125, + ], + "type": "Buffer", + }, + "isBase64": true, + "parameters": Map {}, + "subtype": "json", + "type": "application", + }, +} +`; + +exports[`parse-data-url should work with url by "180" index 1`] = ` +Object { + "original": "data:application/zzz;base64,eyJmb28iOiJiYXIifQ==", + "parsed": Object { + "body": Object { + "data": Array [ + 123, + 34, + 102, + 111, + 111, + 34, + 58, + 34, + 98, + 97, + 114, + 34, + 125, + ], + "type": "Buffer", + }, + "isBase64": true, + "parameters": Map {}, + "subtype": "zzz", + "type": "application", + }, +} +`; + +exports[`parse-data-url should work with url by "181" index 1`] = ` +Object { + "original": "data:,test", + "parsed": Object { + "body": Object { + "data": Array [ + 116, + 101, + 115, + 116, + ], + "type": "Buffer", + }, + "isBase64": false, + "parameters": Map {}, + "subtype": undefined, + "type": undefined, + }, +} +`; diff --git a/test/fixtures/json/data-urls.json b/test/fixtures/json/data-urls.json deleted file mode 100644 index fc61bb4..0000000 --- a/test/fixtures/json/data-urls.json +++ /dev/null @@ -1,369 +0,0 @@ -[ - ["data://test/,X", ["text/plain;charset=US-ASCII", [88]]], - ["http://domain.com", null], - ["data://test:test/,X", null], - ["data:,X", ["text/plain;charset=US-ASCII", [88]]], - ["data:", null], - ["data:text/html", null], - ["data:text/html ;charset=x ", null], - ["data:,", ["text/plain;charset=US-ASCII", []]], - ["data:,X#X", ["text/plain;charset=US-ASCII", [88]]], - ["data:,%FF", ["text/plain;charset=US-ASCII", [255]]], - ["data:text/plain,X", ["text/plain", [88]]], - ["data:text/plain ,X", ["text/plain", [88]]], - ["data:text/plain%20,X", ["text/plain%20", [88]]], - ["data:text/plain\f,X", ["text/plain%0c", [88]]], - ["data:text/plain%0C,X", ["text/plain%0c", [88]]], - ["data:text/plain;,X", ["text/plain", [88]]], - ["data:;x=x;charset=x,X", ["text/plain;x=x;charset=x", [88]]], - ["data:;x=x,X", ["text/plain;x=x", [88]]], - [ - "data:text/plain;charset=windows-1252,%C2%B1", - ["text/plain;charset=windows-1252", [194, 177]] - ], - [ - "data:text/plain;Charset=UTF-8,%C2%B1", - ["text/plain;charset=UTF-8", [194, 177]] - ], - ["data:image/gif,%C2%B1", ["image/gif", [194, 177]]], - ["data:IMAGE/gif,%C2%B1", ["image/gif", [194, 177]]], - ["data:IMAGE/gif;hi=x,%C2%B1", ["image/gif;hi=x", [194, 177]]], - ["data:IMAGE/gif;CHARSET=x,%C2%B1", ["image/gif;charset=x", [194, 177]]], - ["data: ,%FF", ["text/plain;charset=US-ASCII", [255]]], - ["data:%20,%FF", ["text/plain;charset=US-ASCII", [255]]], - ["data:\f,%FF", ["text/plain;charset=US-ASCII", [255]]], - ["data:%1F,%FF", ["text/plain;charset=US-ASCII", [255]]], - ["data:\u0000,%FF", ["text/plain;charset=US-ASCII", [255]]], - ["data:%00,%FF", ["text/plain;charset=US-ASCII", [255]]], - ["data:text/html ,X", ["text/html", [88]]], - ["data:text / html,X", ["text/plain;charset=US-ASCII", [88]]], - ["data:†,X", ["text/plain;charset=US-ASCII", [88]]], - ["data:†/†,X", ["%e2%80%a0/%e2%80%a0", [88]]], - ["data:X,X", ["text/plain;charset=US-ASCII", [88]]], - ["data:image/png,X X", ["image/png", [88, 32, 88]]], - ["data:application/javascript,X X", ["application/javascript", [88, 32, 88]]], - ["data:application/xml,X X", ["application/xml", [88, 32, 88]]], - ["data:text/javascript,X X", ["text/javascript", [88, 32, 88]]], - ["data:text/plain,X X", ["text/plain", [88, 32, 88]]], - ["data:unknown/unknown,X X", ["unknown/unknown", [88, 32, 88]]], - ["data:text/plain;a=\",\",X", ["text/plain;a=\"\"", [34, 44, 88]]], - ["data:text/plain;a=%2C,X", ["text/plain;a=%2C", [88]]], - ["data:;base64;base64,WA", ["text/plain", [88]]], - ["data:x/x;base64;base64,WA", ["x/x", [88]]], - ["data:x/x;base64;charset=x,WA", ["x/x;charset=x", [87, 65]]], - ["data:x/x;base64;charset=x;base64,WA", ["x/x;charset=x", [88]]], - ["data:x/x;base64;base64x,WA", ["x/x", [87, 65]]], - ["data:;base64,W%20A", ["text/plain;charset=US-ASCII", [88]]], - ["data:;base64,W%0CA", ["text/plain;charset=US-ASCII", [88]]], - ["data:x;base64x,WA", ["text/plain;charset=US-ASCII", [87, 65]]], - ["data:x;base64;x,WA", ["text/plain;charset=US-ASCII", [87, 65]]], - ["data:x;base64=x,WA", ["text/plain;charset=US-ASCII", [87, 65]]], - ["data:; base64,WA", ["text/plain;charset=US-ASCII", [88]]], - ["data:; base64,WA", ["text/plain;charset=US-ASCII", [88]]], - ["data: ;charset=x ; base64,WA", ["text/plain;charset=x", [88]]], - ["data:;base64;,WA", ["text/plain", [87, 65]]], - ["data:;base64 ,WA", ["text/plain;charset=US-ASCII", [88]]], - ["data:;base64 ,WA", ["text/plain;charset=US-ASCII", [88]]], - ["data:;base 64,WA", ["text/plain", [87, 65]]], - ["data:;BASe64,WA", ["text/plain;charset=US-ASCII", [88]]], - ["data:;%62ase64,WA", ["text/plain", [87, 65]]], - ["data:%3Bbase64,WA", ["text/plain;charset=US-ASCII", [87, 65]]], - ["data:;charset=x,X", ["text/plain;charset=x", [88]]], - ["data:; charset=x,X", ["text/plain;charset=x", [88]]], - ["data:;charset =x,X", ["text/plain", [88]]], - ["data:;charset= x,X", ["text/plain;charset=\" x\"", [88]]], - ["data:;charset=,X", ["text/plain", [88]]], - ["data:;charset,X", ["text/plain", [88]]], - ["data:;charset=\"x\",X", ["text/plain;charset=x", [88]]], - ["data:;CHARSET=\"X\",X", ["text/plain;charset=X", [88]]], - ["no-data:;CHARSET=\"X\",X", null], - [ - "data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==", - [ - "image/gif", - [ - 71, - 73, - 70, - 56, - 57, - 97, - 1, - 0, - 1, - 0, - 128, - 0, - 0, - 255, - 255, - 255, - 0, - 0, - 0, - 33, - 249, - 4, - 1, - 0, - 0, - 0, - 0, - 44, - 0, - 0, - 0, - 0, - 1, - 0, - 1, - 0, - 0, - 2, - 2, - 68, - 1, - 0, - 59 - ] - ] - ], - [ - "DATA:IMAGE/GIF;BASE64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==", - [ - "image/gif", - [ - 71, - 73, - 70, - 56, - 57, - 97, - 1, - 0, - 1, - 0, - 128, - 0, - 0, - 255, - 255, - 255, - 0, - 0, - 0, - 33, - 249, - 4, - 1, - 0, - 0, - 0, - 0, - 44, - 0, - 0, - 0, - 0, - 1, - 0, - 1, - 0, - 0, - 2, - 2, - 68, - 1, - 0, - 59 - ] - ] - ], - [ - "data:,Hello%2C%20World!", - [ - "text/plain;charset=US-ASCII", - [72, 101, 108, 108, 111, 44, 32, 87, 111, 114, 108, 100, 33] - ] - ], - ["data:,%%%", ["text/plain;charset=US-ASCII", [37, 37, 37]]], - ["data:,%%a", ["text/plain;charset=US-ASCII", [37, 37, 97]]], - ["data:,%%1", ["text/plain;charset=US-ASCII", [37, 37, 49]]], - ["data:,%1%", ["text/plain;charset=US-ASCII", [37, 49, 37]]], - ["data:,a", ["text/plain;charset=US-ASCII", [97]]], - ["data:, a", ["text/plain;charset=US-ASCII", [32, 97]]], - ["data:,a ", ["text/plain;charset=US-ASCII", [97]]], - ["data:, a ", ["text/plain;charset=US-ASCII", [32, 97]]], - ["data:,a\tb", ["text/plain;charset=US-ASCII", [97, 98]]], - ["data:,a\nb", ["text/plain;charset=US-ASCII", [97, 98]]], - ["data:,a\fb", ["text/plain;charset=US-ASCII", [97, 12, 98]]], - ["data:,a\rb", ["text/plain;charset=US-ASCII", [97, 98]]], - ["data:,a b", ["text/plain;charset=US-ASCII", [97, 32, 98]]], - [ - "data:,ab\\u00a0cd", - ["text/plain;charset=US-ASCII", [97, 98, 92, 117, 48, 48, 97, 48, 99, 100]] - ], - [ - "data:,ab\\t\\n\\f\\r cd", - [ - "text/plain;charset=US-ASCII", - [97, 98, 92, 116, 92, 110, 92, 102, 92, 114, 32, 99, 100] - ] - ], - [ - "data:, \\t\\n\\f\\r ab\\t\\n\\f\\r cd\\t\\n\\f\\r ", - [ - "text/plain;charset=US-ASCII", - [ - 32, - 92, - 116, - 92, - 110, - 92, - 102, - 92, - 114, - 32, - 97, - 98, - 92, - 116, - 92, - 110, - 92, - 102, - 92, - 114, - 32, - 99, - 100, - 92, - 116, - 92, - 110, - 92, - 102, - 92, - 114 - ] - ] - ], - [ - "data:, ab\\t\\n\\f\\r =\\t\\n\\f\\r =\\t\\n\\f\\r ", - [ - "text/plain;charset=US-ASCII", - [ - 32, - 97, - 98, - 92, - 116, - 92, - 110, - 92, - 102, - 92, - 114, - 32, - 61, - 92, - 116, - 92, - 110, - 92, - 102, - 92, - 114, - 32, - 61, - 92, - 116, - 92, - 110, - 92, - 102, - 92, - 114 - ] - ] - ], - ["data:,/", ["text/plain;charset=US-ASCII", [47]]], - ["data:,/A", ["text/plain;charset=US-ASCII", [47, 65]]], - ["data:text/plain;base64,abcd", ["text/plain", [105, 183, 29]]], - ["data:text/plain;base64, abcd", ["text/plain", [105, 183, 29]]], - ["data:text/plain;base64,abcd ", ["text/plain", [105, 183, 29]]], - ["data:text/plain;base64, abcd===", null], - ["data:text/plain;base64,abcd=== ", null], - ["data:text/plain;base64,abcd ===", null], - ["data:text/plain;base64,a", null], - ["data:text/plain;base64,ab", ["text/plain", [105]]], - ["data:text/plain;base64,abc", ["text/plain", [105, 183]]], - ["data:text/plain;base64,abcde", null], - ["data:text/plain;base64,\uD800\uDC00", null], - ["data:text/plain;base64,=", null], - ["data:text/plain;base64,==", null], - ["data:text/plain;base64,===", null], - ["data:text/plain;base64,====", null], - ["data:text/plain;base64,=====", null], - ["data:text/plain;base64,a=", null], - ["data:text/plain;base64,a==", null], - ["data:text/plain;base64,a===", null], - ["data:text/plain;base64,a====", null], - ["data:text/plain;base64,a=====", null], - ["data:text/plain;base64,ab=", null], - ["data:text/plain;base64,ab==", ["text/plain", [105]]], - ["data:text/plain;base64,ab===", null], - ["data:text/plain;base64,ab====", null], - ["data:text/plain;base64,ab=====", null], - ["data:text/plain;base64,abc=", ["text/plain", [105, 183]]], - ["data:text/plain;base64,abc==", null], - ["data:text/plain;base64,abc===", null], - ["data:text/plain;base64,abc====", null], - ["data:text/plain;base64,abc=====", null], - ["data:text/plain;base64,abcd=", null], - ["data:text/plain;base64,abcd==", null], - ["data:text/plain;base64,abcd===", null], - ["data:text/plain;base64,abcd====", null], - ["data:text/plain;base64,abcd=====", null], - ["data:text/plain;base64,abcde=", null], - ["data:text/plain;base64,abcde==", null], - ["data:text/plain;base64,abcde===", null], - ["data:text/plain;base64,abcde====", null], - ["data:text/plain;base64,abcde=====", null], - ["data:text/plain;base64,=a", null], - ["data:text/plain;base64,=a=", null], - ["data:text/plain;base64,a=b", null], - ["data:text/plain;base64,a=b=", null], - ["data:text/plain;base64,ab=c", null], - ["data:text/plain;base64,ab=c=", null], - ["data:text/plain;base64,abc=d", null], - ["data:text/plain;base64,abc=d=", null], - ["data:text/plain;base64,ab\tcd", ["text/plain", [105, 183, 29]]], - ["data:text/plain;base64,ab\ncd", ["text/plain", [105, 183, 29]]], - ["data:text/plain;base64,ab\fcd", ["text/plain", [105, 183, 29]]], - ["data:text/plain;base64,ab\rcd", ["text/plain", [105, 183, 29]]], - ["data:text/plain;base64,ab cd", ["text/plain", [105, 183, 29]]], - ["data:text/plain;base64,ab\u00a0cd", null], - ["data:text/plain;base64,ab\t\n\f\r cd", ["text/plain", [105, 183, 29]]], - [ - "data:text/plain;base64, \t\n\f\r ab\t\n\f\r cd\t\n\f\r ", - ["text/plain", [105, 183, 29]] - ], - [ - "data:text/plain;base64,ab\t\n\f\r =\t\n\f\r =\t\n\f\r ", - ["text/plain", [105]] - ], - ["data:text/plain;base64,A", null], - ["data:text/plain;base64,/A", ["text/plain", [252]]], - ["data:text/plain;base64,//A", ["text/plain", [255, 240]]], - ["data:text/plain;base64,///A", ["text/plain", [255, 255, 192]]], - ["data:text/plain;base64,////A", null], - ["data:text/plain;base64,/", null], - ["data:text/plain;base64,A/", ["text/plain", [3]]], - ["data:text/plain;base64,AA/", ["text/plain", [0, 15]]], - ["data:text/plain;base64,AAAA/", null], - ["data:text/plain;base64,AAA/", ["text/plain", [0, 0, 63]]], - ["data:text/plain;base64,\\0nonsense", null], - ["data:text/plain;base64,abcd\\0nonsense", null] -] diff --git a/test/helpers/compile.js b/test/helpers/compile.js index 066873a..a1b05e5 100644 --- a/test/helpers/compile.js +++ b/test/helpers/compile.js @@ -1,5 +1,5 @@ -export default (compiler) => { - return new Promise((resolve, reject) => { +export default (compiler) => + new Promise((resolve, reject) => { compiler.run((error, stats) => { if (error) { return reject(error); @@ -8,4 +8,3 @@ export default (compiler) => { return resolve(stats); }); }); -}; diff --git a/test/helpers/getCompiler.js b/test/helpers/getCompiler.js index bf33d66..3880276 100644 --- a/test/helpers/getCompiler.js +++ b/test/helpers/getCompiler.js @@ -54,11 +54,7 @@ export default ( const compiler = webpack(fullConfig); if (!config.outputFileSystem) { - const outputFileSystem = createFsFromVolume(new Volume()); - // Todo remove when we drop webpack@4 support - outputFileSystem.join = path.join.bind(path); - - compiler.outputFileSystem = outputFileSystem; + compiler.outputFileSystem = createFsFromVolume(new Volume()); } return compiler; diff --git a/test/helpers/getErrors.js b/test/helpers/getErrors.js index 52a49bb..6ca84f4 100644 --- a/test/helpers/getErrors.js +++ b/test/helpers/getErrors.js @@ -1,5 +1,3 @@ import normalizeErrors from "./normalizeErrors"; -export default (stats) => { - return normalizeErrors(stats.compilation.errors.sort()); -}; +export default (stats) => normalizeErrors(stats.compilation.errors.sort()); diff --git a/test/helpers/getWarnings.js b/test/helpers/getWarnings.js index 2f5c32c..bb56582 100644 --- a/test/helpers/getWarnings.js +++ b/test/helpers/getWarnings.js @@ -1,5 +1,4 @@ import normalizeErrors from "./normalizeErrors"; -export default (stats, shortError) => { - return normalizeErrors(stats.compilation.warnings.sort(), shortError); -}; +export default (stats, shortError) => + normalizeErrors(stats.compilation.warnings.sort(), shortError); diff --git a/test/helpers/normalizeErrors.js b/test/helpers/normalizeErrors.js index 3c91cf3..eb74fd2 100644 --- a/test/helpers/normalizeErrors.js +++ b/test/helpers/normalizeErrors.js @@ -14,8 +14,8 @@ function removeCWD(str) { .replace(new RegExp(cwd, "g"), ""); } -export default (errors, shortError) => { - return errors.map((error) => { +export default (errors, shortError) => + errors.map((error) => { let errorMessage = error.toString(); if (shortError) { @@ -24,4 +24,3 @@ export default (errors, shortError) => { return removeCWD(errorMessage.split("\n").slice(0, 2).join("\n")); }); -}; diff --git a/test/parseDataUrl.test.js b/test/parseDataUrl.test.js index 505dc83..3e527cc 100644 --- a/test/parseDataUrl.test.js +++ b/test/parseDataUrl.test.js @@ -1,20 +1,195 @@ import parseDataUrl from "../src/parse-data-url"; -import dataUrls from "./fixtures/json/data-urls.json"; - +const dataUrls = [ + "data://test/,X", + "http://domain.com", + "data://test:test/,X", + "data:,X", + "data:text/html", + "data:text/html ;charset=x ", + "data:,", + "data:,X#X", + "data:,%FF", + "data:text/plain,X", + "data:text/plain ,X", + "data:text/plain%20,X", + "data:text/plain\f,X", + "data:text/plain%0C,X", + "data:text/plain;,X", + "data:;x=x;charset=x,X", + "data:;x=x,X", + "data:text/plain;charset=windows-1252,%C2%B1", + "data:text/plain;Charset=UTF-8,%C2%B1", + "data:image/gif,%C2%B1", + "data:IMAGE/gif,%C2%B1", + "data:IMAGE/gif;hi=x,%C2%B1", + "data:IMAGE/gif;CHARSET=x,%C2%B1", + "data: ,%FF", + "data:%20,%FF", + "data:\f,%FF", + "data:%1F,%FF", + "data:\u0000,%FF", + "data:%00,%FF", + "data:text/html ,X", + "data:text / html,X", + "data:†,X", + "data:†/†,X", + "data:X,X", + "data:image/png,X X", + "data:application/javascript,X X", + "data:application/xml,X X", + "data:text/javascript,X X", + "data:text/plain,X X", + "data:unknown/unknown,X X", + 'data:text/plain;a=",",X', + "data:text/plain;a=%2C,X", + "data:;base64;base64,WA", + "data:x/x;base64;base64,WA", + "data:x/x;base64;charset=x,WA", + "data:x/x;base64;charset=x;base64,WA", + "data:x/x;base64;base64x,WA", + "data:;base64,W%20A", + "data:;base64,W%0CA", + "data:x;base64x,WA", + "data:x;base64;x,WA", + "data:x;base64=x,WA", + "data:; base64,WA", + "data:; base64,WA", + "data: ;charset=x ; base64,WA", + "data:;base64;,WA", + "data:;base64 ,WA", + "data:;base64 ,WA", + "data:;base 64,WA", + "data:;BASe64,WA", + "data:;%62ase64,WA", + "data:%3Bbase64,WA", + "data:;charset=x,X", + "data:; charset=x,X", + "data:;charset =x,X", + "data:;charset= x,X", + "data:;charset=,X", + "data:;charset,X", + 'data:;charset="x",X', + 'data:;CHARSET="X",X', + 'no-data:;CHARSET="X",X', + "data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==", + "DATA:IMAGE/GIF;BASE64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==", + "data:,Hello%2C%20World!", + "data:,%%%", + "data:,%%a", + "data:,%%1", + "data:,%1%", + "data:,a", + "data:, a", + "data:,a ", + "data:, a ", + "data:,a\tb", + "data:,a\nb", + "data:,a\fb", + "data:,a\rb", + "data:,a b", + "data:,ab\\u00a0cd", + "data:,ab\\t\\n\\f\\r cd", + "data:, \\t\\n\\f\\r ab\\t\\n\\f\\r cd\\t\\n\\f\\r ", + "data:, ab\\t\\n\\f\\r =\\t\\n\\f\\r =\\t\\n\\f\\r ", + "data:,/", + "data:,/A", + "data:text/plain;base64,abcd", + "data:text/plain;base64, abcd", + "data:text/plain;base64,abcd ", + "data:text/plain;base64, abcd===", + "data:text/plain;base64,abcd=== ", + "data:text/plain;base64,abcd ===", + "data:text/plain;base64,a", + "data:text/plain;base64,ab", + "data:text/plain;base64,abc", + "data:text/plain;base64,abcde", + "data:text/plain;base64,\uD800\uDC00", + "data:text/plain;base64,=", + "data:text/plain;base64,==", + "data:text/plain;base64,===", + "data:text/plain;base64,====", + "data:text/plain;base64,=====", + "data:text/plain;base64,a=", + "data:text/plain;base64,a==", + "data:text/plain;base64,a===", + "data:text/plain;base64,a====", + "data:text/plain;base64,a=====", + "data:text/plain;base64,ab=", + "data:text/plain;base64,ab==", + "data:text/plain;base64,ab===", + "data:text/plain;base64,ab====", + "data:text/plain;base64,ab=====", + "data:text/plain;base64,abc=", + "data:text/plain;base64,abc==", + "data:text/plain;base64,abc===", + "data:text/plain;base64,abc====", + "data:text/plain;base64,abc=====", + "data:text/plain;base64,abcd=", + "data:text/plain;base64,abcd==", + "data:text/plain;base64,abcd===", + "data:text/plain;base64,abcd====", + "data:text/plain;base64,abcd=====", + "data:text/plain;base64,abcde=", + "data:text/plain;base64,abcde==", + "data:text/plain;base64,abcde===", + "data:text/plain;base64,abcde====", + "data:text/plain;base64,abcde=====", + "data:text/plain;base64,=a", + "data:text/plain;base64,=a=", + "data:text/plain;base64,a=b", + "data:text/plain;base64,a=b=", + "data:text/plain;base64,ab=c", + "data:text/plain;base64,ab=c=", + "data:text/plain;base64,abc=d", + "data:text/plain;base64,abc=d=", + "data:text/plain;base64,ab\tcd", + "data:text/plain;base64,ab\ncd", + "data:text/plain;base64,ab\fcd", + "data:text/plain;base64,ab\rcd", + "data:text/plain;base64,ab cd", + "data:text/plain;base64,ab\u00a0cd", + "data:text/plain;base64,ab\t\n\f\r cd", + "data:text/plain;base64, \t\n\f\r ab\t\n\f\r cd\t\n\f\r ", + "data:text/plain;base64,ab\t\n\f\r =\t\n\f\r =\t\n\f\r ", + "data:text/plain;base64,A", + "data:text/plain;base64,/A", + "data:text/plain;base64,//A", + "data:text/plain;base64,///A", + "data:text/plain;base64,////A", + "data:text/plain;base64,/", + "data:text/plain;base64,A/", + "data:text/plain;base64,AA/", + "data:text/plain;base64,AAAA/", + "data:text/plain;base64,AAA/", + "data:text/plain;base64,\\0nonsense", + "data:text/plain;base64,abcd\\0nonsense", + "data:,Hello%2C%20World!", + "data:,Привет%2C%20Мир!", + "data:text/plain;base64,SGVsbG8sIFdvcmxkIQ==", + "data:text/html,%3Ch1%3EHello%2C%20World!%3C%2Fh1%3E", + "data:text/html,\n", + "data:,а", + "data:,a", + "data:text/plain;,hello", + "data:text;,hello", + "data:text/0000;,hello", + "data:text/ ;,hello", + "data:text/html;charset=foo,

%D0%9F%D1%80%D0%B8%D0%B2%D0%B5%D1%82%2C%20World!<%2Fh1>", + "data:text/html;charset=utf-8;charset=foo,

%D0%9F%D1%80%D0%B8%D0%B2%D0%B5%D1%82%2C%20World!<%2Fh1>", + "data:text/html;charset=utf-8;foo=bar,

%D0%9F%D1%80%D0%B8%D0%B2%D0%B5%D1%82%2C%20World!<%2Fh1>", + "data:text/html;charset=utf-8;foo=bar;foo=baz,

%D0%9F%D1%80%D0%B8%D0%B2%D0%B5%D1%82%2C%20World!<%2Fh1>", + "data:application/json;charset=utf-8;base64,eyJmb28iOiJiYXIifQ==", + "data:application/json;base64,eyJmb28iOiJiYXIifQ==", + "data:application/zzz;base64,eyJmb28iOiJiYXIifQ==", + "data:,test", +]; describe("parse-data-url", () => { - dataUrls.forEach((entry) => { - it(`should work with "${entry}" url`, async () => { - const [url, expected] = entry; - - const result = parseDataUrl(url); + dataUrls.forEach((dataUrl, index) => { + it(`should work with url by "${index}" index`, async () => { + const parsed = parseDataUrl(dataUrl); - if (result === null) { - expect(result).toBe(expected); - } else { - expect(result.mimeType.toString()).toEqual(expected[0]); - expect(result.body).toEqual(Buffer.from(expected[1])); - } + expect({ original: dataUrl, parsed }).toMatchSnapshot(); }); }); }); From e239c5d56971d494ee398928dd3da735a9c15611 Mon Sep 17 00:00:00 2001 From: evilebottnawi Date: Thu, 24 Dec 2020 19:18:33 +0300 Subject: [PATCH 3/3] chore(release): 2.0.0 --- CHANGELOG.md | 7 +++++++ package-lock.json | 2 +- package.json | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 040fa9d..1502bbc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,13 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. +## [2.0.0](https://github.com/webpack-contrib/source-map-loader/compare/v1.1.3...v2.0.0) (2020-12-24) + + +### ⚠ BREAKING CHANGES + +* minimum supported `webpack` version is `5` + ### [1.1.3](https://github.com/webpack-contrib/source-map-loader/compare/v1.1.2...v1.1.3) (2020-12-04) diff --git a/package-lock.json b/package-lock.json index 256638e..a1df516 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "source-map-loader", - "version": "1.1.3", + "version": "2.0.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 7b367e8..6ae0e2b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "source-map-loader", - "version": "1.1.3", + "version": "2.0.0", "description": "extracts inlined source map and offers it to webpack", "license": "MIT", "repository": "webpack-contrib/source-map-loader",