From e53479dc6c072657fd483ad33437739a5dd70f12 Mon Sep 17 00:00:00 2001 From: Jordan Sexton Date: Tue, 1 Feb 2022 14:29:25 -0600 Subject: [PATCH 01/25] publish fork under @solana namespace --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 0acf8079..8e7663b7 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "name": "qr-code-styling", + "name": "@solana/qr-code-styling", "version": "1.6.0-rc.1", "description": "Add a style and an image to your QR code", "main": "lib/qr-code-styling.js", From a53a252f06a1a2fda23bb137e7a0368ba9c8177b Mon Sep 17 00:00:00 2001 From: Jordan Sexton Date: Tue, 1 Feb 2022 15:07:51 -0600 Subject: [PATCH 02/25] publish config --- package.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/package.json b/package.json index 8e7663b7..e69578ac 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,9 @@ { "name": "@solana/qr-code-styling", "version": "1.6.0-rc.1", + "publishConfig": { + "access": "public" + }, "description": "Add a style and an image to your QR code", "main": "lib/qr-code-styling.js", "types": "lib/index.d.ts", From 843b66dd1c051f376fb46281d3a1690c7d866d32 Mon Sep 17 00:00:00 2001 From: Jordan Sexton Date: Fri, 4 Feb 2022 19:48:31 -0600 Subject: [PATCH 03/25] don't round pixels --- src/core/QRSVG.ts | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/core/QRSVG.ts b/src/core/QRSVG.ts index 75d51359..30583ad8 100644 --- a/src/core/QRSVG.ts +++ b/src/core/QRSVG.ts @@ -67,7 +67,7 @@ export default class QRSVG { const count = qr.getModuleCount(); const minSize = Math.min(this._options.width, this._options.height) - this._options.margin * 2; const realQRSize = this._options.shape === shapeTypes.circle ? minSize / Math.sqrt(2) : minSize; - const dotSize = Math.floor(realQRSize / count); + const dotSize = realQRSize / count; let drawImageSize = { hideXDots: 0, hideYDots: 0, @@ -177,9 +177,9 @@ export default class QRSVG { const minSize = Math.min(options.width, options.height) - options.margin * 2; const realQRSize = options.shape === shapeTypes.circle ? minSize / Math.sqrt(2) : minSize; - const dotSize = Math.floor(realQRSize / count); - const xBeginning = Math.floor((options.width - count * dotSize) / 2); - const yBeginning = Math.floor((options.height - count * dotSize) / 2); + const dotSize = realQRSize / count; + const xBeginning = (options.width - count * dotSize) / 2; + const yBeginning = (options.height - count * dotSize) / 2; const dot = new QRDot({ svg: this._element, type: options.dotsOptions.type }); this._dotsClipPath = document.createElementNS("http://www.w3.org/2000/svg", "clipPath"); @@ -294,11 +294,11 @@ export default class QRSVG { const count = this._qr.getModuleCount(); const minSize = Math.min(options.width, options.height) - options.margin * 2; const realQRSize = options.shape === shapeTypes.circle ? minSize / Math.sqrt(2) : minSize; - const dotSize = Math.floor(realQRSize / count); + const dotSize = realQRSize / count; const cornersSquareSize = dotSize * 7; const cornersDotSize = dotSize * 3; - const xBeginning = Math.floor((options.width - count * dotSize) / 2); - const yBeginning = Math.floor((options.height - count * dotSize) / 2); + const xBeginning = (options.width - count * dotSize) / 2; + const yBeginning = (options.height - count * dotSize) / 2; [ [0, 0, 0], @@ -443,8 +443,8 @@ export default class QRSVG { dotSize: number; }): Promise { const options = this._options; - const xBeginning = Math.floor((options.width - count * dotSize) / 2); - const yBeginning = Math.floor((options.height - count * dotSize) / 2); + const xBeginning = (options.width - count * dotSize) / 2; + const yBeginning = (options.height - count * dotSize) / 2; const dx = xBeginning + options.imageOptions.margin + (count * dotSize - width) / 2; const dy = yBeginning + options.imageOptions.margin + (count * dotSize - height) / 2; const dw = width - options.imageOptions.margin * 2; From 72496768d9d4950d448b6f315053fd888401921c Mon Sep 17 00:00:00 2001 From: Jordan Sexton Date: Fri, 4 Feb 2022 19:52:05 -0600 Subject: [PATCH 04/25] beta version bump --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index e69578ac..8e9c71ba 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@solana/qr-code-styling", - "version": "1.6.0-rc.1", + "version": "1.6.0-beta.0", "publishConfig": { "access": "public" }, From 1d91c08fabe430911f68e15cc108c5f015b5329c Mon Sep 17 00:00:00 2001 From: Henk van Maanen <36051232+HenkVanMaanen@users.noreply.github.com> Date: Thu, 9 Jun 2022 16:19:00 +0200 Subject: [PATCH 05/25] Update package lockfile to v2 --- package-lock.json | 14886 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 14869 insertions(+), 17 deletions(-) diff --git a/package-lock.json b/package-lock.json index ef44b4b7..d0eac38c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,8 +1,14853 @@ { "name": "qr-code-styling", "version": "1.5.0", - "lockfileVersion": 1, + "lockfileVersion": 2, "requires": true, + "packages": { + "": { + "version": "1.5.0", + "license": "MIT", + "dependencies": { + "qrcode-generator": "^1.4.3" + }, + "devDependencies": { + "@typescript-eslint/eslint-plugin": "^4.13.0", + "@typescript-eslint/parser": "^4.13.0", + "canvas": "^2.6.1", + "clean-webpack-plugin": "^3.0.0", + "eslint": "^7.17.0", + "eslint-config-prettier": "^7.1.0", + "eslint-loader": "^4.0.2", + "eslint-plugin-jest": "^24.1.3", + "eslint-plugin-prettier": "^3.3.1", + "html-webpack-plugin": "^4.5.1", + "jest": "^26.6.3", + "jest-environment-jsdom-fifteen": "^1.0.0", + "prettier": "^2.2.1", + "ts-jest": "^26.4.4", + "ts-loader": "^8.0.14", + "typescript": "^4.1.3", + "webpack": "^5.12.3", + "webpack-cli": "^4.3.1", + "webpack-dev-server": "^3.11.1", + "webpack-merge": "^5.7.3" + } + }, + "node_modules/@babel/code-frame": { + "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, + "dependencies": { + "@babel/highlight": "^7.10.4" + } + }, + "node_modules/@babel/core": { + "version": "7.12.10", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.10.tgz", + "integrity": "sha512-eTAlQKq65zHfkHZV0sIVODCPGVgoo1HdBlbSLi9CqOzuZanMv2ihzY+4paiKr1mH+XmYESMAmJ/dpZ68eN6d8w==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.12.10", + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helpers": "^7.12.5", + "@babel/parser": "^7.12.10", + "@babel/template": "^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", + "semver": "^5.4.1", + "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/json5": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", + "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/@babel/core/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@babel/generator": { + "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, + "dependencies": { + "@babel/types": "^7.12.11", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "node_modules/@babel/generator/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@babel/helper-function-name": { + "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, + "dependencies": { + "@babel/helper-get-function-arity": "^7.12.10", + "@babel/template": "^7.12.7", + "@babel/types": "^7.12.11" + } + }, + "node_modules/@babel/helper-get-function-arity": { + "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, + "dependencies": { + "@babel/types": "^7.12.10" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.12.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.7.tgz", + "integrity": "sha512-DCsuPyeWxeHgh1Dus7APn7iza42i/qXqiFPWyBDdOFtvS581JQePsc1F/nD+fHrcswhLlRc2UpYS1NwERxZhHw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.12.7" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz", + "integrity": "sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.12.5" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.12.1.tgz", + "integrity": "sha512-QQzehgFAZ2bbISiCpmVGfiGux8YVFXQ0abBic2Envhej22DVXV9nCFaS5hIQbkyo1AdGb+gNME2TSh3hYJVV/w==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.12.1", + "@babel/helper-replace-supers": "^7.12.1", + "@babel/helper-simple-access": "^7.12.1", + "@babel/helper-split-export-declaration": "^7.11.0", + "@babel/helper-validator-identifier": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.12.1", + "@babel/types": "^7.12.1", + "lodash": "^4.17.19" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "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, + "dependencies": { + "@babel/types": "^7.12.10" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", + "dev": true + }, + "node_modules/@babel/helper-replace-supers": { + "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, + "dependencies": { + "@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" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.12.1.tgz", + "integrity": "sha512-OxBp7pMrjVewSSC8fXDFrHrBcJATOOFssZwv16F3/6Xtc138GHybBfPbm9kfiqQHKhYQrlamWILwlDCeyMFEaA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.12.1" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "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, + "dependencies": { + "@babel/types": "^7.12.11" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "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 + }, + "node_modules/@babel/helpers": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.12.5.tgz", + "integrity": "sha512-lgKGMQlKqA8meJqKsW6rUnc4MdUk35Ln0ATDqdM1a/UpARODdI4j5Y5lVfUScnSNkJcdCRAaWkspykNoFg9sJA==", + "dev": true, + "dependencies": { + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.12.5", + "@babel/types": "^7.12.5" + } + }, + "node_modules/@babel/highlight": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.10.4", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.12.11.tgz", + "integrity": "sha512-N3UxG+uuF4CMYoNj8AhnbAcJF0PiuJ9KHuy1lQmkYsxTer/MAH9UBNHsBoAX/4s6NvlDD047No8mYVGGzLL4hg==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.1.tgz", + "integrity": "sha512-U40A76x5gTwmESz+qiqssqmeEsKvcSyvtgktrm0uzcARAmM9I1jR221f6Oq+GmHrcD+LvZDag1UTOTe2fL3TeA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.1.tgz", + "integrity": "sha512-i7ooMZFS+a/Om0crxZodrTzNEPJHZrlMVGMTEpFAj6rYY/bKCddB0Dk/YxfPuYXOopuhKk/e1jV6h+WUU9XN3A==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/template": { + "version": "7.12.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.7.tgz", + "integrity": "sha512-GkDzmHS6GV7ZeXfJZ0tLRBhZcMcY0/Lnb+eEbXDBfCAcZCjrZKe6p3J4we/D24O9Y8enxWAg1cWwof59yLh2ow==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.12.7", + "@babel/types": "^7.12.7" + } + }, + "node_modules/@babel/traverse": { + "version": "7.12.10", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.12.10.tgz", + "integrity": "sha512-6aEtf0IeRgbYWzta29lePeYSk+YAFIC3kyqESeft8o5CkFlYIMX+EQDDWEiAQ9LHOA3d0oHdgrSsID/CKqXJlg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.12.10", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.11.0", + "@babel/parser": "^7.12.10", + "@babel/types": "^7.12.10", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.19" + } + }, + "node_modules/@babel/traverse/node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/types": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.11.tgz", + "integrity": "sha512-ukA9SQtKThINm++CX1CwmliMrE54J6nIYB5XTwL5f/CLFW9owfls+YSU8tVW15RQ2w+a3fSbPjC6HdQNtWZkiA==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.12.11", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true + }, + "node_modules/@cnakazawa/watch": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz", + "integrity": "sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==", + "dev": true, + "dependencies": { + "exec-sh": "^0.3.2", + "minimist": "^1.2.0" + }, + "bin": { + "watch": "cli.js" + }, + "engines": { + "node": ">=0.1.95" + } + }, + "node_modules/@discoveryjs/json-ext": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.2.tgz", + "integrity": "sha512-HyYEUDeIj5rRQU2Hk5HTB2uHsbRQpF70nvMhVzi+VJR0X+xNEhjPui4/kBf3VeH/wqD28PT4sVOm8qqLjBrSZg==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.2.2.tgz", + "integrity": "sha512-EfB5OHNYp1F4px/LI/FEnGylop7nOqkQ1LRzCM0KccA2U8tvV8w01KBv37LbO7nW4H+YhKyo2LcJhRwjjV17QQ==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.1.1", + "espree": "^7.3.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^3.13.1", + "lodash": "^4.17.19", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/@eslint/eslintrc/node_modules/ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/@eslint/eslintrc/node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "dependencies": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.2.tgz", + "integrity": "sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-26.6.2.tgz", + "integrity": "sha512-IY1R2i2aLsLr7Id3S6p2BA82GNWryt4oSvEXLAKc+L2zdi89dSkE8xC1C+0kpATG4JhBJREnQOH7/zmccM2B0g==", + "dev": true, + "dependencies": { + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^26.6.2", + "jest-util": "^26.6.2", + "slash": "^3.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/@jest/console/node_modules/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, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/console/node_modules/chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/console/node_modules/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, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/console/node_modules/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 + }, + "node_modules/@jest/console/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/core": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-26.6.3.tgz", + "integrity": "sha512-xvV1kKbhfUqFVuZ8Cyo+JPpipAHHAV3kcDBftiduK8EICXmTFddryy3P7NfZt8Pv37rA9nEJBKCCkglCPt/Xjw==", + "dev": true, + "dependencies": { + "@jest/console": "^26.6.2", + "@jest/reporters": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/transform": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "jest-changed-files": "^26.6.2", + "jest-config": "^26.6.3", + "jest-haste-map": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-regex-util": "^26.0.0", + "jest-resolve": "^26.6.2", + "jest-resolve-dependencies": "^26.6.3", + "jest-runner": "^26.6.3", + "jest-runtime": "^26.6.3", + "jest-snapshot": "^26.6.2", + "jest-util": "^26.6.2", + "jest-validate": "^26.6.2", + "jest-watcher": "^26.6.2", + "micromatch": "^4.0.2", + "p-each-series": "^2.1.0", + "rimraf": "^3.0.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/@jest/core/node_modules/ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/core/node_modules/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, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/core/node_modules/chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/core/node_modules/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, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/core/node_modules/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 + }, + "node_modules/@jest/core/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/core/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@jest/core/node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/core/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/environment": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-26.6.2.tgz", + "integrity": "sha512-nFy+fHl28zUrRsCeMB61VDThV1pVTtlEokBRgqPrcT1JNq4yRNIyTHfyht6PqtUvY9IsuLGTrbG8kPXjSZIZwA==", + "dev": true, + "dependencies": { + "@jest/fake-timers": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "jest-mock": "^26.6.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/@jest/fake-timers": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-26.6.2.tgz", + "integrity": "sha512-14Uleatt7jdzefLPYM3KLcnUl1ZNikaKq34enpb5XG9i81JpppDb5muZvonvKyrl7ftEHkKS5L5/eB/kxJ+bvA==", + "dev": true, + "dependencies": { + "@jest/types": "^26.6.2", + "@sinonjs/fake-timers": "^6.0.1", + "@types/node": "*", + "jest-message-util": "^26.6.2", + "jest-mock": "^26.6.2", + "jest-util": "^26.6.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/@jest/globals": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-26.6.2.tgz", + "integrity": "sha512-85Ltnm7HlB/KesBUuALwQ68YTU72w9H2xW9FjZ1eL1U3lhtefjjl5c2MiUbpXt/i6LaPRvoOFJ22yCBSfQ0JIA==", + "dev": true, + "dependencies": { + "@jest/environment": "^26.6.2", + "@jest/types": "^26.6.2", + "expect": "^26.6.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/@jest/reporters": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-26.6.2.tgz", + "integrity": "sha512-h2bW53APG4HvkOnVMo8q3QXa6pcaNt1HkwVsOPMBV6LD/q9oSpxNSYZQYkAnjdMjrJ86UuYeLo+aEZClV6opnw==", + "dev": true, + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/transform": "^26.6.2", + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.2", + "graceful-fs": "^4.2.4", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^4.0.3", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.0.2", + "jest-haste-map": "^26.6.2", + "jest-resolve": "^26.6.2", + "jest-util": "^26.6.2", + "jest-worker": "^26.6.2", + "slash": "^3.0.0", + "source-map": "^0.6.0", + "string-length": "^4.0.1", + "terminal-link": "^2.0.0", + "v8-to-istanbul": "^7.0.0" + }, + "engines": { + "node": ">= 10.14.2" + }, + "optionalDependencies": { + "node-notifier": "^8.0.0" + } + }, + "node_modules/@jest/reporters/node_modules/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, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/reporters/node_modules/chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/reporters/node_modules/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, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/reporters/node_modules/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 + }, + "node_modules/@jest/reporters/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/reporters/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/source-map": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-26.6.2.tgz", + "integrity": "sha512-YwYcCwAnNmOVsZ8mr3GfnzdXDAl4LaenZP5z+G0c8bzC9/dugL8zRmxZzdoTl4IaS3CryS1uWnROLPFmb6lVvA==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0", + "graceful-fs": "^4.2.4", + "source-map": "^0.6.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/@jest/test-result": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-26.6.2.tgz", + "integrity": "sha512-5O7H5c/7YlojphYNrK02LlDIV2GNPYisKwHm2QTKjNZeEzezCbwYs9swJySv2UfPMyZ0VdsmMv7jIlD/IKYQpQ==", + "dev": true, + "dependencies": { + "@jest/console": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/@jest/test-sequencer": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-26.6.3.tgz", + "integrity": "sha512-YHlVIjP5nfEyjlrSr8t/YdNfU/1XEt7c5b4OxcXCjyRhjzLYu/rO69/WHPuYcbCWkz8kAeZVZp2N2+IOLLEPGw==", + "dev": true, + "dependencies": { + "@jest/test-result": "^26.6.2", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^26.6.2", + "jest-runner": "^26.6.3", + "jest-runtime": "^26.6.3" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/@jest/transform": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-26.6.2.tgz", + "integrity": "sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA==", + "dev": true, + "dependencies": { + "@babel/core": "^7.1.0", + "@jest/types": "^26.6.2", + "babel-plugin-istanbul": "^6.0.0", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^26.6.2", + "jest-regex-util": "^26.0.0", + "jest-util": "^26.6.2", + "micromatch": "^4.0.2", + "pirates": "^4.0.1", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/@jest/transform/node_modules/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, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/transform/node_modules/chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/transform/node_modules/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, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/transform/node_modules/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 + }, + "node_modules/@jest/transform/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/transform/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/@jest/types/node_modules/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, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/types/node_modules/chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/types/node_modules/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, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/types/node_modules/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 + }, + "node_modules/@jest/types/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/types/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz", + "integrity": "sha512-33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.4", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz", + "integrity": "sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.6.tgz", + "integrity": "sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.4", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@sinonjs/commons": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.1.tgz", + "integrity": "sha512-892K+kWUUi3cl+LlqEWIDrhvLgdL79tECi8JZUyq6IviKy/DNhuzCRlbHUjxK89f4ypPMMaFnFuR9Ie6DoIMsw==", + "dev": true, + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz", + "integrity": "sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^1.7.0" + } + }, + "node_modules/@types/anymatch": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@types/anymatch/-/anymatch-1.3.1.tgz", + "integrity": "sha512-/+CRPXpBDpo2RK9C68N3b2cOvO0Cf5B9aPijHsoDQTHivnGSObdOF2BRQOYjojWTDy6nQvMjmqRXIxH55VjxxA==", + "dev": true + }, + "node_modules/@types/babel__core": { + "version": "7.1.12", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.12.tgz", + "integrity": "sha512-wMTHiiTiBAAPebqaPiPDLFA4LYPKr6Ph0Xq/6rq1Ur3v66HXyG+clfR9CNETkD7MQS8ZHvpQOtA53DLws5WAEQ==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.2.tgz", + "integrity": "sha512-MdSJnBjl+bdwkLskZ3NGFp9YcXGx5ggLpQQPqtgakVhsWK0hTtNYhjpZLlWQTviGTvF8at+Bvli3jV7faPdgeQ==", + "dev": true, + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.0.tgz", + "integrity": "sha512-NTPErx4/FiPCGScH7foPyr+/1Dkzkni+rHiYHHoTjvwou7AQzJkNeD60A9CXRy+ZEN2B1bggmkTMCDb+Mv5k+A==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "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, + "dependencies": { + "@babel/types": "^7.3.0" + } + }, + "node_modules/@types/eslint": { + "version": "7.2.6", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.2.6.tgz", + "integrity": "sha512-I+1sYH+NPQ3/tVqCeUSBwTE/0heyvtXqpIopUUArlBm0Kpocb8FbMa3AZ/ASKIFpN3rnEx932TTXDbt9OXsNDw==", + "dev": true, + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.0.tgz", + "integrity": "sha512-O/ql2+rrCUe2W2rs7wMR+GqPRcgB6UiqN5RhrR5xruFlY7l9YLMn0ZkDzjoHLeiFkR8MCQZVudUuuvQ2BLC9Qw==", + "dev": true, + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "0.0.45", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.45.tgz", + "integrity": "sha512-jnqIUKDUqJbDIUxm0Uj7bnlMnRm1T/eZ9N+AVMqhPgzrba2GhGG5o/jCTwmdPK709nEZsGoMzXEDUjcXHa3W0g==", + "dev": true + }, + "node_modules/@types/glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w==", + "dev": true, + "dependencies": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "node_modules/@types/graceful-fs": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.4.tgz", + "integrity": "sha512-mWA/4zFQhfvOA8zWkXobwJvBD7vzcxgrOQ0J5CH1votGqdq9m7+FwtGaqyCZqC3NyyBkc9z4m+iry4LlqcMWJg==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/html-minifier-terser": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz", + "integrity": "sha512-giAlZwstKbmvMk1OO7WXSj4OZ0keXAcl2TQq4LWHiiPH2ByaH7WeUzng+Qej8UPxxv+8lRTuouo0iaNDBuzIBA==", + "dev": true + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz", + "integrity": "sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw==", + "dev": true + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz", + "integrity": "sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/jest": { + "version": "26.0.19", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-26.0.19.tgz", + "integrity": "sha512-jqHoirTG61fee6v6rwbnEuKhpSKih0tuhqeFbCmMmErhtu3BYlOZaXWjffgOstMM4S/3iQD31lI5bGLTrs97yQ==", + "dev": true, + "dependencies": { + "jest-diff": "^26.0.0", + "pretty-format": "^26.0.0" + } + }, + "node_modules/@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==", + "dev": true + }, + "node_modules/@types/minimatch": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", + "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==", + "dev": true + }, + "node_modules/@types/node": { + "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 + }, + "node_modules/@types/normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==", + "dev": true + }, + "node_modules/@types/prettier": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.1.5.tgz", + "integrity": "sha512-UEyp8LwZ4Dg30kVU2Q3amHHyTn1jEdhCIE59ANed76GaT1Vp76DD3ZWSAxgCrw6wJ0TqeoBpqmfUHiUDPs//HQ==", + "dev": true + }, + "node_modules/@types/source-list-map": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@types/source-list-map/-/source-list-map-0.1.2.tgz", + "integrity": "sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA==", + "dev": true + }, + "node_modules/@types/stack-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.0.tgz", + "integrity": "sha512-RJJrrySY7A8havqpGObOB4W92QXKJo63/jFLLgpvOtsGUqbQZ9Sbgl35KMm1DjC6j7AvmmU2bIno+3IyEaemaw==", + "dev": true + }, + "node_modules/@types/tapable": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/tapable/-/tapable-1.0.6.tgz", + "integrity": "sha512-W+bw9ds02rAQaMvaLYxAbJ6cvguW/iJXNT6lTssS1ps6QdrMKttqEAMEG/b5CR8TZl3/L7/lH0ZV5nNR1LXikA==", + "dev": true + }, + "node_modules/@types/uglify-js": { + "version": "3.11.1", + "resolved": "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.11.1.tgz", + "integrity": "sha512-7npvPKV+jINLu1SpSYVWG8KvyJBhBa8tmzMMdDoVc2pWUYHN8KIXlPJhjJ4LT97c4dXJA2SHL/q6ADbDriZN+Q==", + "dev": true, + "dependencies": { + "source-map": "^0.6.1" + } + }, + "node_modules/@types/webpack": { + "version": "4.41.25", + "resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.25.tgz", + "integrity": "sha512-cr6kZ+4m9lp86ytQc1jPOJXgINQyz3kLLunZ57jznW+WIAL0JqZbGubQk4GlD42MuQL5JGOABrxdpqqWeovlVQ==", + "dev": true, + "dependencies": { + "@types/anymatch": "*", + "@types/node": "*", + "@types/tapable": "*", + "@types/uglify-js": "*", + "@types/webpack-sources": "*", + "source-map": "^0.6.0" + } + }, + "node_modules/@types/webpack-sources": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-2.1.0.tgz", + "integrity": "sha512-LXn/oYIpBeucgP1EIJbKQ2/4ZmpvRl+dlrFdX7+94SKRUV3Evy3FsfMZY318vGhkWUS5MPhtOM3w1/hCOAOXcg==", + "dev": true, + "dependencies": { + "@types/node": "*", + "@types/source-list-map": "*", + "source-map": "^0.7.3" + } + }, + "node_modules/@types/webpack-sources/node_modules/source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@types/yargs": { + "version": "15.0.12", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.12.tgz", + "integrity": "sha512-f+fD/fQAo3BCbCDlrUpznF1A5Zp9rB0noS5vnoormHSIPFKL0Z2DcUJ3Gxp5ytH4uLRNxy7AwYUC9exZzqGMAw==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-15.0.0.tgz", + "integrity": "sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw==", + "dev": true + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.13.0.tgz", + "integrity": "sha512-ygqDUm+BUPvrr0jrXqoteMqmIaZ/bixYOc3A4BRwzEPTZPi6E+n44rzNZWaB0YvtukgP+aoj0i/fyx7FkM2p1w==", + "dev": true, + "dependencies": { + "@typescript-eslint/experimental-utils": "4.13.0", + "@typescript-eslint/scope-manager": "4.13.0", + "debug": "^4.1.1", + "functional-red-black-tree": "^1.0.1", + "lodash": "^4.17.15", + "regexpp": "^3.0.0", + "semver": "^7.3.2", + "tsutils": "^3.17.1" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^4.0.0", + "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/experimental-utils": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.13.0.tgz", + "integrity": "sha512-/ZsuWmqagOzNkx30VWYV3MNB/Re/CGv/7EzlqZo5RegBN8tMuPaBgNK6vPBCQA8tcYrbsrTdbx3ixMRRKEEGVw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.3", + "@typescript-eslint/scope-manager": "4.13.0", + "@typescript-eslint/types": "4.13.0", + "@typescript-eslint/typescript-estree": "4.13.0", + "eslint-scope": "^5.0.0", + "eslint-utils": "^2.0.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.13.0.tgz", + "integrity": "sha512-KO0J5SRF08pMXzq9+abyHnaGQgUJZ3Z3ax+pmqz9vl81JxmTTOUfQmq7/4awVfq09b6C4owNlOgOwp61pYRBSg==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "4.13.0", + "@typescript-eslint/types": "4.13.0", + "@typescript-eslint/typescript-estree": "4.13.0", + "debug": "^4.1.1" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.13.0.tgz", + "integrity": "sha512-UpK7YLG2JlTp/9G4CHe7GxOwd93RBf3aHO5L+pfjIrhtBvZjHKbMhBXTIQNkbz7HZ9XOe++yKrXutYm5KmjWgQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "4.13.0", + "@typescript-eslint/visitor-keys": "4.13.0" + }, + "engines": { + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.13.0.tgz", + "integrity": "sha512-/+aPaq163oX+ObOG00M0t9tKkOgdv9lq0IQv/y4SqGkAXmhFmCfgsELV7kOCTb2vVU5VOmVwXBXJTDr353C1rQ==", + "dev": true, + "engines": { + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.13.0.tgz", + "integrity": "sha512-9A0/DFZZLlGXn5XA349dWQFwPZxcyYyCFX5X88nWs2uachRDwGeyPz46oTsm9ZJE66EALvEns1lvBwa4d9QxMg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "4.13.0", + "@typescript-eslint/visitor-keys": "4.13.0", + "debug": "^4.1.1", + "globby": "^11.0.1", + "is-glob": "^4.0.1", + "lodash": "^4.17.15", + "semver": "^7.3.2", + "tsutils": "^3.17.1" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/globby": { + "version": "11.0.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.2.tgz", + "integrity": "sha512-2ZThXDvvV8fYFRVIxnrMQBipZQDr7MxKAmQK1vujaj9/7eF0efG7BPUKJ7jP7G5SLF37xKDXvO4S/KKLj/Z0og==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.1.1", + "ignore": "^5.1.4", + "merge2": "^1.3.0", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.13.0.tgz", + "integrity": "sha512-6RoxWK05PAibukE7jElqAtNMq+RWZyqJ6Q/GdIxaiUj2Ept8jh8+FUVlbq9WxMYxkmEOPvCE5cRSyupMpwW31g==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "4.13.0", + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.0.tgz", + "integrity": "sha512-kX2W49LWsbthrmIRMbQZuQDhGtjyqXfEmmHyEi4XWnSZtPmxY0+3anPIzsnRb45VH/J55zlOfWvZuY47aJZTJg==", + "dev": true, + "dependencies": { + "@webassemblyjs/helper-numbers": "1.11.0", + "@webassemblyjs/helper-wasm-bytecode": "1.11.0" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.0.tgz", + "integrity": "sha512-Q/aVYs/VnPDVYvsCBL/gSgwmfjeCb4LW8+TMrO3cSzJImgv8lxxEPM2JA5jMrivE7LSz3V+PFqtMbls3m1exDA==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.0.tgz", + "integrity": "sha512-baT/va95eXiXb2QflSx95QGT5ClzWpGaa8L7JnJbgzoYeaA27FCvuBXU758l+KXWRndEmUXjP0Q5fibhavIn8w==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.0.tgz", + "integrity": "sha512-u9HPBEl4DS+vA8qLQdEQ6N/eJQ7gT7aNvMIo8AAWvAl/xMrcOSiI2M0MAnMCy3jIFke7bEee/JwdX1nUpCtdyA==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.0.tgz", + "integrity": "sha512-DhRQKelIj01s5IgdsOJMKLppI+4zpmcMQ3XboFPLwCpSNH6Hqo1ritgHgD0nqHeSYqofA6aBN/NmXuGjM1jEfQ==", + "dev": true, + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.11.0", + "@webassemblyjs/helper-api-error": "1.11.0", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.0.tgz", + "integrity": "sha512-MbmhvxXExm542tWREgSFnOVo07fDpsBJg3sIl6fSp9xuu75eGz5lz31q7wTLffwL3Za7XNRCMZy210+tnsUSEA==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.0.tgz", + "integrity": "sha512-3Eb88hcbfY/FCukrg6i3EH8H2UsD7x8Vy47iVJrP967A9JGqgBVL9aH71SETPx1JrGsOUVLo0c7vMCN22ytJew==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.0", + "@webassemblyjs/helper-buffer": "1.11.0", + "@webassemblyjs/helper-wasm-bytecode": "1.11.0", + "@webassemblyjs/wasm-gen": "1.11.0" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.0.tgz", + "integrity": "sha512-KXzOqpcYQwAfeQ6WbF6HXo+0udBNmw0iXDmEK5sFlmQdmND+tr773Ti8/5T/M6Tl/413ArSJErATd8In3B+WBA==", + "dev": true, + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.0.tgz", + "integrity": "sha512-aqbsHa1mSQAbeeNcl38un6qVY++hh8OpCOzxhixSYgbRfNWcxJNJQwe2rezK9XEcssJbbWIkblaJRwGMS9zp+g==", + "dev": true, + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.0.tgz", + "integrity": "sha512-A/lclGxH6SpSLSyFowMzO/+aDEPU4hvEiooCMXQPcQFPPJaYcPQNKGOCLUySJsYJ4trbpr+Fs08n4jelkVTGVw==", + "dev": true + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.0.tgz", + "integrity": "sha512-JHQ0damXy0G6J9ucyKVXO2j08JVJ2ntkdJlq1UTiUrIgfGMmA7Ik5VdC/L8hBK46kVJgujkBIoMtT8yVr+yVOQ==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.0", + "@webassemblyjs/helper-buffer": "1.11.0", + "@webassemblyjs/helper-wasm-bytecode": "1.11.0", + "@webassemblyjs/helper-wasm-section": "1.11.0", + "@webassemblyjs/wasm-gen": "1.11.0", + "@webassemblyjs/wasm-opt": "1.11.0", + "@webassemblyjs/wasm-parser": "1.11.0", + "@webassemblyjs/wast-printer": "1.11.0" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.0.tgz", + "integrity": "sha512-BEUv1aj0WptCZ9kIS30th5ILASUnAPEvE3tVMTrItnZRT9tXCLW2LEXT8ezLw59rqPP9klh9LPmpU+WmRQmCPQ==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.0", + "@webassemblyjs/helper-wasm-bytecode": "1.11.0", + "@webassemblyjs/ieee754": "1.11.0", + "@webassemblyjs/leb128": "1.11.0", + "@webassemblyjs/utf8": "1.11.0" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.0.tgz", + "integrity": "sha512-tHUSP5F4ywyh3hZ0+fDQuWxKx3mJiPeFufg+9gwTpYp324mPCQgnuVKwzLTZVqj0duRDovnPaZqDwoyhIO8kYg==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.0", + "@webassemblyjs/helper-buffer": "1.11.0", + "@webassemblyjs/wasm-gen": "1.11.0", + "@webassemblyjs/wasm-parser": "1.11.0" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.0.tgz", + "integrity": "sha512-6L285Sgu9gphrcpDXINvm0M9BskznnzJTE7gYkjDbxET28shDqp27wpruyx3C2S/dvEwiigBwLA1cz7lNUi0kw==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.0", + "@webassemblyjs/helper-api-error": "1.11.0", + "@webassemblyjs/helper-wasm-bytecode": "1.11.0", + "@webassemblyjs/ieee754": "1.11.0", + "@webassemblyjs/leb128": "1.11.0", + "@webassemblyjs/utf8": "1.11.0" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.0.tgz", + "integrity": "sha512-Fg5OX46pRdTgB7rKIUojkh9vXaVN6sGYCnEiJN1GYkb0RPwShZXp6KTDqmoMdQPKhcroOXh3fEzmkWmCYaKYhQ==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.0", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webpack-cli/info": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.2.1.tgz", + "integrity": "sha512-fLnDML5HZ5AEKzHul8xLAksoKN2cibu6MgonkUj8R9V7bbeVRkd1XbGEGWrAUNYHbX1jcqCsDEpBviE5StPMzQ==", + "dev": true, + "dependencies": { + "envinfo": "^7.7.3" + }, + "peerDependencies": { + "webpack-cli": "4.x.x" + } + }, + "node_modules/@webpack-cli/serve": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.2.1.tgz", + "integrity": "sha512-Zj1z6AyS+vqV6Hfi7ngCjFGdHV5EwZNIHo6QfFTNe9PyW+zBU1zJ9BiOW1pmUEq950RC4+Dym6flyA/61/vhyw==", + "dev": true, + "peerDependencies": { + "webpack-cli": "4.x.x" + }, + "peerDependenciesMeta": { + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "node_modules/abab": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", + "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==", + "dev": true + }, + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "node_modules/accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "dev": true, + "dependencies": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-globals": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", + "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", + "dev": true, + "dependencies": { + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", + "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/acorn-walk": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-errors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", + "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", + "dev": true, + "peerDependencies": { + "ajv": ">=5.0.0" + } + }, + "node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/ansi-colors": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", + "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", + "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", + "dev": true, + "dependencies": { + "type-fest": "^0.11.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-escapes/node_modules/type-fest": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", + "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-html": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", + "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=", + "dev": true, + "engines": [ + "node >= 0.8.0" + ], + "bin": { + "ansi-html": "bin/ansi-html" + } + }, + "node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + }, + "node_modules/are-we-there-yet": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", + "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", + "dev": true, + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", + "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", + "dev": true + }, + "node_modules/array-flatten": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", + "dev": true + }, + "node_modules/array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "dependencies": { + "array-uniq": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dev": true, + "dependencies": { + "safer-buffer": "~2.1.0" + } + }, + "node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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, + "engines": { + "node": ">=8" + } + }, + "node_modules/async": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "dev": true, + "dependencies": { + "lodash": "^4.17.14" + } + }, + "node_modules/async-each": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", + "dev": true + }, + "node_modules/async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", + "dev": true + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "node_modules/atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true, + "bin": { + "atob": "bin/atob.js" + }, + "engines": { + "node": ">= 4.5.0" + } + }, + "node_modules/aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/aws4": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", + "dev": true + }, + "node_modules/babel-jest": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-26.6.3.tgz", + "integrity": "sha512-pl4Q+GAVOHwvjrck6jKjvmGhnO3jHX/xuB9d27f+EJZ/6k+6nMuPjorrYp7s++bKKdANwzElBWnLWaObvTnaZA==", + "dev": true, + "dependencies": { + "@jest/transform": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/babel__core": "^7.1.7", + "babel-plugin-istanbul": "^6.0.0", + "babel-preset-jest": "^26.6.2", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "slash": "^3.0.0" + }, + "engines": { + "node": ">= 10.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/babel-jest/node_modules/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, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/babel-jest/node_modules/chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/babel-jest/node_modules/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, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/babel-jest/node_modules/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 + }, + "node_modules/babel-jest/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-jest/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-istanbul": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz", + "integrity": "sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^4.0.0", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-jest-hoist": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.6.2.tgz", + "integrity": "sha512-PO9t0697lNTmcEHH69mdtYiOIkkOlj9fySqfO3K1eCcdISevLAE0xY59VLLUj0SoiPiTX/JU2CYFpILydUa5Lw==", + "dev": true, + "dependencies": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.0.0", + "@types/babel__traverse": "^7.0.6" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/babel-preset-current-node-syntax": { + "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, + "dependencies": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/babel-preset-jest": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-26.6.2.tgz", + "integrity": "sha512-YvdtlVm9t3k777c5NPQIv6cxFFFapys25HiUmuSgHwIZhfifweR5c5Sf5nwE3MAbfu327CYSvps8Yx6ANLyleQ==", + "dev": true, + "dependencies": { + "babel-plugin-jest-hoist": "^26.6.2", + "babel-preset-current-node-syntax": "^1.0.0" + }, + "engines": { + "node": ">= 10.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "node_modules/base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "dependencies": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base/node_modules/is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base/node_modules/is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base/node_modules/is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", + "dev": true + }, + "node_modules/bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, + "dependencies": { + "tweetnacl": "^0.14.3" + } + }, + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "optional": true, + "dependencies": { + "file-uri-to-path": "1.0.0" + } + }, + "node_modules/body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "dev": true, + "dependencies": { + "bytes": "3.1.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "~1.6.17" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/body-parser/node_modules/bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/body-parser/node_modules/qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/bonjour": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", + "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", + "dev": true, + "dependencies": { + "array-flatten": "^2.1.0", + "deep-equal": "^1.0.1", + "dns-equal": "^1.0.0", + "dns-txt": "^2.0.2", + "multicast-dns": "^6.0.1", + "multicast-dns-service-types": "^1.1.0" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", + "dev": true + }, + "node_modules/browserslist": { + "version": "4.16.6", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz", + "integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==", + "dev": true, + "dependencies": { + "caniuse-lite": "^1.0.30001219", + "colorette": "^1.2.2", + "electron-to-chromium": "^1.3.723", + "escalade": "^3.1.1", + "node-releases": "^1.1.71" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + } + }, + "node_modules/browserslist/node_modules/caniuse-lite": { + "version": "1.0.30001230", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001230.tgz", + "integrity": "sha512-5yBd5nWCBS+jWKTcHOzXwo5xzcj4ePE/yjtkZyUV1BTUmrBaA9MRGC+e7mxnqXSA90CmCA8L3eKLaSUkt099IQ==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + } + }, + "node_modules/browserslist/node_modules/colorette": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", + "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", + "dev": true + }, + "node_modules/browserslist/node_modules/electron-to-chromium": { + "version": "1.3.739", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.739.tgz", + "integrity": "sha512-+LPJVRsN7hGZ9EIUUiWCpO7l4E3qBYHNadazlucBfsXBbccDFNKUBAgzE68FnkWGJPwD/AfKhSzL+G+Iqb8A4A==", + "dev": true + }, + "node_modules/browserslist/node_modules/node-releases": { + "version": "1.1.72", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.72.tgz", + "integrity": "sha512-LLUo+PpH3dU6XizX3iVoubUNheF/owjXCZZ5yACDxNnPtgFuludV1ZL3ayK1kVep42Rmm0+R9/Y60NQbZ2bifw==", + "dev": true + }, + "node_modules/bs-logger": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", + "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", + "dev": true, + "dependencies": { + "fast-json-stable-stringify": "2.x" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "dependencies": { + "node-int64": "^0.4.0" + } + }, + "node_modules/buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, + "node_modules/buffer-indexof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", + "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", + "dev": true + }, + "node_modules/bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "dependencies": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/call-bind": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.0.tgz", + "integrity": "sha512-AEXsYIyyDY3MCzbwdhzG3Jx1R0J2wetQyUynn6dYHAO+bg8l1k7jwZtRv4ryryFs7EP+NDlikJlVe59jr0cM2w==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "dev": true, + "dependencies": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, + "node_modules/camel-case/node_modules/tslib": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", + "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", + "dev": true + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/canvas": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/canvas/-/canvas-2.6.1.tgz", + "integrity": "sha512-S98rKsPcuhfTcYbtF53UIJhcbgIAK533d1kJKMwsMwAIFgfd58MOyxRud3kktlzWiEkFliaJtvyZCBtud/XVEA==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "nan": "^2.14.0", + "node-pre-gyp": "^0.11.0", + "simple-get": "^3.0.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/capture-exit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz", + "integrity": "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==", + "dev": true, + "dependencies": { + "rsvp": "^4.8.4" + }, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "deprecated": "Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies", + "dev": true, + "dependencies": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + }, + "optionalDependencies": { + "fsevents": "^1.2.7" + } + }, + "node_modules/chokidar/node_modules/anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "dependencies": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "node_modules/chokidar/node_modules/anymatch/node_modules/normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "dependencies": { + "remove-trailing-separator": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/chokidar/node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/chokidar/node_modules/braces/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/chokidar/node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/chokidar/node_modules/fill-range/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/chokidar/node_modules/fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "deprecated": "fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "dependencies": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + }, + "engines": { + "node": ">= 4.0" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "dependencies": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + } + }, + "node_modules/chokidar/node_modules/glob-parent/node_modules/is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/chokidar/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/chokidar/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/chokidar/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/chokidar/node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true + }, + "node_modules/chrome-trace-event": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", + "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", + "dev": true, + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "node_modules/cjs-module-lexer": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-0.6.0.tgz", + "integrity": "sha512-uc2Vix1frTfnuzxxu1Hp4ktSvM3QaI4oXl4ZUqL1wjTu/BGki9TrCWoqLTg/drR1KwAEarXuRFCG2Svr1GxPFw==", + "dev": true + }, + "node_modules/class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "dependencies": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/clean-css": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.3.tgz", + "integrity": "sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA==", + "dev": true, + "dependencies": { + "source-map": "~0.6.0" + }, + "engines": { + "node": ">= 4.0" + } + }, + "node_modules/clean-webpack-plugin": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/clean-webpack-plugin/-/clean-webpack-plugin-3.0.0.tgz", + "integrity": "sha512-MciirUH5r+cYLGCOL5JX/ZLzOZbVr1ot3Fw+KcvbhUb6PM+yycqd9ZhIlcigQ5gl+XhppNmw3bEFuaaMNyLj3A==", + "dev": true, + "dependencies": { + "@types/webpack": "^4.4.31", + "del": "^4.1.1" + }, + "engines": { + "node": ">=8.9.0" + }, + "peerDependencies": { + "webpack": "*" + } + }, + "node_modules/cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "node_modules/cliui/node_modules/ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true, + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } + }, + "node_modules/code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/collect-v8-coverage": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", + "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", + "dev": true + }, + "node_modules/collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "dependencies": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/colorette": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.1.tgz", + "integrity": "sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==", + "dev": true + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "node_modules/component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "dev": true + }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dev": true, + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dev": true, + "dependencies": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/compression/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/compression/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "node_modules/connect-history-api-fallback": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "dev": true + }, + "node_modules/content-disposition": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "dev": true, + "dependencies": { + "safe-buffer": "5.1.2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/convert-source-map": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.1" + } + }, + "node_modules/cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", + "dev": true + }, + "node_modules/copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/cross-spawn/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/css-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", + "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^3.2.1", + "domutils": "^1.7.0", + "nth-check": "^1.0.2" + } + }, + "node_modules/css-what": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", + "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==", + "dev": true, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/cssom": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", + "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", + "dev": true + }, + "node_modules/cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "dev": true, + "dependencies": { + "cssom": "~0.3.6" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cssstyle/node_modules/cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true + }, + "node_modules/dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "dependencies": { + "assert-plus": "^1.0.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/data-urls": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", + "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", + "dev": true, + "dependencies": { + "abab": "^2.0.3", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decimal.js": { + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.2.1.tgz", + "integrity": "sha512-KaL7+6Fw6i5A2XSnsbhm/6B+NuEA7TZ4vqxnd5tXz9sbKtrN9Srj8ab4vKVdK8YAqZO9P1kg45Y6YLoduPf+kw==", + "dev": true + }, + "node_modules/decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/decompress-response": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz", + "integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==", + "dev": true, + "dependencies": { + "mimic-response": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/deep-equal": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", + "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", + "dev": true, + "dependencies": { + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.1", + "is-regex": "^1.0.4", + "object-is": "^1.0.1", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.2.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "node_modules/deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/default-gateway": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz", + "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==", + "dev": true, + "dependencies": { + "execa": "^1.0.0", + "ip-regex": "^2.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "dependencies": { + "object-keys": "^1.0.12" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/define-property/node_modules/is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/define-property/node_modules/is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/define-property/node_modules/is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/del": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", + "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", + "dev": true, + "dependencies": { + "@types/glob": "^7.1.1", + "globby": "^6.1.0", + "is-path-cwd": "^2.0.0", + "is-path-in-cwd": "^2.0.0", + "p-map": "^2.0.0", + "pify": "^4.0.1", + "rimraf": "^2.6.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "dev": true + }, + "node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "dev": true + }, + "node_modules/detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", + "dev": true, + "bin": { + "detect-libc": "bin/detect-libc.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/detect-node": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz", + "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==", + "dev": true + }, + "node_modules/diff-sequences": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz", + "integrity": "sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==", + "dev": true, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dir-glob/node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=", + "dev": true + }, + "node_modules/dns-packet": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.4.tgz", + "integrity": "sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==", + "dev": true, + "dependencies": { + "ip": "^1.1.0", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/dns-txt": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", + "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", + "dev": true, + "dependencies": { + "buffer-indexof": "^1.0.0" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "dev": true, + "dependencies": { + "utila": "~0.4" + } + }, + "node_modules/dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "dev": true, + "dependencies": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + } + }, + "node_modules/dom-serializer/node_modules/domelementtype": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.1.0.tgz", + "integrity": "sha512-LsTgx/L5VpD+Q8lmsXSHW2WpA+eBlZ9HPf3erD1IoPF00/3JKHZ3BknUVA2QGDNu69ZNmyFmCWBSO45XjYKC5w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "dev": true + }, + "node_modules/domexception": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", + "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", + "dev": true, + "dependencies": { + "webidl-conversions": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/domexception/node_modules/webidl-conversions": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", + "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/domhandler": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", + "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "dev": true, + "dependencies": { + "domelementtype": "1" + } + }, + "node_modules/domutils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "dev": true, + "dependencies": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "node_modules/dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "dev": true, + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/dot-case/node_modules/tslib": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", + "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", + "dev": true + }, + "node_modules/ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, + "dependencies": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "node_modules/emittery": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.7.2.tgz", + "integrity": "sha512-A8OG5SR/ij3SsJdWDJdkkSYUjQdCUx6APQXem0SaEePBSRg4eymGYwBkKo1Y6DU+af/Jn2dBQqDBvjnr9Vi8nQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/enhanced-resolve": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", + "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.5.0", + "tapable": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "dependencies": { + "ansi-colors": "^4.1.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/enquirer/node_modules/ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/entities": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", + "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==", + "dev": true, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/envinfo": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.7.3.tgz", + "integrity": "sha512-46+j5QxbPWza0PB1i15nZx0xQ4I/EfQxg9J8Had3b408SV63nEtor2e+oiY63amTo9KTuh2a3XLObNwduxYwwA==", + "dev": true, + "bin": { + "envinfo": "dist/cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/errno": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "dev": true, + "dependencies": { + "prr": "~1.0.1" + }, + "bin": { + "errno": "cli.js" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-abstract": { + "version": "1.18.0-next.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.1.tgz", + "integrity": "sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA==", + "dev": true, + "dependencies": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-negative-zero": "^2.0.0", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/escodegen": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", + "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", + "dev": true, + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=4.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/eslint": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.17.0.tgz", + "integrity": "sha512-zJk08MiBgwuGoxes5sSQhOtibZ75pz0J35XTRlZOk9xMffhpA9BTbQZxoXZzOl5zMbleShbGwtw+1kGferfFwQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "@eslint/eslintrc": "^0.2.2", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "enquirer": "^2.3.5", + "eslint-scope": "^5.1.1", + "eslint-utils": "^2.1.0", + "eslint-visitor-keys": "^2.0.0", + "espree": "^7.3.1", + "esquery": "^1.2.0", + "esutils": "^2.0.2", + "file-entry-cache": "^6.0.0", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.0.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash": "^4.17.19", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "progress": "^2.0.0", + "regexpp": "^3.1.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.0", + "strip-json-comments": "^3.1.0", + "table": "^6.0.4", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-prettier": { + "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, + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-loader": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/eslint-loader/-/eslint-loader-4.0.2.tgz", + "integrity": "sha512-EDpXor6lsjtTzZpLUn7KmXs02+nIjGcgees9BYjNkWra3jVq5vVa8IoCKgzT2M7dNNeoMBtaSG83Bd40N3poLw==", + "deprecated": "This loader has been deprecated. Please use eslint-webpack-plugin", + "dev": true, + "dependencies": { + "find-cache-dir": "^3.3.1", + "fs-extra": "^8.1.0", + "loader-utils": "^2.0.0", + "object-hash": "^2.0.3", + "schema-utils": "^2.6.5" + }, + "engines": { + "node": ">= 10.13.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0", + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/eslint-loader/node_modules/json5": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", + "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/eslint-loader/node_modules/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==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/eslint-loader/node_modules/schema-utils": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/eslint-plugin-jest": { + "version": "24.1.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-24.1.3.tgz", + "integrity": "sha512-dNGGjzuEzCE3d5EPZQ/QGtmlMotqnYWD/QpCZ1UuZlrMAdhG5rldh0N0haCvhGnUkSeuORS5VNROwF9Hrgn3Lg==", + "dev": true, + "dependencies": { + "@typescript-eslint/experimental-utils": "^4.0.1" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": ">=5" + } + }, + "node_modules/eslint-plugin-prettier": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.3.1.tgz", + "integrity": "sha512-Rq3jkcFY8RYeQLgk2cCwuc0P7SEFwDravPhsJZOQ5N4YI4DSg50NyqJ/9gdZHzQlHf8MvafSesbNJCcP/FF6pQ==", + "dev": true, + "dependencies": { + "prettier-linter-helpers": "^1.0.0" + }, + "engines": { + "node": ">=6.0.0" + }, + "peerDependencies": { + "eslint": ">=5.0.0", + "prettier": ">=1.13.0" + }, + "peerDependenciesMeta": { + "eslint-config-prettier": { + "optional": true + } + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz", + "integrity": "sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint/node_modules/ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/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, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/eslint/node_modules/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, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/eslint/node_modules/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 + }, + "node_modules/eslint/node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/eslint/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/eslint/node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/eslint/node_modules/optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/eslint/node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/eslint/node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/eslint/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/espree": { + "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, + "dependencies": { + "acorn": "^7.4.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^1.3.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz", + "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esquery/node_modules/estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, + "node_modules/events": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.2.0.tgz", + "integrity": "sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg==", + "dev": true, + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/eventsource": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.0.7.tgz", + "integrity": "sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ==", + "dev": true, + "dependencies": { + "original": "^1.0.0" + }, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/exec-sh": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.4.tgz", + "integrity": "sha512-sEFIkc61v75sWeOe72qyrqg2Qg0OuLESziUDk/O/z2qgS15y2gWVFrI6f2Qn/qw/0/NCfCEsmNA4zOjkwEZT1A==", + "dev": true + }, + "node_modules/execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "dependencies": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "dependencies": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/expand-brackets/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/expect": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/expect/-/expect-26.6.2.tgz", + "integrity": "sha512-9/hlOBkQl2l/PLHJx6JjoDF6xPKcJEsUlWKb23rKE7KzeDqUZKXKNMW27KIue5JMdBV9HgmoJPcc8HtO85t9IA==", + "dev": true, + "dependencies": { + "@jest/types": "^26.6.2", + "ansi-styles": "^4.0.0", + "jest-get-type": "^26.3.0", + "jest-matcher-utils": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-regex-util": "^26.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/expect/node_modules/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, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/expect/node_modules/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, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/expect/node_modules/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 + }, + "node_modules/express": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "dev": true, + "dependencies": { + "accepts": "~1.3.7", + "array-flatten": "1.1.1", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", + "content-type": "~1.0.4", + "cookie": "0.4.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.5", + "qs": "6.7.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.1.2", + "send": "0.17.1", + "serve-static": "1.14.1", + "setprototypeof": "1.1.1", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/express/node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "dev": true + }, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/express/node_modules/qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extend-shallow/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "dependencies": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true, + "engines": [ + "node >=0.6.0" + ] + }, + "node_modules/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==", + "dev": true + }, + "node_modules/fast-diff": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", + "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.4.tgz", + "integrity": "sha512-kr/Oo6PX51265qeuCYsyGypiO5uJFgBS0jksyG7FUeCyQzNwYnzrNIMR1NXfkZXsMYXYLRAHgISHBz8gQcxKHQ==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.0", + "merge2": "^1.3.0", + "micromatch": "^4.0.2", + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/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==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "node_modules/fastest-levenshtein": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", + "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.10.0.tgz", + "integrity": "sha512-NL2Qc5L3iQEsyYzweq7qfgy5OtXCmGzGvhElGEd/SoFWEMOEczNh5s5ocaF01HDetxz+p8ecjNPA6cZxxIHmzA==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/faye-websocket": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz", + "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==", + "dev": true, + "dependencies": { + "websocket-driver": ">=0.5.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/fb-watchman": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", + "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", + "dev": true, + "dependencies": { + "bser": "2.1.1" + } + }, + "node_modules/file-entry-cache": { + "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, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true, + "optional": true + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/find-cache-dir": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz", + "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==", + "dev": true, + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + } + }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "dependencies": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flat-cache/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/flatted": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.0.tgz", + "integrity": "sha512-tW+UkmtNg/jv9CSofAKvgVcO7c2URjhTdW1ZTkcAritblu8tajiYy7YisnIflEwtKssCtOxpnBRoCB7iap0/TA==", + "dev": true + }, + "node_modules/follow-redirects": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.1.tgz", + "integrity": "sha512-SSG5xmZh1mkPGyKzjZP8zLjltIfpW32Y5QpdNJyjcfGxK3qo3NDDkZOZSFiGn1A6SclQxY9GzEwAHQ3dmYRWpg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "dependencies": { + "map-cache": "^0.2.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/fs-minipass": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", + "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", + "dev": true, + "dependencies": { + "minipass": "^2.6.0" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.2.1.tgz", + "integrity": "sha512-bTLYHSeC0UH/EFXS9KqWnXuOl/wHK5Z/d+ghd5AsFMYN7wIGkUCOJyzy88+wJKkZPGON8u4Z9f6U4FdgURE9qA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "node_modules/gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "dev": true, + "dependencies": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "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, + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "dependencies": { + "assert-plus": "^1.0.0" + } + }, + "node_modules/glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true + }, + "node_modules/globals": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "dev": true, + "dependencies": { + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "dev": true, + "dependencies": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/globby/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", + "dev": true + }, + "node_modules/growly": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", + "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=", + "dev": true, + "optional": true + }, + "node_modules/handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", + "dev": true + }, + "node_modules/har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "deprecated": "this library is no longer supported", + "dev": true, + "dependencies": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "dev": true + }, + "node_modules/has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "dependencies": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "dependencies": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "bin": { + "he": "bin/he" + } + }, + "node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "node_modules/hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "node_modules/html-encoding-sniffer": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", + "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", + "dev": true, + "dependencies": { + "whatwg-encoding": "^1.0.5" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/html-entities": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.4.0.tgz", + "integrity": "sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA==", + "dev": true + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "node_modules/html-minifier-terser": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz", + "integrity": "sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg==", + "dev": true, + "dependencies": { + "camel-case": "^4.1.1", + "clean-css": "^4.2.3", + "commander": "^4.1.1", + "he": "^1.2.0", + "param-case": "^3.0.3", + "relateurl": "^0.2.7", + "terser": "^4.6.3" + }, + "bin": { + "html-minifier-terser": "cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/html-webpack-plugin": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-4.5.1.tgz", + "integrity": "sha512-yzK7RQZwv9xB+pcdHNTjcqbaaDZ+5L0zJHXfi89iWIZmb/FtzxhLk0635rmJihcQbs3ZUF27Xp4oWGx6EK56zg==", + "dev": true, + "dependencies": { + "@types/html-minifier-terser": "^5.0.0", + "@types/tapable": "^1.0.5", + "@types/webpack": "^4.41.8", + "html-minifier-terser": "^5.0.1", + "loader-utils": "^1.2.3", + "lodash": "^4.17.20", + "pretty-error": "^2.1.1", + "tapable": "^1.1.3", + "util.promisify": "1.0.0" + }, + "engines": { + "node": ">=6.9" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/htmlparser2": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", + "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", + "dev": true, + "dependencies": { + "domelementtype": "^1.3.1", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^3.1.1" + } + }, + "node_modules/htmlparser2/node_modules/entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", + "dev": true + }, + "node_modules/htmlparser2/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", + "dev": true + }, + "node_modules/http-errors": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "dev": true, + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/http-errors/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "node_modules/http-parser-js": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.3.tgz", + "integrity": "sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg==", + "dev": true + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/http-proxy-middleware": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz", + "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==", + "dev": true, + "dependencies": { + "http-proxy": "^1.17.0", + "is-glob": "^4.0.0", + "lodash": "^4.17.11", + "micromatch": "^3.1.10" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/http-proxy-middleware/node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/http-proxy-middleware/node_modules/braces/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/http-proxy-middleware/node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/http-proxy-middleware/node_modules/fill-range/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/http-proxy-middleware/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/http-proxy-middleware/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/http-proxy-middleware/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/http-proxy-middleware/node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "dependencies": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + }, + "engines": { + "node": ">=0.8", + "npm": ">=1.3.7" + } + }, + "node_modules/human-signals": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + "dev": true, + "engines": { + "node": ">=8.12.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ignore": { + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/ignore-walk": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz", + "integrity": "sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==", + "dev": true, + "dependencies": { + "minimatch": "^3.0.4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-local": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.2.tgz", + "integrity": "sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA==", + "dev": true, + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/import-local/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/import-local/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/import-local/node_modules/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==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, + "node_modules/internal-ip": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz", + "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==", + "dev": true, + "dependencies": { + "default-gateway": "^4.2.0", + "ipaddr.js": "^1.9.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/interpret": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", + "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dev": true, + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", + "dev": true + }, + "node_modules/ip-regex": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", + "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-absolute-url": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", + "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-arguments": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.0.tgz", + "integrity": "sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "node_modules/is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "dependencies": { + "binary-extensions": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "node_modules/is-callable": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.2.tgz", + "integrity": "sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "dependencies": { + "ci-info": "^2.0.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/is-core-module": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", + "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-date-object": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-descriptor/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-docker": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.1.1.tgz", + "integrity": "sha512-ZOoqiXfEwtGknTiuDEy8pN2CfE3TxMHprvNer1mXiqwkOT77Rw3YVrUQ52EqAOU3QAWDQ+bQdx7HJzrv7LS2Hw==", + "dev": true, + "optional": true, + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "dependencies": { + "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-negative-zero": { + "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, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/is-path-in-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", + "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", + "dev": true, + "dependencies": { + "is-path-inside": "^2.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/is-path-inside": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz", + "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", + "dev": true, + "dependencies": { + "path-is-inside": "^1.0.2" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-potential-custom-element-name": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.0.tgz", + "integrity": "sha1-DFLlS8yjkbssSUsh6GJtczbG45c=", + "dev": true + }, + "node_modules/is-regex": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", + "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "node_modules/is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "optional": true, + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz", + "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", + "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", + "dev": true, + "dependencies": { + "@babel/core": "^7.7.5", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.0.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "dev": true, + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-report/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-report/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz", + "integrity": "sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-reports": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.2.tgz", + "integrity": "sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw==", + "dev": true, + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest/-/jest-26.6.3.tgz", + "integrity": "sha512-lGS5PXGAzR4RF7V5+XObhqz2KZIDUA1yD0DG6pBVmy10eh0ZIXQImRuzocsI/N2XZ1GrLFwTS27In2i2jlpq1Q==", + "dev": true, + "dependencies": { + "@jest/core": "^26.6.3", + "import-local": "^3.0.2", + "jest-cli": "^26.6.3" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-changed-files": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-26.6.2.tgz", + "integrity": "sha512-fDS7szLcY9sCtIip8Fjry9oGf3I2ht/QT21bAHm5Dmf0mD4X3ReNUf17y+bO6fR8WgbIZTlbyG1ak/53cbRzKQ==", + "dev": true, + "dependencies": { + "@jest/types": "^26.6.2", + "execa": "^4.0.0", + "throat": "^5.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-changed-files/node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/jest-changed-files/node_modules/execa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", + "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/jest-changed-files/node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-changed-files/node_modules/is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-changed-files/node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-changed-files/node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-changed-files/node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-changed-files/node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-changed-files/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/jest-config": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-26.6.3.tgz", + "integrity": "sha512-t5qdIj/bCj2j7NFVHb2nFB4aUdfucDn3JRKgrZnplb8nieAirAzRSHP8uDEd+qV6ygzg9Pz4YG7UTJf94LPSyg==", + "dev": true, + "dependencies": { + "@babel/core": "^7.1.0", + "@jest/test-sequencer": "^26.6.3", + "@jest/types": "^26.6.2", + "babel-jest": "^26.6.3", + "chalk": "^4.0.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.1", + "graceful-fs": "^4.2.4", + "jest-environment-jsdom": "^26.6.2", + "jest-environment-node": "^26.6.2", + "jest-get-type": "^26.3.0", + "jest-jasmine2": "^26.6.3", + "jest-regex-util": "^26.0.0", + "jest-resolve": "^26.6.2", + "jest-util": "^26.6.2", + "jest-validate": "^26.6.2", + "micromatch": "^4.0.2", + "pretty-format": "^26.6.2" + }, + "engines": { + "node": ">= 10.14.2" + }, + "peerDependencies": { + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "ts-node": { + "optional": true + } + } + }, + "node_modules/jest-config/node_modules/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, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-config/node_modules/chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-config/node_modules/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, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-config/node_modules/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 + }, + "node_modules/jest-config/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-config/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-diff": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-26.6.2.tgz", + "integrity": "sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^26.6.2", + "jest-get-type": "^26.3.0", + "pretty-format": "^26.6.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-diff/node_modules/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, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-diff/node_modules/chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-diff/node_modules/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, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-diff/node_modules/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 + }, + "node_modules/jest-diff/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-diff/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-docblock": { + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-26.0.0.tgz", + "integrity": "sha512-RDZ4Iz3QbtRWycd8bUEPxQsTlYazfYn/h5R65Fc6gOfwozFhoImx+affzky/FFBuqISPTqjXomoIGJVKBWoo0w==", + "dev": true, + "dependencies": { + "detect-newline": "^3.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-each": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-26.6.2.tgz", + "integrity": "sha512-Mer/f0KaATbjl8MCJ+0GEpNdqmnVmDYqCTJYTvoo7rqmRiDllmp2AYN+06F93nXcY3ur9ShIjS+CO/uD+BbH4A==", + "dev": true, + "dependencies": { + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "jest-get-type": "^26.3.0", + "jest-util": "^26.6.2", + "pretty-format": "^26.6.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-each/node_modules/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, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-each/node_modules/chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-each/node_modules/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, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-each/node_modules/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 + }, + "node_modules/jest-each/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-each/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-environment-jsdom": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-26.6.2.tgz", + "integrity": "sha512-jgPqCruTlt3Kwqg5/WVFyHIOJHsiAvhcp2qiR2QQstuG9yWox5+iHpU3ZrcBxW14T4fe5Z68jAfLRh7joCSP2Q==", + "dev": true, + "dependencies": { + "@jest/environment": "^26.6.2", + "@jest/fake-timers": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "jest-mock": "^26.6.2", + "jest-util": "^26.6.2", + "jsdom": "^16.4.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-environment-jsdom-fifteen": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom-fifteen/-/jest-environment-jsdom-fifteen-1.0.2.tgz", + "integrity": "sha512-nfrnAfwklE1872LIB31HcjM65cWTh1wzvMSp10IYtPJjLDUbTTvDpajZgIxUnhRmzGvogdHDayCIlerLK0OBBg==", + "dev": true, + "dependencies": { + "@jest/environment": "^24.3.0", + "@jest/fake-timers": "^24.3.0", + "@jest/types": "^24.3.0", + "jest-mock": "^24.0.0", + "jest-util": "^24.0.0", + "jsdom": "^15.2.1" + } + }, + "node_modules/jest-environment-jsdom-fifteen/node_modules/@jest/console": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-24.9.0.tgz", + "integrity": "sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ==", + "dev": true, + "dependencies": { + "@jest/source-map": "^24.9.0", + "chalk": "^2.0.1", + "slash": "^2.0.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/jest-environment-jsdom-fifteen/node_modules/@jest/environment": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-24.9.0.tgz", + "integrity": "sha512-5A1QluTPhvdIPFYnO3sZC3smkNeXPVELz7ikPbhUj0bQjB07EoE9qtLrem14ZUYWdVayYbsjVwIiL4WBIMV4aQ==", + "dev": true, + "dependencies": { + "@jest/fake-timers": "^24.9.0", + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "jest-mock": "^24.9.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/jest-environment-jsdom-fifteen/node_modules/@jest/fake-timers": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-24.9.0.tgz", + "integrity": "sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A==", + "dev": true, + "dependencies": { + "@jest/types": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-mock": "^24.9.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/jest-environment-jsdom-fifteen/node_modules/@jest/source-map": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-24.9.0.tgz", + "integrity": "sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0", + "graceful-fs": "^4.1.15", + "source-map": "^0.6.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/jest-environment-jsdom-fifteen/node_modules/@jest/test-result": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-24.9.0.tgz", + "integrity": "sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA==", + "dev": true, + "dependencies": { + "@jest/console": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/istanbul-lib-coverage": "^2.0.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/jest-environment-jsdom-fifteen/node_modules/@jest/transform": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-24.9.0.tgz", + "integrity": "sha512-TcQUmyNRxV94S0QpMOnZl0++6RMiqpbH/ZMccFB/amku6Uwvyb1cjYX7xkp5nGNkbX4QPH/FcB6q1HBTHynLmQ==", + "dev": true, + "dependencies": { + "@babel/core": "^7.1.0", + "@jest/types": "^24.9.0", + "babel-plugin-istanbul": "^5.1.0", + "chalk": "^2.0.1", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.1.15", + "jest-haste-map": "^24.9.0", + "jest-regex-util": "^24.9.0", + "jest-util": "^24.9.0", + "micromatch": "^3.1.10", + "pirates": "^4.0.1", + "realpath-native": "^1.1.0", + "slash": "^2.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "2.4.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/jest-environment-jsdom-fifteen/node_modules/@jest/types": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz", + "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^13.0.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/jest-environment-jsdom-fifteen/node_modules/@types/istanbul-reports": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz", + "integrity": "sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "*", + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/jest-environment-jsdom-fifteen/node_modules/@types/stack-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-1.0.1.tgz", + "integrity": "sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw==", + "dev": true + }, + "node_modules/jest-environment-jsdom-fifteen/node_modules/@types/yargs": { + "version": "13.0.11", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.11.tgz", + "integrity": "sha512-NRqD6T4gktUrDi1o1wLH3EKC1o2caCr7/wR87ODcbVITQF106OM3sFN92ysZ++wqelOd1CTzatnOBRDYYG6wGQ==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-environment-jsdom-fifteen/node_modules/acorn-globals": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.4.tgz", + "integrity": "sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==", + "dev": true, + "dependencies": { + "acorn": "^6.0.1", + "acorn-walk": "^6.0.1" + } + }, + "node_modules/jest-environment-jsdom-fifteen/node_modules/acorn-globals/node_modules/acorn": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/jest-environment-jsdom-fifteen/node_modules/acorn-walk": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz", + "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/jest-environment-jsdom-fifteen/node_modules/anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "dependencies": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "node_modules/jest-environment-jsdom-fifteen/node_modules/babel-plugin-istanbul": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz", + "integrity": "sha512-5LphC0USA8t4i1zCtjbbNb6jJj/9+X6P37Qfirc/70EQ34xKlMW+a1RHGwxGI+SwWpNwZ27HqvzAobeqaXwiZw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "find-up": "^3.0.0", + "istanbul-lib-instrument": "^3.3.0", + "test-exclude": "^5.2.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jest-environment-jsdom-fifteen/node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-environment-jsdom-fifteen/node_modules/braces/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-environment-jsdom-fifteen/node_modules/data-urls": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", + "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", + "dev": true, + "dependencies": { + "abab": "^2.0.0", + "whatwg-mimetype": "^2.2.0", + "whatwg-url": "^7.0.0" + } + }, + "node_modules/jest-environment-jsdom-fifteen/node_modules/domexception": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", + "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", + "dev": true, + "dependencies": { + "webidl-conversions": "^4.0.2" + } + }, + "node_modules/jest-environment-jsdom-fifteen/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-environment-jsdom-fifteen/node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-environment-jsdom-fifteen/node_modules/fill-range/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-environment-jsdom-fifteen/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jest-environment-jsdom-fifteen/node_modules/fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "deprecated": "fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "dependencies": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + }, + "engines": { + "node": ">= 4.0" + } + }, + "node_modules/jest-environment-jsdom-fifteen/node_modules/html-encoding-sniffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", + "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", + "dev": true, + "dependencies": { + "whatwg-encoding": "^1.0.1" + } + }, + "node_modules/jest-environment-jsdom-fifteen/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-environment-jsdom-fifteen/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-environment-jsdom-fifteen/node_modules/istanbul-lib-coverage": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", + "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/jest-environment-jsdom-fifteen/node_modules/istanbul-lib-instrument": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz", + "integrity": "sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==", + "dev": true, + "dependencies": { + "@babel/generator": "^7.4.0", + "@babel/parser": "^7.4.3", + "@babel/template": "^7.4.0", + "@babel/traverse": "^7.4.3", + "@babel/types": "^7.4.0", + "istanbul-lib-coverage": "^2.0.5", + "semver": "^6.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jest-environment-jsdom-fifteen/node_modules/jest-haste-map": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-24.9.0.tgz", + "integrity": "sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ==", + "dev": true, + "dependencies": { + "@jest/types": "^24.9.0", + "anymatch": "^2.0.0", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.1.15", + "invariant": "^2.2.4", + "jest-serializer": "^24.9.0", + "jest-util": "^24.9.0", + "jest-worker": "^24.9.0", + "micromatch": "^3.1.10", + "sane": "^4.0.3", + "walker": "^1.0.7" + }, + "engines": { + "node": ">= 6" + }, + "optionalDependencies": { + "fsevents": "^1.2.7" + } + }, + "node_modules/jest-environment-jsdom-fifteen/node_modules/jest-message-util": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-24.9.0.tgz", + "integrity": "sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/stack-utils": "^1.0.1", + "chalk": "^2.0.1", + "micromatch": "^3.1.10", + "slash": "^2.0.0", + "stack-utils": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/jest-environment-jsdom-fifteen/node_modules/jest-mock": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-24.9.0.tgz", + "integrity": "sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w==", + "dev": true, + "dependencies": { + "@jest/types": "^24.9.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/jest-environment-jsdom-fifteen/node_modules/jest-regex-util": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-24.9.0.tgz", + "integrity": "sha512-05Cmb6CuxaA+Ys6fjr3PhvV3bGQmO+2p2La4hFbU+W5uOc479f7FdLXUWXw4pYMAhhSZIuKHwSXSu6CsSBAXQA==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/jest-environment-jsdom-fifteen/node_modules/jest-serializer": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-24.9.0.tgz", + "integrity": "sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/jest-environment-jsdom-fifteen/node_modules/jest-util": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-24.9.0.tgz", + "integrity": "sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg==", + "dev": true, + "dependencies": { + "@jest/console": "^24.9.0", + "@jest/fake-timers": "^24.9.0", + "@jest/source-map": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "callsites": "^3.0.0", + "chalk": "^2.0.1", + "graceful-fs": "^4.1.15", + "is-ci": "^2.0.0", + "mkdirp": "^0.5.1", + "slash": "^2.0.0", + "source-map": "^0.6.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/jest-environment-jsdom-fifteen/node_modules/jest-worker": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz", + "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==", + "dev": true, + "dependencies": { + "merge-stream": "^2.0.0", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/jest-environment-jsdom-fifteen/node_modules/jsdom": { + "version": "15.2.1", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-15.2.1.tgz", + "integrity": "sha512-fAl1W0/7T2G5vURSyxBzrJ1LSdQn6Tr5UX/xD4PXDx/PDgwygedfW6El/KIj3xJ7FU61TTYnc/l/B7P49Eqt6g==", + "dev": true, + "dependencies": { + "abab": "^2.0.0", + "acorn": "^7.1.0", + "acorn-globals": "^4.3.2", + "array-equal": "^1.0.0", + "cssom": "^0.4.1", + "cssstyle": "^2.0.0", + "data-urls": "^1.1.0", + "domexception": "^1.0.1", + "escodegen": "^1.11.1", + "html-encoding-sniffer": "^1.0.2", + "nwsapi": "^2.2.0", + "parse5": "5.1.0", + "pn": "^1.1.0", + "request": "^2.88.0", + "request-promise-native": "^1.0.7", + "saxes": "^3.1.9", + "symbol-tree": "^3.2.2", + "tough-cookie": "^3.0.1", + "w3c-hr-time": "^1.0.1", + "w3c-xmlserializer": "^1.1.2", + "webidl-conversions": "^4.0.2", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^7.0.0", + "ws": "^7.0.0", + "xml-name-validator": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "node_modules/jest-environment-jsdom-fifteen/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jest-environment-jsdom-fifteen/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-environment-jsdom-fifteen/node_modules/normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "dependencies": { + "remove-trailing-separator": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-environment-jsdom-fifteen/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jest-environment-jsdom-fifteen/node_modules/parse5": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", + "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==", + "dev": true + }, + "node_modules/jest-environment-jsdom-fifteen/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/jest-environment-jsdom-fifteen/node_modules/read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "dev": true, + "dependencies": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/jest-environment-jsdom-fifteen/node_modules/read-pkg-up": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-4.0.0.tgz", + "integrity": "sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA==", + "dev": true, + "dependencies": { + "find-up": "^3.0.0", + "read-pkg": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jest-environment-jsdom-fifteen/node_modules/saxes": { + "version": "3.1.11", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-3.1.11.tgz", + "integrity": "sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g==", + "dev": true, + "dependencies": { + "xmlchars": "^2.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-environment-jsdom-fifteen/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/jest-environment-jsdom-fifteen/node_modules/slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/jest-environment-jsdom-fifteen/node_modules/stack-utils": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.4.tgz", + "integrity": "sha512-IPDJfugEGbfizBwBZRZ3xpccMdRyP5lqsBWXGQWimVjua/ccLCeMOAVjlc1R7LxFjo5sEDhyNIXd8mo/AiDS9w==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-environment-jsdom-fifteen/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jest-environment-jsdom-fifteen/node_modules/test-exclude": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-5.2.3.tgz", + "integrity": "sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g==", + "dev": true, + "dependencies": { + "glob": "^7.1.3", + "minimatch": "^3.0.4", + "read-pkg-up": "^4.0.0", + "require-main-filename": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jest-environment-jsdom-fifteen/node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-environment-jsdom-fifteen/node_modules/tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/jest-environment-jsdom-fifteen/node_modules/w3c-xmlserializer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz", + "integrity": "sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg==", + "dev": true, + "dependencies": { + "domexception": "^1.0.1", + "webidl-conversions": "^4.0.2", + "xml-name-validator": "^3.0.0" + } + }, + "node_modules/jest-environment-jsdom-fifteen/node_modules/webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "dev": true + }, + "node_modules/jest-environment-jsdom-fifteen/node_modules/whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "dev": true, + "dependencies": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "node_modules/jest-environment-jsdom-fifteen/node_modules/write-file-atomic": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.1.tgz", + "integrity": "sha512-TGHFeZEZMnv+gBFRfjAcxL5bPHrsGKtnb4qsFAws7/vlh+QfwAaySIw4AXP9ZskTTh5GWu3FLuJhsWVdiJPGvg==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + }, + "node_modules/jest-environment-node": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-26.6.2.tgz", + "integrity": "sha512-zhtMio3Exty18dy8ee8eJ9kjnRyZC1N4C1Nt/VShN1apyXc8rWGtJ9lI7vqiWcyyXS4BVSEn9lxAM2D+07/Tag==", + "dev": true, + "dependencies": { + "@jest/environment": "^26.6.2", + "@jest/fake-timers": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "jest-mock": "^26.6.2", + "jest-util": "^26.6.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-get-type": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", + "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==", + "dev": true, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-haste-map": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-26.6.2.tgz", + "integrity": "sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w==", + "dev": true, + "dependencies": { + "@jest/types": "^26.6.2", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.4", + "jest-regex-util": "^26.0.0", + "jest-serializer": "^26.6.2", + "jest-util": "^26.6.2", + "jest-worker": "^26.6.2", + "micromatch": "^4.0.2", + "sane": "^4.0.3", + "walker": "^1.0.7" + }, + "engines": { + "node": ">= 10.14.2" + }, + "optionalDependencies": { + "fsevents": "^2.1.2" + } + }, + "node_modules/jest-jasmine2": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-26.6.3.tgz", + "integrity": "sha512-kPKUrQtc8aYwBV7CqBg5pu+tmYXlvFlSFYn18ev4gPFtrRzB15N2gW/Roew3187q2w2eHuu0MU9TJz6w0/nPEg==", + "dev": true, + "dependencies": { + "@babel/traverse": "^7.1.0", + "@jest/environment": "^26.6.2", + "@jest/source-map": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "expect": "^26.6.2", + "is-generator-fn": "^2.0.0", + "jest-each": "^26.6.2", + "jest-matcher-utils": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-runtime": "^26.6.3", + "jest-snapshot": "^26.6.2", + "jest-util": "^26.6.2", + "pretty-format": "^26.6.2", + "throat": "^5.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-jasmine2/node_modules/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, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-jasmine2/node_modules/chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-jasmine2/node_modules/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, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-jasmine2/node_modules/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 + }, + "node_modules/jest-jasmine2/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-jasmine2/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-leak-detector": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-26.6.2.tgz", + "integrity": "sha512-i4xlXpsVSMeKvg2cEKdfhh0H39qlJlP5Ex1yQxwF9ubahboQYMgTtz5oML35AVA3B4Eu+YsmwaiKVev9KCvLxg==", + "dev": true, + "dependencies": { + "jest-get-type": "^26.3.0", + "pretty-format": "^26.6.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-matcher-utils": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-26.6.2.tgz", + "integrity": "sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^26.6.2", + "jest-get-type": "^26.3.0", + "pretty-format": "^26.6.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-matcher-utils/node_modules/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, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-matcher-utils/node_modules/chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-matcher-utils/node_modules/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, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-matcher-utils/node_modules/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 + }, + "node_modules/jest-matcher-utils/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-matcher-utils/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-message-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-26.6.2.tgz", + "integrity": "sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "@jest/types": "^26.6.2", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "micromatch": "^4.0.2", + "pretty-format": "^26.6.2", + "slash": "^3.0.0", + "stack-utils": "^2.0.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-message-util/node_modules/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, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-message-util/node_modules/chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-message-util/node_modules/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, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-message-util/node_modules/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 + }, + "node_modules/jest-message-util/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-message-util/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-mock": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-26.6.2.tgz", + "integrity": "sha512-YyFjePHHp1LzpzYcmgqkJ0nm0gg/lJx2aZFzFy1S6eUqNjXsOqTK10zNRff2dNfssgokjkG65OlWNcIlgd3zew==", + "dev": true, + "dependencies": { + "@jest/types": "^26.6.2", + "@types/node": "*" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-pnp-resolver": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", + "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", + "dev": true, + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } + } + }, + "node_modules/jest-regex-util": { + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-26.0.0.tgz", + "integrity": "sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==", + "dev": true, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-resolve": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-26.6.2.tgz", + "integrity": "sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ==", + "dev": true, + "dependencies": { + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^26.6.2", + "read-pkg-up": "^7.0.1", + "resolve": "^1.18.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-resolve-dependencies": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-26.6.3.tgz", + "integrity": "sha512-pVwUjJkxbhe4RY8QEWzN3vns2kqyuldKpxlxJlzEYfKSvY6/bMvxoFrYYzUO1Gx28yKWN37qyV7rIoIp2h8fTg==", + "dev": true, + "dependencies": { + "@jest/types": "^26.6.2", + "jest-regex-util": "^26.0.0", + "jest-snapshot": "^26.6.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-resolve/node_modules/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, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-resolve/node_modules/chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-resolve/node_modules/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, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-resolve/node_modules/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 + }, + "node_modules/jest-resolve/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-resolve/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runner": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-26.6.3.tgz", + "integrity": "sha512-atgKpRHnaA2OvByG/HpGA4g6CSPS/1LK0jK3gATJAoptC1ojltpmVlYC3TYgdmGp+GLuhzpH30Gvs36szSL2JQ==", + "dev": true, + "dependencies": { + "@jest/console": "^26.6.2", + "@jest/environment": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.7.1", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "jest-config": "^26.6.3", + "jest-docblock": "^26.0.0", + "jest-haste-map": "^26.6.2", + "jest-leak-detector": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-resolve": "^26.6.2", + "jest-runtime": "^26.6.3", + "jest-util": "^26.6.2", + "jest-worker": "^26.6.2", + "source-map-support": "^0.5.6", + "throat": "^5.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-runner/node_modules/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, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-runner/node_modules/chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-runner/node_modules/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, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-runner/node_modules/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 + }, + "node_modules/jest-runner/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runner/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runtime": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-26.6.3.tgz", + "integrity": "sha512-lrzyR3N8sacTAMeonbqpnSka1dHNux2uk0qqDXVkMv2c/A3wYnvQ4EXuI013Y6+gSKSCxdaczvf4HF0mVXHRdw==", + "dev": true, + "dependencies": { + "@jest/console": "^26.6.2", + "@jest/environment": "^26.6.2", + "@jest/fake-timers": "^26.6.2", + "@jest/globals": "^26.6.2", + "@jest/source-map": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/transform": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0", + "cjs-module-lexer": "^0.6.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.4", + "jest-config": "^26.6.3", + "jest-haste-map": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-mock": "^26.6.2", + "jest-regex-util": "^26.0.0", + "jest-resolve": "^26.6.2", + "jest-snapshot": "^26.6.2", + "jest-util": "^26.6.2", + "jest-validate": "^26.6.2", + "slash": "^3.0.0", + "strip-bom": "^4.0.0", + "yargs": "^15.4.1" + }, + "bin": { + "jest-runtime": "bin/jest-runtime.js" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-runtime/node_modules/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, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-runtime/node_modules/chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-runtime/node_modules/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, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-runtime/node_modules/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 + }, + "node_modules/jest-runtime/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runtime/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-serializer": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-26.6.2.tgz", + "integrity": "sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==", + "dev": true, + "dependencies": { + "@types/node": "*", + "graceful-fs": "^4.2.4" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-snapshot": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-26.6.2.tgz", + "integrity": "sha512-OLhxz05EzUtsAmOMzuupt1lHYXCNib0ECyuZ/PZOx9TrZcC8vL0x+DUG3TL+GLX3yHG45e6YGjIm0XwDc3q3og==", + "dev": true, + "dependencies": { + "@babel/types": "^7.0.0", + "@jest/types": "^26.6.2", + "@types/babel__traverse": "^7.0.4", + "@types/prettier": "^2.0.0", + "chalk": "^4.0.0", + "expect": "^26.6.2", + "graceful-fs": "^4.2.4", + "jest-diff": "^26.6.2", + "jest-get-type": "^26.3.0", + "jest-haste-map": "^26.6.2", + "jest-matcher-utils": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-resolve": "^26.6.2", + "natural-compare": "^1.4.0", + "pretty-format": "^26.6.2", + "semver": "^7.3.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-snapshot/node_modules/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, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-snapshot/node_modules/chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-snapshot/node_modules/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, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/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 + }, + "node_modules/jest-snapshot/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-snapshot/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz", + "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==", + "dev": true, + "dependencies": { + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^2.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-util/node_modules/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, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-util/node_modules/chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-util/node_modules/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, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-util/node_modules/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 + }, + "node_modules/jest-util/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-util/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-validate": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-26.6.2.tgz", + "integrity": "sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ==", + "dev": true, + "dependencies": { + "@jest/types": "^26.6.2", + "camelcase": "^6.0.0", + "chalk": "^4.0.0", + "jest-get-type": "^26.3.0", + "leven": "^3.1.0", + "pretty-format": "^26.6.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-validate/node_modules/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, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-validate/node_modules/camelcase": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", + "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-validate/node_modules/chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-validate/node_modules/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, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-validate/node_modules/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 + }, + "node_modules/jest-validate/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-validate/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-watcher": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-26.6.2.tgz", + "integrity": "sha512-WKJob0P/Em2csiVthsI68p6aGKTIcsfjH9Gsx1f0A3Italz43e3ho0geSAVsmj09RWOELP1AZ/DXyJgOgDKxXQ==", + "dev": true, + "dependencies": { + "@jest/test-result": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "jest-util": "^26.6.2", + "string-length": "^4.0.1" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-watcher/node_modules/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, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-watcher/node_modules/chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-watcher/node_modules/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, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-watcher/node_modules/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 + }, + "node_modules/jest-watcher/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-watcher/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest/node_modules/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, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest/node_modules/chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest/node_modules/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, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest/node_modules/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 + }, + "node_modules/jest/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest/node_modules/jest-cli": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-26.6.3.tgz", + "integrity": "sha512-GF9noBSa9t08pSyl3CY4frMrqp+aQXFGFkf5hEPbh/pIUFYWMK6ZLTfbmadxJVcJrdRoChlWQsA2VkJcDFK8hg==", + "dev": true, + "dependencies": { + "@jest/core": "^26.6.3", + "@jest/test-result": "^26.6.2", + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "import-local": "^3.0.2", + "is-ci": "^2.0.0", + "jest-config": "^26.6.3", + "jest-util": "^26.6.2", + "jest-validate": "^26.6.2", + "prompts": "^2.0.1", + "yargs": "^15.4.1" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/js-yaml": { + "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, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true + }, + "node_modules/jsdom": { + "version": "16.4.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.4.0.tgz", + "integrity": "sha512-lYMm3wYdgPhrl7pDcRmvzPhhrGVBeVhPIqeHjzeiHN3DFmD1RBpbExbi8vU7BJdH8VAZYovR8DMt0PNNDM7k8w==", + "dev": true, + "dependencies": { + "abab": "^2.0.3", + "acorn": "^7.1.1", + "acorn-globals": "^6.0.0", + "cssom": "^0.4.4", + "cssstyle": "^2.2.0", + "data-urls": "^2.0.0", + "decimal.js": "^10.2.0", + "domexception": "^2.0.1", + "escodegen": "^1.14.1", + "html-encoding-sniffer": "^2.0.1", + "is-potential-custom-element-name": "^1.0.0", + "nwsapi": "^2.2.0", + "parse5": "5.1.1", + "request": "^2.88.2", + "request-promise-native": "^1.0.8", + "saxes": "^5.0.0", + "symbol-tree": "^3.2.4", + "tough-cookie": "^3.0.1", + "w3c-hr-time": "^1.0.2", + "w3c-xmlserializer": "^2.0.0", + "webidl-conversions": "^6.1.0", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.0.0", + "ws": "^7.2.3", + "xml-name-validator": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "node_modules/json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "node_modules/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==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "node_modules/json3": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz", + "integrity": "sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==", + "dev": true + }, + "node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "engines": [ + "node >=0.6.0" + ], + "dependencies": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "node_modules/killable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", + "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==", + "dev": true + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "dependencies": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lines-and-columns": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", + "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", + "dev": true + }, + "node_modules/load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/load-json-file/node_modules/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "dependencies": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/load-json-file/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/load-json-file/node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/loader-runner": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", + "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==", + "dev": true, + "engines": { + "node": ">=6.11.5" + } + }, + "node_modules/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, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", + "dev": true + }, + "node_modules/lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", + "dev": true + }, + "node_modules/loglevel": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.7.1.tgz", + "integrity": "sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw==", + "dev": true, + "engines": { + "node": ">= 0.6.0" + }, + "funding": { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/loglevel" + } + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dev": true, + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/lower-case/node_modules/tslib": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", + "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", + "dev": true + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, + "node_modules/makeerror": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", + "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", + "dev": true, + "dependencies": { + "tmpl": "1.0.x" + } + }, + "node_modules/map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "dependencies": { + "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memory-fs": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", + "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", + "dev": true, + "dependencies": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + }, + "engines": { + "node": ">=4.3.0 <5.0.0 || >=5.10" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", + "dev": true + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "dependencies": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.44.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", + "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.27", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", + "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", + "dev": true, + "dependencies": { + "mime-db": "1.44.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/mimic-response": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz", + "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "node_modules/minipass": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", + "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "node_modules/minipass/node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "node_modules/minizlib": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", + "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", + "dev": true, + "dependencies": { + "minipass": "^2.9.0" + } + }, + "node_modules/mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, + "dependencies": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mixin-deep/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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, + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/multicast-dns": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", + "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", + "dev": true, + "dependencies": { + "dns-packet": "^1.3.1", + "thunky": "^1.0.2" + }, + "bin": { + "multicast-dns": "cli.js" + } + }, + "node_modules/multicast-dns-service-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", + "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", + "dev": true + }, + "node_modules/nan": { + "version": "2.14.2", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.2.tgz", + "integrity": "sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ==", + "dev": true + }, + "node_modules/nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "node_modules/needle": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/needle/-/needle-2.6.0.tgz", + "integrity": "sha512-KKYdza4heMsEfSWD7VPUIz3zX2XDwOyX2d+geb4vrERZMT5RMU6ujjaD+I5Yr54uZxQ2w6XRTAhHBbSCyovZBg==", + "dev": true, + "dependencies": { + "debug": "^3.2.6", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + }, + "bin": { + "needle": "bin/needle" + }, + "engines": { + "node": ">= 4.4.x" + } + }, + "node_modules/needle/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "node_modules/nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "node_modules/no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dev": true, + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node_modules/no-case/node_modules/tslib": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", + "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", + "dev": true + }, + "node_modules/node-forge": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", + "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==", + "dev": true, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", + "dev": true + }, + "node_modules/node-modules-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz", + "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/node-notifier": { + "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, + "dependencies": { + "growly": "^1.3.0", + "is-wsl": "^2.2.0", + "semver": "^7.3.2", + "shellwords": "^0.1.1", + "uuid": "^8.3.0", + "which": "^2.0.2" + } + }, + "node_modules/node-notifier/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "optional": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/node-pre-gyp": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.11.0.tgz", + "integrity": "sha512-TwWAOZb0j7e9eGaf9esRx3ZcLaE5tQ2lvYy1pb5IAaG1a2e2Kv5Lms1Y4hpj+ciXJRofIxxlt5haeQ/2ANeE0Q==", + "deprecated": "Please upgrade to @mapbox/node-pre-gyp: the non-scoped node-pre-gyp package is deprecated and only the @mapbox scoped package will recieve updates in the future", + "dev": true, + "dependencies": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" + }, + "bin": { + "node-pre-gyp": "bin/node-pre-gyp" + } + }, + "node_modules/node-pre-gyp/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/nopt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz", + "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==", + "dev": true, + "dependencies": { + "abbrev": "1", + "osenv": "^0.1.4" + }, + "bin": { + "nopt": "bin/nopt.js" + } + }, + "node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/normalize-package-data/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-bundled": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.1.tgz", + "integrity": "sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA==", + "dev": true, + "dependencies": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "node_modules/npm-normalize-package-bin": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", + "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", + "dev": true + }, + "node_modules/npm-packlist": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.8.tgz", + "integrity": "sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A==", + "dev": true, + "dependencies": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1", + "npm-normalize-package-bin": "^1.0.1" + } + }, + "node_modules/npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "dependencies": { + "path-key": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "dev": true, + "dependencies": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "node_modules/nth-check": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", + "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "dev": true, + "dependencies": { + "boolbase": "~1.0.0" + } + }, + "node_modules/number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nwsapi": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", + "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", + "dev": true + }, + "node_modules/oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "dependencies": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-hash": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-2.1.1.tgz", + "integrity": "sha512-VOJmgmS+7wvXf8CjbQmimtCnEx3IAoLxI3fp2fbWehxrWBcAQFbk+vcwb6vzR0VZv/eNCJ/27j151ZTwqW/JeQ==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/object-inspect": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", + "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-is": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.4.tgz", + "integrity": "sha512-1ZvAZ4wlF7IyPVOcE1Omikt7UpaFlOQq0HlSti+ZvDH3UiD2brwGMwDbyV43jao2bKJ+4+WdPJHSd7kgzKYVqg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "dependencies": { + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.getownpropertydescriptors": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.1.tgz", + "integrity": "sha512-6DtXgZ/lIZ9hqx4GtZETobXLR/ZLaa0aqV0kzbn80Rf8Z2e/XFnhA0I7p07N2wH8bBBltr2xQPi6sbKWAY2Eng==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.1" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "dev": true + }, + "node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true, + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/opn": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", + "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", + "dev": true, + "dependencies": { + "is-wsl": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/opn/node_modules/is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "dependencies": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/original": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz", + "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==", + "dev": true, + "dependencies": { + "url-parse": "^1.4.3" + } + }, + "node_modules/os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "dev": true, + "dependencies": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "node_modules/p-each-series": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-2.2.0.tgz", + "integrity": "sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-map": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/p-retry": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-3.0.1.tgz", + "integrity": "sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==", + "dev": true, + "dependencies": { + "retry": "^0.12.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "dev": true, + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/param-case/node_modules/tslib": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", + "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", + "dev": true + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.1.0.tgz", + "integrity": "sha512-+mi/lmVVNKFNVyLXV31ERiy2CY5E1/F6QtJFEzoChPRwwngMNXRDQ9GJ5WdE2Z2P4AujsOi0/+2qHID68KwfIQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse5": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", + "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==", + "dev": true + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "dev": true, + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/pascal-case/node_modules/tslib": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", + "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", + "dev": true + }, + "node_modules/pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "dev": true + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, + "node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", + "dev": true + }, + "node_modules/path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "dependencies": { + "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/path-type/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "dependencies": { + "pinkie": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pirates": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz", + "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==", + "dev": true, + "dependencies": { + "node-modules-regexp": "^1.0.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", + "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==", + "dev": true + }, + "node_modules/portfinder": { + "version": "1.0.28", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", + "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", + "dev": true, + "dependencies": { + "async": "^2.6.2", + "debug": "^3.1.1", + "mkdirp": "^0.5.5" + }, + "engines": { + "node": ">= 0.12.0" + } + }, + "node_modules/portfinder/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.2.1.tgz", + "integrity": "sha512-PqyhM2yCjg/oKkFPtTGUojv7gnZAoG80ttl45O6x2Ug/rMJw4wcc9k6aaf2hibP7BGVCCM33gZoGjyvt9mm16Q==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "dependencies": { + "fast-diff": "^1.1.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/pretty-error": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.2.tgz", + "integrity": "sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw==", + "dev": true, + "dependencies": { + "lodash": "^4.17.20", + "renderkid": "^2.0.4" + } + }, + "node_modules/pretty-format": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", + "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", + "dev": true, + "dependencies": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/pretty-format/node_modules/ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/pretty-format/node_modules/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, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/pretty-format/node_modules/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, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/pretty-format/node_modules/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 + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/prompts": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.0.tgz", + "integrity": "sha512-awZAKrk3vN6CroQukBL+R9051a4R3zCZBlJm/HBfrSZ8iTpYix3VX1vU4mveiLpiwmOJT4wokTF9m6HUk4KqWQ==", + "dev": true, + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/proxy-addr": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", + "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", + "dev": true, + "dependencies": { + "forwarded": "~0.1.2", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "dev": true + }, + "node_modules/psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", + "dev": true + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/qrcode-generator": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/qrcode-generator/-/qrcode-generator-1.4.4.tgz", + "integrity": "sha512-HM7yY8O2ilqhmULxGMpcHSF1EhJJ9yBj8gvDEuZ6M+KGJ0YY2hKpnXvRD+hZPLrDVck3ExIGhmPtSdcjC+guuw==" + }, + "node_modules/qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", + "dev": true, + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "dev": true + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "dev": true, + "dependencies": { + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-body/node_modules/bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dev": true, + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/react-is": { + "version": "17.0.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.1.tgz", + "integrity": "sha512-NAnt2iGDXohE5LI7uBnLnqvLQMtzhkiAOLXTmv+qnF9Ky7xAPcX8Up/xWIhxvLVGJvuLiNc4xQLtuqDRzb4fSA==", + "dev": true + }, + "node_modules/read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "dependencies": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg-up/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg-up/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/readdirp/node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/readdirp/node_modules/braces/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/readdirp/node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/readdirp/node_modules/fill-range/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/readdirp/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/readdirp/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/readdirp/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/readdirp/node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/realpath-native": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-1.1.0.tgz", + "integrity": "sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA==", + "dev": true, + "dependencies": { + "util.promisify": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/rechoir": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.0.tgz", + "integrity": "sha512-ADsDEH2bvbjltXEP+hTIAmeFekTFK0V2BTxMkok6qILyAJEXV0AFfoWcAq4yfll5VdIMd/RVXq0lR+wQi5ZU3Q==", + "dev": true, + "dependencies": { + "resolve": "^1.9.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "dependencies": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz", + "integrity": "sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexp.prototype.flags/node_modules/es-abstract": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", + "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", + "dev": true, + "dependencies": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexpp": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", + "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "node_modules/renderkid": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.5.tgz", + "integrity": "sha512-ccqoLg+HLOHq1vdfYNm4TBeaCDIi1FLt3wGojTDSvdewUv65oTmI3cnT2E4hRjl1gzKZIPK+KZrXzlUYKnR+vQ==", + "dev": true, + "dependencies": { + "css-select": "^2.0.2", + "dom-converter": "^0.2", + "htmlparser2": "^3.10.1", + "lodash": "^4.17.20", + "strip-ansi": "^3.0.0" + } + }, + "node_modules/repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", + "dev": true, + "dependencies": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/request-promise-core": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz", + "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==", + "dev": true, + "dependencies": { + "lodash": "^4.17.19" + }, + "engines": { + "node": ">=0.10.0" + }, + "peerDependencies": { + "request": "^2.34" + } + }, + "node_modules/request-promise-native": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.9.tgz", + "integrity": "sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==", + "deprecated": "request-promise-native has been deprecated because it extends the now deprecated request package, see https://github.com/request/request/issues/3142", + "dev": true, + "dependencies": { + "request-promise-core": "1.1.4", + "stealthy-require": "^1.1.1", + "tough-cookie": "^2.3.3" + }, + "engines": { + "node": ">=0.12.0" + }, + "peerDependencies": { + "request": "^2.34" + } + }, + "node_modules/request-promise-native/node_modules/tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, + "dependencies": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/request/node_modules/tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, + "dependencies": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/request/node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "dev": true, + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "dev": true + }, + "node_modules/resolve": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz", + "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==", + "dev": true, + "dependencies": { + "is-core-module": "^2.1.0", + "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-cwd/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "deprecated": "https://github.com/lydell/resolve-url#deprecated", + "dev": true + }, + "node_modules/ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/rsvp": { + "version": "4.8.5", + "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz", + "integrity": "sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==", + "dev": true, + "engines": { + "node": "6.* || >= 7.*" + } + }, + "node_modules/run-parallel": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.10.tgz", + "integrity": "sha512-zb/1OuZ6flOlH6tQyMPUrE3x3Ulxjlo9WIVXR4yVYi4H9UXQaeIsPbLn2R3O3vQCnDKkAl2qHiuocKKX4Tz/Sw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "dependencies": { + "ret": "~0.1.10" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "node_modules/sane": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/sane/-/sane-4.1.0.tgz", + "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==", + "deprecated": "some dependency vulnerabilities fixed, support for node < 10 dropped, and newer ECMAScript syntax/features added", + "dev": true, + "dependencies": { + "@cnakazawa/watch": "^1.0.3", + "anymatch": "^2.0.0", + "capture-exit": "^2.0.0", + "exec-sh": "^0.3.2", + "execa": "^1.0.0", + "fb-watchman": "^2.0.0", + "micromatch": "^3.1.4", + "minimist": "^1.1.1", + "walker": "~1.0.5" + }, + "bin": { + "sane": "src/cli.js" + }, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/sane/node_modules/anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "dependencies": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "node_modules/sane/node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/braces/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/fill-range/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "dependencies": { + "remove-trailing-separator": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, + "node_modules/saxes": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", + "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "dev": true, + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/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, + "dependencies": { + "@types/json-schema": "^7.0.6", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", + "dev": true + }, + "node_modules/selfsigned": { + "version": "1.10.8", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.8.tgz", + "integrity": "sha512-2P4PtieJeEwVgTU9QEcwIRDQ/mXJLX8/+I3ur+Pg16nS8oNbrGxEso9NyYWy8NAmXiNl4dlAp5MwoNeCWzON4w==", + "dev": true, + "dependencies": { + "node-forge": "^0.10.0" + } + }, + "node_modules/semver": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", + "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + }, + "node_modules/serialize-javascript": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", + "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "dev": true, + "dependencies": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-index/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/serve-index/node_modules/http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "dev": true, + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "node_modules/serve-index/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/serve-index/node_modules/setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "node_modules/serve-static": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "dev": true, + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "node_modules/set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dev": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/set-value/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", + "dev": true + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/shellwords": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", + "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", + "dev": true, + "optional": true + }, + "node_modules/signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", + "dev": true + }, + "node_modules/simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/simple-get": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.0.tgz", + "integrity": "sha512-bCR6cP+aTdScaQCnQKbPKtJOKDp/hj9EDLJo3Nw4y1QksqaovlW/bnptB6/c1e+qmNIDHRK+oXFDdEqBT8WzUA==", + "dev": true, + "dependencies": { + "decompress-response": "^4.2.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/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, + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/slice-ansi/node_modules/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, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/slice-ansi/node_modules/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, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/slice-ansi/node_modules/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 + }, + "node_modules/slice-ansi/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "dependencies": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "dependencies": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node/node_modules/is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node/node_modules/is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node/node_modules/is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "dependencies": { + "kind-of": "^3.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-util/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/snapdragon/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/snapdragon/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sockjs": { + "version": "0.3.21", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.21.tgz", + "integrity": "sha512-DhbPFGpxjc6Z3I+uX07Id5ZO2XwYsWOrYjaSeieES78cq+JaJvVe5q/m1uvjIQhXinhIeCFRH6JgXe+mvVMyXw==", + "dev": true, + "dependencies": { + "faye-websocket": "^0.11.3", + "uuid": "^3.4.0", + "websocket-driver": "^0.7.4" + } + }, + "node_modules/sockjs-client": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.5.0.tgz", + "integrity": "sha512-8Dt3BDi4FYNrCFGTL/HtwVzkARrENdwOUf1ZoW/9p3M8lZdFT35jVdrHza+qgxuG9H3/shR4cuX/X9umUrjP8Q==", + "dev": true, + "dependencies": { + "debug": "^3.2.6", + "eventsource": "^1.0.7", + "faye-websocket": "^0.11.3", + "inherits": "^2.0.4", + "json3": "^3.3.3", + "url-parse": "^1.4.7" + } + }, + "node_modules/sockjs-client/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/sockjs/node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "dev": true, + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", + "dev": true + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated", + "dev": true, + "dependencies": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "deprecated": "See https://github.com/lydell/source-map-url#deprecated", + "dev": true + }, + "node_modules/spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz", + "integrity": "sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ==", + "dev": true + }, + "node_modules/spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + } + }, + "node_modules/spdy-transport/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "dependencies": { + "extend-shallow": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "node_modules/sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "dev": true, + "dependencies": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + }, + "bin": { + "sshpk-conv": "bin/sshpk-conv", + "sshpk-sign": "bin/sshpk-sign", + "sshpk-verify": "bin/sshpk-verify" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stack-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-gL//fkxfWUsIlFL2Tl42Cl6+HFALEaB1FU76I/Fy+oZjRreP7OPMXFlGbxM7NQsI0ZpUfw76sHnv0WNYuTb7Iw==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/stack-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "dependencies": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/stealthy-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string-length": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.1.tgz", + "integrity": "sha512-PKyXUd0LK0ePjSOnWn34V2uD6acUWev9uy0Ft05k0E8xRW+SKcA0F7eMr7h5xlzfn+4O3N+55rduYyet3Jk+jw==", + "dev": true, + "dependencies": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/string-length/node_modules/ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-length/node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "dependencies": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.3.tgz", + "integrity": "sha512-ayH0pB+uf0U28CtjlLvL7NaohvR1amUvVZk+y3DYb0Ey2PUV5zPkkKy9+U1ndVEIXO8hNg18eIv9Jntbii+dKw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.3.tgz", + "integrity": "sha512-oBIBUy5lea5tt0ovtOFiEQaBkoBBkyJhZXzJYrSmDo5IUUqbOPvVezuRs/agBIdZ2p2Eo1FD6bD9USyBLfl3xg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/supports-hyperlinks": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.1.0.tgz", + "integrity": "sha512-zoE5/e+dnEijk6ASB6/qrK+oYdm2do1hjoLWrqUC/8WEIW1gbxFcKuBof7sW8ArN6e+AYvsE8HBGiVRWL/F5CA==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-hyperlinks/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-hyperlinks/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true + }, + "node_modules/table": { + "version": "6.0.7", + "resolved": "https://registry.npmjs.org/table/-/table-6.0.7.tgz", + "integrity": "sha512-rxZevLGTUzWna/qBLObOe16kB2RTnnbhciwgPbMMlazz1yZGVEgnZK762xyVdVznhqxrfCeBMmMkgOOaPwjH7g==", + "dev": true, + "dependencies": { + "ajv": "^7.0.2", + "lodash": "^4.17.20", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/table/node_modules/ajv": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-7.0.3.tgz", + "integrity": "sha512-R50QRlXSxqXcQP5SvKUrw8VZeypvo12i2IX0EeR5PiZ7bEKeHWgzgo264LDadUsCU42lTJVhFikTqJwNeH34gQ==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/table/node_modules/ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/table/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/table/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/table/node_modules/string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/table/node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/tar": { + "version": "4.4.13", + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz", + "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==", + "dev": true, + "dependencies": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.8.6", + "minizlib": "^1.2.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.3" + }, + "engines": { + "node": ">=4.5" + } + }, + "node_modules/tar/node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "node_modules/terminal-link": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", + "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", + "dev": true, + "dependencies": { + "ansi-escapes": "^4.2.1", + "supports-hyperlinks": "^2.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/terser": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", + "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", + "dev": true, + "dependencies": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.1.1.tgz", + "integrity": "sha512-5XNNXZiR8YO6X6KhSGXfY0QrGrCRlSwAEjIIrlRQR4W8nP69TaJUlh3bkuac6zzgspiGPfKEHcY295MMVExl5Q==", + "dev": true, + "dependencies": { + "jest-worker": "^26.6.2", + "p-limit": "^3.1.0", + "schema-utils": "^3.0.0", + "serialize-javascript": "^5.0.1", + "source-map": "^0.6.1", + "terser": "^5.5.1" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + } + }, + "node_modules/terser-webpack-plugin/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/terser-webpack-plugin/node_modules/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, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/terser-webpack-plugin/node_modules/terser": { + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.5.1.tgz", + "integrity": "sha512-6VGWZNVP2KTUcltUQJ25TtNjx/XgdDsBDKGt8nN0MpydU36LmbPPcMBd2kmtZNNGVVDLg44k7GKeHHj+4zPIBQ==", + "dev": true, + "dependencies": { + "commander": "^2.20.0", + "source-map": "~0.7.2", + "source-map-support": "~0.5.19" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin/node_modules/terser/node_modules/source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "node_modules/throat": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz", + "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==", + "dev": true + }, + "node_modules/thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "dev": true + }, + "node_modules/tmpl": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", + "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=", + "dev": true + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-object-path/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "dependencies": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tough-cookie": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-3.0.1.tgz", + "integrity": "sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg==", + "dev": true, + "dependencies": { + "ip-regex": "^2.1.0", + "psl": "^1.1.28", + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tr46": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.0.2.tgz", + "integrity": "sha512-3n1qG+/5kg+jrbTzwAykB5yRYtQCTqOGKq5U5PE3b0a1/mzo6snDhjGS0zJVJunO0NrT3Dg1MLy5TjWP/UJppg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ts-jest": { + "version": "26.4.4", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-26.4.4.tgz", + "integrity": "sha512-3lFWKbLxJm34QxyVNNCgXX1u4o/RV0myvA2y2Bxm46iGIjKlaY0own9gIckbjZJPn+WaJEnfPPJ20HHGpoq4yg==", + "dev": true, + "dependencies": { + "@types/jest": "26.x", + "bs-logger": "0.x", + "buffer-from": "1.x", + "fast-json-stable-stringify": "2.x", + "jest-util": "^26.1.0", + "json5": "2.x", + "lodash.memoize": "4.x", + "make-error": "1.x", + "mkdirp": "1.x", + "semver": "7.x", + "yargs-parser": "20.x" + }, + "bin": { + "ts-jest": "cli.js" + }, + "engines": { + "node": ">= 10" + }, + "peerDependencies": { + "jest": ">=26 <27", + "typescript": ">=3.8 <5.0" + } + }, + "node_modules/ts-jest/node_modules/json5": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", + "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/ts-jest/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/ts-jest/node_modules/yargs-parser": { + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/ts-loader": { + "version": "8.0.14", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-8.0.14.tgz", + "integrity": "sha512-Jt/hHlUnApOZjnSjTmZ+AbD5BGlQFx3f1D0nYuNKwz0JJnuDGHJas6az+FlWKwwRTu+26GXpv249A8UAnYUpqA==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "enhanced-resolve": "^4.0.0", + "loader-utils": "^2.0.0", + "micromatch": "^4.0.0", + "semver": "^7.3.4" + }, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "typescript": "*", + "webpack": "*" + } + }, + "node_modules/ts-loader/node_modules/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, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/ts-loader/node_modules/chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/ts-loader/node_modules/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, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/ts-loader/node_modules/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 + }, + "node_modules/ts-loader/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ts-loader/node_modules/json5": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", + "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/ts-loader/node_modules/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==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/ts-loader/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/tsutils": { + "version": "3.19.1", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.19.1.tgz", + "integrity": "sha512-GEdoBf5XI324lu7ycad7s6laADfnAqCw6wLGI+knxvw9vsIYBaJfYdmeCEG3FMMUiSm3OGgNb+m6utsWf5h9Vw==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true + }, + "node_modules/type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "dependencies": { + "prelude-ls": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, + "node_modules/typescript": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.1.3.tgz", + "integrity": "sha512-B3ZIOf1IKeH2ixgHhj6la6xdwR9QrLC5d1VKeCSY4tvkqhF2eqd9O7txNlS0PO3GrBAFIdr3L1ndNwteUbZLYg==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dev": true, + "dependencies": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "dependencies": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "dependencies": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "dependencies": { + "isarray": "1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "dev": true, + "engines": { + "node": ">=4", + "yarn": "*" + } + }, + "node_modules/uri-js": { + "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, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "deprecated": "Please see https://github.com/lydell/urix#deprecated", + "dev": true + }, + "node_modules/url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dev": true, + "dependencies": { + "punycode": "1.3.2", + "querystring": "0.2.0" + } + }, + "node_modules/url-parse": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.1.tgz", + "integrity": "sha512-HOfCOUJt7iSYzEx/UqgtwKRMC6EU91NFhsCHMv9oM03VJcVo2Qrp8T8kI9D7amFf1cu+/3CEhgb3rF9zL7k85Q==", + "dev": true, + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "node_modules/url/node_modules/punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "dev": true + }, + "node_modules/use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "node_modules/util.promisify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", + "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.2", + "object.getownpropertydescriptors": "^2.0.3" + } + }, + "node_modules/utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=", + "dev": true + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "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, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/v8-compile-cache": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz", + "integrity": "sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q==", + "dev": true + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^1.6.0", + "source-map": "^0.7.3" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/v8-to-istanbul/node_modules/source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "engines": [ + "node >=0.6.0" + ], + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "node_modules/w3c-hr-time": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "dev": true, + "dependencies": { + "browser-process-hrtime": "^1.0.0" + } + }, + "node_modules/w3c-xmlserializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", + "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", + "dev": true, + "dependencies": { + "xml-name-validator": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/walker": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", + "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", + "dev": true, + "dependencies": { + "makeerror": "1.0.x" + } + }, + "node_modules/watchpack": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.1.0.tgz", + "integrity": "sha512-UjgD1mqjkG99+3lgG36at4wPnUXNvis2v1utwTgQ43C22c4LD71LsYMExdWXh4HZ+RmW+B0t1Vrg2GpXAkTOQw==", + "dev": true, + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dev": true, + "dependencies": { + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/webidl-conversions": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", + "dev": true, + "engines": { + "node": ">=10.4" + } + }, + "node_modules/webpack": { + "version": "5.12.3", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.12.3.tgz", + "integrity": "sha512-7tiQmcTnKhZwbf7X7sEfXe0pgkGjUZjT6JfYkZHvvIb4/ZsXl1rJu5PxsJoN7W3v5sNSP/8TgBoiOdDqVdvK5w==", + "dev": true, + "dependencies": { + "@types/eslint-scope": "^3.7.0", + "@types/estree": "^0.0.45", + "@webassemblyjs/ast": "1.11.0", + "@webassemblyjs/wasm-edit": "1.11.0", + "@webassemblyjs/wasm-parser": "1.11.0", + "acorn": "^8.0.4", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.3.1", + "eslint-scope": "^5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.4", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "pkg-dir": "^5.0.0", + "schema-utils": "^3.0.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.1.1", + "watchpack": "^2.0.0", + "webpack-sources": "^2.1.1" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-cli": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.3.1.tgz", + "integrity": "sha512-/F4+9QNZM/qKzzL9/06Am8NXIkGV+/NqQ62Dx7DSqudxxpAgBqYn6V7+zp+0Y7JuWksKUbczRY3wMTd+7Uj6OA==", + "dev": true, + "dependencies": { + "@discoveryjs/json-ext": "^0.5.0", + "@webpack-cli/info": "^1.2.1", + "@webpack-cli/serve": "^1.2.1", + "colorette": "^1.2.1", + "commander": "^6.2.0", + "enquirer": "^2.3.6", + "execa": "^5.0.0", + "fastest-levenshtein": "^1.0.12", + "import-local": "^3.0.2", + "interpret": "^2.2.0", + "rechoir": "^0.7.0", + "v8-compile-cache": "^2.2.0", + "webpack-merge": "^4.2.2" + }, + "bin": { + "webpack-cli": "bin/cli.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "peerDependencies": { + "webpack": "4.x.x || 5.x.x" + }, + "peerDependenciesMeta": { + "@webpack-cli/generators": { + "optional": true + }, + "@webpack-cli/init": { + "optional": true + }, + "@webpack-cli/migrate": { + "optional": true + }, + "webpack-bundle-analyzer": { + "optional": true + }, + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/webpack-cli/node_modules/commander": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/webpack-cli/node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/webpack-cli/node_modules/execa": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.0.0.tgz", + "integrity": "sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/webpack-cli/node_modules/get-stream": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.0.tgz", + "integrity": "sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/webpack-cli/node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/webpack-cli/node_modules/is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/webpack-cli/node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/webpack-cli/node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/webpack-cli/node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/webpack-cli/node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/webpack-cli/node_modules/webpack-merge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.2.tgz", + "integrity": "sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==", + "dev": true, + "dependencies": { + "lodash": "^4.17.15" + } + }, + "node_modules/webpack-cli/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/webpack-dev-middleware": { + "version": "3.7.3", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz", + "integrity": "sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ==", + "dev": true, + "dependencies": { + "memory-fs": "^0.4.1", + "mime": "^2.4.4", + "mkdirp": "^0.5.1", + "range-parser": "^1.2.1", + "webpack-log": "^2.0.0" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/webpack-dev-middleware/node_modules/memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true, + "dependencies": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "node_modules/webpack-dev-middleware/node_modules/mime": { + "version": "2.4.7", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.7.tgz", + "integrity": "sha512-dhNd1uA2u397uQk3Nv5LM4lm93WYDUXFn3Fu291FJerns4jyTudqhIWe4W04YLy7Uk1tm1Ore04NpjRvQp/NPA==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/webpack-dev-server": { + "version": "3.11.1", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.1.tgz", + "integrity": "sha512-u4R3mRzZkbxQVa+MBWi2uVpB5W59H3ekZAJsQlKUTdl7Elcah2EhygTPLmeFXybQkf9i2+L0kn7ik9SnXa6ihQ==", + "dev": true, + "dependencies": { + "ansi-html": "0.0.7", + "bonjour": "^3.5.0", + "chokidar": "^2.1.8", + "compression": "^1.7.4", + "connect-history-api-fallback": "^1.6.0", + "debug": "^4.1.1", + "del": "^4.1.1", + "express": "^4.17.1", + "html-entities": "^1.3.1", + "http-proxy-middleware": "0.19.1", + "import-local": "^2.0.0", + "internal-ip": "^4.3.0", + "ip": "^1.1.5", + "is-absolute-url": "^3.0.3", + "killable": "^1.0.1", + "loglevel": "^1.6.8", + "opn": "^5.5.0", + "p-retry": "^3.0.1", + "portfinder": "^1.0.26", + "schema-utils": "^1.0.0", + "selfsigned": "^1.10.8", + "semver": "^6.3.0", + "serve-index": "^1.9.1", + "sockjs": "^0.3.21", + "sockjs-client": "^1.5.0", + "spdy": "^4.0.2", + "strip-ansi": "^3.0.1", + "supports-color": "^6.1.0", + "url": "^0.11.0", + "webpack-dev-middleware": "^3.7.2", + "webpack-log": "^2.0.0", + "ws": "^6.2.1", + "yargs": "^13.3.2" + }, + "bin": { + "webpack-dev-server": "bin/webpack-dev-server.js" + }, + "engines": { + "node": ">= 6.11.5" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-dev-server/node_modules/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, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-dev-server/node_modules/cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "dev": true, + "dependencies": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + } + }, + "node_modules/webpack-dev-server/node_modules/cliui/node_modules/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, + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-dev-server/node_modules/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 + }, + "node_modules/webpack-dev-server/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-dev-server/node_modules/import-local": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", + "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", + "dev": true, + "dependencies": { + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-dev-server/node_modules/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, + "engines": { + "node": ">=4" + } + }, + "node_modules/webpack-dev-server/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-dev-server/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-dev-server/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/webpack-dev-server/node_modules/pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "dependencies": { + "find-up": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-dev-server/node_modules/resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "dev": true, + "dependencies": { + "resolve-from": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/webpack-dev-server/node_modules/resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/webpack-dev-server/node_modules/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, + "dependencies": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/webpack-dev-server/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/webpack-dev-server/node_modules/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, + "dependencies": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-dev-server/node_modules/string-width/node_modules/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, + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-dev-server/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-dev-server/node_modules/wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-dev-server/node_modules/wrap-ansi/node_modules/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, + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-dev-server/node_modules/ws": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", + "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", + "dev": true, + "dependencies": { + "async-limiter": "~1.0.0" + } + }, + "node_modules/webpack-dev-server/node_modules/yargs": { + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "dev": true, + "dependencies": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" + } + }, + "node_modules/webpack-dev-server/node_modules/yargs-parser": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "dev": true, + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + }, + "node_modules/webpack-log": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz", + "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==", + "dev": true, + "dependencies": { + "ansi-colors": "^3.0.0", + "uuid": "^3.3.2" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/webpack-log/node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "dev": true, + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/webpack-merge": { + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.7.3.tgz", + "integrity": "sha512-6/JUQv0ELQ1igjGDzHkXbVDRxkfA57Zw7PfiupdLFJYrgFqY5ZP8xxbpp2lU3EPwYx89ht5Z/aDkD40hFCm5AA==", + "dev": true, + "dependencies": { + "clone-deep": "^4.0.1", + "wildcard": "^2.0.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/webpack-sources": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.2.0.tgz", + "integrity": "sha512-bQsA24JLwcnWGArOKUxYKhX3Mz/nK1Xf6hxullKERyktjNMC4x8koOeaDNTA2fEJ09BdWLbM/iTW0ithREUP0w==", + "dev": true, + "dependencies": { + "source-list-map": "^2.0.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack/node_modules/acorn": { + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.0.4.tgz", + "integrity": "sha512-XNP0PqF1XD19ZlLKvB7cMmnZswW4C/03pRHgirB30uSJTaS3A3V1/P4sS3HPvFmjoriPCJQs+JDSbm4bL1TxGQ==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/webpack/node_modules/enhanced-resolve": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.5.0.tgz", + "integrity": "sha512-b4a6BasBCoLzri4MdaeOlDMpls2oioI28CF17csMiav9dq46yvQaKPFNUrCHB6VqQokBDG2VIEEL81jMiQ6Wtw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack/node_modules/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, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/webpack/node_modules/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, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/webpack/node_modules/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, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/webpack/node_modules/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, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/webpack/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/webpack/node_modules/pkg-dir": { + "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, + "dependencies": { + "find-up": "^5.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/webpack/node_modules/tapable": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.0.tgz", + "integrity": "sha512-FBk4IesMV1rBxX2tfiK8RAmogtWn53puLOQlvO8XuwlgxcYbP4mVPS9Ph4aeamSyyVjOl24aYWAuc8U5kCVwMw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dev": true, + "dependencies": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "dev": true, + "dependencies": { + "iconv-lite": "0.4.24" + } + }, + "node_modules/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==", + "dev": true + }, + "node_modules/whatwg-url": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.4.0.tgz", + "integrity": "sha512-vwTUFf6V4zhcPkWp/4CQPr1TW9Ml6SF4lVyaIMBdJw5i6qUUJ1QWM4Z6YYVkfka0OUIzVo/0aNtGVGk256IKWw==", + "dev": true, + "dependencies": { + "lodash.sortby": "^4.7.0", + "tr46": "^2.0.2", + "webidl-conversions": "^6.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "node_modules/wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "dev": true, + "dependencies": { + "string-width": "^1.0.2 || 2" + } + }, + "node_modules/wildcard": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", + "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", + "dev": true + }, + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/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, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/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, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi/node_modules/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 + }, + "node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "node_modules/write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "node_modules/ws": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.1.tgz", + "integrity": "sha512-pTsP8UAfhy3sk1lSk/O/s4tjD0CRwvMnzvwr4OKGX7ZvqZtUyx4KIJB5JWbkykPoc55tixMGgTNoh3k4FkNGFQ==", + "dev": true, + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", + "dev": true + }, + "node_modules/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true + }, + "node_modules/y18n": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.1.tgz", + "integrity": "sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==", + "dev": true + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dev": true, + "dependencies": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/yargs/node_modules/ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + }, "dependencies": { "@babel/code-frame": { "version": "7.12.11", @@ -1481,7 +16326,8 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.2.1.tgz", "integrity": "sha512-Zj1z6AyS+vqV6Hfi7ngCjFGdHV5EwZNIHo6QfFTNe9PyW+zBU1zJ9BiOW1pmUEq950RC4+Dym6flyA/61/vhyw==", - "dev": true + "dev": true, + "requires": {} }, "@xtuc/ieee754": { "version": "1.2.0", @@ -1537,7 +16383,8 @@ "version": "5.3.1", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", - "dev": true + "dev": true, + "requires": {} }, "acorn-walk": { "version": "7.2.0", @@ -1561,13 +16408,15 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", - "dev": true + "dev": true, + "requires": {} }, "ajv-keywords": { "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true + "dev": true, + "requires": {} }, "ansi-colors": { "version": "3.2.4", @@ -3531,7 +18380,8 @@ "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 + "dev": true, + "requires": {} }, "eslint-loader": { "version": "4.0.2", @@ -6635,7 +21485,8 @@ "version": "1.2.2", "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", - "dev": true + "dev": true, + "requires": {} }, "jest-regex-util": { "version": "26.0.0", @@ -9992,6 +24843,15 @@ "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", "dev": true }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, "string-length": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.1.tgz", @@ -10050,15 +24910,6 @@ "define-properties": "^1.1.3" } }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", @@ -11601,7 +26452,8 @@ "version": "7.4.1", "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.1.tgz", "integrity": "sha512-pTsP8UAfhy3sk1lSk/O/s4tjD0CRwvMnzvwr4OKGX7ZvqZtUyx4KIJB5JWbkykPoc55tixMGgTNoh3k4FkNGFQ==", - "dev": true + "dev": true, + "requires": {} }, "xml-name-validator": { "version": "3.0.0", From 638824f8561b165c529f99c88e4af3ad56e99021 Mon Sep 17 00:00:00 2001 From: Henk van Maanen <36051232+HenkVanMaanen@users.noreply.github.com> Date: Thu, 9 Jun 2022 16:20:36 +0200 Subject: [PATCH 06/25] Fix wrong orientation of qr code dots --- src/core/QRCanvas.ts | 2 +- src/core/QRSVG.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/core/QRCanvas.ts b/src/core/QRCanvas.ts index d76b67fa..786aa9ee 100644 --- a/src/core/QRCanvas.ts +++ b/src/core/QRCanvas.ts @@ -188,8 +188,8 @@ export default class QRCanvas { continue; } dot.draw( - xBeginning + i * dotSize, yBeginning + j * dotSize, + xBeginning + i * dotSize, dotSize, (xOffset: number, yOffset: number): boolean => { if (i + xOffset < 0 || j + yOffset < 0 || i + xOffset >= count || j + yOffset >= count) return false; diff --git a/src/core/QRSVG.ts b/src/core/QRSVG.ts index 93656a0a..05dc67f3 100644 --- a/src/core/QRSVG.ts +++ b/src/core/QRSVG.ts @@ -195,8 +195,8 @@ export default class QRSVG { } dot.draw( - xBeginning + i * dotSize, yBeginning + j * dotSize, + xBeginning + i * dotSize, dotSize, (xOffset: number, yOffset: number): boolean => { if (i + xOffset < 0 || j + yOffset < 0 || i + xOffset >= count || j + yOffset >= count) return false; From 6d5d5cd9058c78a0e61b63859634f3bfeccbcbe3 Mon Sep 17 00:00:00 2001 From: Henk van Maanen <36051232+HenkVanMaanen@users.noreply.github.com> Date: Thu, 14 Jul 2022 11:57:37 +0200 Subject: [PATCH 07/25] fix svg credits to @iamdangavin --- src/core/QRSVG.ts | 102 +++++++++++++++++++++++++++++++++++----------- 1 file changed, 78 insertions(+), 24 deletions(-) diff --git a/src/core/QRSVG.ts b/src/core/QRSVG.ts index 05dc67f3..1d32980c 100644 --- a/src/core/QRSVG.ts +++ b/src/core/QRSVG.ts @@ -29,10 +29,15 @@ const dotMask = [ export default class QRSVG { _element: SVGElement; + _style: SVGStyleElement; _defs: SVGElement; _dotsClipPath?: SVGElement; _cornersSquareClipPath?: SVGElement; _cornersDotClipPath?: SVGElement; + _dots?: SVGElement; + _cornerSquares?: SVGElement; + _corners?: SVGElement; + _cornerDots?: SVGElement; _options: RequiredOptions; _qr?: QRCode; _image?: HTMLImageElement; @@ -43,7 +48,7 @@ export default class QRSVG { this._element.setAttribute("width", String(options.width)); this._element.setAttribute("height", String(options.height)); this._defs = document.createElementNS("http://www.w3.org/2000/svg", "defs"); - this._element.appendChild(this._defs); + this._style = document.createElementNS("http://www.w3.org/2000/svg", "style"); this._options = options; } @@ -65,6 +70,8 @@ export default class QRSVG { this._element = oldElement.cloneNode(false) as SVGElement; oldElement?.parentNode?.replaceChild(this._element, oldElement); this._defs = document.createElementNS("http://www.w3.org/2000/svg", "defs"); + this._style = document.createElementNS("http://www.w3.org/2000/svg", "style"); + this._element.appendChild(this._style); this._element.appendChild(this._defs); } @@ -98,6 +105,9 @@ export default class QRSVG { }); } + this._element.appendChild(this._style); + this._element.appendChild(this._defs); + this.clear(); this.drawBackground(); this.drawDots((i: number, j: number): boolean => { @@ -137,7 +147,7 @@ export default class QRSVG { const gradientOptions = options.backgroundOptions?.gradient; const color = options.backgroundOptions?.color; - if (gradientOptions || color) { + if (gradientOptions) { this._createColor({ options: gradientOptions, color: color, @@ -148,6 +158,11 @@ export default class QRSVG { width: options.width, name: "background-color" }); + } else if (options.backgroundOptions?.color) { + this._createStyle({ + color: color, + name: "background-color" + }); } } } @@ -170,20 +185,29 @@ export default class QRSVG { const yBeginning = Math.floor((options.height - count * dotSize) / 2); const dot = new QRDot({ svg: this._element, type: options.dotsOptions.type }); - this._dotsClipPath = document.createElementNS("http://www.w3.org/2000/svg", "clipPath"); - this._dotsClipPath.setAttribute("id", "clip-path-dot-color"); - this._defs.appendChild(this._dotsClipPath); - - this._createColor({ - options: options.dotsOptions?.gradient, - color: options.dotsOptions.color, - additionalRotation: 0, - x: xBeginning, - y: yBeginning, - height: count * dotSize, - width: count * dotSize, - name: "dot-color" - }); + if (options.dotsOptions?.gradient) { + this._dotsClipPath = document.createElementNS("http://www.w3.org/2000/svg", "clipPath"); + this._dotsClipPath.setAttribute("id", "clip-path-dot-color"); + this._defs.appendChild(this._dotsClipPath); + this._createColor({ + options: options.dotsOptions?.gradient, + color: options.dotsOptions.color, + additionalRotation: 0, + x: xBeginning, + y: yBeginning, + height: count * dotSize, + width: count * dotSize, + name: "dot-color" + }); + } else if (options.dotsOptions.color) { + this._dots = document.createElementNS("http://www.w3.org/2000/svg", "g"); + this._dots.setAttribute("class", "dot-color"); + this._element.appendChild(this._dots); + this._createStyle({ + color: options.dotsOptions.color, + name: "dot-color" + }); + } for (let i = 0; i < count; i++) { for (let j = 0; j < count; j++) { @@ -207,6 +231,8 @@ export default class QRSVG { if (dot._element && this._dotsClipPath) { this._dotsClipPath.appendChild(dot._element); + } else if (dot._element && this._dots) { + this._dots.appendChild(dot._element); } } } @@ -242,7 +268,7 @@ export default class QRSVG { let cornersSquareClipPath = this._dotsClipPath; let cornersDotClipPath = this._dotsClipPath; - if (options.cornersSquareOptions?.gradient || options.cornersSquareOptions?.color) { + if (options.cornersSquareOptions?.gradient) { cornersSquareClipPath = document.createElementNS("http://www.w3.org/2000/svg", "clipPath"); cornersSquareClipPath.setAttribute("id", `clip-path-corners-square-color-${column}-${row}`); this._defs.appendChild(cornersSquareClipPath); @@ -258,6 +284,14 @@ export default class QRSVG { width: cornersSquareSize, name: `corners-square-color-${column}-${row}` }); + } else { + this._cornerSquares = document.createElementNS("http://www.w3.org/2000/svg", "g"); + this._cornerSquares.setAttribute("class", `corners-square-color-${column}-${row}`); + this._element.appendChild(this._cornerSquares); + this._createStyle({ + color: options.cornersSquareOptions?.color, + name: `corners-square-color-${column}-${row}` + }); } if (options.cornersSquareOptions?.type) { @@ -265,8 +299,10 @@ export default class QRSVG { cornersSquare.draw(x, y, cornersSquareSize, rotation); - if (cornersSquare._element && cornersSquareClipPath) { + if (options.cornersSquareOptions?.gradient && cornersSquare._element && cornersSquareClipPath) { cornersSquareClipPath.appendChild(cornersSquare._element); + } else if (cornersSquare._element && this._cornerSquares) { + this._cornerSquares.appendChild(cornersSquare._element); } } else { const dot = new QRDot({ svg: this._element, type: options.dotsOptions.type }); @@ -284,14 +320,16 @@ export default class QRSVG { (xOffset: number, yOffset: number): boolean => !!squareMask[i + xOffset]?.[j + yOffset] ); - if (dot._element && cornersSquareClipPath) { - cornersSquareClipPath.appendChild(dot._element); + if (dot._element && this._cornersSquareClipPath) { + this._cornersSquareClipPath.appendChild(dot._element); + } else if (dot._element && this._cornerSquares) { + this._cornerSquares.appendChild(dot._element); } } } } - if (options.cornersDotOptions?.gradient || options.cornersDotOptions?.color) { + if (options.cornersDotOptions?.gradient) { cornersDotClipPath = document.createElementNS("http://www.w3.org/2000/svg", "clipPath"); cornersDotClipPath.setAttribute("id", `clip-path-corners-dot-color-${column}-${row}`); this._defs.appendChild(cornersDotClipPath); @@ -307,6 +345,14 @@ export default class QRSVG { width: cornersDotSize, name: `corners-dot-color-${column}-${row}` }); + } else { + this._cornerDots = document.createElementNS("http://www.w3.org/2000/svg", "g"); + this._cornerDots.setAttribute("class", `corners-dot-color-${column}-${row}`); + this._element.appendChild(this._cornerDots); + this._createStyle({ + color: options.cornersDotOptions?.color, + name: `corners-dot-color-${column}-${row}` + }); } if (options.cornersDotOptions?.type) { @@ -314,8 +360,10 @@ export default class QRSVG { cornersDot.draw(x + dotSize * 2, y + dotSize * 2, cornersDotSize, rotation); - if (cornersDot._element && cornersDotClipPath) { + if (options.cornersDotOptions?.gradient && cornersDot._element && cornersDotClipPath) { cornersDotClipPath.appendChild(cornersDot._element); + } else if (cornersDot._element && this._cornerDots) { + this._cornerDots.appendChild(cornersDot._element); } } else { const dot = new QRDot({ svg: this._element, type: options.dotsOptions.type }); @@ -333,8 +381,10 @@ export default class QRSVG { (xOffset: number, yOffset: number): boolean => !!dotMask[i + xOffset]?.[j + yOffset] ); - if (dot._element && cornersDotClipPath) { - cornersDotClipPath.appendChild(dot._element); + if (dot._element && this._cornersDotClipPath) { + this._cornersDotClipPath.appendChild(dot._element); + } else if (dot._element && this._cornerDots) { + this._cornerDots.appendChild(dot._element); } } } @@ -487,4 +537,8 @@ export default class QRSVG { this._element.appendChild(rect); } + + _createStyle({ color, name }: { color?: string; name: string }): void { + this._style.innerHTML += `.${name}{ fill: ${color}; }`; + } } From fb138c49ca5c79fd173cbcef1607f34836e24812 Mon Sep 17 00:00:00 2001 From: Henk van Maanen <36051232+HenkVanMaanen@users.noreply.github.com> Date: Thu, 14 Jul 2022 15:25:12 +0200 Subject: [PATCH 08/25] store build in repo --- .gitignore | 3 - fix.patch | 239 ++++++++++++++++++ lib/constants/cornerDotTypes.d.ts | 3 + lib/constants/cornerSquareTypes.d.ts | 3 + lib/constants/dotTypes.d.ts | 3 + lib/constants/drawTypes.d.ts | 3 + lib/constants/errorCorrectionLevels.d.ts | 6 + lib/constants/errorCorrectionPercents.d.ts | 5 + lib/constants/gradientTypes.d.ts | 3 + lib/constants/modes.d.ts | 6 + lib/constants/qrTypes.d.ts | 6 + lib/core/QRCanvas.d.ts | 33 +++ lib/core/QRCodeStyling.d.ts | 20 ++ lib/core/QROptions.d.ts | 30 +++ lib/core/QRSVG.d.ts | 47 ++++ lib/figures/cornerDot/canvas/QRCornerDot.d.ts | 15 ++ lib/figures/cornerDot/svg/QRCornerDot.d.ts | 16 ++ .../cornerSquare/canvas/QRCornerSquare.d.ts | 17 ++ .../cornerSquare/svg/QRCornerSquare.d.ts | 18 ++ lib/figures/dot/canvas/QRDot.d.ts | 24 ++ lib/figures/dot/svg/QRDot.d.ts | 24 ++ lib/index.d.ts | 12 + lib/qr-code-styling.js | 2 + lib/qr-code-styling.js.map | 1 + lib/tools/calculateImageSize.d.ts | 15 ++ lib/tools/downloadURI.d.ts | 1 + lib/tools/getMode.d.ts | 2 + lib/tools/merge.d.ts | 2 + lib/tools/sanitizeOptions.d.ts | 2 + lib/types/index.d.ts | 125 +++++++++ package.json | 2 +- src/index.html | 88 +++---- 32 files changed, 721 insertions(+), 55 deletions(-) create mode 100644 fix.patch create mode 100644 lib/constants/cornerDotTypes.d.ts create mode 100644 lib/constants/cornerSquareTypes.d.ts create mode 100644 lib/constants/dotTypes.d.ts create mode 100644 lib/constants/drawTypes.d.ts create mode 100644 lib/constants/errorCorrectionLevels.d.ts create mode 100644 lib/constants/errorCorrectionPercents.d.ts create mode 100644 lib/constants/gradientTypes.d.ts create mode 100644 lib/constants/modes.d.ts create mode 100644 lib/constants/qrTypes.d.ts create mode 100644 lib/core/QRCanvas.d.ts create mode 100644 lib/core/QRCodeStyling.d.ts create mode 100644 lib/core/QROptions.d.ts create mode 100644 lib/core/QRSVG.d.ts create mode 100644 lib/figures/cornerDot/canvas/QRCornerDot.d.ts create mode 100644 lib/figures/cornerDot/svg/QRCornerDot.d.ts create mode 100644 lib/figures/cornerSquare/canvas/QRCornerSquare.d.ts create mode 100644 lib/figures/cornerSquare/svg/QRCornerSquare.d.ts create mode 100644 lib/figures/dot/canvas/QRDot.d.ts create mode 100644 lib/figures/dot/svg/QRDot.d.ts create mode 100644 lib/index.d.ts create mode 100644 lib/qr-code-styling.js create mode 100644 lib/qr-code-styling.js.map create mode 100644 lib/tools/calculateImageSize.d.ts create mode 100644 lib/tools/downloadURI.d.ts create mode 100644 lib/tools/getMode.d.ts create mode 100644 lib/tools/merge.d.ts create mode 100644 lib/tools/sanitizeOptions.d.ts create mode 100644 lib/types/index.d.ts diff --git a/.gitignore b/.gitignore index dec06869..45645129 100644 --- a/.gitignore +++ b/.gitignore @@ -1,9 +1,6 @@ # IDEA .idea -# Lib folder -/lib - # npm modules /node_modules diff --git a/fix.patch b/fix.patch new file mode 100644 index 00000000..4b182d7c --- /dev/null +++ b/fix.patch @@ -0,0 +1,239 @@ +From 404d5db162464eae6b301ecca2c0a0b895af5597 Mon Sep 17 00:00:00 2001 +From: Henk van Maanen <36051232+HenkVanMaanen@users.noreply.github.com> +Date: Thu, 14 Jul 2022 11:57:37 +0200 +Subject: [PATCH] fix svg credits to @iamdangavin + +--- + src/core/QRSVG.ts | 102 +++++++++++++++++++++++++++++++++++----------- + 1 file changed, 78 insertions(+), 24 deletions(-) + +diff --git a/src/core/QRSVG.ts b/src/core/QRSVG.ts +index 93656a0..3ce04d7 100644 +--- a/src/core/QRSVG.ts ++++ b/src/core/QRSVG.ts +@@ -29,10 +29,15 @@ const dotMask = [ + + export default class QRSVG { + _element: SVGElement; ++ _style: SVGStyleElement; + _defs: SVGElement; + _dotsClipPath?: SVGElement; + _cornersSquareClipPath?: SVGElement; + _cornersDotClipPath?: SVGElement; ++ _dots?: SVGElement; ++ _cornerSquares?: SVGElement; ++ _corners?: SVGElement; ++ _cornerDots?: SVGElement; + _options: RequiredOptions; + _qr?: QRCode; + _image?: HTMLImageElement; +@@ -43,7 +48,7 @@ export default class QRSVG { + this._element.setAttribute("width", String(options.width)); + this._element.setAttribute("height", String(options.height)); + this._defs = document.createElementNS("http://www.w3.org/2000/svg", "defs"); +- this._element.appendChild(this._defs); ++ this._style = document.createElementNS("http://www.w3.org/2000/svg", "style"); + + this._options = options; + } +@@ -65,6 +70,8 @@ export default class QRSVG { + this._element = oldElement.cloneNode(false) as SVGElement; + oldElement?.parentNode?.replaceChild(this._element, oldElement); + this._defs = document.createElementNS("http://www.w3.org/2000/svg", "defs"); ++ this._style = document.createElementNS("http://www.w3.org/2000/svg", "style"); ++ this._element.appendChild(this._style); + this._element.appendChild(this._defs); + } + +@@ -98,6 +105,9 @@ export default class QRSVG { + }); + } + ++ this._element.appendChild(this._style); ++ this._element.appendChild(this._defs); ++ + this.clear(); + this.drawBackground(); + this.drawDots((i: number, j: number): boolean => { +@@ -137,7 +147,7 @@ export default class QRSVG { + const gradientOptions = options.backgroundOptions?.gradient; + const color = options.backgroundOptions?.color; + +- if (gradientOptions || color) { ++ if (gradientOptions) { + this._createColor({ + options: gradientOptions, + color: color, +@@ -148,6 +158,11 @@ export default class QRSVG { + width: options.width, + name: "background-color" + }); ++ } else if (options.backgroundOptions?.color) { ++ this._createStyle({ ++ color: color, ++ name: "background-color" ++ }); + } + } + } +@@ -170,20 +185,29 @@ export default class QRSVG { + const yBeginning = Math.floor((options.height - count * dotSize) / 2); + const dot = new QRDot({ svg: this._element, type: options.dotsOptions.type }); + +- this._dotsClipPath = document.createElementNS("http://www.w3.org/2000/svg", "clipPath"); +- this._dotsClipPath.setAttribute("id", "clip-path-dot-color"); +- this._defs.appendChild(this._dotsClipPath); +- +- this._createColor({ +- options: options.dotsOptions?.gradient, +- color: options.dotsOptions.color, +- additionalRotation: 0, +- x: xBeginning, +- y: yBeginning, +- height: count * dotSize, +- width: count * dotSize, +- name: "dot-color" +- }); ++ if (options.dotsOptions?.gradient) { ++ this._dotsClipPath = document.createElementNS("http://www.w3.org/2000/svg", "clipPath"); ++ this._dotsClipPath.setAttribute("id", "clip-path-dot-color"); ++ this._defs.appendChild(this._dotsClipPath); ++ this._createColor({ ++ options: options.dotsOptions?.gradient, ++ color: options.dotsOptions.color, ++ additionalRotation: 0, ++ x: xBeginning, ++ y: yBeginning, ++ height: count * dotSize, ++ width: count * dotSize, ++ name: "dot-color" ++ }); ++ } else if (options.dotsOptions.color) { ++ this._dots = document.createElementNS("http://www.w3.org/2000/svg", "g"); ++ this._dots.setAttribute("class", "dot-color"); ++ this._element.appendChild(this._dots); ++ this._createStyle({ ++ color: options.dotsOptions.color, ++ name: "dot-color" ++ }); ++ } + + for (let i = 0; i < count; i++) { + for (let j = 0; j < count; j++) { +@@ -207,6 +231,8 @@ export default class QRSVG { + + if (dot._element && this._dotsClipPath) { + this._dotsClipPath.appendChild(dot._element); ++ } else if (dot._element && this._dots) { ++ this._dots.appendChild(dot._element); + } + } + } +@@ -242,7 +268,7 @@ export default class QRSVG { + let cornersSquareClipPath = this._dotsClipPath; + let cornersDotClipPath = this._dotsClipPath; + +- if (options.cornersSquareOptions?.gradient || options.cornersSquareOptions?.color) { ++ if (options.cornersSquareOptions?.gradient) { + cornersSquareClipPath = document.createElementNS("http://www.w3.org/2000/svg", "clipPath"); + cornersSquareClipPath.setAttribute("id", `clip-path-corners-square-color-${column}-${row}`); + this._defs.appendChild(cornersSquareClipPath); +@@ -258,6 +284,14 @@ export default class QRSVG { + width: cornersSquareSize, + name: `corners-square-color-${column}-${row}` + }); ++ } else { ++ this._cornerSquares = document.createElementNS("http://www.w3.org/2000/svg", "g"); ++ this._cornerSquares.setAttribute("class", `corners-square-color-${column}-${row}`); ++ this._element.appendChild(this._cornerSquares); ++ this._createStyle({ ++ color: options.cornersSquareOptions?.color, ++ name: `corners-square-color-${column}-${row}` ++ }); + } + + if (options.cornersSquareOptions?.type) { +@@ -265,8 +299,10 @@ export default class QRSVG { + + cornersSquare.draw(x, y, cornersSquareSize, rotation); + +- if (cornersSquare._element && cornersSquareClipPath) { ++ if (options.cornersSquareOptions?.gradient && cornersSquare._element && cornersSquareClipPath) { + cornersSquareClipPath.appendChild(cornersSquare._element); ++ } else if (cornersSquare._element && this._cornerSquares) { ++ this._cornerSquares.appendChild(cornersSquare._element); + } + } else { + const dot = new QRDot({ svg: this._element, type: options.dotsOptions.type }); +@@ -284,14 +320,16 @@ export default class QRSVG { + (xOffset: number, yOffset: number): boolean => !!squareMask[i + xOffset]?.[j + yOffset] + ); + +- if (dot._element && cornersSquareClipPath) { +- cornersSquareClipPath.appendChild(dot._element); ++ if (dot._element && this._cornersSquareClipPath) { ++ this._cornersSquareClipPath.appendChild(dot._element); ++ } else if (dot._element && this._cornerSquares) { ++ this._cornerSquares.appendChild(dot._element); + } + } + } + } + +- if (options.cornersDotOptions?.gradient || options.cornersDotOptions?.color) { ++ if (options.cornersDotOptions?.gradient) { + cornersDotClipPath = document.createElementNS("http://www.w3.org/2000/svg", "clipPath"); + cornersDotClipPath.setAttribute("id", `clip-path-corners-dot-color-${column}-${row}`); + this._defs.appendChild(cornersDotClipPath); +@@ -307,6 +345,14 @@ export default class QRSVG { + width: cornersDotSize, + name: `corners-dot-color-${column}-${row}` + }); ++ } else { ++ this._cornerDots = document.createElementNS("http://www.w3.org/2000/svg", "g"); ++ this._cornerDots.setAttribute("class", `corners-dot-color-${column}-${row}`); ++ this._element.appendChild(this._cornerDots); ++ this._createStyle({ ++ color: options.cornersDotOptions?.color, ++ name: `corners-dot-color-${column}-${row}` ++ }); + } + + if (options.cornersDotOptions?.type) { +@@ -314,8 +360,10 @@ export default class QRSVG { + + cornersDot.draw(x + dotSize * 2, y + dotSize * 2, cornersDotSize, rotation); + +- if (cornersDot._element && cornersDotClipPath) { ++ if (options.cornersDotOptions?.gradient && cornersDot._element && cornersDotClipPath) { + cornersDotClipPath.appendChild(cornersDot._element); ++ } else if (cornersDot._element && this._cornerDots) { ++ this._cornerDots.appendChild(cornersDot._element); + } + } else { + const dot = new QRDot({ svg: this._element, type: options.dotsOptions.type }); +@@ -333,8 +381,10 @@ export default class QRSVG { + (xOffset: number, yOffset: number): boolean => !!dotMask[i + xOffset]?.[j + yOffset] + ); + +- if (dot._element && cornersDotClipPath) { +- cornersDotClipPath.appendChild(dot._element); ++ if (dot._element && this._cornersDotClipPath) { ++ this._cornersDotClipPath.appendChild(dot._element); ++ } else if (dot._element && this._cornerDots) { ++ this._cornerDots.appendChild(dot._element); + } + } + } +@@ -487,4 +537,8 @@ export default class QRSVG { + + this._element.appendChild(rect); + } ++ ++ _createStyle({ color, name }: { color?: string; name: string }): void { ++ this._style.innerHTML += `.${name}{ fill: ${color}; }`; ++ } + } +-- +2.30.2 + diff --git a/lib/constants/cornerDotTypes.d.ts b/lib/constants/cornerDotTypes.d.ts new file mode 100644 index 00000000..41de9fbb --- /dev/null +++ b/lib/constants/cornerDotTypes.d.ts @@ -0,0 +1,3 @@ +import { CornerDotTypes } from "../types"; +declare const _default: CornerDotTypes; +export default _default; diff --git a/lib/constants/cornerSquareTypes.d.ts b/lib/constants/cornerSquareTypes.d.ts new file mode 100644 index 00000000..213b39c6 --- /dev/null +++ b/lib/constants/cornerSquareTypes.d.ts @@ -0,0 +1,3 @@ +import { CornerSquareTypes } from "../types"; +declare const _default: CornerSquareTypes; +export default _default; diff --git a/lib/constants/dotTypes.d.ts b/lib/constants/dotTypes.d.ts new file mode 100644 index 00000000..facf759c --- /dev/null +++ b/lib/constants/dotTypes.d.ts @@ -0,0 +1,3 @@ +import { DotTypes } from "../types"; +declare const _default: DotTypes; +export default _default; diff --git a/lib/constants/drawTypes.d.ts b/lib/constants/drawTypes.d.ts new file mode 100644 index 00000000..07d23d9e --- /dev/null +++ b/lib/constants/drawTypes.d.ts @@ -0,0 +1,3 @@ +import { DrawTypes } from "../types"; +declare const _default: DrawTypes; +export default _default; diff --git a/lib/constants/errorCorrectionLevels.d.ts b/lib/constants/errorCorrectionLevels.d.ts new file mode 100644 index 00000000..6352bf68 --- /dev/null +++ b/lib/constants/errorCorrectionLevels.d.ts @@ -0,0 +1,6 @@ +import { ErrorCorrectionLevel } from "../types"; +interface ErrorCorrectionLevels { + [key: string]: ErrorCorrectionLevel; +} +declare const _default: ErrorCorrectionLevels; +export default _default; diff --git a/lib/constants/errorCorrectionPercents.d.ts b/lib/constants/errorCorrectionPercents.d.ts new file mode 100644 index 00000000..6c370ad9 --- /dev/null +++ b/lib/constants/errorCorrectionPercents.d.ts @@ -0,0 +1,5 @@ +interface ErrorCorrectionPercents { + [key: string]: number; +} +declare const _default: ErrorCorrectionPercents; +export default _default; diff --git a/lib/constants/gradientTypes.d.ts b/lib/constants/gradientTypes.d.ts new file mode 100644 index 00000000..18d425ec --- /dev/null +++ b/lib/constants/gradientTypes.d.ts @@ -0,0 +1,3 @@ +import { GradientTypes } from "../types"; +declare const _default: GradientTypes; +export default _default; diff --git a/lib/constants/modes.d.ts b/lib/constants/modes.d.ts new file mode 100644 index 00000000..137e153f --- /dev/null +++ b/lib/constants/modes.d.ts @@ -0,0 +1,6 @@ +import { Mode } from "../types"; +interface Modes { + [key: string]: Mode; +} +declare const _default: Modes; +export default _default; diff --git a/lib/constants/qrTypes.d.ts b/lib/constants/qrTypes.d.ts new file mode 100644 index 00000000..b65c5e7a --- /dev/null +++ b/lib/constants/qrTypes.d.ts @@ -0,0 +1,6 @@ +import { TypeNumber } from "../types"; +interface TypesMap { + [key: number]: TypeNumber; +} +declare const qrTypes: TypesMap; +export default qrTypes; diff --git a/lib/core/QRCanvas.d.ts b/lib/core/QRCanvas.d.ts new file mode 100644 index 00000000..96c83d63 --- /dev/null +++ b/lib/core/QRCanvas.d.ts @@ -0,0 +1,33 @@ +import { RequiredOptions } from "./QROptions"; +import { QRCode, Gradient, FilterFunction } from "../types"; +export default class QRCanvas { + _canvas: HTMLCanvasElement; + _options: RequiredOptions; + _qr?: QRCode; + _image?: HTMLImageElement; + constructor(options: RequiredOptions); + get context(): CanvasRenderingContext2D | null; + get width(): number; + get height(): number; + getCanvas(): HTMLCanvasElement; + clear(): void; + drawQR(qr: QRCode): Promise; + drawBackground(): void; + drawDots(filter?: FilterFunction): void; + drawCorners(filter?: FilterFunction): void; + loadImage(): Promise; + drawImage({ width, height, count, dotSize }: { + width: number; + height: number; + count: number; + dotSize: number; + }): void; + _createGradient({ context, options, additionalRotation, x, y, size }: { + context: CanvasRenderingContext2D; + options: Gradient; + additionalRotation: number; + x: number; + y: number; + size: number; + }): CanvasGradient; +} diff --git a/lib/core/QRCodeStyling.d.ts b/lib/core/QRCodeStyling.d.ts new file mode 100644 index 00000000..df1af7a5 --- /dev/null +++ b/lib/core/QRCodeStyling.d.ts @@ -0,0 +1,20 @@ +import QRCanvas from "./QRCanvas"; +import QRSVG from "./QRSVG"; +import { RequiredOptions } from "./QROptions"; +import { Extension, QRCode, Options, DownloadOptions } from "../types"; +export default class QRCodeStyling { + _options: RequiredOptions; + _container?: HTMLElement; + _canvas?: QRCanvas; + _svg?: QRSVG; + _qr?: QRCode; + _canvasDrawingPromise?: Promise; + _svgDrawingPromise?: Promise; + constructor(options?: Partial); + static _clearContainer(container?: HTMLElement): void; + _getQRStylingElement(extension?: Extension): Promise; + update(options?: Partial): void; + append(container?: HTMLElement): void; + getRawData(extension?: Extension): Promise; + download(downloadOptions?: Partial | string): Promise; +} diff --git a/lib/core/QROptions.d.ts b/lib/core/QROptions.d.ts new file mode 100644 index 00000000..23e73631 --- /dev/null +++ b/lib/core/QROptions.d.ts @@ -0,0 +1,30 @@ +import { DotType, Options, TypeNumber, ErrorCorrectionLevel, Mode, DrawType, Gradient } from "../types"; +export interface RequiredOptions extends Options { + type: DrawType; + width: number; + height: number; + margin: number; + data: string; + qrOptions: { + typeNumber: TypeNumber; + mode?: Mode; + errorCorrectionLevel: ErrorCorrectionLevel; + }; + imageOptions: { + hideBackgroundDots: boolean; + imageSize: number; + crossOrigin?: string; + margin: number; + }; + dotsOptions: { + type: DotType; + color: string; + gradient?: Gradient; + }; + backgroundOptions: { + color: string; + gradient?: Gradient; + }; +} +declare const defaultOptions: RequiredOptions; +export default defaultOptions; diff --git a/lib/core/QRSVG.d.ts b/lib/core/QRSVG.d.ts new file mode 100644 index 00000000..2f43ffe5 --- /dev/null +++ b/lib/core/QRSVG.d.ts @@ -0,0 +1,47 @@ +import { RequiredOptions } from "./QROptions"; +import { QRCode, FilterFunction, Gradient } from "../types"; +export default class QRSVG { + _element: SVGElement; + _style: SVGStyleElement; + _defs: SVGElement; + _dotsClipPath?: SVGElement; + _cornersSquareClipPath?: SVGElement; + _cornersDotClipPath?: SVGElement; + _dots?: SVGElement; + _cornerSquares?: SVGElement; + _corners?: SVGElement; + _cornerDots?: SVGElement; + _options: RequiredOptions; + _qr?: QRCode; + _image?: HTMLImageElement; + constructor(options: RequiredOptions); + get width(): number; + get height(): number; + getElement(): SVGElement; + clear(): void; + drawQR(qr: QRCode): Promise; + drawBackground(): void; + drawDots(filter?: FilterFunction): void; + drawCorners(): void; + loadImage(): Promise; + drawImage({ width, height, count, dotSize }: { + width: number; + height: number; + count: number; + dotSize: number; + }): void; + _createColor({ options, color, additionalRotation, x, y, height, width, name }: { + options?: Gradient; + color?: string; + additionalRotation: number; + x: number; + y: number; + height: number; + width: number; + name: string; + }): void; + _createStyle({ color, name }: { + color?: string; + name: string; + }): void; +} diff --git a/lib/figures/cornerDot/canvas/QRCornerDot.d.ts b/lib/figures/cornerDot/canvas/QRCornerDot.d.ts new file mode 100644 index 00000000..86dfa2f3 --- /dev/null +++ b/lib/figures/cornerDot/canvas/QRCornerDot.d.ts @@ -0,0 +1,15 @@ +import { CornerDotType, RotateFigureArgsCanvas, BasicFigureDrawArgsCanvas, DrawArgsCanvas } from "../../../types"; +export default class QRCornerDot { + _context: CanvasRenderingContext2D; + _type: CornerDotType; + constructor({ context, type }: { + context: CanvasRenderingContext2D; + type: CornerDotType; + }); + draw(x: number, y: number, size: number, rotation: number): void; + _rotateFigure({ x, y, size, context, rotation, draw }: RotateFigureArgsCanvas): void; + _basicDot(args: BasicFigureDrawArgsCanvas): void; + _basicSquare(args: BasicFigureDrawArgsCanvas): void; + _drawDot({ x, y, size, context, rotation }: DrawArgsCanvas): void; + _drawSquare({ x, y, size, context, rotation }: DrawArgsCanvas): void; +} diff --git a/lib/figures/cornerDot/svg/QRCornerDot.d.ts b/lib/figures/cornerDot/svg/QRCornerDot.d.ts new file mode 100644 index 00000000..4e7551db --- /dev/null +++ b/lib/figures/cornerDot/svg/QRCornerDot.d.ts @@ -0,0 +1,16 @@ +import { CornerDotType, RotateFigureArgs, BasicFigureDrawArgs, DrawArgs } from "../../../types"; +export default class QRCornerDot { + _element?: SVGElement; + _svg: SVGElement; + _type: CornerDotType; + constructor({ svg, type }: { + svg: SVGElement; + type: CornerDotType; + }); + draw(x: number, y: number, size: number, rotation: number): void; + _rotateFigure({ x, y, size, rotation, draw }: RotateFigureArgs): void; + _basicDot(args: BasicFigureDrawArgs): void; + _basicSquare(args: BasicFigureDrawArgs): void; + _drawDot({ x, y, size, rotation }: DrawArgs): void; + _drawSquare({ x, y, size, rotation }: DrawArgs): void; +} diff --git a/lib/figures/cornerSquare/canvas/QRCornerSquare.d.ts b/lib/figures/cornerSquare/canvas/QRCornerSquare.d.ts new file mode 100644 index 00000000..e805e26e --- /dev/null +++ b/lib/figures/cornerSquare/canvas/QRCornerSquare.d.ts @@ -0,0 +1,17 @@ +import { CornerSquareType, RotateFigureArgsCanvas, BasicFigureDrawArgsCanvas, DrawArgsCanvas } from "../../../types"; +export default class QRCornerSquare { + _context: CanvasRenderingContext2D; + _type: CornerSquareType; + constructor({ context, type }: { + context: CanvasRenderingContext2D; + type: CornerSquareType; + }); + draw(x: number, y: number, size: number, rotation: number): void; + _rotateFigure({ x, y, size, context, rotation, draw }: RotateFigureArgsCanvas): void; + _basicDot(args: BasicFigureDrawArgsCanvas): void; + _basicSquare(args: BasicFigureDrawArgsCanvas): void; + _basicExtraRounded(args: BasicFigureDrawArgsCanvas): void; + _drawDot({ x, y, size, context, rotation }: DrawArgsCanvas): void; + _drawSquare({ x, y, size, context, rotation }: DrawArgsCanvas): void; + _drawExtraRounded({ x, y, size, context, rotation }: DrawArgsCanvas): void; +} diff --git a/lib/figures/cornerSquare/svg/QRCornerSquare.d.ts b/lib/figures/cornerSquare/svg/QRCornerSquare.d.ts new file mode 100644 index 00000000..0a0801aa --- /dev/null +++ b/lib/figures/cornerSquare/svg/QRCornerSquare.d.ts @@ -0,0 +1,18 @@ +import { CornerSquareType, DrawArgs, BasicFigureDrawArgs, RotateFigureArgs } from "../../../types"; +export default class QRCornerSquare { + _element?: SVGElement; + _svg: SVGElement; + _type: CornerSquareType; + constructor({ svg, type }: { + svg: SVGElement; + type: CornerSquareType; + }); + draw(x: number, y: number, size: number, rotation: number): void; + _rotateFigure({ x, y, size, rotation, draw }: RotateFigureArgs): void; + _basicDot(args: BasicFigureDrawArgs): void; + _basicSquare(args: BasicFigureDrawArgs): void; + _basicExtraRounded(args: BasicFigureDrawArgs): void; + _drawDot({ x, y, size, rotation }: DrawArgs): void; + _drawSquare({ x, y, size, rotation }: DrawArgs): void; + _drawExtraRounded({ x, y, size, rotation }: DrawArgs): void; +} diff --git a/lib/figures/dot/canvas/QRDot.d.ts b/lib/figures/dot/canvas/QRDot.d.ts new file mode 100644 index 00000000..609c0ff0 --- /dev/null +++ b/lib/figures/dot/canvas/QRDot.d.ts @@ -0,0 +1,24 @@ +import { DotType, GetNeighbor, RotateFigureArgsCanvas, BasicFigureDrawArgsCanvas, DrawArgsCanvas } from "../../../types"; +export default class QRDot { + _context: CanvasRenderingContext2D; + _type: DotType; + constructor({ context, type }: { + context: CanvasRenderingContext2D; + type: DotType; + }); + draw(x: number, y: number, size: number, getNeighbor: GetNeighbor): void; + _rotateFigure({ x, y, size, context, rotation, draw }: RotateFigureArgsCanvas): void; + _basicDot(args: BasicFigureDrawArgsCanvas): void; + _basicSquare(args: BasicFigureDrawArgsCanvas): void; + _basicSideRounded(args: BasicFigureDrawArgsCanvas): void; + _basicCornerRounded(args: BasicFigureDrawArgsCanvas): void; + _basicCornerExtraRounded(args: BasicFigureDrawArgsCanvas): void; + _basicCornersRounded(args: BasicFigureDrawArgsCanvas): void; + _basicCornersExtraRounded(args: BasicFigureDrawArgsCanvas): void; + _drawDot({ x, y, size, context }: DrawArgsCanvas): void; + _drawSquare({ x, y, size, context }: DrawArgsCanvas): void; + _drawRounded({ x, y, size, context, getNeighbor }: DrawArgsCanvas): void; + _drawExtraRounded({ x, y, size, context, getNeighbor }: DrawArgsCanvas): void; + _drawClassy({ x, y, size, context, getNeighbor }: DrawArgsCanvas): void; + _drawClassyRounded({ x, y, size, context, getNeighbor }: DrawArgsCanvas): void; +} diff --git a/lib/figures/dot/svg/QRDot.d.ts b/lib/figures/dot/svg/QRDot.d.ts new file mode 100644 index 00000000..6cfa3c35 --- /dev/null +++ b/lib/figures/dot/svg/QRDot.d.ts @@ -0,0 +1,24 @@ +import { DotType, GetNeighbor, DrawArgs, BasicFigureDrawArgs, RotateFigureArgs } from "../../../types"; +export default class QRDot { + _element?: SVGElement; + _svg: SVGElement; + _type: DotType; + constructor({ svg, type }: { + svg: SVGElement; + type: DotType; + }); + draw(x: number, y: number, size: number, getNeighbor: GetNeighbor): void; + _rotateFigure({ x, y, size, rotation, draw }: RotateFigureArgs): void; + _basicDot(args: BasicFigureDrawArgs): void; + _basicSquare(args: BasicFigureDrawArgs): void; + _basicSideRounded(args: BasicFigureDrawArgs): void; + _basicCornerRounded(args: BasicFigureDrawArgs): void; + _basicCornerExtraRounded(args: BasicFigureDrawArgs): void; + _basicCornersRounded(args: BasicFigureDrawArgs): void; + _drawDot({ x, y, size }: DrawArgs): void; + _drawSquare({ x, y, size }: DrawArgs): void; + _drawRounded({ x, y, size, getNeighbor }: DrawArgs): void; + _drawExtraRounded({ x, y, size, getNeighbor }: DrawArgs): void; + _drawClassy({ x, y, size, getNeighbor }: DrawArgs): void; + _drawClassyRounded({ x, y, size, getNeighbor }: DrawArgs): void; +} diff --git a/lib/index.d.ts b/lib/index.d.ts new file mode 100644 index 00000000..399d3915 --- /dev/null +++ b/lib/index.d.ts @@ -0,0 +1,12 @@ +import QRCodeStyling from "./core/QRCodeStyling"; +import dotTypes from "./constants/dotTypes"; +import cornerDotTypes from "./constants/cornerDotTypes"; +import cornerSquareTypes from "./constants/cornerSquareTypes"; +import errorCorrectionLevels from "./constants/errorCorrectionLevels"; +import errorCorrectionPercents from "./constants/errorCorrectionPercents"; +import modes from "./constants/modes"; +import qrTypes from "./constants/qrTypes"; +import drawTypes from "./constants/drawTypes"; +export * from "./types"; +export { dotTypes, cornerDotTypes, cornerSquareTypes, errorCorrectionLevels, errorCorrectionPercents, modes, qrTypes, drawTypes }; +export default QRCodeStyling; diff --git a/lib/qr-code-styling.js b/lib/qr-code-styling.js new file mode 100644 index 00000000..dd6a4e60 --- /dev/null +++ b/lib/qr-code-styling.js @@ -0,0 +1,2 @@ +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.QRCodeStyling=e():t.QRCodeStyling=e()}(self,(function(){return(()=>{var t={192:(t,e)=>{var r,o,n=function(){var t=function(t,e){var r=t,o=a[e],n=null,i=0,c=null,v=[],w={},_=function(t,e){n=function(t){for(var e=new Array(t),r=0;r=7&&M(t),null==c&&(c=P(r,o,v)),C(c,e)},m=function(t,e){for(var r=-1;r<=7;r+=1)if(!(t+r<=-1||i<=t+r))for(var o=-1;o<=7;o+=1)e+o<=-1||i<=e+o||(n[t+r][e+o]=0<=r&&r<=6&&(0==o||6==o)||0<=o&&o<=6&&(0==r||6==r)||2<=r&&r<=4&&2<=o&&o<=4)},b=function(){for(var t=8;t>o&1);n[Math.floor(o/3)][o%3+i-8-3]=a}for(o=0;o<18;o+=1)a=!t&&1==(e>>o&1),n[o%3+i-8-3][Math.floor(o/3)]=a},S=function(t,e){for(var r=o<<3|e,a=s.getBCHTypeInfo(r),c=0;c<15;c+=1){var u=!t&&1==(a>>c&1);c<6?n[c][8]=u:c<8?n[c+1][8]=u:n[i-15+c][8]=u}for(c=0;c<15;c+=1)u=!t&&1==(a>>c&1),c<8?n[8][i-c-1]=u:c<9?n[8][15-c-1+1]=u:n[8][15-c-1]=u;n[i-8][8]=!t},C=function(t,e){for(var r=-1,o=i-1,a=7,c=0,u=s.getMaskFunction(e),h=i-1;h>0;h-=2)for(6==h&&(h-=1);;){for(var d=0;d<2;d+=1)if(null==n[o][h-d]){var l=!1;c>>a&1)),u(o,h-d)&&(l=!l),n[o][h-d]=l,-1==(a-=1)&&(c+=1,a=7)}if((o+=r)<0||i<=o){o-=r,r=-r;break}}},P=function(t,e,r){for(var o=h.getRSBlocks(t,e),n=d(),i=0;i8*c)throw"code length overflow. ("+n.getLengthInBits()+">"+8*c+")";for(n.getLengthInBits()+4<=8*c&&n.put(0,4);n.getLengthInBits()%8!=0;)n.putBit(!1);for(;!(n.getLengthInBits()>=8*c||(n.put(236,8),n.getLengthInBits()>=8*c));)n.put(17,8);return function(t,e){for(var r=0,o=0,n=0,i=new Array(e.length),a=new Array(e.length),c=0;c=0?p.getAt(g):0}}var v=0;for(l=0;lo)&&(t=o,e=r)}return e}())},w.createTableTag=function(t,e){t=t||2;var r="";r+='',r+="";for(var o=0;o";for(var n=0;n';r+=""}return(r+="")+"
"},w.createSvgTag=function(t,e,r,o){var n={};"object"==typeof arguments[0]&&(t=(n=arguments[0]).cellSize,e=n.margin,r=n.alt,o=n.title),t=t||2,e=void 0===e?4*t:e,(r="string"==typeof r?{text:r}:r||{}).text=r.text||null,r.id=r.text?r.id||"qrcode-description":null,(o="string"==typeof o?{text:o}:o||{}).text=o.text||null,o.id=o.text?o.id||"qrcode-title":null;var i,a,s,c,u=w.getModuleCount()*t+2*e,h="";for(c="l"+t+",0 0,"+t+" -"+t+",0 0,-"+t+"z ",h+=''+O(o.text)+"":"",h+=r.text?''+O(r.text)+"":"",h+='',h+='"},w.createDataURL=function(t,e){t=t||2,e=void 0===e?4*t:e;var r=w.getModuleCount()*t+2*e,o=e,n=r-e;return y(r,r,(function(e,r){if(o<=e&&e"};var O=function(t){for(var e="",r=0;r":e+=">";break;case"&":e+="&";break;case'"':e+=""";break;default:e+=o}}return e};return w.createASCII=function(t,e){if((t=t||1)<2)return function(t){t=void 0===t?2:t;var e,r,o,n,i,a=1*w.getModuleCount()+2*t,s=t,c=a-t,u={"██":"█","█ ":"▀"," █":"▄"," ":" "},h={"██":"▀","█ ":"▀"," █":" "," ":" "},d="";for(e=0;e=c?h[i]:u[i];d+="\n"}return a%2&&t>0?d.substring(0,d.length-a-1)+Array(a+1).join("▀"):d.substring(0,d.length-1)}(e);t-=1,e=void 0===e?2*t:e;var r,o,n,i,a=w.getModuleCount()*t+2*e,s=e,c=a-e,u=Array(t+1).join("██"),h=Array(t+1).join(" "),d="",l="";for(r=0;r>>8),e.push(255&a)):e.push(o)}}return e}};var e,r,o,n,i,a={L:1,M:0,Q:3,H:2},s=(e=[[],[6,18],[6,22],[6,26],[6,30],[6,34],[6,22,38],[6,24,42],[6,26,46],[6,28,50],[6,30,54],[6,32,58],[6,34,62],[6,26,46,66],[6,26,48,70],[6,26,50,74],[6,30,54,78],[6,30,56,82],[6,30,58,86],[6,34,62,90],[6,28,50,72,94],[6,26,50,74,98],[6,30,54,78,102],[6,28,54,80,106],[6,32,58,84,110],[6,30,58,86,114],[6,34,62,90,118],[6,26,50,74,98,122],[6,30,54,78,102,126],[6,26,52,78,104,130],[6,30,56,82,108,134],[6,34,60,86,112,138],[6,30,58,86,114,142],[6,34,62,90,118,146],[6,30,54,78,102,126,150],[6,24,50,76,102,128,154],[6,28,54,80,106,132,158],[6,32,58,84,110,136,162],[6,26,54,82,110,138,166],[6,30,58,86,114,142,170]],r=1335,o=7973,i=function(t){for(var e=0;0!=t;)e+=1,t>>>=1;return e},(n={}).getBCHTypeInfo=function(t){for(var e=t<<10;i(e)-i(r)>=0;)e^=r<=0;)e^=o<5&&(r+=3+i-5)}for(o=0;o=256;)e-=255;return t[e]}}}();function u(t,e){if(void 0===t.length)throw t.length+"/"+e;var r=function(){for(var r=0;r>>7-e%8&1)},put:function(t,e){for(var o=0;o>>e-o-1&1))},getLengthInBits:function(){return e},putBit:function(r){var o=Math.floor(e/8);t.length<=o&&t.push(0),r&&(t[o]|=128>>>e%8),e+=1}};return r},l=function(t){var e=t,r={getMode:function(){return 1},getLength:function(t){return e.length},write:function(t){for(var r=e,n=0;n+2>>8&255)+(255&n),t.put(n,13),r+=2}if(r>>8)},writeBytes:function(t,r,o){r=r||0,o=o||t.length;for(var n=0;n0&&(e+=","),e+=t[r];return e+"]"}};return e},w=function(t){var e=t,r=0,o=0,n=0,i={read:function(){for(;n<8;){if(r>=e.length){if(0==n)return-1;throw"unexpected end of file./"+n}var t=e.charAt(r);if(r+=1,"="==t)return n=0,-1;t.match(/^\s$/)||(o=o<<6|a(t.charCodeAt(0)),n+=6)}var i=o>>>n-8&255;return n-=8,i}},a=function(t){if(65<=t&&t<=90)return t-65;if(97<=t&&t<=122)return t-97+26;if(48<=t&&t<=57)return t-48+52;if(43==t)return 62;if(47==t)return 63;throw"c:"+t};return i},y=function(t,e,r){for(var o=function(t,e){var r=t,o=e,n=new Array(t*e),i={setPixel:function(t,e,o){n[e*r+t]=o},write:function(t){t.writeString("GIF87a"),t.writeShort(r),t.writeShort(o),t.writeByte(128),t.writeByte(0),t.writeByte(0),t.writeByte(0),t.writeByte(0),t.writeByte(0),t.writeByte(255),t.writeByte(255),t.writeByte(255),t.writeString(","),t.writeShort(0),t.writeShort(0),t.writeShort(r),t.writeShort(o),t.writeByte(0);var e=a(2);t.writeByte(2);for(var n=0;e.length-n>255;)t.writeByte(255),t.writeBytes(e,n,255),n+=255;t.writeByte(e.length-n),t.writeBytes(e,n,e.length-n),t.writeByte(0),t.writeString(";")}},a=function(t){for(var e=1<>>e!=0)throw"length over";for(;u+e>=8;)c.writeByte(255&(t<>>=8-u,h=0,u=0;h|=t<0&&c.writeByte(h)}});l.write(e,o);var f=0,p=String.fromCharCode(n[f]);for(f+=1;f=6;)i(t>>>e-6),e-=6},n.flush=function(){if(e>0&&(i(t<<6-e),t=0,e=0),r%3!=0)for(var n=3-r%3,a=0;a>6,128|63&o):o<55296||o>=57344?e.push(224|o>>12,128|o>>6&63,128|63&o):(r++,o=65536+((1023&o)<<10|1023&t.charCodeAt(r)),e.push(240|o>>18,128|o>>12&63,128|o>>6&63,128|63&o))}return e}(t)},void 0===(o="function"==typeof(r=function(){return n})?r.apply(e,[]):r)||(t.exports=o)},796:(t,e,r)=>{"use strict";r.d(e,{default:()=>W});var o=function(){return(o=Object.assign||function(t){for(var e,r=1,o=arguments.length;ro||n&&n2||a&&s||c&&u)this._basicSquare({x:e,y:r,size:o,context:n,rotation:0});else{if(2===h){var d=0;return a&&c?d=Math.PI/2:c&&s?d=Math.PI:s&&u&&(d=-Math.PI/2),void this._basicCornerRounded({x:e,y:r,size:o,context:n,rotation:d})}if(1===h)return d=0,c?d=Math.PI/2:s?d=Math.PI:u&&(d=-Math.PI/2),void this._basicSideRounded({x:e,y:r,size:o,context:n,rotation:d})}else this._basicDot({x:e,y:r,size:o,context:n,rotation:0})},t.prototype._drawExtraRounded=function(t){var e=t.x,r=t.y,o=t.size,n=t.context,i=t.getNeighbor,a=i?+i(-1,0):0,s=i?+i(1,0):0,c=i?+i(0,-1):0,u=i?+i(0,1):0,h=a+s+c+u;if(0!==h)if(h>2||a&&s||c&&u)this._basicSquare({x:e,y:r,size:o,context:n,rotation:0});else{if(2===h){var d=0;return a&&c?d=Math.PI/2:c&&s?d=Math.PI:s&&u&&(d=-Math.PI/2),void this._basicCornerExtraRounded({x:e,y:r,size:o,context:n,rotation:d})}if(1===h)return d=0,c?d=Math.PI/2:s?d=Math.PI:u&&(d=-Math.PI/2),void this._basicSideRounded({x:e,y:r,size:o,context:n,rotation:d})}else this._basicDot({x:e,y:r,size:o,context:n,rotation:0})},t.prototype._drawClassy=function(t){var e=t.x,r=t.y,o=t.size,n=t.context,i=t.getNeighbor,a=i?+i(-1,0):0,s=i?+i(1,0):0,c=i?+i(0,-1):0,u=i?+i(0,1):0;0!==a+s+c+u?a||c?s||u?this._basicSquare({x:e,y:r,size:o,context:n,rotation:0}):this._basicCornerRounded({x:e,y:r,size:o,context:n,rotation:Math.PI/2}):this._basicCornerRounded({x:e,y:r,size:o,context:n,rotation:-Math.PI/2}):this._basicCornersRounded({x:e,y:r,size:o,context:n,rotation:Math.PI/2})},t.prototype._drawClassyRounded=function(t){var e=t.x,r=t.y,o=t.size,n=t.context,i=t.getNeighbor,a=i?+i(-1,0):0,s=i?+i(1,0):0,c=i?+i(0,-1):0,u=i?+i(0,1):0;0!==a+s+c+u?a||c?s||u?this._basicSquare({x:e,y:r,size:o,context:n,rotation:0}):this._basicCornerExtraRounded({x:e,y:r,size:o,context:n,rotation:Math.PI/2}):this._basicCornerExtraRounded({x:e,y:r,size:o,context:n,rotation:-Math.PI/2}):this._basicCornersRounded({x:e,y:r,size:o,context:n,rotation:Math.PI/2})},t}(),y="square",_="extra-rounded";var m=function(){return(m=Object.assign||function(t){for(var e,r=1,o=arguments.length;r0&&n[n.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!n||i[1]>n[0]&&i[1]=(e-n.hideXDots)/2&&t<(e+n.hideXDots)/2&&r>=(e-n.hideYDots)/2&&r<(e+n.hideYDots)/2||(null===(o=P[t])||void 0===o?void 0:o[r])||(null===(i=P[t-e+7])||void 0===i?void 0:i[r])||(null===(a=P[t])||void 0===a?void 0:a[r-e+7])||(null===(s=O[t])||void 0===s?void 0:s[r])||(null===(c=O[t-e+7])||void 0===c?void 0:c[r])||(null===(u=O[t])||void 0===u?void 0:u[r-e+7]))})),this.drawCorners(),this._options.image&&this.drawImage({width:n.width,height:n.height,count:e,dotSize:o}),[2]}}))},new((o=void 0)||(o=Promise))((function(t,i){function a(t){try{c(n.next(t))}catch(t){i(t)}}function s(t){try{c(n.throw(t))}catch(t){i(t)}}function c(e){var r;e.done?t(e.value):(r=e.value,r instanceof o?r:new o((function(t){t(r)}))).then(a,s)}c((n=n.apply(e,r||[])).next())}));var e,r,o,n},t.prototype.drawBackground=function(){var t=this.context,e=this._options;if(t){if(e.backgroundOptions.gradient){var r=e.backgroundOptions.gradient,o=this._createGradient({context:t,options:r,additionalRotation:0,x:0,y:0,size:this._canvas.width>this._canvas.height?this._canvas.width:this._canvas.height});r.colorStops.forEach((function(t){var e=t.offset,r=t.color;o.addColorStop(e,r)})),t.fillStyle=o}else e.backgroundOptions.color&&(t.fillStyle=e.backgroundOptions.color);t.fillRect(0,0,this._canvas.width,this._canvas.height)}},t.prototype.drawDots=function(t){var e=this;if(!this._qr)throw"QR code is not defined";var r=this.context;if(!r)throw"QR code is not defined";var o=this._options,n=this._qr.getModuleCount();if(n>o.width||n>o.height)throw"The canvas is too small.";var i=Math.min(o.width,o.height)-2*o.margin,a=Math.floor(i/n),s=Math.floor((o.width-n*a)/2),c=Math.floor((o.height-n*a)/2),u=new w({context:r,type:o.dotsOptions.type});r.beginPath();for(var h=function(r){for(var o=function(o){return t&&!t(r,o)?"continue":d._qr.isDark(r,o)?void u.draw(c+o*a,s+r*a,a,(function(i,a){return!(r+i<0||o+a<0||r+i>=n||o+a>=n)&&!(t&&!t(r+i,o+a))&&!!e._qr&&e._qr.isDark(r+i,o+a)})):"continue"},i=0;i=0&&u<=.25*Math.PI||u>1.75*Math.PI&&u<=2*Math.PI?(h-=s/2,d-=s/2*Math.tan(c),l+=s/2,f+=s/2*Math.tan(c)):u>.25*Math.PI&&u<=.75*Math.PI?(d-=s/2,h-=s/2/Math.tan(c),f+=s/2,l+=s/2/Math.tan(c)):u>.75*Math.PI&&u<=1.25*Math.PI?(h+=s/2,d+=s/2*Math.tan(c),l-=s/2,f-=s/2*Math.tan(c)):u>1.25*Math.PI&&u<=1.75*Math.PI&&(d+=s/2,h+=s/2/Math.tan(c),f-=s/2,l-=s/2/Math.tan(c)),e=r.createLinearGradient(Math.round(h),Math.round(d),Math.round(l),Math.round(f))}return e},t}();var z=function(){return(z=Object.assign||function(t){for(var e,r=1,o=arguments.length;r2||i&&a||s&&c)this._basicSquare({x:e,y:r,size:o,rotation:0});else{if(2===u){var h=0;return i&&s?h=Math.PI/2:s&&a?h=Math.PI:a&&c&&(h=-Math.PI/2),void this._basicCornerRounded({x:e,y:r,size:o,rotation:h})}if(1===u)return h=0,s?h=Math.PI/2:a?h=Math.PI:c&&(h=-Math.PI/2),void this._basicSideRounded({x:e,y:r,size:o,rotation:h})}else this._basicDot({x:e,y:r,size:o,rotation:0})},t.prototype._drawExtraRounded=function(t){var e=t.x,r=t.y,o=t.size,n=t.getNeighbor,i=n?+n(-1,0):0,a=n?+n(1,0):0,s=n?+n(0,-1):0,c=n?+n(0,1):0,u=i+a+s+c;if(0!==u)if(u>2||i&&a||s&&c)this._basicSquare({x:e,y:r,size:o,rotation:0});else{if(2===u){var h=0;return i&&s?h=Math.PI/2:s&&a?h=Math.PI:a&&c&&(h=-Math.PI/2),void this._basicCornerExtraRounded({x:e,y:r,size:o,rotation:h})}if(1===u)return h=0,s?h=Math.PI/2:a?h=Math.PI:c&&(h=-Math.PI/2),void this._basicSideRounded({x:e,y:r,size:o,rotation:h})}else this._basicDot({x:e,y:r,size:o,rotation:0})},t.prototype._drawClassy=function(t){var e=t.x,r=t.y,o=t.size,n=t.getNeighbor,i=n?+n(-1,0):0,a=n?+n(1,0):0,s=n?+n(0,-1):0,c=n?+n(0,1):0;0!==i+a+s+c?i||s?a||c?this._basicSquare({x:e,y:r,size:o,rotation:0}):this._basicCornerRounded({x:e,y:r,size:o,rotation:Math.PI/2}):this._basicCornerRounded({x:e,y:r,size:o,rotation:-Math.PI/2}):this._basicCornersRounded({x:e,y:r,size:o,rotation:Math.PI/2})},t.prototype._drawClassyRounded=function(t){var e=t.x,r=t.y,o=t.size,n=t.getNeighbor,i=n?+n(-1,0):0,a=n?+n(1,0):0,s=n?+n(0,-1):0,c=n?+n(0,1):0;0!==i+a+s+c?i||s?a||c?this._basicSquare({x:e,y:r,size:o,rotation:0}):this._basicCornerExtraRounded({x:e,y:r,size:o,rotation:Math.PI/2}):this._basicCornerExtraRounded({x:e,y:r,size:o,rotation:-Math.PI/2}):this._basicCornersRounded({x:e,y:r,size:o,rotation:Math.PI/2})},t}();var I=function(){return(I=Object.assign||function(t){for(var e,r=1,o=arguments.length;r0&&n[n.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!n||i[1]>n[0]&&i[1]=(e-n.hideXDots)/2&&t<(e+n.hideXDots)/2&&r>=(e-n.hideYDots)/2&&r<(e+n.hideYDots)/2||(null===(o=B[t])||void 0===o?void 0:o[r])||(null===(i=B[t-e+7])||void 0===i?void 0:i[r])||(null===(a=B[t])||void 0===a?void 0:a[r-e+7])||(null===(s=E[t])||void 0===s?void 0:s[r])||(null===(c=E[t-e+7])||void 0===c?void 0:c[r])||(null===(u=E[t])||void 0===u?void 0:u[r-e+7]))})),this.drawCorners(),this._options.image&&this.drawImage({width:n.width,height:n.height,count:e,dotSize:o}),[2]}}))},new((o=void 0)||(o=Promise))((function(t,i){function a(t){try{c(n.next(t))}catch(t){i(t)}}function s(t){try{c(n.throw(t))}catch(t){i(t)}}function c(e){var r;e.done?t(e.value):(r=e.value,r instanceof o?r:new o((function(t){t(r)}))).then(a,s)}c((n=n.apply(e,r||[])).next())}));var e,r,o,n},t.prototype.drawBackground=function(){var t,e,r,o=this._element,n=this._options;if(o){var i=null===(t=n.backgroundOptions)||void 0===t?void 0:t.gradient,a=null===(e=n.backgroundOptions)||void 0===e?void 0:e.color;i?this._createColor({options:i,color:a,additionalRotation:0,x:0,y:0,height:n.height,width:n.width,name:"background-color"}):(null===(r=n.backgroundOptions)||void 0===r?void 0:r.color)&&this._createStyle({color:a,name:"background-color"})}},t.prototype.drawDots=function(t){var e,r,o,n=this;if(!this._qr)throw"QR code is not defined";var i=this._options,a=this._qr.getModuleCount();if(a>i.width||a>i.height)throw"The canvas is too small.";var s=Math.min(i.width,i.height)-2*i.margin,c=Math.floor(s/a),u=Math.floor((i.width-a*c)/2),h=Math.floor((i.height-a*c)/2),d=new A({svg:this._element,type:i.dotsOptions.type});(null===(e=i.dotsOptions)||void 0===e?void 0:e.gradient)?(this._dotsClipPath=document.createElementNS("http://www.w3.org/2000/svg","clipPath"),this._dotsClipPath.setAttribute("id","clip-path-dot-color"),this._defs.appendChild(this._dotsClipPath),this._createColor({options:null===(r=i.dotsOptions)||void 0===r?void 0:r.gradient,color:i.dotsOptions.color,additionalRotation:0,x:u,y:h,height:a*c,width:a*c,name:"dot-color"})):i.dotsOptions.color&&(this._dots=document.createElementNS("http://www.w3.org/2000/svg","g"),this._dots.setAttribute("class","dot-color"),this._element.appendChild(this._dots),this._createStyle({color:i.dotsOptions.color,name:"dot-color"}));for(var l=function(e){for(var r=function(r){return t&&!t(e,r)?"continue":(null===(o=f._qr)||void 0===o?void 0:o.isDark(e,r))?(d.draw(h+r*c,u+e*c,c,(function(o,i){return!(e+o<0||r+i<0||e+o>=a||r+i>=a)&&!(t&&!t(e+o,r+i))&&!!n._qr&&n._qr.isDark(e+o,r+i)})),void(d._element&&f._dotsClipPath?f._dotsClipPath.appendChild(d._element):d._element&&f._dots&&f._dots.appendChild(d._element))):"continue"},i=0;ia?s:a,h=document.createElementNS("http://www.w3.org/2000/svg","rect");if(h.setAttribute("x",String(n)),h.setAttribute("y",String(i)),h.setAttribute("height",String(a)),h.setAttribute("width",String(s)),h.setAttribute("clip-path","url('#clip-path-"+c+"')"),e){var d;if(e.type===C)(d=document.createElementNS("http://www.w3.org/2000/svg","radialGradient")).setAttribute("id",c),d.setAttribute("gradientUnits","userSpaceOnUse"),d.setAttribute("fx",String(n+s/2)),d.setAttribute("fy",String(i+a/2)),d.setAttribute("cx",String(n+s/2)),d.setAttribute("cy",String(i+a/2)),d.setAttribute("r",String(u/2));else{var l=((e.rotation||0)+o)%(2*Math.PI),f=(l+2*Math.PI)%(2*Math.PI),p=n+s/2,g=i+a/2,v=n+s/2,w=i+a/2;f>=0&&f<=.25*Math.PI||f>1.75*Math.PI&&f<=2*Math.PI?(p-=s/2,g-=a/2*Math.tan(l),v+=s/2,w+=a/2*Math.tan(l)):f>.25*Math.PI&&f<=.75*Math.PI?(g-=a/2,p-=s/2/Math.tan(l),w+=a/2,v+=s/2/Math.tan(l)):f>.75*Math.PI&&f<=1.25*Math.PI?(p+=s/2,g+=a/2*Math.tan(l),v-=s/2,w-=a/2*Math.tan(l)):f>1.25*Math.PI&&f<=1.75*Math.PI&&(g+=a/2,p+=s/2/Math.tan(l),w-=a/2,v-=s/2/Math.tan(l)),(d=document.createElementNS("http://www.w3.org/2000/svg","linearGradient")).setAttribute("id",c),d.setAttribute("gradientUnits","userSpaceOnUse"),d.setAttribute("x1",String(Math.round(p))),d.setAttribute("y1",String(Math.round(g))),d.setAttribute("x2",String(Math.round(v))),d.setAttribute("y2",String(Math.round(w)))}e.colorStops.forEach((function(t){var e=t.offset,r=t.color,o=document.createElementNS("http://www.w3.org/2000/svg","stop");o.setAttribute("offset",100*e+"%"),o.setAttribute("stop-color",r),d.appendChild(o)})),h.setAttribute("fill","url('#"+c+"')"),this._defs.appendChild(d)}else r&&h.setAttribute("fill",r);this._element.appendChild(h)},t.prototype._createStyle=function(t){var e=t.color,r=t.name;this._style.innerHTML+="."+r+"{ fill: "+e+"; }"},t}(),L="canvas";for(var T={},j=0;j<=40;j++)T[j]=j;const F={type:L,width:300,height:300,data:"",margin:0,qrOptions:{typeNumber:T[0],mode:void 0,errorCorrectionLevel:"Q"},imageOptions:{hideBackgroundDots:!0,imageSize:.4,crossOrigin:void 0,margin:0},dotsOptions:{type:"square",color:"#000"},backgroundOptions:{color:"#fff"}};var Q=function(){return(Q=Object.assign||function(t){for(var e,r=1,o=arguments.length;rMath.min(e.width,e.height)&&(e.margin=Math.min(e.width,e.height)),e.dotsOptions=Q({},e.dotsOptions),e.dotsOptions.gradient&&(e.dotsOptions.gradient=H(e.dotsOptions.gradient)),e.cornersSquareOptions&&(e.cornersSquareOptions=Q({},e.cornersSquareOptions),e.cornersSquareOptions.gradient&&(e.cornersSquareOptions.gradient=H(e.cornersSquareOptions.gradient))),e.cornersDotOptions&&(e.cornersDotOptions=Q({},e.cornersDotOptions),e.cornersDotOptions.gradient&&(e.cornersDotOptions.gradient=H(e.cornersDotOptions.gradient))),e.backgroundOptions&&(e.backgroundOptions=Q({},e.backgroundOptions),e.backgroundOptions.gradient&&(e.backgroundOptions.gradient=H(e.backgroundOptions.gradient))),e}var X=r(192),U=r.n(X),Y=function(t,e,r,o){return new(r||(r=Promise))((function(n,i){function a(t){try{c(o.next(t))}catch(t){i(t)}}function s(t){try{c(o.throw(t))}catch(t){i(t)}}function c(t){var e;t.done?n(t.value):(e=t.value,e instanceof r?e:new r((function(t){t(e)}))).then(a,s)}c((o=o.apply(t,e||[])).next())}))},$=function(t,e){var r,o,n,i,a={label:0,sent:function(){if(1&n[0])throw n[1];return n[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(i){return function(s){return function(i){if(r)throw new TypeError("Generator is already executing.");for(;a;)try{if(r=1,o&&(n=2&i[0]?o.return:i[0]?o.throw||((n=o.return)&&n.call(o),0):o.next)&&!(n=n.call(o,i[1])).done)return n;switch(o=0,n&&(i=[2&i[0],n.value]),i[0]){case 0:case 1:n=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,o=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!((n=(n=a.trys).length>0&&n[n.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!n||i[1]>n[0]&&i[1]\r\n'+o],{type:"image/svg+xml"})]):[2,new Promise((function(r){return e.getCanvas().toBlob(r,"image/"+t,1)}))]}}))}))},t.prototype.download=function(t){return Y(this,void 0,void 0,(function(){var e,r,o,n,i;return $(this,(function(a){switch(a.label){case 0:if(!this._qr)throw"QR code is empty";return e="png",r="qr","string"==typeof t?(e=t,console.warn("Extension is deprecated as argument for 'download' method, please pass object { name: '...', extension: '...' } as argument")):"object"==typeof t&&null!==t&&(t.name&&(r=t.name),t.extension&&(e=t.extension)),[4,this._getQRStylingElement(e)];case 1:return o=a.sent(),"svg"===e.toLowerCase()?(n=new XMLSerializer,i='\r\n'+(i=n.serializeToString(o.getElement())),s("data:image/svg+xml;charset=utf-8,"+encodeURIComponent(i),r+".svg")):s(o.getCanvas().toDataURL("image/"+e),r+"."+e),[2]}}))}))},t}()}},e={};function r(o){if(e[o])return e[o].exports;var n=e[o]={exports:{}};return t[o](n,n.exports,r),n.exports}return r.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return r.d(e,{a:e}),e},r.d=(t,e)=>{for(var o in e)r.o(e,o)&&!r.o(t,o)&&Object.defineProperty(t,o,{enumerable:!0,get:e[o]})},r.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r(796)})().default})); +//# sourceMappingURL=qr-code-styling.js.map \ No newline at end of file diff --git a/lib/qr-code-styling.js.map b/lib/qr-code-styling.js.map new file mode 100644 index 00000000..f81ce016 --- /dev/null +++ b/lib/qr-code-styling.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack://QRCodeStyling/webpack/universalModuleDefinition","webpack://QRCodeStyling/./node_modules/qrcode-generator/qrcode.js","webpack://QRCodeStyling/./src/tools/merge.ts","webpack://QRCodeStyling/./src/tools/downloadURI.ts","webpack://QRCodeStyling/./src/tools/calculateImageSize.ts","webpack://QRCodeStyling/./src/constants/errorCorrectionPercents.ts","webpack://QRCodeStyling/./src/constants/dotTypes.ts","webpack://QRCodeStyling/./src/figures/dot/canvas/QRDot.ts","webpack://QRCodeStyling/./src/constants/cornerSquareTypes.ts","webpack://QRCodeStyling/./src/figures/cornerSquare/canvas/QRCornerSquare.ts","webpack://QRCodeStyling/./src/constants/cornerDotTypes.ts","webpack://QRCodeStyling/./src/figures/cornerDot/canvas/QRCornerDot.ts","webpack://QRCodeStyling/./src/constants/gradientTypes.ts","webpack://QRCodeStyling/./src/core/QRCanvas.ts","webpack://QRCodeStyling/./src/figures/dot/svg/QRDot.ts","webpack://QRCodeStyling/./src/figures/cornerSquare/svg/QRCornerSquare.ts","webpack://QRCodeStyling/./src/figures/cornerDot/svg/QRCornerDot.ts","webpack://QRCodeStyling/./src/core/QRSVG.ts","webpack://QRCodeStyling/./src/constants/drawTypes.ts","webpack://QRCodeStyling/./src/constants/qrTypes.ts","webpack://QRCodeStyling/./src/core/QROptions.ts","webpack://QRCodeStyling/./src/constants/errorCorrectionLevels.ts","webpack://QRCodeStyling/./src/tools/sanitizeOptions.ts","webpack://QRCodeStyling/./src/index.ts","webpack://QRCodeStyling/./src/core/QRCodeStyling.ts","webpack://QRCodeStyling/./src/tools/getMode.ts","webpack://QRCodeStyling/./src/constants/modes.ts","webpack://QRCodeStyling/webpack/bootstrap","webpack://QRCodeStyling/webpack/startup","webpack://QRCodeStyling/webpack/runtime/compat get default export","webpack://QRCodeStyling/webpack/runtime/define property getters","webpack://QRCodeStyling/webpack/runtime/hasOwnProperty shorthand"],"names":["root","factory","exports","module","define","amd","self","qrcode","typeNumber","errorCorrectionLevel","_typeNumber","_errorCorrectionLevel","QRErrorCorrectionLevel","_modules","_moduleCount","_dataCache","_dataList","_this","makeImpl","test","maskPattern","moduleCount","modules","Array","row","col","setupPositionProbePattern","setupPositionAdjustPattern","setupTimingPattern","setupTypeInfo","setupTypeNumber","createData","mapData","r","c","pos","QRUtil","getPatternPosition","i","length","j","bits","getBCHTypeNumber","mod","Math","floor","data","getBCHTypeInfo","inc","bitIndex","byteIndex","maskFunc","getMaskFunction","dark","dataList","rsBlocks","QRRSBlock","getRSBlocks","buffer","qrBitBuffer","put","getMode","getLength","getLengthInBits","write","totalDataCount","dataCount","putBit","offset","maxDcCount","maxEcCount","dcdata","ecdata","dcCount","ecCount","totalCount","max","getBuffer","rsPoly","getErrorCorrectPolynomial","modPoly","qrPolynomial","modIndex","getAt","totalCodeCount","index","createBytes","addData","mode","newData","qrNumber","qrAlphaNum","qr8BitByte","qrKanji","push","isDark","getModuleCount","make","minLostPoint","pattern","lostPoint","getLostPoint","getBestMaskPattern","createTableTag","cellSize","margin","qrHtml","createSvgTag","alt","title","opts","arguments","text","id","mr","rect","size","qrSvg","scalable","escapeXml","join","trim","createDataURL","min","x","y","createImgTag","img","s","escaped","charAt","createASCII","r1","r2","p","blocks","blocksLastLineNoMargin","ascii","substring","_createHalfASCII","white","black","line","renderTo2dContext","context","fillStyle","fillRect","stringToBytes","stringToBytesFuncs","bytes","charCodeAt","createStringToBytes","unicodeData","numChars","unicodeMap","bin","base64DecodeInputStream","read","b","count","b0","b1","v","String","fromCharCode","unknownChar","PATTERN_POSITION_TABLE","G15","G18","getBCHDigit","L","M","Q","H","digit","d","errorCorrectLength","a","multiply","QRMath","gexp","type","sameCount","darkCount","abs","EXP_TABLE","LOG_TABLE","n","num","shift","_num","e","glog","ratio","RS_BLOCK_TABLE","qrRSBlock","rsBlock","getRsBlockTable","list","_buffer","_length","bufIndex","bit","_data","strToNum","chatToNum","getCode","_bytes","code","byteArrayOutputStream","writeByte","off","len","str","_str","_pos","_buflen","match","decode","width","height","getPixel","gif","_width","_height","pixel","out","writeString","writeShort","raster","getLZWRaster","writeBytes","lzwMinCodeSize","clearCode","endCode","bitLength","table","lzwTable","add","_out","_bitLength","_bitBuffer","byteOut","bitOut","dataIndex","contains","indexOf","flush","toByteArray","_map","_size","key","gifImage","setPixel","base64","_base64","writeEncoded","encode","padlen","toString","base64EncodeOutputStream","utf8","charcode","toUTF8Array","isObject","obj","isArray","mergeDeep","target","sources","source","undefined","Object","keys","forEach","targetValue","sourceValue","assign","downloadURI","uri","name","link","document","createElement","download","href","body","appendChild","click","removeChild","calculateImageSize","originalHeight","originalWidth","maxHiddenDots","maxHiddenAxisDots","dotSize","hideDots","imageSize","hideYDots","hideXDots","k","sqrt","ceil","round","this","_context","_type","draw","getNeighbor","drawFunction","dotTypes","_drawDot","_drawClassy","_drawClassyRounded","_drawRounded","_drawExtraRounded","_drawSquare","call","_rotateFigure","rotation","cx","cy","translate","rotate","closePath","_basicDot","args","arc","PI","_basicSquare","_basicSideRounded","lineTo","_basicCornerRounded","_basicCornerExtraRounded","_basicCornersRounded","_basicCornersExtraRounded","leftNeighbor","rightNeighbor","topNeighbor","bottomNeighbor","neighborsCount","cornerSquareTypes","_basicExtraRounded","cornerDotTypes","squareMask","dotMask","options","_canvas","_options","getContext","getCanvas","clear","canvasContext","clearRect","drawQR","qr","minSize","drawImageSize","_qr","image","loadImage","_image","imageOptions","qrOptions","coverLevel","errorCorrectionPercents","drawBackground","drawDots","hideBackgroundDots","drawCorners","drawImage","backgroundOptions","gradient","gradientOptions","_createGradient","additionalRotation","colorStops","color","addColorStop","filter","xBeginning","yBeginning","dot","dotsOptions","beginPath","xOffset","yOffset","strokeStyle","fill","cornersSquareSize","cornersDotSize","column","cornersSquareOptions","cornersSquare","cornersDotOptions","cornersDot","Promise","resolve","reject","Image","crossOrigin","onload","src","dx","dy","dw","dh","gradientTypes","createRadialGradient","positiveRotation","x0","y0","x1","y1","tan","createLinearGradient","svg","_svg","_element","setAttribute","createElementNS","_defs","_style","getElement","oldElement","cloneNode","parentNode","replaceChild","element","_createColor","_createStyle","_dotsClipPath","_dots","cornersSquareClipPath","cornersDotClipPath","_cornersSquareClipPath","_cornersDotClipPath","_cornerSquares","_cornerDots","stop","innerHTML","qrTypes","drawTypes","sanitizeGradient","newGradient","Number","map","colorStop","sanitizeOptions","newOptions","Boolean","update","_clearContainer","container","_getQRStylingElement","extension","toLowerCase","promise","_svgDrawingPromise","canvas","_canvasDrawingPromise","QRCodeStyling","_container","append","getRawData","serializer","XMLSerializer","serializeToString","Blob","toBlob","downloadOptions","console","warn","encodeURIComponent","toDataURL","__webpack_module_cache__","__webpack_require__","moduleId","__webpack_modules__","getter","__esModule","definition","o","defineProperty","enumerable","get","prop","prototype","hasOwnProperty"],"mappings":"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","file":"qr-code-styling.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"QRCodeStyling\"] = factory();\n\telse\n\t\troot[\"QRCodeStyling\"] = factory();\n})(self, function() {\nreturn ","//---------------------------------------------------------------------\n//\n// QR Code Generator for JavaScript\n//\n// Copyright (c) 2009 Kazuhiko Arase\n//\n// URL: http://www.d-project.com/\n//\n// Licensed under the MIT license:\n// http://www.opensource.org/licenses/mit-license.php\n//\n// The word 'QR Code' is registered trademark of\n// DENSO WAVE INCORPORATED\n// http://www.denso-wave.com/qrcode/faqpatent-e.html\n//\n//---------------------------------------------------------------------\n\nvar qrcode = function() {\n\n //---------------------------------------------------------------------\n // qrcode\n //---------------------------------------------------------------------\n\n /**\n * qrcode\n * @param typeNumber 1 to 40\n * @param errorCorrectionLevel 'L','M','Q','H'\n */\n var qrcode = function(typeNumber, errorCorrectionLevel) {\n\n var PAD0 = 0xEC;\n var PAD1 = 0x11;\n\n var _typeNumber = typeNumber;\n var _errorCorrectionLevel = QRErrorCorrectionLevel[errorCorrectionLevel];\n var _modules = null;\n var _moduleCount = 0;\n var _dataCache = null;\n var _dataList = [];\n\n var _this = {};\n\n var makeImpl = function(test, maskPattern) {\n\n _moduleCount = _typeNumber * 4 + 17;\n _modules = function(moduleCount) {\n var modules = new Array(moduleCount);\n for (var row = 0; row < moduleCount; row += 1) {\n modules[row] = new Array(moduleCount);\n for (var col = 0; col < moduleCount; col += 1) {\n modules[row][col] = null;\n }\n }\n return modules;\n }(_moduleCount);\n\n setupPositionProbePattern(0, 0);\n setupPositionProbePattern(_moduleCount - 7, 0);\n setupPositionProbePattern(0, _moduleCount - 7);\n setupPositionAdjustPattern();\n setupTimingPattern();\n setupTypeInfo(test, maskPattern);\n\n if (_typeNumber >= 7) {\n setupTypeNumber(test);\n }\n\n if (_dataCache == null) {\n _dataCache = createData(_typeNumber, _errorCorrectionLevel, _dataList);\n }\n\n mapData(_dataCache, maskPattern);\n };\n\n var setupPositionProbePattern = function(row, col) {\n\n for (var r = -1; r <= 7; r += 1) {\n\n if (row + r <= -1 || _moduleCount <= row + r) continue;\n\n for (var c = -1; c <= 7; c += 1) {\n\n if (col + c <= -1 || _moduleCount <= col + c) continue;\n\n if ( (0 <= r && r <= 6 && (c == 0 || c == 6) )\n || (0 <= c && c <= 6 && (r == 0 || r == 6) )\n || (2 <= r && r <= 4 && 2 <= c && c <= 4) ) {\n _modules[row + r][col + c] = true;\n } else {\n _modules[row + r][col + c] = false;\n }\n }\n }\n };\n\n var getBestMaskPattern = function() {\n\n var minLostPoint = 0;\n var pattern = 0;\n\n for (var i = 0; i < 8; i += 1) {\n\n makeImpl(true, i);\n\n var lostPoint = QRUtil.getLostPoint(_this);\n\n if (i == 0 || minLostPoint > lostPoint) {\n minLostPoint = lostPoint;\n pattern = i;\n }\n }\n\n return pattern;\n };\n\n var setupTimingPattern = function() {\n\n for (var r = 8; r < _moduleCount - 8; r += 1) {\n if (_modules[r][6] != null) {\n continue;\n }\n _modules[r][6] = (r % 2 == 0);\n }\n\n for (var c = 8; c < _moduleCount - 8; c += 1) {\n if (_modules[6][c] != null) {\n continue;\n }\n _modules[6][c] = (c % 2 == 0);\n }\n };\n\n var setupPositionAdjustPattern = function() {\n\n var pos = QRUtil.getPatternPosition(_typeNumber);\n\n for (var i = 0; i < pos.length; i += 1) {\n\n for (var j = 0; j < pos.length; j += 1) {\n\n var row = pos[i];\n var col = pos[j];\n\n if (_modules[row][col] != null) {\n continue;\n }\n\n for (var r = -2; r <= 2; r += 1) {\n\n for (var c = -2; c <= 2; c += 1) {\n\n if (r == -2 || r == 2 || c == -2 || c == 2\n || (r == 0 && c == 0) ) {\n _modules[row + r][col + c] = true;\n } else {\n _modules[row + r][col + c] = false;\n }\n }\n }\n }\n }\n };\n\n var setupTypeNumber = function(test) {\n\n var bits = QRUtil.getBCHTypeNumber(_typeNumber);\n\n for (var i = 0; i < 18; i += 1) {\n var mod = (!test && ( (bits >> i) & 1) == 1);\n _modules[Math.floor(i / 3)][i % 3 + _moduleCount - 8 - 3] = mod;\n }\n\n for (var i = 0; i < 18; i += 1) {\n var mod = (!test && ( (bits >> i) & 1) == 1);\n _modules[i % 3 + _moduleCount - 8 - 3][Math.floor(i / 3)] = mod;\n }\n };\n\n var setupTypeInfo = function(test, maskPattern) {\n\n var data = (_errorCorrectionLevel << 3) | maskPattern;\n var bits = QRUtil.getBCHTypeInfo(data);\n\n // vertical\n for (var i = 0; i < 15; i += 1) {\n\n var mod = (!test && ( (bits >> i) & 1) == 1);\n\n if (i < 6) {\n _modules[i][8] = mod;\n } else if (i < 8) {\n _modules[i + 1][8] = mod;\n } else {\n _modules[_moduleCount - 15 + i][8] = mod;\n }\n }\n\n // horizontal\n for (var i = 0; i < 15; i += 1) {\n\n var mod = (!test && ( (bits >> i) & 1) == 1);\n\n if (i < 8) {\n _modules[8][_moduleCount - i - 1] = mod;\n } else if (i < 9) {\n _modules[8][15 - i - 1 + 1] = mod;\n } else {\n _modules[8][15 - i - 1] = mod;\n }\n }\n\n // fixed module\n _modules[_moduleCount - 8][8] = (!test);\n };\n\n var mapData = function(data, maskPattern) {\n\n var inc = -1;\n var row = _moduleCount - 1;\n var bitIndex = 7;\n var byteIndex = 0;\n var maskFunc = QRUtil.getMaskFunction(maskPattern);\n\n for (var col = _moduleCount - 1; col > 0; col -= 2) {\n\n if (col == 6) col -= 1;\n\n while (true) {\n\n for (var c = 0; c < 2; c += 1) {\n\n if (_modules[row][col - c] == null) {\n\n var dark = false;\n\n if (byteIndex < data.length) {\n dark = ( ( (data[byteIndex] >>> bitIndex) & 1) == 1);\n }\n\n var mask = maskFunc(row, col - c);\n\n if (mask) {\n dark = !dark;\n }\n\n _modules[row][col - c] = dark;\n bitIndex -= 1;\n\n if (bitIndex == -1) {\n byteIndex += 1;\n bitIndex = 7;\n }\n }\n }\n\n row += inc;\n\n if (row < 0 || _moduleCount <= row) {\n row -= inc;\n inc = -inc;\n break;\n }\n }\n }\n };\n\n var createBytes = function(buffer, rsBlocks) {\n\n var offset = 0;\n\n var maxDcCount = 0;\n var maxEcCount = 0;\n\n var dcdata = new Array(rsBlocks.length);\n var ecdata = new Array(rsBlocks.length);\n\n for (var r = 0; r < rsBlocks.length; r += 1) {\n\n var dcCount = rsBlocks[r].dataCount;\n var ecCount = rsBlocks[r].totalCount - dcCount;\n\n maxDcCount = Math.max(maxDcCount, dcCount);\n maxEcCount = Math.max(maxEcCount, ecCount);\n\n dcdata[r] = new Array(dcCount);\n\n for (var i = 0; i < dcdata[r].length; i += 1) {\n dcdata[r][i] = 0xff & buffer.getBuffer()[i + offset];\n }\n offset += dcCount;\n\n var rsPoly = QRUtil.getErrorCorrectPolynomial(ecCount);\n var rawPoly = qrPolynomial(dcdata[r], rsPoly.getLength() - 1);\n\n var modPoly = rawPoly.mod(rsPoly);\n ecdata[r] = new Array(rsPoly.getLength() - 1);\n for (var i = 0; i < ecdata[r].length; i += 1) {\n var modIndex = i + modPoly.getLength() - ecdata[r].length;\n ecdata[r][i] = (modIndex >= 0)? modPoly.getAt(modIndex) : 0;\n }\n }\n\n var totalCodeCount = 0;\n for (var i = 0; i < rsBlocks.length; i += 1) {\n totalCodeCount += rsBlocks[i].totalCount;\n }\n\n var data = new Array(totalCodeCount);\n var index = 0;\n\n for (var i = 0; i < maxDcCount; i += 1) {\n for (var r = 0; r < rsBlocks.length; r += 1) {\n if (i < dcdata[r].length) {\n data[index] = dcdata[r][i];\n index += 1;\n }\n }\n }\n\n for (var i = 0; i < maxEcCount; i += 1) {\n for (var r = 0; r < rsBlocks.length; r += 1) {\n if (i < ecdata[r].length) {\n data[index] = ecdata[r][i];\n index += 1;\n }\n }\n }\n\n return data;\n };\n\n var createData = function(typeNumber, errorCorrectionLevel, dataList) {\n\n var rsBlocks = QRRSBlock.getRSBlocks(typeNumber, errorCorrectionLevel);\n\n var buffer = qrBitBuffer();\n\n for (var i = 0; i < dataList.length; i += 1) {\n var data = dataList[i];\n buffer.put(data.getMode(), 4);\n buffer.put(data.getLength(), QRUtil.getLengthInBits(data.getMode(), typeNumber) );\n data.write(buffer);\n }\n\n // calc num max data.\n var totalDataCount = 0;\n for (var i = 0; i < rsBlocks.length; i += 1) {\n totalDataCount += rsBlocks[i].dataCount;\n }\n\n if (buffer.getLengthInBits() > totalDataCount * 8) {\n throw 'code length overflow. ('\n + buffer.getLengthInBits()\n + '>'\n + totalDataCount * 8\n + ')';\n }\n\n // end code\n if (buffer.getLengthInBits() + 4 <= totalDataCount * 8) {\n buffer.put(0, 4);\n }\n\n // padding\n while (buffer.getLengthInBits() % 8 != 0) {\n buffer.putBit(false);\n }\n\n // padding\n while (true) {\n\n if (buffer.getLengthInBits() >= totalDataCount * 8) {\n break;\n }\n buffer.put(PAD0, 8);\n\n if (buffer.getLengthInBits() >= totalDataCount * 8) {\n break;\n }\n buffer.put(PAD1, 8);\n }\n\n return createBytes(buffer, rsBlocks);\n };\n\n _this.addData = function(data, mode) {\n\n mode = mode || 'Byte';\n\n var newData = null;\n\n switch(mode) {\n case 'Numeric' :\n newData = qrNumber(data);\n break;\n case 'Alphanumeric' :\n newData = qrAlphaNum(data);\n break;\n case 'Byte' :\n newData = qr8BitByte(data);\n break;\n case 'Kanji' :\n newData = qrKanji(data);\n break;\n default :\n throw 'mode:' + mode;\n }\n\n _dataList.push(newData);\n _dataCache = null;\n };\n\n _this.isDark = function(row, col) {\n if (row < 0 || _moduleCount <= row || col < 0 || _moduleCount <= col) {\n throw row + ',' + col;\n }\n return _modules[row][col];\n };\n\n _this.getModuleCount = function() {\n return _moduleCount;\n };\n\n _this.make = function() {\n if (_typeNumber < 1) {\n var typeNumber = 1;\n\n for (; typeNumber < 40; typeNumber++) {\n var rsBlocks = QRRSBlock.getRSBlocks(typeNumber, _errorCorrectionLevel);\n var buffer = qrBitBuffer();\n\n for (var i = 0; i < _dataList.length; i++) {\n var data = _dataList[i];\n buffer.put(data.getMode(), 4);\n buffer.put(data.getLength(), QRUtil.getLengthInBits(data.getMode(), typeNumber) );\n data.write(buffer);\n }\n\n var totalDataCount = 0;\n for (var i = 0; i < rsBlocks.length; i++) {\n totalDataCount += rsBlocks[i].dataCount;\n }\n\n if (buffer.getLengthInBits() <= totalDataCount * 8) {\n break;\n }\n }\n\n _typeNumber = typeNumber;\n }\n\n makeImpl(false, getBestMaskPattern() );\n };\n\n _this.createTableTag = function(cellSize, margin) {\n\n cellSize = cellSize || 2;\n margin = (typeof margin == 'undefined')? cellSize * 4 : margin;\n\n var qrHtml = '';\n\n qrHtml += '' +\n escapeXml(title.text) + '' : '';\n qrSvg += (alt.text) ? '' +\n escapeXml(alt.text) + '' : '';\n qrSvg += '';\n qrSvg += '': escaped += '>'; break;\n case '&': escaped += '&'; break;\n case '\"': escaped += '"'; break;\n default : escaped += c; break;\n }\n }\n return escaped;\n };\n\n var _createHalfASCII = function(margin) {\n var cellSize = 1;\n margin = (typeof margin == 'undefined')? cellSize * 2 : margin;\n\n var size = _this.getModuleCount() * cellSize + margin * 2;\n var min = margin;\n var max = size - margin;\n\n var y, x, r1, r2, p;\n\n var blocks = {\n '██': '█',\n '█ ': '▀',\n ' █': '▄',\n ' ': ' '\n };\n\n var blocksLastLineNoMargin = {\n '██': '▀',\n '█ ': '▀',\n ' █': ' ',\n ' ': ' '\n };\n\n var ascii = '';\n for (y = 0; y < size; y += 2) {\n r1 = Math.floor((y - min) / cellSize);\n r2 = Math.floor((y + 1 - min) / cellSize);\n for (x = 0; x < size; x += 1) {\n p = '█';\n\n if (min <= x && x < max && min <= y && y < max && _this.isDark(r1, Math.floor((x - min) / cellSize))) {\n p = ' ';\n }\n\n if (min <= x && x < max && min <= y+1 && y+1 < max && _this.isDark(r2, Math.floor((x - min) / cellSize))) {\n p += ' ';\n }\n else {\n p += '█';\n }\n\n // Output 2 characters per pixel, to create full square. 1 character per pixels gives only half width of square.\n ascii += (margin < 1 && y+1 >= max) ? blocksLastLineNoMargin[p] : blocks[p];\n }\n\n ascii += '\\n';\n }\n\n if (size % 2 && margin > 0) {\n return ascii.substring(0, ascii.length - size - 1) + Array(size+1).join('▀');\n }\n\n return ascii.substring(0, ascii.length-1);\n };\n\n _this.createASCII = function(cellSize, margin) {\n cellSize = cellSize || 1;\n\n if (cellSize < 2) {\n return _createHalfASCII(margin);\n }\n\n cellSize -= 1;\n margin = (typeof margin == 'undefined')? cellSize * 2 : margin;\n\n var size = _this.getModuleCount() * cellSize + margin * 2;\n var min = margin;\n var max = size - margin;\n\n var y, x, r, p;\n\n var white = Array(cellSize+1).join('██');\n var black = Array(cellSize+1).join(' ');\n\n var ascii = '';\n var line = '';\n for (y = 0; y < size; y += 1) {\n r = Math.floor( (y - min) / cellSize);\n line = '';\n for (x = 0; x < size; x += 1) {\n p = 1;\n\n if (min <= x && x < max && min <= y && y < max && _this.isDark(r, Math.floor((x - min) / cellSize))) {\n p = 0;\n }\n\n // Output 2 characters per pixel, to create full square. 1 character per pixels gives only half width of square.\n line += p ? white : black;\n }\n\n for (r = 0; r < cellSize; r += 1) {\n ascii += line + '\\n';\n }\n }\n\n return ascii.substring(0, ascii.length-1);\n };\n\n _this.renderTo2dContext = function(context, cellSize) {\n cellSize = cellSize || 2;\n var length = _this.getModuleCount();\n for (var row = 0; row < length; row++) {\n for (var col = 0; col < length; col++) {\n context.fillStyle = _this.isDark(row, col) ? 'black' : 'white';\n context.fillRect(row * cellSize, col * cellSize, cellSize, cellSize);\n }\n }\n }\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qrcode.stringToBytes\n //---------------------------------------------------------------------\n\n qrcode.stringToBytesFuncs = {\n 'default' : function(s) {\n var bytes = [];\n for (var i = 0; i < s.length; i += 1) {\n var c = s.charCodeAt(i);\n bytes.push(c & 0xff);\n }\n return bytes;\n }\n };\n\n qrcode.stringToBytes = qrcode.stringToBytesFuncs['default'];\n\n //---------------------------------------------------------------------\n // qrcode.createStringToBytes\n //---------------------------------------------------------------------\n\n /**\n * @param unicodeData base64 string of byte array.\n * [16bit Unicode],[16bit Bytes], ...\n * @param numChars\n */\n qrcode.createStringToBytes = function(unicodeData, numChars) {\n\n // create conversion map.\n\n var unicodeMap = function() {\n\n var bin = base64DecodeInputStream(unicodeData);\n var read = function() {\n var b = bin.read();\n if (b == -1) throw 'eof';\n return b;\n };\n\n var count = 0;\n var unicodeMap = {};\n while (true) {\n var b0 = bin.read();\n if (b0 == -1) break;\n var b1 = read();\n var b2 = read();\n var b3 = read();\n var k = String.fromCharCode( (b0 << 8) | b1);\n var v = (b2 << 8) | b3;\n unicodeMap[k] = v;\n count += 1;\n }\n if (count != numChars) {\n throw count + ' != ' + numChars;\n }\n\n return unicodeMap;\n }();\n\n var unknownChar = '?'.charCodeAt(0);\n\n return function(s) {\n var bytes = [];\n for (var i = 0; i < s.length; i += 1) {\n var c = s.charCodeAt(i);\n if (c < 128) {\n bytes.push(c);\n } else {\n var b = unicodeMap[s.charAt(i)];\n if (typeof b == 'number') {\n if ( (b & 0xff) == b) {\n // 1byte\n bytes.push(b);\n } else {\n // 2bytes\n bytes.push(b >>> 8);\n bytes.push(b & 0xff);\n }\n } else {\n bytes.push(unknownChar);\n }\n }\n }\n return bytes;\n };\n };\n\n //---------------------------------------------------------------------\n // QRMode\n //---------------------------------------------------------------------\n\n var QRMode = {\n MODE_NUMBER : 1 << 0,\n MODE_ALPHA_NUM : 1 << 1,\n MODE_8BIT_BYTE : 1 << 2,\n MODE_KANJI : 1 << 3\n };\n\n //---------------------------------------------------------------------\n // QRErrorCorrectionLevel\n //---------------------------------------------------------------------\n\n var QRErrorCorrectionLevel = {\n L : 1,\n M : 0,\n Q : 3,\n H : 2\n };\n\n //---------------------------------------------------------------------\n // QRMaskPattern\n //---------------------------------------------------------------------\n\n var QRMaskPattern = {\n PATTERN000 : 0,\n PATTERN001 : 1,\n PATTERN010 : 2,\n PATTERN011 : 3,\n PATTERN100 : 4,\n PATTERN101 : 5,\n PATTERN110 : 6,\n PATTERN111 : 7\n };\n\n //---------------------------------------------------------------------\n // QRUtil\n //---------------------------------------------------------------------\n\n var QRUtil = function() {\n\n var PATTERN_POSITION_TABLE = [\n [],\n [6, 18],\n [6, 22],\n [6, 26],\n [6, 30],\n [6, 34],\n [6, 22, 38],\n [6, 24, 42],\n [6, 26, 46],\n [6, 28, 50],\n [6, 30, 54],\n [6, 32, 58],\n [6, 34, 62],\n [6, 26, 46, 66],\n [6, 26, 48, 70],\n [6, 26, 50, 74],\n [6, 30, 54, 78],\n [6, 30, 56, 82],\n [6, 30, 58, 86],\n [6, 34, 62, 90],\n [6, 28, 50, 72, 94],\n [6, 26, 50, 74, 98],\n [6, 30, 54, 78, 102],\n [6, 28, 54, 80, 106],\n [6, 32, 58, 84, 110],\n [6, 30, 58, 86, 114],\n [6, 34, 62, 90, 118],\n [6, 26, 50, 74, 98, 122],\n [6, 30, 54, 78, 102, 126],\n [6, 26, 52, 78, 104, 130],\n [6, 30, 56, 82, 108, 134],\n [6, 34, 60, 86, 112, 138],\n [6, 30, 58, 86, 114, 142],\n [6, 34, 62, 90, 118, 146],\n [6, 30, 54, 78, 102, 126, 150],\n [6, 24, 50, 76, 102, 128, 154],\n [6, 28, 54, 80, 106, 132, 158],\n [6, 32, 58, 84, 110, 136, 162],\n [6, 26, 54, 82, 110, 138, 166],\n [6, 30, 58, 86, 114, 142, 170]\n ];\n var G15 = (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0);\n var G18 = (1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | (1 << 2) | (1 << 0);\n var G15_MASK = (1 << 14) | (1 << 12) | (1 << 10) | (1 << 4) | (1 << 1);\n\n var _this = {};\n\n var getBCHDigit = function(data) {\n var digit = 0;\n while (data != 0) {\n digit += 1;\n data >>>= 1;\n }\n return digit;\n };\n\n _this.getBCHTypeInfo = function(data) {\n var d = data << 10;\n while (getBCHDigit(d) - getBCHDigit(G15) >= 0) {\n d ^= (G15 << (getBCHDigit(d) - getBCHDigit(G15) ) );\n }\n return ( (data << 10) | d) ^ G15_MASK;\n };\n\n _this.getBCHTypeNumber = function(data) {\n var d = data << 12;\n while (getBCHDigit(d) - getBCHDigit(G18) >= 0) {\n d ^= (G18 << (getBCHDigit(d) - getBCHDigit(G18) ) );\n }\n return (data << 12) | d;\n };\n\n _this.getPatternPosition = function(typeNumber) {\n return PATTERN_POSITION_TABLE[typeNumber - 1];\n };\n\n _this.getMaskFunction = function(maskPattern) {\n\n switch (maskPattern) {\n\n case QRMaskPattern.PATTERN000 :\n return function(i, j) { return (i + j) % 2 == 0; };\n case QRMaskPattern.PATTERN001 :\n return function(i, j) { return i % 2 == 0; };\n case QRMaskPattern.PATTERN010 :\n return function(i, j) { return j % 3 == 0; };\n case QRMaskPattern.PATTERN011 :\n return function(i, j) { return (i + j) % 3 == 0; };\n case QRMaskPattern.PATTERN100 :\n return function(i, j) { return (Math.floor(i / 2) + Math.floor(j / 3) ) % 2 == 0; };\n case QRMaskPattern.PATTERN101 :\n return function(i, j) { return (i * j) % 2 + (i * j) % 3 == 0; };\n case QRMaskPattern.PATTERN110 :\n return function(i, j) { return ( (i * j) % 2 + (i * j) % 3) % 2 == 0; };\n case QRMaskPattern.PATTERN111 :\n return function(i, j) { return ( (i * j) % 3 + (i + j) % 2) % 2 == 0; };\n\n default :\n throw 'bad maskPattern:' + maskPattern;\n }\n };\n\n _this.getErrorCorrectPolynomial = function(errorCorrectLength) {\n var a = qrPolynomial([1], 0);\n for (var i = 0; i < errorCorrectLength; i += 1) {\n a = a.multiply(qrPolynomial([1, QRMath.gexp(i)], 0) );\n }\n return a;\n };\n\n _this.getLengthInBits = function(mode, type) {\n\n if (1 <= type && type < 10) {\n\n // 1 - 9\n\n switch(mode) {\n case QRMode.MODE_NUMBER : return 10;\n case QRMode.MODE_ALPHA_NUM : return 9;\n case QRMode.MODE_8BIT_BYTE : return 8;\n case QRMode.MODE_KANJI : return 8;\n default :\n throw 'mode:' + mode;\n }\n\n } else if (type < 27) {\n\n // 10 - 26\n\n switch(mode) {\n case QRMode.MODE_NUMBER : return 12;\n case QRMode.MODE_ALPHA_NUM : return 11;\n case QRMode.MODE_8BIT_BYTE : return 16;\n case QRMode.MODE_KANJI : return 10;\n default :\n throw 'mode:' + mode;\n }\n\n } else if (type < 41) {\n\n // 27 - 40\n\n switch(mode) {\n case QRMode.MODE_NUMBER : return 14;\n case QRMode.MODE_ALPHA_NUM : return 13;\n case QRMode.MODE_8BIT_BYTE : return 16;\n case QRMode.MODE_KANJI : return 12;\n default :\n throw 'mode:' + mode;\n }\n\n } else {\n throw 'type:' + type;\n }\n };\n\n _this.getLostPoint = function(qrcode) {\n\n var moduleCount = qrcode.getModuleCount();\n\n var lostPoint = 0;\n\n // LEVEL1\n\n for (var row = 0; row < moduleCount; row += 1) {\n for (var col = 0; col < moduleCount; col += 1) {\n\n var sameCount = 0;\n var dark = qrcode.isDark(row, col);\n\n for (var r = -1; r <= 1; r += 1) {\n\n if (row + r < 0 || moduleCount <= row + r) {\n continue;\n }\n\n for (var c = -1; c <= 1; c += 1) {\n\n if (col + c < 0 || moduleCount <= col + c) {\n continue;\n }\n\n if (r == 0 && c == 0) {\n continue;\n }\n\n if (dark == qrcode.isDark(row + r, col + c) ) {\n sameCount += 1;\n }\n }\n }\n\n if (sameCount > 5) {\n lostPoint += (3 + sameCount - 5);\n }\n }\n };\n\n // LEVEL2\n\n for (var row = 0; row < moduleCount - 1; row += 1) {\n for (var col = 0; col < moduleCount - 1; col += 1) {\n var count = 0;\n if (qrcode.isDark(row, col) ) count += 1;\n if (qrcode.isDark(row + 1, col) ) count += 1;\n if (qrcode.isDark(row, col + 1) ) count += 1;\n if (qrcode.isDark(row + 1, col + 1) ) count += 1;\n if (count == 0 || count == 4) {\n lostPoint += 3;\n }\n }\n }\n\n // LEVEL3\n\n for (var row = 0; row < moduleCount; row += 1) {\n for (var col = 0; col < moduleCount - 6; col += 1) {\n if (qrcode.isDark(row, col)\n && !qrcode.isDark(row, col + 1)\n && qrcode.isDark(row, col + 2)\n && qrcode.isDark(row, col + 3)\n && qrcode.isDark(row, col + 4)\n && !qrcode.isDark(row, col + 5)\n && qrcode.isDark(row, col + 6) ) {\n lostPoint += 40;\n }\n }\n }\n\n for (var col = 0; col < moduleCount; col += 1) {\n for (var row = 0; row < moduleCount - 6; row += 1) {\n if (qrcode.isDark(row, col)\n && !qrcode.isDark(row + 1, col)\n && qrcode.isDark(row + 2, col)\n && qrcode.isDark(row + 3, col)\n && qrcode.isDark(row + 4, col)\n && !qrcode.isDark(row + 5, col)\n && qrcode.isDark(row + 6, col) ) {\n lostPoint += 40;\n }\n }\n }\n\n // LEVEL4\n\n var darkCount = 0;\n\n for (var col = 0; col < moduleCount; col += 1) {\n for (var row = 0; row < moduleCount; row += 1) {\n if (qrcode.isDark(row, col) ) {\n darkCount += 1;\n }\n }\n }\n\n var ratio = Math.abs(100 * darkCount / moduleCount / moduleCount - 50) / 5;\n lostPoint += ratio * 10;\n\n return lostPoint;\n };\n\n return _this;\n }();\n\n //---------------------------------------------------------------------\n // QRMath\n //---------------------------------------------------------------------\n\n var QRMath = function() {\n\n var EXP_TABLE = new Array(256);\n var LOG_TABLE = new Array(256);\n\n // initialize tables\n for (var i = 0; i < 8; i += 1) {\n EXP_TABLE[i] = 1 << i;\n }\n for (var i = 8; i < 256; i += 1) {\n EXP_TABLE[i] = EXP_TABLE[i - 4]\n ^ EXP_TABLE[i - 5]\n ^ EXP_TABLE[i - 6]\n ^ EXP_TABLE[i - 8];\n }\n for (var i = 0; i < 255; i += 1) {\n LOG_TABLE[EXP_TABLE[i] ] = i;\n }\n\n var _this = {};\n\n _this.glog = function(n) {\n\n if (n < 1) {\n throw 'glog(' + n + ')';\n }\n\n return LOG_TABLE[n];\n };\n\n _this.gexp = function(n) {\n\n while (n < 0) {\n n += 255;\n }\n\n while (n >= 256) {\n n -= 255;\n }\n\n return EXP_TABLE[n];\n };\n\n return _this;\n }();\n\n //---------------------------------------------------------------------\n // qrPolynomial\n //---------------------------------------------------------------------\n\n function qrPolynomial(num, shift) {\n\n if (typeof num.length == 'undefined') {\n throw num.length + '/' + shift;\n }\n\n var _num = function() {\n var offset = 0;\n while (offset < num.length && num[offset] == 0) {\n offset += 1;\n }\n var _num = new Array(num.length - offset + shift);\n for (var i = 0; i < num.length - offset; i += 1) {\n _num[i] = num[i + offset];\n }\n return _num;\n }();\n\n var _this = {};\n\n _this.getAt = function(index) {\n return _num[index];\n };\n\n _this.getLength = function() {\n return _num.length;\n };\n\n _this.multiply = function(e) {\n\n var num = new Array(_this.getLength() + e.getLength() - 1);\n\n for (var i = 0; i < _this.getLength(); i += 1) {\n for (var j = 0; j < e.getLength(); j += 1) {\n num[i + j] ^= QRMath.gexp(QRMath.glog(_this.getAt(i) ) + QRMath.glog(e.getAt(j) ) );\n }\n }\n\n return qrPolynomial(num, 0);\n };\n\n _this.mod = function(e) {\n\n if (_this.getLength() - e.getLength() < 0) {\n return _this;\n }\n\n var ratio = QRMath.glog(_this.getAt(0) ) - QRMath.glog(e.getAt(0) );\n\n var num = new Array(_this.getLength() );\n for (var i = 0; i < _this.getLength(); i += 1) {\n num[i] = _this.getAt(i);\n }\n\n for (var i = 0; i < e.getLength(); i += 1) {\n num[i] ^= QRMath.gexp(QRMath.glog(e.getAt(i) ) + ratio);\n }\n\n // recursive call\n return qrPolynomial(num, 0).mod(e);\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // QRRSBlock\n //---------------------------------------------------------------------\n\n var QRRSBlock = function() {\n\n var RS_BLOCK_TABLE = [\n\n // L\n // M\n // Q\n // H\n\n // 1\n [1, 26, 19],\n [1, 26, 16],\n [1, 26, 13],\n [1, 26, 9],\n\n // 2\n [1, 44, 34],\n [1, 44, 28],\n [1, 44, 22],\n [1, 44, 16],\n\n // 3\n [1, 70, 55],\n [1, 70, 44],\n [2, 35, 17],\n [2, 35, 13],\n\n // 4\n [1, 100, 80],\n [2, 50, 32],\n [2, 50, 24],\n [4, 25, 9],\n\n // 5\n [1, 134, 108],\n [2, 67, 43],\n [2, 33, 15, 2, 34, 16],\n [2, 33, 11, 2, 34, 12],\n\n // 6\n [2, 86, 68],\n [4, 43, 27],\n [4, 43, 19],\n [4, 43, 15],\n\n // 7\n [2, 98, 78],\n [4, 49, 31],\n [2, 32, 14, 4, 33, 15],\n [4, 39, 13, 1, 40, 14],\n\n // 8\n [2, 121, 97],\n [2, 60, 38, 2, 61, 39],\n [4, 40, 18, 2, 41, 19],\n [4, 40, 14, 2, 41, 15],\n\n // 9\n [2, 146, 116],\n [3, 58, 36, 2, 59, 37],\n [4, 36, 16, 4, 37, 17],\n [4, 36, 12, 4, 37, 13],\n\n // 10\n [2, 86, 68, 2, 87, 69],\n [4, 69, 43, 1, 70, 44],\n [6, 43, 19, 2, 44, 20],\n [6, 43, 15, 2, 44, 16],\n\n // 11\n [4, 101, 81],\n [1, 80, 50, 4, 81, 51],\n [4, 50, 22, 4, 51, 23],\n [3, 36, 12, 8, 37, 13],\n\n // 12\n [2, 116, 92, 2, 117, 93],\n [6, 58, 36, 2, 59, 37],\n [4, 46, 20, 6, 47, 21],\n [7, 42, 14, 4, 43, 15],\n\n // 13\n [4, 133, 107],\n [8, 59, 37, 1, 60, 38],\n [8, 44, 20, 4, 45, 21],\n [12, 33, 11, 4, 34, 12],\n\n // 14\n [3, 145, 115, 1, 146, 116],\n [4, 64, 40, 5, 65, 41],\n [11, 36, 16, 5, 37, 17],\n [11, 36, 12, 5, 37, 13],\n\n // 15\n [5, 109, 87, 1, 110, 88],\n [5, 65, 41, 5, 66, 42],\n [5, 54, 24, 7, 55, 25],\n [11, 36, 12, 7, 37, 13],\n\n // 16\n [5, 122, 98, 1, 123, 99],\n [7, 73, 45, 3, 74, 46],\n [15, 43, 19, 2, 44, 20],\n [3, 45, 15, 13, 46, 16],\n\n // 17\n [1, 135, 107, 5, 136, 108],\n [10, 74, 46, 1, 75, 47],\n [1, 50, 22, 15, 51, 23],\n [2, 42, 14, 17, 43, 15],\n\n // 18\n [5, 150, 120, 1, 151, 121],\n [9, 69, 43, 4, 70, 44],\n [17, 50, 22, 1, 51, 23],\n [2, 42, 14, 19, 43, 15],\n\n // 19\n [3, 141, 113, 4, 142, 114],\n [3, 70, 44, 11, 71, 45],\n [17, 47, 21, 4, 48, 22],\n [9, 39, 13, 16, 40, 14],\n\n // 20\n [3, 135, 107, 5, 136, 108],\n [3, 67, 41, 13, 68, 42],\n [15, 54, 24, 5, 55, 25],\n [15, 43, 15, 10, 44, 16],\n\n // 21\n [4, 144, 116, 4, 145, 117],\n [17, 68, 42],\n [17, 50, 22, 6, 51, 23],\n [19, 46, 16, 6, 47, 17],\n\n // 22\n [2, 139, 111, 7, 140, 112],\n [17, 74, 46],\n [7, 54, 24, 16, 55, 25],\n [34, 37, 13],\n\n // 23\n [4, 151, 121, 5, 152, 122],\n [4, 75, 47, 14, 76, 48],\n [11, 54, 24, 14, 55, 25],\n [16, 45, 15, 14, 46, 16],\n\n // 24\n [6, 147, 117, 4, 148, 118],\n [6, 73, 45, 14, 74, 46],\n [11, 54, 24, 16, 55, 25],\n [30, 46, 16, 2, 47, 17],\n\n // 25\n [8, 132, 106, 4, 133, 107],\n [8, 75, 47, 13, 76, 48],\n [7, 54, 24, 22, 55, 25],\n [22, 45, 15, 13, 46, 16],\n\n // 26\n [10, 142, 114, 2, 143, 115],\n [19, 74, 46, 4, 75, 47],\n [28, 50, 22, 6, 51, 23],\n [33, 46, 16, 4, 47, 17],\n\n // 27\n [8, 152, 122, 4, 153, 123],\n [22, 73, 45, 3, 74, 46],\n [8, 53, 23, 26, 54, 24],\n [12, 45, 15, 28, 46, 16],\n\n // 28\n [3, 147, 117, 10, 148, 118],\n [3, 73, 45, 23, 74, 46],\n [4, 54, 24, 31, 55, 25],\n [11, 45, 15, 31, 46, 16],\n\n // 29\n [7, 146, 116, 7, 147, 117],\n [21, 73, 45, 7, 74, 46],\n [1, 53, 23, 37, 54, 24],\n [19, 45, 15, 26, 46, 16],\n\n // 30\n [5, 145, 115, 10, 146, 116],\n [19, 75, 47, 10, 76, 48],\n [15, 54, 24, 25, 55, 25],\n [23, 45, 15, 25, 46, 16],\n\n // 31\n [13, 145, 115, 3, 146, 116],\n [2, 74, 46, 29, 75, 47],\n [42, 54, 24, 1, 55, 25],\n [23, 45, 15, 28, 46, 16],\n\n // 32\n [17, 145, 115],\n [10, 74, 46, 23, 75, 47],\n [10, 54, 24, 35, 55, 25],\n [19, 45, 15, 35, 46, 16],\n\n // 33\n [17, 145, 115, 1, 146, 116],\n [14, 74, 46, 21, 75, 47],\n [29, 54, 24, 19, 55, 25],\n [11, 45, 15, 46, 46, 16],\n\n // 34\n [13, 145, 115, 6, 146, 116],\n [14, 74, 46, 23, 75, 47],\n [44, 54, 24, 7, 55, 25],\n [59, 46, 16, 1, 47, 17],\n\n // 35\n [12, 151, 121, 7, 152, 122],\n [12, 75, 47, 26, 76, 48],\n [39, 54, 24, 14, 55, 25],\n [22, 45, 15, 41, 46, 16],\n\n // 36\n [6, 151, 121, 14, 152, 122],\n [6, 75, 47, 34, 76, 48],\n [46, 54, 24, 10, 55, 25],\n [2, 45, 15, 64, 46, 16],\n\n // 37\n [17, 152, 122, 4, 153, 123],\n [29, 74, 46, 14, 75, 47],\n [49, 54, 24, 10, 55, 25],\n [24, 45, 15, 46, 46, 16],\n\n // 38\n [4, 152, 122, 18, 153, 123],\n [13, 74, 46, 32, 75, 47],\n [48, 54, 24, 14, 55, 25],\n [42, 45, 15, 32, 46, 16],\n\n // 39\n [20, 147, 117, 4, 148, 118],\n [40, 75, 47, 7, 76, 48],\n [43, 54, 24, 22, 55, 25],\n [10, 45, 15, 67, 46, 16],\n\n // 40\n [19, 148, 118, 6, 149, 119],\n [18, 75, 47, 31, 76, 48],\n [34, 54, 24, 34, 55, 25],\n [20, 45, 15, 61, 46, 16]\n ];\n\n var qrRSBlock = function(totalCount, dataCount) {\n var _this = {};\n _this.totalCount = totalCount;\n _this.dataCount = dataCount;\n return _this;\n };\n\n var _this = {};\n\n var getRsBlockTable = function(typeNumber, errorCorrectionLevel) {\n\n switch(errorCorrectionLevel) {\n case QRErrorCorrectionLevel.L :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 0];\n case QRErrorCorrectionLevel.M :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 1];\n case QRErrorCorrectionLevel.Q :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 2];\n case QRErrorCorrectionLevel.H :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 3];\n default :\n return undefined;\n }\n };\n\n _this.getRSBlocks = function(typeNumber, errorCorrectionLevel) {\n\n var rsBlock = getRsBlockTable(typeNumber, errorCorrectionLevel);\n\n if (typeof rsBlock == 'undefined') {\n throw 'bad rs block @ typeNumber:' + typeNumber +\n '/errorCorrectionLevel:' + errorCorrectionLevel;\n }\n\n var length = rsBlock.length / 3;\n\n var list = [];\n\n for (var i = 0; i < length; i += 1) {\n\n var count = rsBlock[i * 3 + 0];\n var totalCount = rsBlock[i * 3 + 1];\n var dataCount = rsBlock[i * 3 + 2];\n\n for (var j = 0; j < count; j += 1) {\n list.push(qrRSBlock(totalCount, dataCount) );\n }\n }\n\n return list;\n };\n\n return _this;\n }();\n\n //---------------------------------------------------------------------\n // qrBitBuffer\n //---------------------------------------------------------------------\n\n var qrBitBuffer = function() {\n\n var _buffer = [];\n var _length = 0;\n\n var _this = {};\n\n _this.getBuffer = function() {\n return _buffer;\n };\n\n _this.getAt = function(index) {\n var bufIndex = Math.floor(index / 8);\n return ( (_buffer[bufIndex] >>> (7 - index % 8) ) & 1) == 1;\n };\n\n _this.put = function(num, length) {\n for (var i = 0; i < length; i += 1) {\n _this.putBit( ( (num >>> (length - i - 1) ) & 1) == 1);\n }\n };\n\n _this.getLengthInBits = function() {\n return _length;\n };\n\n _this.putBit = function(bit) {\n\n var bufIndex = Math.floor(_length / 8);\n if (_buffer.length <= bufIndex) {\n _buffer.push(0);\n }\n\n if (bit) {\n _buffer[bufIndex] |= (0x80 >>> (_length % 8) );\n }\n\n _length += 1;\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qrNumber\n //---------------------------------------------------------------------\n\n var qrNumber = function(data) {\n\n var _mode = QRMode.MODE_NUMBER;\n var _data = data;\n\n var _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return _data.length;\n };\n\n _this.write = function(buffer) {\n\n var data = _data;\n\n var i = 0;\n\n while (i + 2 < data.length) {\n buffer.put(strToNum(data.substring(i, i + 3) ), 10);\n i += 3;\n }\n\n if (i < data.length) {\n if (data.length - i == 1) {\n buffer.put(strToNum(data.substring(i, i + 1) ), 4);\n } else if (data.length - i == 2) {\n buffer.put(strToNum(data.substring(i, i + 2) ), 7);\n }\n }\n };\n\n var strToNum = function(s) {\n var num = 0;\n for (var i = 0; i < s.length; i += 1) {\n num = num * 10 + chatToNum(s.charAt(i) );\n }\n return num;\n };\n\n var chatToNum = function(c) {\n if ('0' <= c && c <= '9') {\n return c.charCodeAt(0) - '0'.charCodeAt(0);\n }\n throw 'illegal char :' + c;\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qrAlphaNum\n //---------------------------------------------------------------------\n\n var qrAlphaNum = function(data) {\n\n var _mode = QRMode.MODE_ALPHA_NUM;\n var _data = data;\n\n var _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return _data.length;\n };\n\n _this.write = function(buffer) {\n\n var s = _data;\n\n var i = 0;\n\n while (i + 1 < s.length) {\n buffer.put(\n getCode(s.charAt(i) ) * 45 +\n getCode(s.charAt(i + 1) ), 11);\n i += 2;\n }\n\n if (i < s.length) {\n buffer.put(getCode(s.charAt(i) ), 6);\n }\n };\n\n var getCode = function(c) {\n\n if ('0' <= c && c <= '9') {\n return c.charCodeAt(0) - '0'.charCodeAt(0);\n } else if ('A' <= c && c <= 'Z') {\n return c.charCodeAt(0) - 'A'.charCodeAt(0) + 10;\n } else {\n switch (c) {\n case ' ' : return 36;\n case '$' : return 37;\n case '%' : return 38;\n case '*' : return 39;\n case '+' : return 40;\n case '-' : return 41;\n case '.' : return 42;\n case '/' : return 43;\n case ':' : return 44;\n default :\n throw 'illegal char :' + c;\n }\n }\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qr8BitByte\n //---------------------------------------------------------------------\n\n var qr8BitByte = function(data) {\n\n var _mode = QRMode.MODE_8BIT_BYTE;\n var _data = data;\n var _bytes = qrcode.stringToBytes(data);\n\n var _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return _bytes.length;\n };\n\n _this.write = function(buffer) {\n for (var i = 0; i < _bytes.length; i += 1) {\n buffer.put(_bytes[i], 8);\n }\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qrKanji\n //---------------------------------------------------------------------\n\n var qrKanji = function(data) {\n\n var _mode = QRMode.MODE_KANJI;\n var _data = data;\n\n var stringToBytes = qrcode.stringToBytesFuncs['SJIS'];\n if (!stringToBytes) {\n throw 'sjis not supported.';\n }\n !function(c, code) {\n // self test for sjis support.\n var test = stringToBytes(c);\n if (test.length != 2 || ( (test[0] << 8) | test[1]) != code) {\n throw 'sjis not supported.';\n }\n }('\\u53cb', 0x9746);\n\n var _bytes = stringToBytes(data);\n\n var _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return ~~(_bytes.length / 2);\n };\n\n _this.write = function(buffer) {\n\n var data = _bytes;\n\n var i = 0;\n\n while (i + 1 < data.length) {\n\n var c = ( (0xff & data[i]) << 8) | (0xff & data[i + 1]);\n\n if (0x8140 <= c && c <= 0x9FFC) {\n c -= 0x8140;\n } else if (0xE040 <= c && c <= 0xEBBF) {\n c -= 0xC140;\n } else {\n throw 'illegal char at ' + (i + 1) + '/' + c;\n }\n\n c = ( (c >>> 8) & 0xff) * 0xC0 + (c & 0xff);\n\n buffer.put(c, 13);\n\n i += 2;\n }\n\n if (i < data.length) {\n throw 'illegal char at ' + (i + 1);\n }\n };\n\n return _this;\n };\n\n //=====================================================================\n // GIF Support etc.\n //\n\n //---------------------------------------------------------------------\n // byteArrayOutputStream\n //---------------------------------------------------------------------\n\n var byteArrayOutputStream = function() {\n\n var _bytes = [];\n\n var _this = {};\n\n _this.writeByte = function(b) {\n _bytes.push(b & 0xff);\n };\n\n _this.writeShort = function(i) {\n _this.writeByte(i);\n _this.writeByte(i >>> 8);\n };\n\n _this.writeBytes = function(b, off, len) {\n off = off || 0;\n len = len || b.length;\n for (var i = 0; i < len; i += 1) {\n _this.writeByte(b[i + off]);\n }\n };\n\n _this.writeString = function(s) {\n for (var i = 0; i < s.length; i += 1) {\n _this.writeByte(s.charCodeAt(i) );\n }\n };\n\n _this.toByteArray = function() {\n return _bytes;\n };\n\n _this.toString = function() {\n var s = '';\n s += '[';\n for (var i = 0; i < _bytes.length; i += 1) {\n if (i > 0) {\n s += ',';\n }\n s += _bytes[i];\n }\n s += ']';\n return s;\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // base64EncodeOutputStream\n //---------------------------------------------------------------------\n\n var base64EncodeOutputStream = function() {\n\n var _buffer = 0;\n var _buflen = 0;\n var _length = 0;\n var _base64 = '';\n\n var _this = {};\n\n var writeEncoded = function(b) {\n _base64 += String.fromCharCode(encode(b & 0x3f) );\n };\n\n var encode = function(n) {\n if (n < 0) {\n // error.\n } else if (n < 26) {\n return 0x41 + n;\n } else if (n < 52) {\n return 0x61 + (n - 26);\n } else if (n < 62) {\n return 0x30 + (n - 52);\n } else if (n == 62) {\n return 0x2b;\n } else if (n == 63) {\n return 0x2f;\n }\n throw 'n:' + n;\n };\n\n _this.writeByte = function(n) {\n\n _buffer = (_buffer << 8) | (n & 0xff);\n _buflen += 8;\n _length += 1;\n\n while (_buflen >= 6) {\n writeEncoded(_buffer >>> (_buflen - 6) );\n _buflen -= 6;\n }\n };\n\n _this.flush = function() {\n\n if (_buflen > 0) {\n writeEncoded(_buffer << (6 - _buflen) );\n _buffer = 0;\n _buflen = 0;\n }\n\n if (_length % 3 != 0) {\n // padding\n var padlen = 3 - _length % 3;\n for (var i = 0; i < padlen; i += 1) {\n _base64 += '=';\n }\n }\n };\n\n _this.toString = function() {\n return _base64;\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // base64DecodeInputStream\n //---------------------------------------------------------------------\n\n var base64DecodeInputStream = function(str) {\n\n var _str = str;\n var _pos = 0;\n var _buffer = 0;\n var _buflen = 0;\n\n var _this = {};\n\n _this.read = function() {\n\n while (_buflen < 8) {\n\n if (_pos >= _str.length) {\n if (_buflen == 0) {\n return -1;\n }\n throw 'unexpected end of file./' + _buflen;\n }\n\n var c = _str.charAt(_pos);\n _pos += 1;\n\n if (c == '=') {\n _buflen = 0;\n return -1;\n } else if (c.match(/^\\s$/) ) {\n // ignore if whitespace.\n continue;\n }\n\n _buffer = (_buffer << 6) | decode(c.charCodeAt(0) );\n _buflen += 6;\n }\n\n var n = (_buffer >>> (_buflen - 8) ) & 0xff;\n _buflen -= 8;\n return n;\n };\n\n var decode = function(c) {\n if (0x41 <= c && c <= 0x5a) {\n return c - 0x41;\n } else if (0x61 <= c && c <= 0x7a) {\n return c - 0x61 + 26;\n } else if (0x30 <= c && c <= 0x39) {\n return c - 0x30 + 52;\n } else if (c == 0x2b) {\n return 62;\n } else if (c == 0x2f) {\n return 63;\n } else {\n throw 'c:' + c;\n }\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // gifImage (B/W)\n //---------------------------------------------------------------------\n\n var gifImage = function(width, height) {\n\n var _width = width;\n var _height = height;\n var _data = new Array(width * height);\n\n var _this = {};\n\n _this.setPixel = function(x, y, pixel) {\n _data[y * _width + x] = pixel;\n };\n\n _this.write = function(out) {\n\n //---------------------------------\n // GIF Signature\n\n out.writeString('GIF87a');\n\n //---------------------------------\n // Screen Descriptor\n\n out.writeShort(_width);\n out.writeShort(_height);\n\n out.writeByte(0x80); // 2bit\n out.writeByte(0);\n out.writeByte(0);\n\n //---------------------------------\n // Global Color Map\n\n // black\n out.writeByte(0x00);\n out.writeByte(0x00);\n out.writeByte(0x00);\n\n // white\n out.writeByte(0xff);\n out.writeByte(0xff);\n out.writeByte(0xff);\n\n //---------------------------------\n // Image Descriptor\n\n out.writeString(',');\n out.writeShort(0);\n out.writeShort(0);\n out.writeShort(_width);\n out.writeShort(_height);\n out.writeByte(0);\n\n //---------------------------------\n // Local Color Map\n\n //---------------------------------\n // Raster Data\n\n var lzwMinCodeSize = 2;\n var raster = getLZWRaster(lzwMinCodeSize);\n\n out.writeByte(lzwMinCodeSize);\n\n var offset = 0;\n\n while (raster.length - offset > 255) {\n out.writeByte(255);\n out.writeBytes(raster, offset, 255);\n offset += 255;\n }\n\n out.writeByte(raster.length - offset);\n out.writeBytes(raster, offset, raster.length - offset);\n out.writeByte(0x00);\n\n //---------------------------------\n // GIF Terminator\n out.writeString(';');\n };\n\n var bitOutputStream = function(out) {\n\n var _out = out;\n var _bitLength = 0;\n var _bitBuffer = 0;\n\n var _this = {};\n\n _this.write = function(data, length) {\n\n if ( (data >>> length) != 0) {\n throw 'length over';\n }\n\n while (_bitLength + length >= 8) {\n _out.writeByte(0xff & ( (data << _bitLength) | _bitBuffer) );\n length -= (8 - _bitLength);\n data >>>= (8 - _bitLength);\n _bitBuffer = 0;\n _bitLength = 0;\n }\n\n _bitBuffer = (data << _bitLength) | _bitBuffer;\n _bitLength = _bitLength + length;\n };\n\n _this.flush = function() {\n if (_bitLength > 0) {\n _out.writeByte(_bitBuffer);\n }\n };\n\n return _this;\n };\n\n var getLZWRaster = function(lzwMinCodeSize) {\n\n var clearCode = 1 << lzwMinCodeSize;\n var endCode = (1 << lzwMinCodeSize) + 1;\n var bitLength = lzwMinCodeSize + 1;\n\n // Setup LZWTable\n var table = lzwTable();\n\n for (var i = 0; i < clearCode; i += 1) {\n table.add(String.fromCharCode(i) );\n }\n table.add(String.fromCharCode(clearCode) );\n table.add(String.fromCharCode(endCode) );\n\n var byteOut = byteArrayOutputStream();\n var bitOut = bitOutputStream(byteOut);\n\n // clear code\n bitOut.write(clearCode, bitLength);\n\n var dataIndex = 0;\n\n var s = String.fromCharCode(_data[dataIndex]);\n dataIndex += 1;\n\n while (dataIndex < _data.length) {\n\n var c = String.fromCharCode(_data[dataIndex]);\n dataIndex += 1;\n\n if (table.contains(s + c) ) {\n\n s = s + c;\n\n } else {\n\n bitOut.write(table.indexOf(s), bitLength);\n\n if (table.size() < 0xfff) {\n\n if (table.size() == (1 << bitLength) ) {\n bitLength += 1;\n }\n\n table.add(s + c);\n }\n\n s = c;\n }\n }\n\n bitOut.write(table.indexOf(s), bitLength);\n\n // end code\n bitOut.write(endCode, bitLength);\n\n bitOut.flush();\n\n return byteOut.toByteArray();\n };\n\n var lzwTable = function() {\n\n var _map = {};\n var _size = 0;\n\n var _this = {};\n\n _this.add = function(key) {\n if (_this.contains(key) ) {\n throw 'dup key:' + key;\n }\n _map[key] = _size;\n _size += 1;\n };\n\n _this.size = function() {\n return _size;\n };\n\n _this.indexOf = function(key) {\n return _map[key];\n };\n\n _this.contains = function(key) {\n return typeof _map[key] != 'undefined';\n };\n\n return _this;\n };\n\n return _this;\n };\n\n var createDataURL = function(width, height, getPixel) {\n var gif = gifImage(width, height);\n for (var y = 0; y < height; y += 1) {\n for (var x = 0; x < width; x += 1) {\n gif.setPixel(x, y, getPixel(x, y) );\n }\n }\n\n var b = byteArrayOutputStream();\n gif.write(b);\n\n var base64 = base64EncodeOutputStream();\n var bytes = b.toByteArray();\n for (var i = 0; i < bytes.length; i += 1) {\n base64.writeByte(bytes[i]);\n }\n base64.flush();\n\n return 'data:image/gif;base64,' + base64;\n };\n\n //---------------------------------------------------------------------\n // returns qrcode function.\n\n return qrcode;\n}();\n\n// multibyte support\n!function() {\n\n qrcode.stringToBytesFuncs['UTF-8'] = function(s) {\n // http://stackoverflow.com/questions/18729405/how-to-convert-utf8-string-to-byte-array\n function toUTF8Array(str) {\n var utf8 = [];\n for (var i=0; i < str.length; i++) {\n var charcode = str.charCodeAt(i);\n if (charcode < 0x80) utf8.push(charcode);\n else if (charcode < 0x800) {\n utf8.push(0xc0 | (charcode >> 6),\n 0x80 | (charcode & 0x3f));\n }\n else if (charcode < 0xd800 || charcode >= 0xe000) {\n utf8.push(0xe0 | (charcode >> 12),\n 0x80 | ((charcode>>6) & 0x3f),\n 0x80 | (charcode & 0x3f));\n }\n // surrogate pair\n else {\n i++;\n // UTF-16 encodes 0x10000-0x10FFFF by\n // subtracting 0x10000 and splitting the\n // 20 bits of 0x0-0xFFFFF into two halves\n charcode = 0x10000 + (((charcode & 0x3ff)<<10)\n | (str.charCodeAt(i) & 0x3ff));\n utf8.push(0xf0 | (charcode >>18),\n 0x80 | ((charcode>>12) & 0x3f),\n 0x80 | ((charcode>>6) & 0x3f),\n 0x80 | (charcode & 0x3f));\n }\n }\n return utf8;\n }\n return toUTF8Array(s);\n };\n\n}();\n\n(function (factory) {\n if (typeof define === 'function' && define.amd) {\n define([], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory();\n }\n}(function () {\n return qrcode;\n}));\n","import { UnknownObject } from \"../types\";\n\nconst isObject = (obj: Record): boolean => !!obj && typeof obj === \"object\" && !Array.isArray(obj);\n\nexport default function mergeDeep(target: UnknownObject, ...sources: UnknownObject[]): UnknownObject {\n if (!sources.length) return target;\n const source = sources.shift();\n if (source === undefined || !isObject(target) || !isObject(source)) return target;\n target = { ...target };\n Object.keys(source).forEach((key: string): void => {\n const targetValue = target[key];\n const sourceValue = source[key];\n\n if (Array.isArray(targetValue) && Array.isArray(sourceValue)) {\n target[key] = sourceValue;\n } else if (isObject(targetValue) && isObject(sourceValue)) {\n target[key] = mergeDeep(Object.assign({}, targetValue), sourceValue);\n } else {\n target[key] = sourceValue;\n }\n });\n\n return mergeDeep(target, ...sources);\n}\n","export default function downloadURI(uri: string, name: string): void {\n const link = document.createElement(\"a\");\n link.download = name;\n link.href = uri;\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n}\n","interface ImageSizeOptions {\n originalHeight: number;\n originalWidth: number;\n maxHiddenDots: number;\n maxHiddenAxisDots?: number;\n dotSize: number;\n}\n\ninterface ImageSizeResult {\n height: number;\n width: number;\n hideYDots: number;\n hideXDots: number;\n}\n\nexport default function calculateImageSize({\n originalHeight,\n originalWidth,\n maxHiddenDots,\n maxHiddenAxisDots,\n dotSize\n}: ImageSizeOptions): ImageSizeResult {\n const hideDots = { x: 0, y: 0 };\n const imageSize = { x: 0, y: 0 };\n\n if (originalHeight <= 0 || originalWidth <= 0 || maxHiddenDots <= 0 || dotSize <= 0) {\n return {\n height: 0,\n width: 0,\n hideYDots: 0,\n hideXDots: 0\n };\n }\n\n const k = originalHeight / originalWidth;\n\n //Getting the maximum possible axis hidden dots\n hideDots.x = Math.floor(Math.sqrt(maxHiddenDots / k));\n //The count of hidden dot's can't be less than 1\n if (hideDots.x <= 0) hideDots.x = 1;\n //Check the limit of the maximum allowed axis hidden dots\n if (maxHiddenAxisDots && maxHiddenAxisDots < hideDots.x) hideDots.x = maxHiddenAxisDots;\n //The count of dots should be odd\n if (hideDots.x % 2 === 0) hideDots.x--;\n imageSize.x = hideDots.x * dotSize;\n //Calculate opposite axis hidden dots based on axis value.\n //The value will be odd.\n //We use ceil to prevent dots covering by the image.\n hideDots.y = 1 + 2 * Math.ceil((hideDots.x * k - 1) / 2);\n imageSize.y = Math.round(imageSize.x * k);\n //If the result dots count is bigger than max - then decrease size and calculate again\n if (hideDots.y * hideDots.x > maxHiddenDots || (maxHiddenAxisDots && maxHiddenAxisDots < hideDots.y)) {\n if (maxHiddenAxisDots && maxHiddenAxisDots < hideDots.y) {\n hideDots.y = maxHiddenAxisDots;\n if (hideDots.y % 2 === 0) hideDots.x--;\n } else {\n hideDots.y -= 2;\n }\n imageSize.y = hideDots.y * dotSize;\n hideDots.x = 1 + 2 * Math.ceil((hideDots.y / k - 1) / 2);\n imageSize.x = Math.round(imageSize.y / k);\n }\n\n return {\n height: imageSize.y,\n width: imageSize.x,\n hideYDots: hideDots.y,\n hideXDots: hideDots.x\n };\n}\n","interface ErrorCorrectionPercents {\n [key: string]: number;\n}\n\nexport default {\n L: 0.07,\n M: 0.15,\n Q: 0.25,\n H: 0.3\n} as ErrorCorrectionPercents;\n","import { DotTypes } from \"../types\";\n\nexport default {\n dots: \"dots\",\n rounded: \"rounded\",\n classy: \"classy\",\n classyRounded: \"classy-rounded\",\n square: \"square\",\n extraRounded: \"extra-rounded\"\n} as DotTypes;\n","import dotTypes from \"../../../constants/dotTypes\";\nimport {\n DotType,\n GetNeighbor,\n RotateFigureArgsCanvas,\n BasicFigureDrawArgsCanvas,\n DrawArgsCanvas\n} from \"../../../types\";\n\nexport default class QRDot {\n _context: CanvasRenderingContext2D;\n _type: DotType;\n\n constructor({ context, type }: { context: CanvasRenderingContext2D; type: DotType }) {\n this._context = context;\n this._type = type;\n }\n\n draw(x: number, y: number, size: number, getNeighbor: GetNeighbor): void {\n const context = this._context;\n const type = this._type;\n let drawFunction;\n\n switch (type) {\n case dotTypes.dots:\n drawFunction = this._drawDot;\n break;\n case dotTypes.classy:\n drawFunction = this._drawClassy;\n break;\n case dotTypes.classyRounded:\n drawFunction = this._drawClassyRounded;\n break;\n case dotTypes.rounded:\n drawFunction = this._drawRounded;\n break;\n case dotTypes.extraRounded:\n drawFunction = this._drawExtraRounded;\n break;\n case dotTypes.square:\n default:\n drawFunction = this._drawSquare;\n }\n\n drawFunction.call(this, { x, y, size, context, getNeighbor });\n }\n\n _rotateFigure({ x, y, size, context, rotation = 0, draw }: RotateFigureArgsCanvas): void {\n const cx = x + size / 2;\n const cy = y + size / 2;\n\n context.translate(cx, cy);\n rotation && context.rotate(rotation);\n draw();\n context.closePath();\n rotation && context.rotate(-rotation);\n context.translate(-cx, -cy);\n }\n\n _basicDot(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.arc(0, 0, size / 2, 0, Math.PI * 2);\n }\n });\n }\n\n _basicSquare(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.rect(-size / 2, -size / 2, size, size);\n }\n });\n }\n\n //if rotation === 0 - right side is rounded\n _basicSideRounded(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.arc(0, 0, size / 2, -Math.PI / 2, Math.PI / 2);\n context.lineTo(-size / 2, size / 2);\n context.lineTo(-size / 2, -size / 2);\n context.lineTo(0, -size / 2);\n }\n });\n }\n\n //if rotation === 0 - top right corner is rounded\n _basicCornerRounded(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.arc(0, 0, size / 2, -Math.PI / 2, 0);\n context.lineTo(size / 2, size / 2);\n context.lineTo(-size / 2, size / 2);\n context.lineTo(-size / 2, -size / 2);\n context.lineTo(0, -size / 2);\n }\n });\n }\n\n //if rotation === 0 - top right corner is rounded\n _basicCornerExtraRounded(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.arc(-size / 2, size / 2, size, -Math.PI / 2, 0);\n context.lineTo(-size / 2, size / 2);\n context.lineTo(-size / 2, -size / 2);\n }\n });\n }\n\n _basicCornersRounded(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.arc(0, 0, size / 2, -Math.PI / 2, 0);\n context.lineTo(size / 2, size / 2);\n context.lineTo(0, size / 2);\n context.arc(0, 0, size / 2, Math.PI / 2, Math.PI);\n context.lineTo(-size / 2, -size / 2);\n context.lineTo(0, -size / 2);\n }\n });\n }\n\n _basicCornersExtraRounded(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.arc(-size / 2, size / 2, size, -Math.PI / 2, 0);\n context.arc(size / 2, -size / 2, size, Math.PI / 2, Math.PI);\n }\n });\n }\n\n _drawDot({ x, y, size, context }: DrawArgsCanvas): void {\n this._basicDot({ x, y, size, context, rotation: 0 });\n }\n\n _drawSquare({ x, y, size, context }: DrawArgsCanvas): void {\n this._basicSquare({ x, y, size, context, rotation: 0 });\n }\n\n _drawRounded({ x, y, size, context, getNeighbor }: DrawArgsCanvas): void {\n const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\n const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\n const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\n const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\n\n const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\n\n if (neighborsCount === 0) {\n this._basicDot({ x, y, size, context, rotation: 0 });\n return;\n }\n\n if (neighborsCount > 2 || (leftNeighbor && rightNeighbor) || (topNeighbor && bottomNeighbor)) {\n this._basicSquare({ x, y, size, context, rotation: 0 });\n return;\n }\n\n if (neighborsCount === 2) {\n let rotation = 0;\n\n if (leftNeighbor && topNeighbor) {\n rotation = Math.PI / 2;\n } else if (topNeighbor && rightNeighbor) {\n rotation = Math.PI;\n } else if (rightNeighbor && bottomNeighbor) {\n rotation = -Math.PI / 2;\n }\n\n this._basicCornerRounded({ x, y, size, context, rotation });\n return;\n }\n\n if (neighborsCount === 1) {\n let rotation = 0;\n\n if (topNeighbor) {\n rotation = Math.PI / 2;\n } else if (rightNeighbor) {\n rotation = Math.PI;\n } else if (bottomNeighbor) {\n rotation = -Math.PI / 2;\n }\n\n this._basicSideRounded({ x, y, size, context, rotation });\n return;\n }\n }\n\n _drawExtraRounded({ x, y, size, context, getNeighbor }: DrawArgsCanvas): void {\n const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\n const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\n const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\n const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\n\n const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\n\n if (neighborsCount === 0) {\n this._basicDot({ x, y, size, context, rotation: 0 });\n return;\n }\n\n if (neighborsCount > 2 || (leftNeighbor && rightNeighbor) || (topNeighbor && bottomNeighbor)) {\n this._basicSquare({ x, y, size, context, rotation: 0 });\n return;\n }\n\n if (neighborsCount === 2) {\n let rotation = 0;\n\n if (leftNeighbor && topNeighbor) {\n rotation = Math.PI / 2;\n } else if (topNeighbor && rightNeighbor) {\n rotation = Math.PI;\n } else if (rightNeighbor && bottomNeighbor) {\n rotation = -Math.PI / 2;\n }\n\n this._basicCornerExtraRounded({ x, y, size, context, rotation });\n return;\n }\n\n if (neighborsCount === 1) {\n let rotation = 0;\n\n if (topNeighbor) {\n rotation = Math.PI / 2;\n } else if (rightNeighbor) {\n rotation = Math.PI;\n } else if (bottomNeighbor) {\n rotation = -Math.PI / 2;\n }\n\n this._basicSideRounded({ x, y, size, context, rotation });\n return;\n }\n }\n\n _drawClassy({ x, y, size, context, getNeighbor }: DrawArgsCanvas): void {\n const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\n const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\n const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\n const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\n\n const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\n\n if (neighborsCount === 0) {\n this._basicCornersRounded({ x, y, size, context, rotation: Math.PI / 2 });\n return;\n }\n\n if (!leftNeighbor && !topNeighbor) {\n this._basicCornerRounded({ x, y, size, context, rotation: -Math.PI / 2 });\n return;\n }\n\n if (!rightNeighbor && !bottomNeighbor) {\n this._basicCornerRounded({ x, y, size, context, rotation: Math.PI / 2 });\n return;\n }\n\n this._basicSquare({ x, y, size, context, rotation: 0 });\n }\n\n _drawClassyRounded({ x, y, size, context, getNeighbor }: DrawArgsCanvas): void {\n const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\n const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\n const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\n const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\n\n const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\n\n if (neighborsCount === 0) {\n this._basicCornersRounded({ x, y, size, context, rotation: Math.PI / 2 });\n return;\n }\n\n if (!leftNeighbor && !topNeighbor) {\n this._basicCornerExtraRounded({ x, y, size, context, rotation: -Math.PI / 2 });\n return;\n }\n\n if (!rightNeighbor && !bottomNeighbor) {\n this._basicCornerExtraRounded({ x, y, size, context, rotation: Math.PI / 2 });\n return;\n }\n\n this._basicSquare({ x, y, size, context, rotation: 0 });\n }\n}\n","import { CornerSquareTypes } from \"../types\";\n\nexport default {\n dot: \"dot\",\n square: \"square\",\n extraRounded: \"extra-rounded\"\n} as CornerSquareTypes;\n","import cornerSquareTypes from \"../../../constants/cornerSquareTypes\";\nimport { CornerSquareType, RotateFigureArgsCanvas, BasicFigureDrawArgsCanvas, DrawArgsCanvas } from \"../../../types\";\n\nexport default class QRCornerSquare {\n _context: CanvasRenderingContext2D;\n _type: CornerSquareType;\n\n constructor({ context, type }: { context: CanvasRenderingContext2D; type: CornerSquareType }) {\n this._context = context;\n this._type = type;\n }\n\n draw(x: number, y: number, size: number, rotation: number): void {\n const context = this._context;\n const type = this._type;\n let drawFunction;\n\n switch (type) {\n case cornerSquareTypes.square:\n drawFunction = this._drawSquare;\n break;\n case cornerSquareTypes.extraRounded:\n drawFunction = this._drawExtraRounded;\n break;\n case cornerSquareTypes.dot:\n default:\n drawFunction = this._drawDot;\n }\n\n drawFunction.call(this, { x, y, size, context, rotation });\n }\n\n _rotateFigure({ x, y, size, context, rotation = 0, draw }: RotateFigureArgsCanvas): void {\n const cx = x + size / 2;\n const cy = y + size / 2;\n\n context.translate(cx, cy);\n rotation && context.rotate(rotation);\n draw();\n context.closePath();\n rotation && context.rotate(-rotation);\n context.translate(-cx, -cy);\n }\n\n _basicDot(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n const dotSize = size / 7;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.arc(0, 0, size / 2, 0, Math.PI * 2);\n context.arc(0, 0, size / 2 - dotSize, 0, Math.PI * 2);\n }\n });\n }\n\n _basicSquare(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n const dotSize = size / 7;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.rect(-size / 2, -size / 2, size, size);\n context.rect(-size / 2 + dotSize, -size / 2 + dotSize, size - 2 * dotSize, size - 2 * dotSize);\n }\n });\n }\n\n _basicExtraRounded(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n const dotSize = size / 7;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.arc(-dotSize, -dotSize, 2.5 * dotSize, Math.PI, -Math.PI / 2);\n context.lineTo(dotSize, -3.5 * dotSize);\n context.arc(dotSize, -dotSize, 2.5 * dotSize, -Math.PI / 2, 0);\n context.lineTo(3.5 * dotSize, -dotSize);\n context.arc(dotSize, dotSize, 2.5 * dotSize, 0, Math.PI / 2);\n context.lineTo(-dotSize, 3.5 * dotSize);\n context.arc(-dotSize, dotSize, 2.5 * dotSize, Math.PI / 2, Math.PI);\n context.lineTo(-3.5 * dotSize, -dotSize);\n\n context.arc(-dotSize, -dotSize, 1.5 * dotSize, Math.PI, -Math.PI / 2);\n context.lineTo(dotSize, -2.5 * dotSize);\n context.arc(dotSize, -dotSize, 1.5 * dotSize, -Math.PI / 2, 0);\n context.lineTo(2.5 * dotSize, -dotSize);\n context.arc(dotSize, dotSize, 1.5 * dotSize, 0, Math.PI / 2);\n context.lineTo(-dotSize, 2.5 * dotSize);\n context.arc(-dotSize, dotSize, 1.5 * dotSize, Math.PI / 2, Math.PI);\n context.lineTo(-2.5 * dotSize, -dotSize);\n }\n });\n }\n\n _drawDot({ x, y, size, context, rotation }: DrawArgsCanvas): void {\n this._basicDot({ x, y, size, context, rotation });\n }\n\n _drawSquare({ x, y, size, context, rotation }: DrawArgsCanvas): void {\n this._basicSquare({ x, y, size, context, rotation });\n }\n\n _drawExtraRounded({ x, y, size, context, rotation }: DrawArgsCanvas): void {\n this._basicExtraRounded({ x, y, size, context, rotation });\n }\n}\n","import { CornerDotTypes } from \"../types\";\n\nexport default {\n dot: \"dot\",\n square: \"square\"\n} as CornerDotTypes;\n","import cornerDotTypes from \"../../../constants/cornerDotTypes\";\nimport { CornerDotType, RotateFigureArgsCanvas, BasicFigureDrawArgsCanvas, DrawArgsCanvas } from \"../../../types\";\n\nexport default class QRCornerDot {\n _context: CanvasRenderingContext2D;\n _type: CornerDotType;\n\n constructor({ context, type }: { context: CanvasRenderingContext2D; type: CornerDotType }) {\n this._context = context;\n this._type = type;\n }\n\n draw(x: number, y: number, size: number, rotation: number): void {\n const context = this._context;\n const type = this._type;\n let drawFunction;\n\n switch (type) {\n case cornerDotTypes.square:\n drawFunction = this._drawSquare;\n break;\n case cornerDotTypes.dot:\n default:\n drawFunction = this._drawDot;\n }\n\n drawFunction.call(this, { x, y, size, context, rotation });\n }\n\n _rotateFigure({ x, y, size, context, rotation = 0, draw }: RotateFigureArgsCanvas): void {\n const cx = x + size / 2;\n const cy = y + size / 2;\n\n context.translate(cx, cy);\n rotation && context.rotate(rotation);\n draw();\n context.closePath();\n rotation && context.rotate(-rotation);\n context.translate(-cx, -cy);\n }\n\n _basicDot(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.arc(0, 0, size / 2, 0, Math.PI * 2);\n }\n });\n }\n\n _basicSquare(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.rect(-size / 2, -size / 2, size, size);\n }\n });\n }\n\n _drawDot({ x, y, size, context, rotation }: DrawArgsCanvas): void {\n this._basicDot({ x, y, size, context, rotation });\n }\n\n _drawSquare({ x, y, size, context, rotation }: DrawArgsCanvas): void {\n this._basicSquare({ x, y, size, context, rotation });\n }\n}\n","import { GradientTypes } from \"../types\";\n\nexport default {\n radial: \"radial\",\n linear: \"linear\"\n} as GradientTypes;\n","import calculateImageSize from \"../tools/calculateImageSize\";\nimport errorCorrectionPercents from \"../constants/errorCorrectionPercents\";\nimport QRDot from \"../figures/dot/canvas/QRDot\";\nimport QRCornerSquare from \"../figures/cornerSquare/canvas/QRCornerSquare\";\nimport QRCornerDot from \"../figures/cornerDot/canvas/QRCornerDot\";\nimport { RequiredOptions } from \"./QROptions\";\nimport gradientTypes from \"../constants/gradientTypes\";\nimport { QRCode, Gradient, FilterFunction } from \"../types\";\n\nconst squareMask = [\n [1, 1, 1, 1, 1, 1, 1],\n [1, 0, 0, 0, 0, 0, 1],\n [1, 0, 0, 0, 0, 0, 1],\n [1, 0, 0, 0, 0, 0, 1],\n [1, 0, 0, 0, 0, 0, 1],\n [1, 0, 0, 0, 0, 0, 1],\n [1, 1, 1, 1, 1, 1, 1]\n];\n\nconst dotMask = [\n [0, 0, 0, 0, 0, 0, 0],\n [0, 0, 0, 0, 0, 0, 0],\n [0, 0, 1, 1, 1, 0, 0],\n [0, 0, 1, 1, 1, 0, 0],\n [0, 0, 1, 1, 1, 0, 0],\n [0, 0, 0, 0, 0, 0, 0],\n [0, 0, 0, 0, 0, 0, 0]\n];\n\nexport default class QRCanvas {\n _canvas: HTMLCanvasElement;\n _options: RequiredOptions;\n _qr?: QRCode;\n _image?: HTMLImageElement;\n\n //TODO don't pass all options to this class\n constructor(options: RequiredOptions) {\n this._canvas = document.createElement(\"canvas\");\n this._canvas.width = options.width;\n this._canvas.height = options.height;\n this._options = options;\n }\n\n get context(): CanvasRenderingContext2D | null {\n return this._canvas.getContext(\"2d\");\n }\n\n get width(): number {\n return this._canvas.width;\n }\n\n get height(): number {\n return this._canvas.height;\n }\n\n getCanvas(): HTMLCanvasElement {\n return this._canvas;\n }\n\n clear(): void {\n const canvasContext = this.context;\n\n if (canvasContext) {\n canvasContext.clearRect(0, 0, this._canvas.width, this._canvas.height);\n }\n }\n\n async drawQR(qr: QRCode): Promise {\n const count = qr.getModuleCount();\n const minSize = Math.min(this._options.width, this._options.height) - this._options.margin * 2;\n const dotSize = Math.floor(minSize / count);\n let drawImageSize = {\n hideXDots: 0,\n hideYDots: 0,\n width: 0,\n height: 0\n };\n\n this._qr = qr;\n\n if (this._options.image) {\n await this.loadImage();\n if (!this._image) return;\n const { imageOptions, qrOptions } = this._options;\n const coverLevel = imageOptions.imageSize * errorCorrectionPercents[qrOptions.errorCorrectionLevel];\n const maxHiddenDots = Math.floor(coverLevel * count * count);\n\n drawImageSize = calculateImageSize({\n originalWidth: this._image.width,\n originalHeight: this._image.height,\n maxHiddenDots,\n maxHiddenAxisDots: count - 14,\n dotSize\n });\n }\n\n this.clear();\n this.drawBackground();\n this.drawDots((i: number, j: number): boolean => {\n if (this._options.imageOptions.hideBackgroundDots) {\n if (\n i >= (count - drawImageSize.hideXDots) / 2 &&\n i < (count + drawImageSize.hideXDots) / 2 &&\n j >= (count - drawImageSize.hideYDots) / 2 &&\n j < (count + drawImageSize.hideYDots) / 2\n ) {\n return false;\n }\n }\n\n if (squareMask[i]?.[j] || squareMask[i - count + 7]?.[j] || squareMask[i]?.[j - count + 7]) {\n return false;\n }\n\n if (dotMask[i]?.[j] || dotMask[i - count + 7]?.[j] || dotMask[i]?.[j - count + 7]) {\n return false;\n }\n\n return true;\n });\n this.drawCorners();\n\n if (this._options.image) {\n this.drawImage({ width: drawImageSize.width, height: drawImageSize.height, count, dotSize });\n }\n }\n\n drawBackground(): void {\n const canvasContext = this.context;\n const options = this._options;\n\n if (canvasContext) {\n if (options.backgroundOptions.gradient) {\n const gradientOptions = options.backgroundOptions.gradient;\n const gradient = this._createGradient({\n context: canvasContext,\n options: gradientOptions,\n additionalRotation: 0,\n x: 0,\n y: 0,\n size: this._canvas.width > this._canvas.height ? this._canvas.width : this._canvas.height\n });\n\n gradientOptions.colorStops.forEach(({ offset, color }: { offset: number; color: string }) => {\n gradient.addColorStop(offset, color);\n });\n\n canvasContext.fillStyle = gradient;\n } else if (options.backgroundOptions.color) {\n canvasContext.fillStyle = options.backgroundOptions.color;\n }\n canvasContext.fillRect(0, 0, this._canvas.width, this._canvas.height);\n }\n }\n\n drawDots(filter?: FilterFunction): void {\n if (!this._qr) {\n throw \"QR code is not defined\";\n }\n\n const canvasContext = this.context;\n\n if (!canvasContext) {\n throw \"QR code is not defined\";\n }\n\n const options = this._options;\n const count = this._qr.getModuleCount();\n\n if (count > options.width || count > options.height) {\n throw \"The canvas is too small.\";\n }\n\n const minSize = Math.min(options.width, options.height) - options.margin * 2;\n const dotSize = Math.floor(minSize / count);\n const xBeginning = Math.floor((options.width - count * dotSize) / 2);\n const yBeginning = Math.floor((options.height - count * dotSize) / 2);\n const dot = new QRDot({ context: canvasContext, type: options.dotsOptions.type });\n\n canvasContext.beginPath();\n\n for (let i = 0; i < count; i++) {\n for (let j = 0; j < count; j++) {\n if (filter && !filter(i, j)) {\n continue;\n }\n if (!this._qr.isDark(i, j)) {\n continue;\n }\n dot.draw(\n yBeginning + j * dotSize,\n xBeginning + i * dotSize,\n dotSize,\n (xOffset: number, yOffset: number): boolean => {\n if (i + xOffset < 0 || j + yOffset < 0 || i + xOffset >= count || j + yOffset >= count) return false;\n if (filter && !filter(i + xOffset, j + yOffset)) return false;\n return !!this._qr && this._qr.isDark(i + xOffset, j + yOffset);\n }\n );\n }\n }\n\n if (options.dotsOptions.gradient) {\n const gradientOptions = options.dotsOptions.gradient;\n const gradient = this._createGradient({\n context: canvasContext,\n options: gradientOptions,\n additionalRotation: 0,\n x: xBeginning,\n y: yBeginning,\n size: count * dotSize\n });\n\n gradientOptions.colorStops.forEach(({ offset, color }: { offset: number; color: string }) => {\n gradient.addColorStop(offset, color);\n });\n\n canvasContext.fillStyle = canvasContext.strokeStyle = gradient;\n } else if (options.dotsOptions.color) {\n canvasContext.fillStyle = canvasContext.strokeStyle = options.dotsOptions.color;\n }\n\n canvasContext.fill(\"evenodd\");\n }\n\n drawCorners(filter?: FilterFunction): void {\n if (!this._qr) {\n throw \"QR code is not defined\";\n }\n\n const canvasContext = this.context;\n\n if (!canvasContext) {\n throw \"QR code is not defined\";\n }\n\n const options = this._options;\n\n const count = this._qr.getModuleCount();\n const minSize = Math.min(options.width, options.height) - options.margin * 2;\n const dotSize = Math.floor(minSize / count);\n const cornersSquareSize = dotSize * 7;\n const cornersDotSize = dotSize * 3;\n const xBeginning = Math.floor((options.width - count * dotSize) / 2);\n const yBeginning = Math.floor((options.height - count * dotSize) / 2);\n\n [\n [0, 0, 0],\n [1, 0, Math.PI / 2],\n [0, 1, -Math.PI / 2]\n ].forEach(([column, row, rotation]) => {\n if (filter && !filter(column, row)) {\n return;\n }\n\n const x = xBeginning + column * dotSize * (count - 7);\n const y = yBeginning + row * dotSize * (count - 7);\n\n if (options.cornersSquareOptions?.type) {\n const cornersSquare = new QRCornerSquare({ context: canvasContext, type: options.cornersSquareOptions?.type });\n\n canvasContext.beginPath();\n cornersSquare.draw(x, y, cornersSquareSize, rotation);\n } else {\n const dot = new QRDot({ context: canvasContext, type: options.dotsOptions.type });\n\n canvasContext.beginPath();\n\n for (let i = 0; i < squareMask.length; i++) {\n for (let j = 0; j < squareMask[i].length; j++) {\n if (!squareMask[i]?.[j]) {\n continue;\n }\n\n dot.draw(\n x + i * dotSize,\n y + j * dotSize,\n dotSize,\n (xOffset: number, yOffset: number): boolean => !!squareMask[i + xOffset]?.[j + yOffset]\n );\n }\n }\n }\n\n if (options.cornersSquareOptions?.gradient) {\n const gradientOptions = options.cornersSquareOptions.gradient;\n const gradient = this._createGradient({\n context: canvasContext,\n options: gradientOptions,\n additionalRotation: rotation,\n x,\n y,\n size: cornersSquareSize\n });\n\n gradientOptions.colorStops.forEach(({ offset, color }: { offset: number; color: string }) => {\n gradient.addColorStop(offset, color);\n });\n\n canvasContext.fillStyle = canvasContext.strokeStyle = gradient;\n } else if (options.cornersSquareOptions?.color) {\n canvasContext.fillStyle = canvasContext.strokeStyle = options.cornersSquareOptions.color;\n }\n\n canvasContext.fill(\"evenodd\");\n\n if (options.cornersDotOptions?.type) {\n const cornersDot = new QRCornerDot({ context: canvasContext, type: options.cornersDotOptions?.type });\n\n canvasContext.beginPath();\n cornersDot.draw(x + dotSize * 2, y + dotSize * 2, cornersDotSize, rotation);\n } else {\n const dot = new QRDot({ context: canvasContext, type: options.dotsOptions.type });\n\n canvasContext.beginPath();\n\n for (let i = 0; i < dotMask.length; i++) {\n for (let j = 0; j < dotMask[i].length; j++) {\n if (!dotMask[i]?.[j]) {\n continue;\n }\n\n dot.draw(\n x + i * dotSize,\n y + j * dotSize,\n dotSize,\n (xOffset: number, yOffset: number): boolean => !!dotMask[i + xOffset]?.[j + yOffset]\n );\n }\n }\n }\n\n if (options.cornersDotOptions?.gradient) {\n const gradientOptions = options.cornersDotOptions.gradient;\n const gradient = this._createGradient({\n context: canvasContext,\n options: gradientOptions,\n additionalRotation: rotation,\n x: x + dotSize * 2,\n y: y + dotSize * 2,\n size: cornersDotSize\n });\n\n gradientOptions.colorStops.forEach(({ offset, color }: { offset: number; color: string }) => {\n gradient.addColorStop(offset, color);\n });\n\n canvasContext.fillStyle = canvasContext.strokeStyle = gradient;\n } else if (options.cornersDotOptions?.color) {\n canvasContext.fillStyle = canvasContext.strokeStyle = options.cornersDotOptions.color;\n }\n\n canvasContext.fill(\"evenodd\");\n });\n }\n\n loadImage(): Promise {\n return new Promise((resolve, reject) => {\n const options = this._options;\n const image = new Image();\n\n if (!options.image) {\n return reject(\"Image is not defined\");\n }\n\n if (typeof options.imageOptions.crossOrigin === \"string\") {\n image.crossOrigin = options.imageOptions.crossOrigin;\n }\n\n this._image = image;\n image.onload = (): void => {\n resolve();\n };\n image.src = options.image;\n });\n }\n\n drawImage({\n width,\n height,\n count,\n dotSize\n }: {\n width: number;\n height: number;\n count: number;\n dotSize: number;\n }): void {\n const canvasContext = this.context;\n\n if (!canvasContext) {\n throw \"canvasContext is not defined\";\n }\n\n if (!this._image) {\n throw \"image is not defined\";\n }\n\n const options = this._options;\n const xBeginning = Math.floor((options.width - count * dotSize) / 2);\n const yBeginning = Math.floor((options.height - count * dotSize) / 2);\n const dx = xBeginning + options.imageOptions.margin + (count * dotSize - width) / 2;\n const dy = yBeginning + options.imageOptions.margin + (count * dotSize - height) / 2;\n const dw = width - options.imageOptions.margin * 2;\n const dh = height - options.imageOptions.margin * 2;\n\n canvasContext.drawImage(this._image, dx, dy, dw < 0 ? 0 : dw, dh < 0 ? 0 : dh);\n }\n\n _createGradient({\n context,\n options,\n additionalRotation,\n x,\n y,\n size\n }: {\n context: CanvasRenderingContext2D;\n options: Gradient;\n additionalRotation: number;\n x: number;\n y: number;\n size: number;\n }): CanvasGradient {\n let gradient;\n\n if (options.type === gradientTypes.radial) {\n gradient = context.createRadialGradient(x + size / 2, y + size / 2, 0, x + size / 2, y + size / 2, size / 2);\n } else {\n const rotation = ((options.rotation || 0) + additionalRotation) % (2 * Math.PI);\n const positiveRotation = (rotation + 2 * Math.PI) % (2 * Math.PI);\n let x0 = x + size / 2;\n let y0 = y + size / 2;\n let x1 = x + size / 2;\n let y1 = y + size / 2;\n\n if (\n (positiveRotation >= 0 && positiveRotation <= 0.25 * Math.PI) ||\n (positiveRotation > 1.75 * Math.PI && positiveRotation <= 2 * Math.PI)\n ) {\n x0 = x0 - size / 2;\n y0 = y0 - (size / 2) * Math.tan(rotation);\n x1 = x1 + size / 2;\n y1 = y1 + (size / 2) * Math.tan(rotation);\n } else if (positiveRotation > 0.25 * Math.PI && positiveRotation <= 0.75 * Math.PI) {\n y0 = y0 - size / 2;\n x0 = x0 - size / 2 / Math.tan(rotation);\n y1 = y1 + size / 2;\n x1 = x1 + size / 2 / Math.tan(rotation);\n } else if (positiveRotation > 0.75 * Math.PI && positiveRotation <= 1.25 * Math.PI) {\n x0 = x0 + size / 2;\n y0 = y0 + (size / 2) * Math.tan(rotation);\n x1 = x1 - size / 2;\n y1 = y1 - (size / 2) * Math.tan(rotation);\n } else if (positiveRotation > 1.25 * Math.PI && positiveRotation <= 1.75 * Math.PI) {\n y0 = y0 + size / 2;\n x0 = x0 + size / 2 / Math.tan(rotation);\n y1 = y1 - size / 2;\n x1 = x1 - size / 2 / Math.tan(rotation);\n }\n\n gradient = context.createLinearGradient(Math.round(x0), Math.round(y0), Math.round(x1), Math.round(y1));\n }\n\n return gradient;\n }\n}\n","import dotTypes from \"../../../constants/dotTypes\";\nimport { DotType, GetNeighbor, DrawArgs, BasicFigureDrawArgs, RotateFigureArgs } from \"../../../types\";\n\nexport default class QRDot {\n _element?: SVGElement;\n _svg: SVGElement;\n _type: DotType;\n\n constructor({ svg, type }: { svg: SVGElement; type: DotType }) {\n this._svg = svg;\n this._type = type;\n }\n\n draw(x: number, y: number, size: number, getNeighbor: GetNeighbor): void {\n const type = this._type;\n let drawFunction;\n\n switch (type) {\n case dotTypes.dots:\n drawFunction = this._drawDot;\n break;\n case dotTypes.classy:\n drawFunction = this._drawClassy;\n break;\n case dotTypes.classyRounded:\n drawFunction = this._drawClassyRounded;\n break;\n case dotTypes.rounded:\n drawFunction = this._drawRounded;\n break;\n case dotTypes.extraRounded:\n drawFunction = this._drawExtraRounded;\n break;\n case dotTypes.square:\n default:\n drawFunction = this._drawSquare;\n }\n\n drawFunction.call(this, { x, y, size, getNeighbor });\n }\n\n _rotateFigure({ x, y, size, rotation = 0, draw }: RotateFigureArgs): void {\n const cx = x + size / 2;\n const cy = y + size / 2;\n\n draw();\n this._element?.setAttribute(\"transform\", `rotate(${(180 * rotation) / Math.PI},${cx},${cy})`);\n }\n\n _basicDot(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"circle\");\n this._element.setAttribute(\"cx\", String(x + size / 2));\n this._element.setAttribute(\"cy\", String(y + size / 2));\n this._element.setAttribute(\"r\", String(size / 2));\n }\n });\n }\n\n _basicSquare(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"rect\");\n this._element.setAttribute(\"x\", String(x));\n this._element.setAttribute(\"y\", String(y));\n this._element.setAttribute(\"width\", String(size));\n this._element.setAttribute(\"height\", String(size));\n }\n });\n }\n\n //if rotation === 0 - right side is rounded\n _basicSideRounded(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n this._element.setAttribute(\n \"d\",\n `M ${x} ${y}` + //go to top left position\n `v ${size}` + //draw line to left bottom corner\n `h ${size / 2}` + //draw line to left bottom corner + half of size right\n `a ${size / 2} ${size / 2}, 0, 0, 0, 0 ${-size}` // draw rounded corner\n );\n }\n });\n }\n\n //if rotation === 0 - top right corner is rounded\n _basicCornerRounded(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n this._element.setAttribute(\n \"d\",\n `M ${x} ${y}` + //go to top left position\n `v ${size}` + //draw line to left bottom corner\n `h ${size}` + //draw line to right bottom corner\n `v ${-size / 2}` + //draw line to right bottom corner + half of size top\n `a ${size / 2} ${size / 2}, 0, 0, 0, ${-size / 2} ${-size / 2}` // draw rounded corner\n );\n }\n });\n }\n\n //if rotation === 0 - top right corner is rounded\n _basicCornerExtraRounded(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n this._element.setAttribute(\n \"d\",\n `M ${x} ${y}` + //go to top left position\n `v ${size}` + //draw line to left bottom corner\n `h ${size}` + //draw line to right bottom corner\n `a ${size} ${size}, 0, 0, 0, ${-size} ${-size}` // draw rounded top right corner\n );\n }\n });\n }\n\n //if rotation === 0 - left bottom and right top corners are rounded\n _basicCornersRounded(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n this._element.setAttribute(\n \"d\",\n `M ${x} ${y}` + //go to left top position\n `v ${size / 2}` + //draw line to left top corner + half of size bottom\n `a ${size / 2} ${size / 2}, 0, 0, 0, ${size / 2} ${size / 2}` + // draw rounded left bottom corner\n `h ${size / 2}` + //draw line to right bottom corner\n `v ${-size / 2}` + //draw line to right bottom corner + half of size top\n `a ${size / 2} ${size / 2}, 0, 0, 0, ${-size / 2} ${-size / 2}` // draw rounded right top corner\n );\n }\n });\n }\n\n _drawDot({ x, y, size }: DrawArgs): void {\n this._basicDot({ x, y, size, rotation: 0 });\n }\n\n _drawSquare({ x, y, size }: DrawArgs): void {\n this._basicSquare({ x, y, size, rotation: 0 });\n }\n\n _drawRounded({ x, y, size, getNeighbor }: DrawArgs): void {\n const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\n const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\n const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\n const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\n\n const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\n\n if (neighborsCount === 0) {\n this._basicDot({ x, y, size, rotation: 0 });\n return;\n }\n\n if (neighborsCount > 2 || (leftNeighbor && rightNeighbor) || (topNeighbor && bottomNeighbor)) {\n this._basicSquare({ x, y, size, rotation: 0 });\n return;\n }\n\n if (neighborsCount === 2) {\n let rotation = 0;\n\n if (leftNeighbor && topNeighbor) {\n rotation = Math.PI / 2;\n } else if (topNeighbor && rightNeighbor) {\n rotation = Math.PI;\n } else if (rightNeighbor && bottomNeighbor) {\n rotation = -Math.PI / 2;\n }\n\n this._basicCornerRounded({ x, y, size, rotation });\n return;\n }\n\n if (neighborsCount === 1) {\n let rotation = 0;\n\n if (topNeighbor) {\n rotation = Math.PI / 2;\n } else if (rightNeighbor) {\n rotation = Math.PI;\n } else if (bottomNeighbor) {\n rotation = -Math.PI / 2;\n }\n\n this._basicSideRounded({ x, y, size, rotation });\n return;\n }\n }\n\n _drawExtraRounded({ x, y, size, getNeighbor }: DrawArgs): void {\n const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\n const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\n const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\n const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\n\n const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\n\n if (neighborsCount === 0) {\n this._basicDot({ x, y, size, rotation: 0 });\n return;\n }\n\n if (neighborsCount > 2 || (leftNeighbor && rightNeighbor) || (topNeighbor && bottomNeighbor)) {\n this._basicSquare({ x, y, size, rotation: 0 });\n return;\n }\n\n if (neighborsCount === 2) {\n let rotation = 0;\n\n if (leftNeighbor && topNeighbor) {\n rotation = Math.PI / 2;\n } else if (topNeighbor && rightNeighbor) {\n rotation = Math.PI;\n } else if (rightNeighbor && bottomNeighbor) {\n rotation = -Math.PI / 2;\n }\n\n this._basicCornerExtraRounded({ x, y, size, rotation });\n return;\n }\n\n if (neighborsCount === 1) {\n let rotation = 0;\n\n if (topNeighbor) {\n rotation = Math.PI / 2;\n } else if (rightNeighbor) {\n rotation = Math.PI;\n } else if (bottomNeighbor) {\n rotation = -Math.PI / 2;\n }\n\n this._basicSideRounded({ x, y, size, rotation });\n return;\n }\n }\n\n _drawClassy({ x, y, size, getNeighbor }: DrawArgs): void {\n const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\n const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\n const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\n const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\n\n const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\n\n if (neighborsCount === 0) {\n this._basicCornersRounded({ x, y, size, rotation: Math.PI / 2 });\n return;\n }\n\n if (!leftNeighbor && !topNeighbor) {\n this._basicCornerRounded({ x, y, size, rotation: -Math.PI / 2 });\n return;\n }\n\n if (!rightNeighbor && !bottomNeighbor) {\n this._basicCornerRounded({ x, y, size, rotation: Math.PI / 2 });\n return;\n }\n\n this._basicSquare({ x, y, size, rotation: 0 });\n }\n\n _drawClassyRounded({ x, y, size, getNeighbor }: DrawArgs): void {\n const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\n const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\n const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\n const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\n\n const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\n\n if (neighborsCount === 0) {\n this._basicCornersRounded({ x, y, size, rotation: Math.PI / 2 });\n return;\n }\n\n if (!leftNeighbor && !topNeighbor) {\n this._basicCornerExtraRounded({ x, y, size, rotation: -Math.PI / 2 });\n return;\n }\n\n if (!rightNeighbor && !bottomNeighbor) {\n this._basicCornerExtraRounded({ x, y, size, rotation: Math.PI / 2 });\n return;\n }\n\n this._basicSquare({ x, y, size, rotation: 0 });\n }\n}\n","import cornerSquareTypes from \"../../../constants/cornerSquareTypes\";\nimport { CornerSquareType, DrawArgs, BasicFigureDrawArgs, RotateFigureArgs } from \"../../../types\";\n\nexport default class QRCornerSquare {\n _element?: SVGElement;\n _svg: SVGElement;\n _type: CornerSquareType;\n\n constructor({ svg, type }: { svg: SVGElement; type: CornerSquareType }) {\n this._svg = svg;\n this._type = type;\n }\n\n draw(x: number, y: number, size: number, rotation: number): void {\n const type = this._type;\n let drawFunction;\n\n switch (type) {\n case cornerSquareTypes.square:\n drawFunction = this._drawSquare;\n break;\n case cornerSquareTypes.extraRounded:\n drawFunction = this._drawExtraRounded;\n break;\n case cornerSquareTypes.dot:\n default:\n drawFunction = this._drawDot;\n }\n\n drawFunction.call(this, { x, y, size, rotation });\n }\n\n _rotateFigure({ x, y, size, rotation = 0, draw }: RotateFigureArgs): void {\n const cx = x + size / 2;\n const cy = y + size / 2;\n\n draw();\n this._element?.setAttribute(\"transform\", `rotate(${(180 * rotation) / Math.PI},${cx},${cy})`);\n }\n\n _basicDot(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n const dotSize = size / 7;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n this._element.setAttribute(\"clip-rule\", \"evenodd\");\n this._element.setAttribute(\n \"d\",\n `M ${x + size / 2} ${y}` + // M cx, y // Move to top of ring\n `a ${size / 2} ${size / 2} 0 1 0 0.1 0` + // a outerRadius, outerRadius, 0, 1, 0, 1, 0 // Draw outer arc, but don't close it\n `z` + // Z // Close the outer shape\n `m 0 ${dotSize}` + // m -1 outerRadius-innerRadius // Move to top point of inner radius\n `a ${size / 2 - dotSize} ${size / 2 - dotSize} 0 1 1 -0.1 0` + // a innerRadius, innerRadius, 0, 1, 1, -1, 0 // Draw inner arc, but don't close it\n `Z` // Z // Close the inner ring. Actually will still work without, but inner ring will have one unit missing in stroke\n );\n }\n });\n }\n\n _basicSquare(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n const dotSize = size / 7;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n this._element.setAttribute(\"clip-rule\", \"evenodd\");\n this._element.setAttribute(\n \"d\",\n `M ${x} ${y}` +\n `v ${size}` +\n `h ${size}` +\n `v ${-size}` +\n `z` +\n `M ${x + dotSize} ${y + dotSize}` +\n `h ${size - 2 * dotSize}` +\n `v ${size - 2 * dotSize}` +\n `h ${-size + 2 * dotSize}` +\n `z`\n );\n }\n });\n }\n\n _basicExtraRounded(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n const dotSize = size / 7;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n this._element.setAttribute(\"clip-rule\", \"evenodd\");\n this._element.setAttribute(\n \"d\",\n `M ${x} ${y + 2.5 * dotSize}` +\n `v ${2 * dotSize}` +\n `a ${2.5 * dotSize} ${2.5 * dotSize}, 0, 0, 0, ${dotSize * 2.5} ${dotSize * 2.5}` +\n `h ${2 * dotSize}` +\n `a ${2.5 * dotSize} ${2.5 * dotSize}, 0, 0, 0, ${dotSize * 2.5} ${-dotSize * 2.5}` +\n `v ${-2 * dotSize}` +\n `a ${2.5 * dotSize} ${2.5 * dotSize}, 0, 0, 0, ${-dotSize * 2.5} ${-dotSize * 2.5}` +\n `h ${-2 * dotSize}` +\n `a ${2.5 * dotSize} ${2.5 * dotSize}, 0, 0, 0, ${-dotSize * 2.5} ${dotSize * 2.5}` +\n `M ${x + 2.5 * dotSize} ${y + dotSize}` +\n `h ${2 * dotSize}` +\n `a ${1.5 * dotSize} ${1.5 * dotSize}, 0, 0, 1, ${dotSize * 1.5} ${dotSize * 1.5}` +\n `v ${2 * dotSize}` +\n `a ${1.5 * dotSize} ${1.5 * dotSize}, 0, 0, 1, ${-dotSize * 1.5} ${dotSize * 1.5}` +\n `h ${-2 * dotSize}` +\n `a ${1.5 * dotSize} ${1.5 * dotSize}, 0, 0, 1, ${-dotSize * 1.5} ${-dotSize * 1.5}` +\n `v ${-2 * dotSize}` +\n `a ${1.5 * dotSize} ${1.5 * dotSize}, 0, 0, 1, ${dotSize * 1.5} ${-dotSize * 1.5}`\n );\n }\n });\n }\n\n _drawDot({ x, y, size, rotation }: DrawArgs): void {\n this._basicDot({ x, y, size, rotation });\n }\n\n _drawSquare({ x, y, size, rotation }: DrawArgs): void {\n this._basicSquare({ x, y, size, rotation });\n }\n\n _drawExtraRounded({ x, y, size, rotation }: DrawArgs): void {\n this._basicExtraRounded({ x, y, size, rotation });\n }\n}\n","import cornerDotTypes from \"../../../constants/cornerDotTypes\";\nimport { CornerDotType, RotateFigureArgs, BasicFigureDrawArgs, DrawArgs } from \"../../../types\";\n\nexport default class QRCornerDot {\n _element?: SVGElement;\n _svg: SVGElement;\n _type: CornerDotType;\n\n constructor({ svg, type }: { svg: SVGElement; type: CornerDotType }) {\n this._svg = svg;\n this._type = type;\n }\n\n draw(x: number, y: number, size: number, rotation: number): void {\n const type = this._type;\n let drawFunction;\n\n switch (type) {\n case cornerDotTypes.square:\n drawFunction = this._drawSquare;\n break;\n case cornerDotTypes.dot:\n default:\n drawFunction = this._drawDot;\n }\n\n drawFunction.call(this, { x, y, size, rotation });\n }\n\n _rotateFigure({ x, y, size, rotation = 0, draw }: RotateFigureArgs): void {\n const cx = x + size / 2;\n const cy = y + size / 2;\n\n draw();\n this._element?.setAttribute(\"transform\", `rotate(${(180 * rotation) / Math.PI},${cx},${cy})`);\n }\n\n _basicDot(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"circle\");\n this._element.setAttribute(\"cx\", String(x + size / 2));\n this._element.setAttribute(\"cy\", String(y + size / 2));\n this._element.setAttribute(\"r\", String(size / 2));\n }\n });\n }\n\n _basicSquare(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"rect\");\n this._element.setAttribute(\"x\", String(x));\n this._element.setAttribute(\"y\", String(y));\n this._element.setAttribute(\"width\", String(size));\n this._element.setAttribute(\"height\", String(size));\n }\n });\n }\n\n _drawDot({ x, y, size, rotation }: DrawArgs): void {\n this._basicDot({ x, y, size, rotation });\n }\n\n _drawSquare({ x, y, size, rotation }: DrawArgs): void {\n this._basicSquare({ x, y, size, rotation });\n }\n}\n","import calculateImageSize from \"../tools/calculateImageSize\";\nimport errorCorrectionPercents from \"../constants/errorCorrectionPercents\";\nimport QRDot from \"../figures/dot/svg/QRDot\";\nimport QRCornerSquare from \"../figures/cornerSquare/svg/QRCornerSquare\";\nimport QRCornerDot from \"../figures/cornerDot/svg/QRCornerDot\";\nimport { RequiredOptions } from \"./QROptions\";\nimport gradientTypes from \"../constants/gradientTypes\";\nimport { QRCode, FilterFunction, Gradient } from \"../types\";\n\nconst squareMask = [\n [1, 1, 1, 1, 1, 1, 1],\n [1, 0, 0, 0, 0, 0, 1],\n [1, 0, 0, 0, 0, 0, 1],\n [1, 0, 0, 0, 0, 0, 1],\n [1, 0, 0, 0, 0, 0, 1],\n [1, 0, 0, 0, 0, 0, 1],\n [1, 1, 1, 1, 1, 1, 1]\n];\n\nconst dotMask = [\n [0, 0, 0, 0, 0, 0, 0],\n [0, 0, 0, 0, 0, 0, 0],\n [0, 0, 1, 1, 1, 0, 0],\n [0, 0, 1, 1, 1, 0, 0],\n [0, 0, 1, 1, 1, 0, 0],\n [0, 0, 0, 0, 0, 0, 0],\n [0, 0, 0, 0, 0, 0, 0]\n];\n\nexport default class QRSVG {\n _element: SVGElement;\n _style: SVGStyleElement;\n _defs: SVGElement;\n _dotsClipPath?: SVGElement;\n _cornersSquareClipPath?: SVGElement;\n _cornersDotClipPath?: SVGElement;\n _dots?: SVGElement;\n _cornerSquares?: SVGElement;\n _corners?: SVGElement;\n _cornerDots?: SVGElement;\n _options: RequiredOptions;\n _qr?: QRCode;\n _image?: HTMLImageElement;\n\n //TODO don't pass all options to this class\n constructor(options: RequiredOptions) {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\");\n this._element.setAttribute(\"width\", String(options.width));\n this._element.setAttribute(\"height\", String(options.height));\n this._defs = document.createElementNS(\"http://www.w3.org/2000/svg\", \"defs\");\n this._style = document.createElementNS(\"http://www.w3.org/2000/svg\", \"style\");\n\n this._options = options;\n }\n\n get width(): number {\n return this._options.width;\n }\n\n get height(): number {\n return this._options.height;\n }\n\n getElement(): SVGElement {\n return this._element;\n }\n\n clear(): void {\n const oldElement = this._element;\n this._element = oldElement.cloneNode(false) as SVGElement;\n oldElement?.parentNode?.replaceChild(this._element, oldElement);\n this._defs = document.createElementNS(\"http://www.w3.org/2000/svg\", \"defs\");\n this._style = document.createElementNS(\"http://www.w3.org/2000/svg\", \"style\");\n this._element.appendChild(this._style);\n this._element.appendChild(this._defs);\n }\n\n async drawQR(qr: QRCode): Promise {\n const count = qr.getModuleCount();\n const minSize = Math.min(this._options.width, this._options.height) - this._options.margin * 2;\n const dotSize = Math.floor(minSize / count);\n let drawImageSize = {\n hideXDots: 0,\n hideYDots: 0,\n width: 0,\n height: 0\n };\n\n this._qr = qr;\n\n if (this._options.image) {\n //We need it to get image size\n await this.loadImage();\n if (!this._image) return;\n const { imageOptions, qrOptions } = this._options;\n const coverLevel = imageOptions.imageSize * errorCorrectionPercents[qrOptions.errorCorrectionLevel];\n const maxHiddenDots = Math.floor(coverLevel * count * count);\n\n drawImageSize = calculateImageSize({\n originalWidth: this._image.width,\n originalHeight: this._image.height,\n maxHiddenDots,\n maxHiddenAxisDots: count - 14,\n dotSize\n });\n }\n\n this._element.appendChild(this._style);\n this._element.appendChild(this._defs);\n\n this.clear();\n this.drawBackground();\n this.drawDots((i: number, j: number): boolean => {\n if (this._options.imageOptions.hideBackgroundDots) {\n if (\n i >= (count - drawImageSize.hideXDots) / 2 &&\n i < (count + drawImageSize.hideXDots) / 2 &&\n j >= (count - drawImageSize.hideYDots) / 2 &&\n j < (count + drawImageSize.hideYDots) / 2\n ) {\n return false;\n }\n }\n\n if (squareMask[i]?.[j] || squareMask[i - count + 7]?.[j] || squareMask[i]?.[j - count + 7]) {\n return false;\n }\n\n if (dotMask[i]?.[j] || dotMask[i - count + 7]?.[j] || dotMask[i]?.[j - count + 7]) {\n return false;\n }\n\n return true;\n });\n this.drawCorners();\n\n if (this._options.image) {\n this.drawImage({ width: drawImageSize.width, height: drawImageSize.height, count, dotSize });\n }\n }\n\n drawBackground(): void {\n const element = this._element;\n const options = this._options;\n\n if (element) {\n const gradientOptions = options.backgroundOptions?.gradient;\n const color = options.backgroundOptions?.color;\n\n if (gradientOptions) {\n this._createColor({\n options: gradientOptions,\n color: color,\n additionalRotation: 0,\n x: 0,\n y: 0,\n height: options.height,\n width: options.width,\n name: \"background-color\"\n });\n } else if (options.backgroundOptions?.color) {\n this._createStyle({\n color: color,\n name: \"background-color\"\n });\n }\n }\n }\n\n drawDots(filter?: FilterFunction): void {\n if (!this._qr) {\n throw \"QR code is not defined\";\n }\n\n const options = this._options;\n const count = this._qr.getModuleCount();\n\n if (count > options.width || count > options.height) {\n throw \"The canvas is too small.\";\n }\n\n const minSize = Math.min(options.width, options.height) - options.margin * 2;\n const dotSize = Math.floor(minSize / count);\n const xBeginning = Math.floor((options.width - count * dotSize) / 2);\n const yBeginning = Math.floor((options.height - count * dotSize) / 2);\n const dot = new QRDot({ svg: this._element, type: options.dotsOptions.type });\n\n if (options.dotsOptions?.gradient) {\n this._dotsClipPath = document.createElementNS(\"http://www.w3.org/2000/svg\", \"clipPath\");\n this._dotsClipPath.setAttribute(\"id\", \"clip-path-dot-color\");\n this._defs.appendChild(this._dotsClipPath);\n this._createColor({\n options: options.dotsOptions?.gradient,\n color: options.dotsOptions.color,\n additionalRotation: 0,\n x: xBeginning,\n y: yBeginning,\n height: count * dotSize,\n width: count * dotSize,\n name: \"dot-color\"\n });\n } else if (options.dotsOptions.color) {\n this._dots = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n this._dots.setAttribute(\"class\", \"dot-color\");\n this._element.appendChild(this._dots);\n this._createStyle({\n color: options.dotsOptions.color,\n name: \"dot-color\"\n });\n }\n\n for (let i = 0; i < count; i++) {\n for (let j = 0; j < count; j++) {\n if (filter && !filter(i, j)) {\n continue;\n }\n if (!this._qr?.isDark(i, j)) {\n continue;\n }\n\n dot.draw(\n yBeginning + j * dotSize,\n xBeginning + i * dotSize,\n dotSize,\n (xOffset: number, yOffset: number): boolean => {\n if (i + xOffset < 0 || j + yOffset < 0 || i + xOffset >= count || j + yOffset >= count) return false;\n if (filter && !filter(i + xOffset, j + yOffset)) return false;\n return !!this._qr && this._qr.isDark(i + xOffset, j + yOffset);\n }\n );\n\n if (dot._element && this._dotsClipPath) {\n this._dotsClipPath.appendChild(dot._element);\n } else if (dot._element && this._dots) {\n this._dots.appendChild(dot._element);\n }\n }\n }\n }\n\n drawCorners(): void {\n if (!this._qr) {\n throw \"QR code is not defined\";\n }\n\n const element = this._element;\n const options = this._options;\n\n if (!element) {\n throw \"Element code is not defined\";\n }\n\n const count = this._qr.getModuleCount();\n const minSize = Math.min(options.width, options.height) - options.margin * 2;\n const dotSize = Math.floor(minSize / count);\n const cornersSquareSize = dotSize * 7;\n const cornersDotSize = dotSize * 3;\n const xBeginning = Math.floor((options.width - count * dotSize) / 2);\n const yBeginning = Math.floor((options.height - count * dotSize) / 2);\n\n [\n [0, 0, 0],\n [1, 0, Math.PI / 2],\n [0, 1, -Math.PI / 2]\n ].forEach(([column, row, rotation]) => {\n const x = xBeginning + column * dotSize * (count - 7);\n const y = yBeginning + row * dotSize * (count - 7);\n let cornersSquareClipPath = this._dotsClipPath;\n let cornersDotClipPath = this._dotsClipPath;\n\n if (options.cornersSquareOptions?.gradient) {\n cornersSquareClipPath = document.createElementNS(\"http://www.w3.org/2000/svg\", \"clipPath\");\n cornersSquareClipPath.setAttribute(\"id\", `clip-path-corners-square-color-${column}-${row}`);\n this._defs.appendChild(cornersSquareClipPath);\n this._cornersSquareClipPath = this._cornersDotClipPath = cornersDotClipPath = cornersSquareClipPath;\n\n this._createColor({\n options: options.cornersSquareOptions?.gradient,\n color: options.cornersSquareOptions?.color,\n additionalRotation: rotation,\n x,\n y,\n height: cornersSquareSize,\n width: cornersSquareSize,\n name: `corners-square-color-${column}-${row}`\n });\n } else {\n this._cornerSquares = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n this._cornerSquares.setAttribute(\"class\", `corners-square-color-${column}-${row}`);\n this._element.appendChild(this._cornerSquares);\n this._createStyle({\n color: options.cornersSquareOptions?.color,\n name: `corners-square-color-${column}-${row}`\n });\n }\n\n if (options.cornersSquareOptions?.type) {\n const cornersSquare = new QRCornerSquare({ svg: this._element, type: options.cornersSquareOptions.type });\n\n cornersSquare.draw(x, y, cornersSquareSize, rotation);\n\n if (options.cornersSquareOptions?.gradient && cornersSquare._element && cornersSquareClipPath) {\n cornersSquareClipPath.appendChild(cornersSquare._element);\n } else if (cornersSquare._element && this._cornerSquares) {\n this._cornerSquares.appendChild(cornersSquare._element);\n }\n } else {\n const dot = new QRDot({ svg: this._element, type: options.dotsOptions.type });\n\n for (let i = 0; i < squareMask.length; i++) {\n for (let j = 0; j < squareMask[i].length; j++) {\n if (!squareMask[i]?.[j]) {\n continue;\n }\n\n dot.draw(\n x + i * dotSize,\n y + j * dotSize,\n dotSize,\n (xOffset: number, yOffset: number): boolean => !!squareMask[i + xOffset]?.[j + yOffset]\n );\n\n if (dot._element && this._cornersSquareClipPath) {\n this._cornersSquareClipPath.appendChild(dot._element);\n } else if (dot._element && this._cornerSquares) {\n this._cornerSquares.appendChild(dot._element);\n }\n }\n }\n }\n\n if (options.cornersDotOptions?.gradient) {\n cornersDotClipPath = document.createElementNS(\"http://www.w3.org/2000/svg\", \"clipPath\");\n cornersDotClipPath.setAttribute(\"id\", `clip-path-corners-dot-color-${column}-${row}`);\n this._defs.appendChild(cornersDotClipPath);\n this._cornersDotClipPath = cornersDotClipPath;\n\n this._createColor({\n options: options.cornersDotOptions?.gradient,\n color: options.cornersDotOptions?.color,\n additionalRotation: rotation,\n x: x + dotSize * 2,\n y: y + dotSize * 2,\n height: cornersDotSize,\n width: cornersDotSize,\n name: `corners-dot-color-${column}-${row}`\n });\n } else {\n this._cornerDots = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n this._cornerDots.setAttribute(\"class\", `corners-dot-color-${column}-${row}`);\n this._element.appendChild(this._cornerDots);\n this._createStyle({\n color: options.cornersDotOptions?.color,\n name: `corners-dot-color-${column}-${row}`\n });\n }\n\n if (options.cornersDotOptions?.type) {\n const cornersDot = new QRCornerDot({ svg: this._element, type: options.cornersDotOptions.type });\n\n cornersDot.draw(x + dotSize * 2, y + dotSize * 2, cornersDotSize, rotation);\n\n if (options.cornersDotOptions?.gradient && cornersDot._element && cornersDotClipPath) {\n cornersDotClipPath.appendChild(cornersDot._element);\n } else if (cornersDot._element && this._cornerDots) {\n this._cornerDots.appendChild(cornersDot._element);\n }\n } else {\n const dot = new QRDot({ svg: this._element, type: options.dotsOptions.type });\n\n for (let i = 0; i < dotMask.length; i++) {\n for (let j = 0; j < dotMask[i].length; j++) {\n if (!dotMask[i]?.[j]) {\n continue;\n }\n\n dot.draw(\n x + i * dotSize,\n y + j * dotSize,\n dotSize,\n (xOffset: number, yOffset: number): boolean => !!dotMask[i + xOffset]?.[j + yOffset]\n );\n\n if (dot._element && this._cornersDotClipPath) {\n this._cornersDotClipPath.appendChild(dot._element);\n } else if (dot._element && this._cornerDots) {\n this._cornerDots.appendChild(dot._element);\n }\n }\n }\n }\n });\n }\n\n loadImage(): Promise {\n return new Promise((resolve, reject) => {\n const options = this._options;\n const image = new Image();\n\n if (!options.image) {\n return reject(\"Image is not defined\");\n }\n\n if (typeof options.imageOptions.crossOrigin === \"string\") {\n image.crossOrigin = options.imageOptions.crossOrigin;\n }\n\n this._image = image;\n image.onload = (): void => {\n resolve();\n };\n image.src = options.image;\n });\n }\n\n drawImage({\n width,\n height,\n count,\n dotSize\n }: {\n width: number;\n height: number;\n count: number;\n dotSize: number;\n }): void {\n const options = this._options;\n const xBeginning = Math.floor((options.width - count * dotSize) / 2);\n const yBeginning = Math.floor((options.height - count * dotSize) / 2);\n const dx = xBeginning + options.imageOptions.margin + (count * dotSize - width) / 2;\n const dy = yBeginning + options.imageOptions.margin + (count * dotSize - height) / 2;\n const dw = width - options.imageOptions.margin * 2;\n const dh = height - options.imageOptions.margin * 2;\n\n const image = document.createElementNS(\"http://www.w3.org/2000/svg\", \"image\");\n image.setAttribute(\"href\", options.image || \"\");\n image.setAttribute(\"x\", String(dx));\n image.setAttribute(\"y\", String(dy));\n image.setAttribute(\"width\", `${dw}px`);\n image.setAttribute(\"height\", `${dh}px`);\n\n this._element.appendChild(image);\n }\n\n _createColor({\n options,\n color,\n additionalRotation,\n x,\n y,\n height,\n width,\n name\n }: {\n options?: Gradient;\n color?: string;\n additionalRotation: number;\n x: number;\n y: number;\n height: number;\n width: number;\n name: string;\n }): void {\n const size = width > height ? width : height;\n const rect = document.createElementNS(\"http://www.w3.org/2000/svg\", \"rect\");\n rect.setAttribute(\"x\", String(x));\n rect.setAttribute(\"y\", String(y));\n rect.setAttribute(\"height\", String(height));\n rect.setAttribute(\"width\", String(width));\n rect.setAttribute(\"clip-path\", `url('#clip-path-${name}')`);\n\n if (options) {\n let gradient: SVGElement;\n if (options.type === gradientTypes.radial) {\n gradient = document.createElementNS(\"http://www.w3.org/2000/svg\", \"radialGradient\");\n gradient.setAttribute(\"id\", name);\n gradient.setAttribute(\"gradientUnits\", \"userSpaceOnUse\");\n gradient.setAttribute(\"fx\", String(x + width / 2));\n gradient.setAttribute(\"fy\", String(y + height / 2));\n gradient.setAttribute(\"cx\", String(x + width / 2));\n gradient.setAttribute(\"cy\", String(y + height / 2));\n gradient.setAttribute(\"r\", String(size / 2));\n } else {\n const rotation = ((options.rotation || 0) + additionalRotation) % (2 * Math.PI);\n const positiveRotation = (rotation + 2 * Math.PI) % (2 * Math.PI);\n let x0 = x + width / 2;\n let y0 = y + height / 2;\n let x1 = x + width / 2;\n let y1 = y + height / 2;\n\n if (\n (positiveRotation >= 0 && positiveRotation <= 0.25 * Math.PI) ||\n (positiveRotation > 1.75 * Math.PI && positiveRotation <= 2 * Math.PI)\n ) {\n x0 = x0 - width / 2;\n y0 = y0 - (height / 2) * Math.tan(rotation);\n x1 = x1 + width / 2;\n y1 = y1 + (height / 2) * Math.tan(rotation);\n } else if (positiveRotation > 0.25 * Math.PI && positiveRotation <= 0.75 * Math.PI) {\n y0 = y0 - height / 2;\n x0 = x0 - width / 2 / Math.tan(rotation);\n y1 = y1 + height / 2;\n x1 = x1 + width / 2 / Math.tan(rotation);\n } else if (positiveRotation > 0.75 * Math.PI && positiveRotation <= 1.25 * Math.PI) {\n x0 = x0 + width / 2;\n y0 = y0 + (height / 2) * Math.tan(rotation);\n x1 = x1 - width / 2;\n y1 = y1 - (height / 2) * Math.tan(rotation);\n } else if (positiveRotation > 1.25 * Math.PI && positiveRotation <= 1.75 * Math.PI) {\n y0 = y0 + height / 2;\n x0 = x0 + width / 2 / Math.tan(rotation);\n y1 = y1 - height / 2;\n x1 = x1 - width / 2 / Math.tan(rotation);\n }\n\n gradient = document.createElementNS(\"http://www.w3.org/2000/svg\", \"linearGradient\");\n gradient.setAttribute(\"id\", name);\n gradient.setAttribute(\"gradientUnits\", \"userSpaceOnUse\");\n gradient.setAttribute(\"x1\", String(Math.round(x0)));\n gradient.setAttribute(\"y1\", String(Math.round(y0)));\n gradient.setAttribute(\"x2\", String(Math.round(x1)));\n gradient.setAttribute(\"y2\", String(Math.round(y1)));\n }\n\n options.colorStops.forEach(({ offset, color }: { offset: number; color: string }) => {\n const stop = document.createElementNS(\"http://www.w3.org/2000/svg\", \"stop\");\n stop.setAttribute(\"offset\", `${100 * offset}%`);\n stop.setAttribute(\"stop-color\", color);\n gradient.appendChild(stop);\n });\n\n rect.setAttribute(\"fill\", `url('#${name}')`);\n this._defs.appendChild(gradient);\n } else if (color) {\n rect.setAttribute(\"fill\", color);\n }\n\n this._element.appendChild(rect);\n }\n\n _createStyle({ color, name }: { color?: string; name: string }): void {\n this._style.innerHTML += `.${name}{ fill: ${color}; }`;\n }\n}\n","import { DrawTypes } from \"../types\";\n\nexport default {\n canvas: \"canvas\",\n svg: \"svg\"\n} as DrawTypes;\n","import { TypeNumber } from \"../types\";\n\ninterface TypesMap {\n [key: number]: TypeNumber;\n}\n\nconst qrTypes: TypesMap = {};\n\nfor (let type = 0; type <= 40; type++) {\n qrTypes[type] = type as TypeNumber;\n}\n\n// 0 types is autodetect\n\n// types = {\n// 0: 0,\n// 1: 1,\n// ...\n// 40: 40\n// }\n\nexport default qrTypes;\n","import qrTypes from \"../constants/qrTypes\";\nimport drawTypes from \"../constants/drawTypes\";\nimport errorCorrectionLevels from \"../constants/errorCorrectionLevels\";\nimport { DotType, Options, TypeNumber, ErrorCorrectionLevel, Mode, DrawType, Gradient } from \"../types\";\n\nexport interface RequiredOptions extends Options {\n type: DrawType;\n width: number;\n height: number;\n margin: number;\n data: string;\n qrOptions: {\n typeNumber: TypeNumber;\n mode?: Mode;\n errorCorrectionLevel: ErrorCorrectionLevel;\n };\n imageOptions: {\n hideBackgroundDots: boolean;\n imageSize: number;\n crossOrigin?: string;\n margin: number;\n };\n dotsOptions: {\n type: DotType;\n color: string;\n gradient?: Gradient;\n };\n backgroundOptions: {\n color: string;\n gradient?: Gradient;\n };\n}\n\nconst defaultOptions: RequiredOptions = {\n type: drawTypes.canvas,\n width: 300,\n height: 300,\n data: \"\",\n margin: 0,\n qrOptions: {\n typeNumber: qrTypes[0],\n mode: undefined,\n errorCorrectionLevel: errorCorrectionLevels.Q\n },\n imageOptions: {\n hideBackgroundDots: true,\n imageSize: 0.4,\n crossOrigin: undefined,\n margin: 0\n },\n dotsOptions: {\n type: \"square\",\n color: \"#000\"\n },\n backgroundOptions: {\n color: \"#fff\"\n }\n};\n\nexport default defaultOptions;\n","import { ErrorCorrectionLevel } from \"../types\";\n\ninterface ErrorCorrectionLevels {\n [key: string]: ErrorCorrectionLevel;\n}\n\nexport default {\n L: \"L\",\n M: \"M\",\n Q: \"Q\",\n H: \"H\"\n} as ErrorCorrectionLevels;\n","import { RequiredOptions } from \"../core/QROptions\";\nimport { Gradient } from \"../types\";\n\nfunction sanitizeGradient(gradient: Gradient): Gradient {\n const newGradient = { ...gradient };\n\n if (!newGradient.colorStops || !newGradient.colorStops.length) {\n throw \"Field 'colorStops' is required in gradient\";\n }\n\n if (newGradient.rotation) {\n newGradient.rotation = Number(newGradient.rotation);\n } else {\n newGradient.rotation = 0;\n }\n\n newGradient.colorStops = newGradient.colorStops.map((colorStop: { offset: number; color: string }) => ({\n ...colorStop,\n offset: Number(colorStop.offset)\n }));\n\n return newGradient;\n}\n\nexport default function sanitizeOptions(options: RequiredOptions): RequiredOptions {\n const newOptions = { ...options };\n\n newOptions.width = Number(newOptions.width);\n newOptions.height = Number(newOptions.height);\n newOptions.margin = Number(newOptions.margin);\n newOptions.imageOptions = {\n ...newOptions.imageOptions,\n hideBackgroundDots: Boolean(newOptions.imageOptions.hideBackgroundDots),\n imageSize: Number(newOptions.imageOptions.imageSize),\n margin: Number(newOptions.imageOptions.margin)\n };\n\n if (newOptions.margin > Math.min(newOptions.width, newOptions.height)) {\n newOptions.margin = Math.min(newOptions.width, newOptions.height);\n }\n\n newOptions.dotsOptions = {\n ...newOptions.dotsOptions\n };\n if (newOptions.dotsOptions.gradient) {\n newOptions.dotsOptions.gradient = sanitizeGradient(newOptions.dotsOptions.gradient);\n }\n\n if (newOptions.cornersSquareOptions) {\n newOptions.cornersSquareOptions = {\n ...newOptions.cornersSquareOptions\n };\n if (newOptions.cornersSquareOptions.gradient) {\n newOptions.cornersSquareOptions.gradient = sanitizeGradient(newOptions.cornersSquareOptions.gradient);\n }\n }\n\n if (newOptions.cornersDotOptions) {\n newOptions.cornersDotOptions = {\n ...newOptions.cornersDotOptions\n };\n if (newOptions.cornersDotOptions.gradient) {\n newOptions.cornersDotOptions.gradient = sanitizeGradient(newOptions.cornersDotOptions.gradient);\n }\n }\n\n if (newOptions.backgroundOptions) {\n newOptions.backgroundOptions = {\n ...newOptions.backgroundOptions\n };\n if (newOptions.backgroundOptions.gradient) {\n newOptions.backgroundOptions.gradient = sanitizeGradient(newOptions.backgroundOptions.gradient);\n }\n }\n\n return newOptions;\n}\n","import QRCodeStyling from \"./core/QRCodeStyling\";\nimport dotTypes from \"./constants/dotTypes\";\nimport cornerDotTypes from \"./constants/cornerDotTypes\";\nimport cornerSquareTypes from \"./constants/cornerSquareTypes\";\nimport errorCorrectionLevels from \"./constants/errorCorrectionLevels\";\nimport errorCorrectionPercents from \"./constants/errorCorrectionPercents\";\nimport modes from \"./constants/modes\";\nimport qrTypes from \"./constants/qrTypes\";\nimport drawTypes from \"./constants/drawTypes\";\n\nexport * from \"./types\";\n\nexport {\n dotTypes,\n cornerDotTypes,\n cornerSquareTypes,\n errorCorrectionLevels,\n errorCorrectionPercents,\n modes,\n qrTypes,\n drawTypes\n};\n\nexport default QRCodeStyling;\n","import getMode from \"../tools/getMode\";\nimport mergeDeep from \"../tools/merge\";\nimport downloadURI from \"../tools/downloadURI\";\nimport QRCanvas from \"./QRCanvas\";\nimport QRSVG from \"./QRSVG\";\nimport drawTypes from \"../constants/drawTypes\";\n\nimport defaultOptions, { RequiredOptions } from \"./QROptions\";\nimport sanitizeOptions from \"../tools/sanitizeOptions\";\nimport { Extension, QRCode, Options, DownloadOptions } from \"../types\";\nimport qrcode from \"qrcode-generator\";\n\nexport default class QRCodeStyling {\n _options: RequiredOptions;\n _container?: HTMLElement;\n _canvas?: QRCanvas;\n _svg?: QRSVG;\n _qr?: QRCode;\n _canvasDrawingPromise?: Promise;\n _svgDrawingPromise?: Promise;\n\n constructor(options?: Partial) {\n this._options = options ? sanitizeOptions(mergeDeep(defaultOptions, options) as RequiredOptions) : defaultOptions;\n this.update();\n }\n\n static _clearContainer(container?: HTMLElement): void {\n if (container) {\n container.innerHTML = \"\";\n }\n }\n\n async _getQRStylingElement(extension: Extension = \"png\"): Promise {\n if (!this._qr) throw \"QR code is empty\";\n\n if (extension.toLowerCase() === \"svg\") {\n let promise, svg: QRSVG;\n\n if (this._svg && this._svgDrawingPromise) {\n svg = this._svg;\n promise = this._svgDrawingPromise;\n } else {\n svg = new QRSVG(this._options);\n promise = svg.drawQR(this._qr);\n }\n\n await promise;\n\n return svg;\n } else {\n let promise, canvas: QRCanvas;\n\n if (this._canvas && this._canvasDrawingPromise) {\n canvas = this._canvas;\n promise = this._canvasDrawingPromise;\n } else {\n canvas = new QRCanvas(this._options);\n promise = canvas.drawQR(this._qr);\n }\n\n await promise;\n\n return canvas;\n }\n }\n\n update(options?: Partial): void {\n QRCodeStyling._clearContainer(this._container);\n this._options = options ? sanitizeOptions(mergeDeep(this._options, options) as RequiredOptions) : this._options;\n\n if (!this._options.data) {\n return;\n }\n\n this._qr = qrcode(this._options.qrOptions.typeNumber, this._options.qrOptions.errorCorrectionLevel);\n this._qr.addData(this._options.data, this._options.qrOptions.mode || getMode(this._options.data));\n this._qr.make();\n\n if (this._options.type === drawTypes.canvas) {\n this._canvas = new QRCanvas(this._options);\n this._canvasDrawingPromise = this._canvas.drawQR(this._qr);\n this._svgDrawingPromise = undefined;\n this._svg = undefined;\n } else {\n this._svg = new QRSVG(this._options);\n this._svgDrawingPromise = this._svg.drawQR(this._qr);\n this._canvasDrawingPromise = undefined;\n this._canvas = undefined;\n }\n\n this.append(this._container);\n }\n\n append(container?: HTMLElement): void {\n if (!container) {\n return;\n }\n\n if (typeof container.appendChild !== \"function\") {\n throw \"Container should be a single DOM node\";\n }\n\n if (this._options.type === drawTypes.canvas) {\n if (this._canvas) {\n container.appendChild(this._canvas.getCanvas());\n }\n } else {\n if (this._svg) {\n container.appendChild(this._svg.getElement());\n }\n }\n\n this._container = container;\n }\n\n async getRawData(extension: Extension = \"png\"): Promise {\n if (!this._qr) throw \"QR code is empty\";\n const element = await this._getQRStylingElement(extension);\n\n if (extension.toLowerCase() === \"svg\") {\n const serializer = new XMLSerializer();\n const source = serializer.serializeToString(((element as unknown) as QRSVG).getElement());\n\n return new Blob(['\\r\\n' + source], { type: \"image/svg+xml\" });\n } else {\n return new Promise((resolve) =>\n ((element as unknown) as QRCanvas).getCanvas().toBlob(resolve, `image/${extension}`, 1)\n );\n }\n }\n\n async download(downloadOptions?: Partial | string): Promise {\n if (!this._qr) throw \"QR code is empty\";\n let extension = \"png\" as Extension;\n let name = \"qr\";\n\n //TODO remove deprecated code in the v2\n if (typeof downloadOptions === \"string\") {\n extension = downloadOptions as Extension;\n console.warn(\n \"Extension is deprecated as argument for 'download' method, please pass object { name: '...', extension: '...' } as argument\"\n );\n } else if (typeof downloadOptions === \"object\" && downloadOptions !== null) {\n if (downloadOptions.name) {\n name = downloadOptions.name;\n }\n if (downloadOptions.extension) {\n extension = downloadOptions.extension;\n }\n }\n\n const element = await this._getQRStylingElement(extension);\n\n if (extension.toLowerCase() === \"svg\") {\n const serializer = new XMLSerializer();\n let source = serializer.serializeToString(((element as unknown) as QRSVG).getElement());\n\n source = '\\r\\n' + source;\n const url = \"data:image/svg+xml;charset=utf-8,\" + encodeURIComponent(source);\n downloadURI(url, `${name}.svg`);\n } else {\n const url = ((element as unknown) as QRCanvas).getCanvas().toDataURL(`image/${extension}`);\n downloadURI(url, `${name}.${extension}`);\n }\n }\n}\n","import modes from \"../constants/modes\";\nimport { Mode } from \"../types\";\n\nexport default function getMode(data: string): Mode {\n switch (true) {\n case /^[0-9]*$/.test(data):\n return modes.numeric;\n case /^[0-9A-Z $%*+\\-./:]*$/.test(data):\n return modes.alphanumeric;\n default:\n return modes.byte;\n }\n}\n","import { Mode } from \"../types\";\n\ninterface Modes {\n [key: string]: Mode;\n}\n\nexport default {\n numeric: \"Numeric\",\n alphanumeric: \"Alphanumeric\",\n byte: \"Byte\",\n kanji: \"Kanji\"\n} as Modes;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tif(__webpack_module_cache__[moduleId]) {\n\t\treturn __webpack_module_cache__[moduleId].exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// module exports must be returned from runtime so entry inlining is disabled\n// startup\n// Load entry module and return exports\nreturn __webpack_require__(796);\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => module['default'] :\n\t\t() => module;\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop)"],"sourceRoot":""} \ No newline at end of file diff --git a/lib/tools/calculateImageSize.d.ts b/lib/tools/calculateImageSize.d.ts new file mode 100644 index 00000000..9b0efb06 --- /dev/null +++ b/lib/tools/calculateImageSize.d.ts @@ -0,0 +1,15 @@ +interface ImageSizeOptions { + originalHeight: number; + originalWidth: number; + maxHiddenDots: number; + maxHiddenAxisDots?: number; + dotSize: number; +} +interface ImageSizeResult { + height: number; + width: number; + hideYDots: number; + hideXDots: number; +} +export default function calculateImageSize({ originalHeight, originalWidth, maxHiddenDots, maxHiddenAxisDots, dotSize }: ImageSizeOptions): ImageSizeResult; +export {}; diff --git a/lib/tools/downloadURI.d.ts b/lib/tools/downloadURI.d.ts new file mode 100644 index 00000000..a63b7fad --- /dev/null +++ b/lib/tools/downloadURI.d.ts @@ -0,0 +1 @@ +export default function downloadURI(uri: string, name: string): void; diff --git a/lib/tools/getMode.d.ts b/lib/tools/getMode.d.ts new file mode 100644 index 00000000..045a68c5 --- /dev/null +++ b/lib/tools/getMode.d.ts @@ -0,0 +1,2 @@ +import { Mode } from "../types"; +export default function getMode(data: string): Mode; diff --git a/lib/tools/merge.d.ts b/lib/tools/merge.d.ts new file mode 100644 index 00000000..92562eba --- /dev/null +++ b/lib/tools/merge.d.ts @@ -0,0 +1,2 @@ +import { UnknownObject } from "../types"; +export default function mergeDeep(target: UnknownObject, ...sources: UnknownObject[]): UnknownObject; diff --git a/lib/tools/sanitizeOptions.d.ts b/lib/tools/sanitizeOptions.d.ts new file mode 100644 index 00000000..81010e7c --- /dev/null +++ b/lib/tools/sanitizeOptions.d.ts @@ -0,0 +1,2 @@ +import { RequiredOptions } from "../core/QROptions"; +export default function sanitizeOptions(options: RequiredOptions): RequiredOptions; diff --git a/lib/types/index.d.ts b/lib/types/index.d.ts new file mode 100644 index 00000000..35feaac8 --- /dev/null +++ b/lib/types/index.d.ts @@ -0,0 +1,125 @@ +export interface UnknownObject { + [key: string]: any; +} +export declare type DotType = "dots" | "rounded" | "classy" | "classy-rounded" | "square" | "extra-rounded"; +export declare type CornerDotType = "dot" | "square"; +export declare type CornerSquareType = "dot" | "square" | "extra-rounded"; +export declare type Extension = "svg" | "png" | "jpeg" | "webp"; +export declare type GradientType = "radial" | "linear"; +export declare type DrawType = "canvas" | "svg"; +export declare type Gradient = { + type: GradientType; + rotation?: number; + colorStops: { + offset: number; + color: string; + }[]; +}; +export interface DotTypes { + [key: string]: DotType; +} +export interface GradientTypes { + [key: string]: GradientType; +} +export interface CornerDotTypes { + [key: string]: CornerDotType; +} +export interface CornerSquareTypes { + [key: string]: CornerSquareType; +} +export interface DrawTypes { + [key: string]: DrawType; +} +export declare type TypeNumber = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40; +export declare type ErrorCorrectionLevel = "L" | "M" | "Q" | "H"; +export declare type Mode = "Numeric" | "Alphanumeric" | "Byte" | "Kanji"; +export interface QRCode { + addData(data: string, mode?: Mode): void; + make(): void; + getModuleCount(): number; + isDark(row: number, col: number): boolean; + createImgTag(cellSize?: number, margin?: number): string; + createSvgTag(cellSize?: number, margin?: number): string; + createSvgTag(opts?: { + cellSize?: number; + margin?: number; + scalable?: boolean; + }): string; + createDataURL(cellSize?: number, margin?: number): string; + createTableTag(cellSize?: number, margin?: number): string; + createASCII(cellSize?: number, margin?: number): string; + renderTo2dContext(context: CanvasRenderingContext2D, cellSize?: number): void; +} +export declare type Options = { + type?: DrawType; + width?: number; + height?: number; + margin?: number; + data?: string; + image?: string; + qrOptions?: { + typeNumber?: TypeNumber; + mode?: Mode; + errorCorrectionLevel?: ErrorCorrectionLevel; + }; + imageOptions?: { + hideBackgroundDots?: boolean; + imageSize?: number; + crossOrigin?: string; + margin?: number; + }; + dotsOptions?: { + type?: DotType; + color?: string; + gradient?: Gradient; + }; + cornersSquareOptions?: { + type?: CornerSquareType; + color?: string; + gradient?: Gradient; + }; + cornersDotOptions?: { + type?: CornerDotType; + color?: string; + gradient?: Gradient; + }; + backgroundOptions?: { + color?: string; + gradient?: Gradient; + }; +}; +export declare type FilterFunction = (i: number, j: number) => boolean; +export declare type DownloadOptions = { + name?: string; + extension?: Extension; +}; +export declare type DrawArgs = { + x: number; + y: number; + size: number; + rotation?: number; + getNeighbor?: GetNeighbor; +}; +export declare type BasicFigureDrawArgs = { + x: number; + y: number; + size: number; + rotation?: number; +}; +export declare type RotateFigureArgs = { + x: number; + y: number; + size: number; + rotation?: number; + draw: () => void; +}; +export declare type DrawArgsCanvas = DrawArgs & { + context: CanvasRenderingContext2D; +}; +export declare type BasicFigureDrawArgsCanvas = BasicFigureDrawArgs & { + context: CanvasRenderingContext2D; +}; +export declare type RotateFigureArgsCanvas = RotateFigureArgs & { + context: CanvasRenderingContext2D; +}; +export declare type GetNeighbor = (x: number, y: number) => boolean; diff --git a/package.json b/package.json index 054fda64..58ce8cab 100644 --- a/package.json +++ b/package.json @@ -40,7 +40,7 @@ }, "repository": { "type": "git", - "url": "git+https://github.com/kozakdenys/qr-code-styling.git" + "url": "git+https://github.com/sallandpioneers/qr-code-styling.git" }, "keywords": [ "qr", diff --git a/src/index.html b/src/index.html index 44dcc685..728dc023 100644 --- a/src/index.html +++ b/src/index.html @@ -1,55 +1,41 @@ - - - QR Code Styling - - -
-
- - - + +
+
+ + + + \ No newline at end of file From 1de1cb9065ff2d21ed33e30869feed26d68a8cc3 Mon Sep 17 00:00:00 2001 From: Henk van Maanen <36051232+HenkVanMaanen@users.noreply.github.com> Date: Thu, 14 Jul 2022 15:35:39 +0200 Subject: [PATCH 09/25] remove fix.patch --- fix.patch | 239 ------------------------------------------------------ 1 file changed, 239 deletions(-) delete mode 100644 fix.patch diff --git a/fix.patch b/fix.patch deleted file mode 100644 index 4b182d7c..00000000 --- a/fix.patch +++ /dev/null @@ -1,239 +0,0 @@ -From 404d5db162464eae6b301ecca2c0a0b895af5597 Mon Sep 17 00:00:00 2001 -From: Henk van Maanen <36051232+HenkVanMaanen@users.noreply.github.com> -Date: Thu, 14 Jul 2022 11:57:37 +0200 -Subject: [PATCH] fix svg credits to @iamdangavin - ---- - src/core/QRSVG.ts | 102 +++++++++++++++++++++++++++++++++++----------- - 1 file changed, 78 insertions(+), 24 deletions(-) - -diff --git a/src/core/QRSVG.ts b/src/core/QRSVG.ts -index 93656a0..3ce04d7 100644 ---- a/src/core/QRSVG.ts -+++ b/src/core/QRSVG.ts -@@ -29,10 +29,15 @@ const dotMask = [ - - export default class QRSVG { - _element: SVGElement; -+ _style: SVGStyleElement; - _defs: SVGElement; - _dotsClipPath?: SVGElement; - _cornersSquareClipPath?: SVGElement; - _cornersDotClipPath?: SVGElement; -+ _dots?: SVGElement; -+ _cornerSquares?: SVGElement; -+ _corners?: SVGElement; -+ _cornerDots?: SVGElement; - _options: RequiredOptions; - _qr?: QRCode; - _image?: HTMLImageElement; -@@ -43,7 +48,7 @@ export default class QRSVG { - this._element.setAttribute("width", String(options.width)); - this._element.setAttribute("height", String(options.height)); - this._defs = document.createElementNS("http://www.w3.org/2000/svg", "defs"); -- this._element.appendChild(this._defs); -+ this._style = document.createElementNS("http://www.w3.org/2000/svg", "style"); - - this._options = options; - } -@@ -65,6 +70,8 @@ export default class QRSVG { - this._element = oldElement.cloneNode(false) as SVGElement; - oldElement?.parentNode?.replaceChild(this._element, oldElement); - this._defs = document.createElementNS("http://www.w3.org/2000/svg", "defs"); -+ this._style = document.createElementNS("http://www.w3.org/2000/svg", "style"); -+ this._element.appendChild(this._style); - this._element.appendChild(this._defs); - } - -@@ -98,6 +105,9 @@ export default class QRSVG { - }); - } - -+ this._element.appendChild(this._style); -+ this._element.appendChild(this._defs); -+ - this.clear(); - this.drawBackground(); - this.drawDots((i: number, j: number): boolean => { -@@ -137,7 +147,7 @@ export default class QRSVG { - const gradientOptions = options.backgroundOptions?.gradient; - const color = options.backgroundOptions?.color; - -- if (gradientOptions || color) { -+ if (gradientOptions) { - this._createColor({ - options: gradientOptions, - color: color, -@@ -148,6 +158,11 @@ export default class QRSVG { - width: options.width, - name: "background-color" - }); -+ } else if (options.backgroundOptions?.color) { -+ this._createStyle({ -+ color: color, -+ name: "background-color" -+ }); - } - } - } -@@ -170,20 +185,29 @@ export default class QRSVG { - const yBeginning = Math.floor((options.height - count * dotSize) / 2); - const dot = new QRDot({ svg: this._element, type: options.dotsOptions.type }); - -- this._dotsClipPath = document.createElementNS("http://www.w3.org/2000/svg", "clipPath"); -- this._dotsClipPath.setAttribute("id", "clip-path-dot-color"); -- this._defs.appendChild(this._dotsClipPath); -- -- this._createColor({ -- options: options.dotsOptions?.gradient, -- color: options.dotsOptions.color, -- additionalRotation: 0, -- x: xBeginning, -- y: yBeginning, -- height: count * dotSize, -- width: count * dotSize, -- name: "dot-color" -- }); -+ if (options.dotsOptions?.gradient) { -+ this._dotsClipPath = document.createElementNS("http://www.w3.org/2000/svg", "clipPath"); -+ this._dotsClipPath.setAttribute("id", "clip-path-dot-color"); -+ this._defs.appendChild(this._dotsClipPath); -+ this._createColor({ -+ options: options.dotsOptions?.gradient, -+ color: options.dotsOptions.color, -+ additionalRotation: 0, -+ x: xBeginning, -+ y: yBeginning, -+ height: count * dotSize, -+ width: count * dotSize, -+ name: "dot-color" -+ }); -+ } else if (options.dotsOptions.color) { -+ this._dots = document.createElementNS("http://www.w3.org/2000/svg", "g"); -+ this._dots.setAttribute("class", "dot-color"); -+ this._element.appendChild(this._dots); -+ this._createStyle({ -+ color: options.dotsOptions.color, -+ name: "dot-color" -+ }); -+ } - - for (let i = 0; i < count; i++) { - for (let j = 0; j < count; j++) { -@@ -207,6 +231,8 @@ export default class QRSVG { - - if (dot._element && this._dotsClipPath) { - this._dotsClipPath.appendChild(dot._element); -+ } else if (dot._element && this._dots) { -+ this._dots.appendChild(dot._element); - } - } - } -@@ -242,7 +268,7 @@ export default class QRSVG { - let cornersSquareClipPath = this._dotsClipPath; - let cornersDotClipPath = this._dotsClipPath; - -- if (options.cornersSquareOptions?.gradient || options.cornersSquareOptions?.color) { -+ if (options.cornersSquareOptions?.gradient) { - cornersSquareClipPath = document.createElementNS("http://www.w3.org/2000/svg", "clipPath"); - cornersSquareClipPath.setAttribute("id", `clip-path-corners-square-color-${column}-${row}`); - this._defs.appendChild(cornersSquareClipPath); -@@ -258,6 +284,14 @@ export default class QRSVG { - width: cornersSquareSize, - name: `corners-square-color-${column}-${row}` - }); -+ } else { -+ this._cornerSquares = document.createElementNS("http://www.w3.org/2000/svg", "g"); -+ this._cornerSquares.setAttribute("class", `corners-square-color-${column}-${row}`); -+ this._element.appendChild(this._cornerSquares); -+ this._createStyle({ -+ color: options.cornersSquareOptions?.color, -+ name: `corners-square-color-${column}-${row}` -+ }); - } - - if (options.cornersSquareOptions?.type) { -@@ -265,8 +299,10 @@ export default class QRSVG { - - cornersSquare.draw(x, y, cornersSquareSize, rotation); - -- if (cornersSquare._element && cornersSquareClipPath) { -+ if (options.cornersSquareOptions?.gradient && cornersSquare._element && cornersSquareClipPath) { - cornersSquareClipPath.appendChild(cornersSquare._element); -+ } else if (cornersSquare._element && this._cornerSquares) { -+ this._cornerSquares.appendChild(cornersSquare._element); - } - } else { - const dot = new QRDot({ svg: this._element, type: options.dotsOptions.type }); -@@ -284,14 +320,16 @@ export default class QRSVG { - (xOffset: number, yOffset: number): boolean => !!squareMask[i + xOffset]?.[j + yOffset] - ); - -- if (dot._element && cornersSquareClipPath) { -- cornersSquareClipPath.appendChild(dot._element); -+ if (dot._element && this._cornersSquareClipPath) { -+ this._cornersSquareClipPath.appendChild(dot._element); -+ } else if (dot._element && this._cornerSquares) { -+ this._cornerSquares.appendChild(dot._element); - } - } - } - } - -- if (options.cornersDotOptions?.gradient || options.cornersDotOptions?.color) { -+ if (options.cornersDotOptions?.gradient) { - cornersDotClipPath = document.createElementNS("http://www.w3.org/2000/svg", "clipPath"); - cornersDotClipPath.setAttribute("id", `clip-path-corners-dot-color-${column}-${row}`); - this._defs.appendChild(cornersDotClipPath); -@@ -307,6 +345,14 @@ export default class QRSVG { - width: cornersDotSize, - name: `corners-dot-color-${column}-${row}` - }); -+ } else { -+ this._cornerDots = document.createElementNS("http://www.w3.org/2000/svg", "g"); -+ this._cornerDots.setAttribute("class", `corners-dot-color-${column}-${row}`); -+ this._element.appendChild(this._cornerDots); -+ this._createStyle({ -+ color: options.cornersDotOptions?.color, -+ name: `corners-dot-color-${column}-${row}` -+ }); - } - - if (options.cornersDotOptions?.type) { -@@ -314,8 +360,10 @@ export default class QRSVG { - - cornersDot.draw(x + dotSize * 2, y + dotSize * 2, cornersDotSize, rotation); - -- if (cornersDot._element && cornersDotClipPath) { -+ if (options.cornersDotOptions?.gradient && cornersDot._element && cornersDotClipPath) { - cornersDotClipPath.appendChild(cornersDot._element); -+ } else if (cornersDot._element && this._cornerDots) { -+ this._cornerDots.appendChild(cornersDot._element); - } - } else { - const dot = new QRDot({ svg: this._element, type: options.dotsOptions.type }); -@@ -333,8 +381,10 @@ export default class QRSVG { - (xOffset: number, yOffset: number): boolean => !!dotMask[i + xOffset]?.[j + yOffset] - ); - -- if (dot._element && cornersDotClipPath) { -- cornersDotClipPath.appendChild(dot._element); -+ if (dot._element && this._cornersDotClipPath) { -+ this._cornersDotClipPath.appendChild(dot._element); -+ } else if (dot._element && this._cornerDots) { -+ this._cornerDots.appendChild(dot._element); - } - } - } -@@ -487,4 +537,8 @@ export default class QRSVG { - - this._element.appendChild(rect); - } -+ -+ _createStyle({ color, name }: { color?: string; name: string }): void { -+ this._style.innerHTML += `.${name}{ fill: ${color}; }`; -+ } - } --- -2.30.2 - From f400491fe13c5969b8a9d8c1e2e7c90b7067c5a5 Mon Sep 17 00:00:00 2001 From: Henk van Maanen <36051232+HenkVanMaanen@users.noreply.github.com> Date: Thu, 14 Jul 2022 16:41:12 +0200 Subject: [PATCH 10/25] fix image cut out orientation --- src/tools/calculateImageSize.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/tools/calculateImageSize.ts b/src/tools/calculateImageSize.ts index e976e92e..f7267448 100644 --- a/src/tools/calculateImageSize.ts +++ b/src/tools/calculateImageSize.ts @@ -64,7 +64,7 @@ export default function calculateImageSize({ return { height: imageSize.y, width: imageSize.x, - hideYDots: hideDots.y, - hideXDots: hideDots.x + hideYDots: hideDots.x, + hideXDots: hideDots.y }; } From 472ff4bf50a91fb10bc986152eb74113bbc7cd4a Mon Sep 17 00:00:00 2001 From: Henk van Maanen <36051232+HenkVanMaanen@users.noreply.github.com> Date: Thu, 14 Jul 2022 16:45:13 +0200 Subject: [PATCH 11/25] update build --- lib/qr-code-styling.js | 2 +- lib/qr-code-styling.js.map | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/qr-code-styling.js b/lib/qr-code-styling.js index dd6a4e60..95d3de13 100644 --- a/lib/qr-code-styling.js +++ b/lib/qr-code-styling.js @@ -1,2 +1,2 @@ -!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.QRCodeStyling=e():t.QRCodeStyling=e()}(self,(function(){return(()=>{var t={192:(t,e)=>{var r,o,n=function(){var t=function(t,e){var r=t,o=a[e],n=null,i=0,c=null,v=[],w={},_=function(t,e){n=function(t){for(var e=new Array(t),r=0;r=7&&M(t),null==c&&(c=P(r,o,v)),C(c,e)},m=function(t,e){for(var r=-1;r<=7;r+=1)if(!(t+r<=-1||i<=t+r))for(var o=-1;o<=7;o+=1)e+o<=-1||i<=e+o||(n[t+r][e+o]=0<=r&&r<=6&&(0==o||6==o)||0<=o&&o<=6&&(0==r||6==r)||2<=r&&r<=4&&2<=o&&o<=4)},b=function(){for(var t=8;t>o&1);n[Math.floor(o/3)][o%3+i-8-3]=a}for(o=0;o<18;o+=1)a=!t&&1==(e>>o&1),n[o%3+i-8-3][Math.floor(o/3)]=a},S=function(t,e){for(var r=o<<3|e,a=s.getBCHTypeInfo(r),c=0;c<15;c+=1){var u=!t&&1==(a>>c&1);c<6?n[c][8]=u:c<8?n[c+1][8]=u:n[i-15+c][8]=u}for(c=0;c<15;c+=1)u=!t&&1==(a>>c&1),c<8?n[8][i-c-1]=u:c<9?n[8][15-c-1+1]=u:n[8][15-c-1]=u;n[i-8][8]=!t},C=function(t,e){for(var r=-1,o=i-1,a=7,c=0,u=s.getMaskFunction(e),h=i-1;h>0;h-=2)for(6==h&&(h-=1);;){for(var d=0;d<2;d+=1)if(null==n[o][h-d]){var l=!1;c>>a&1)),u(o,h-d)&&(l=!l),n[o][h-d]=l,-1==(a-=1)&&(c+=1,a=7)}if((o+=r)<0||i<=o){o-=r,r=-r;break}}},P=function(t,e,r){for(var o=h.getRSBlocks(t,e),n=d(),i=0;i8*c)throw"code length overflow. ("+n.getLengthInBits()+">"+8*c+")";for(n.getLengthInBits()+4<=8*c&&n.put(0,4);n.getLengthInBits()%8!=0;)n.putBit(!1);for(;!(n.getLengthInBits()>=8*c||(n.put(236,8),n.getLengthInBits()>=8*c));)n.put(17,8);return function(t,e){for(var r=0,o=0,n=0,i=new Array(e.length),a=new Array(e.length),c=0;c=0?p.getAt(g):0}}var v=0;for(l=0;lo)&&(t=o,e=r)}return e}())},w.createTableTag=function(t,e){t=t||2;var r="";r+='
',r+="";for(var o=0;o";for(var n=0;n';r+=""}return(r+="")+"
"},w.createSvgTag=function(t,e,r,o){var n={};"object"==typeof arguments[0]&&(t=(n=arguments[0]).cellSize,e=n.margin,r=n.alt,o=n.title),t=t||2,e=void 0===e?4*t:e,(r="string"==typeof r?{text:r}:r||{}).text=r.text||null,r.id=r.text?r.id||"qrcode-description":null,(o="string"==typeof o?{text:o}:o||{}).text=o.text||null,o.id=o.text?o.id||"qrcode-title":null;var i,a,s,c,u=w.getModuleCount()*t+2*e,h="";for(c="l"+t+",0 0,"+t+" -"+t+",0 0,-"+t+"z ",h+=''+O(o.text)+"":"",h+=r.text?''+O(r.text)+"":"",h+='',h+='"},w.createDataURL=function(t,e){t=t||2,e=void 0===e?4*t:e;var r=w.getModuleCount()*t+2*e,o=e,n=r-e;return y(r,r,(function(e,r){if(o<=e&&e"};var O=function(t){for(var e="",r=0;r":e+=">";break;case"&":e+="&";break;case'"':e+=""";break;default:e+=o}}return e};return w.createASCII=function(t,e){if((t=t||1)<2)return function(t){t=void 0===t?2:t;var e,r,o,n,i,a=1*w.getModuleCount()+2*t,s=t,c=a-t,u={"██":"█","█ ":"▀"," █":"▄"," ":" "},h={"██":"▀","█ ":"▀"," █":" "," ":" "},d="";for(e=0;e=c?h[i]:u[i];d+="\n"}return a%2&&t>0?d.substring(0,d.length-a-1)+Array(a+1).join("▀"):d.substring(0,d.length-1)}(e);t-=1,e=void 0===e?2*t:e;var r,o,n,i,a=w.getModuleCount()*t+2*e,s=e,c=a-e,u=Array(t+1).join("██"),h=Array(t+1).join(" "),d="",l="";for(r=0;r>>8),e.push(255&a)):e.push(o)}}return e}};var e,r,o,n,i,a={L:1,M:0,Q:3,H:2},s=(e=[[],[6,18],[6,22],[6,26],[6,30],[6,34],[6,22,38],[6,24,42],[6,26,46],[6,28,50],[6,30,54],[6,32,58],[6,34,62],[6,26,46,66],[6,26,48,70],[6,26,50,74],[6,30,54,78],[6,30,56,82],[6,30,58,86],[6,34,62,90],[6,28,50,72,94],[6,26,50,74,98],[6,30,54,78,102],[6,28,54,80,106],[6,32,58,84,110],[6,30,58,86,114],[6,34,62,90,118],[6,26,50,74,98,122],[6,30,54,78,102,126],[6,26,52,78,104,130],[6,30,56,82,108,134],[6,34,60,86,112,138],[6,30,58,86,114,142],[6,34,62,90,118,146],[6,30,54,78,102,126,150],[6,24,50,76,102,128,154],[6,28,54,80,106,132,158],[6,32,58,84,110,136,162],[6,26,54,82,110,138,166],[6,30,58,86,114,142,170]],r=1335,o=7973,i=function(t){for(var e=0;0!=t;)e+=1,t>>>=1;return e},(n={}).getBCHTypeInfo=function(t){for(var e=t<<10;i(e)-i(r)>=0;)e^=r<=0;)e^=o<5&&(r+=3+i-5)}for(o=0;o=256;)e-=255;return t[e]}}}();function u(t,e){if(void 0===t.length)throw t.length+"/"+e;var r=function(){for(var r=0;r>>7-e%8&1)},put:function(t,e){for(var o=0;o>>e-o-1&1))},getLengthInBits:function(){return e},putBit:function(r){var o=Math.floor(e/8);t.length<=o&&t.push(0),r&&(t[o]|=128>>>e%8),e+=1}};return r},l=function(t){var e=t,r={getMode:function(){return 1},getLength:function(t){return e.length},write:function(t){for(var r=e,n=0;n+2>>8&255)+(255&n),t.put(n,13),r+=2}if(r>>8)},writeBytes:function(t,r,o){r=r||0,o=o||t.length;for(var n=0;n0&&(e+=","),e+=t[r];return e+"]"}};return e},w=function(t){var e=t,r=0,o=0,n=0,i={read:function(){for(;n<8;){if(r>=e.length){if(0==n)return-1;throw"unexpected end of file./"+n}var t=e.charAt(r);if(r+=1,"="==t)return n=0,-1;t.match(/^\s$/)||(o=o<<6|a(t.charCodeAt(0)),n+=6)}var i=o>>>n-8&255;return n-=8,i}},a=function(t){if(65<=t&&t<=90)return t-65;if(97<=t&&t<=122)return t-97+26;if(48<=t&&t<=57)return t-48+52;if(43==t)return 62;if(47==t)return 63;throw"c:"+t};return i},y=function(t,e,r){for(var o=function(t,e){var r=t,o=e,n=new Array(t*e),i={setPixel:function(t,e,o){n[e*r+t]=o},write:function(t){t.writeString("GIF87a"),t.writeShort(r),t.writeShort(o),t.writeByte(128),t.writeByte(0),t.writeByte(0),t.writeByte(0),t.writeByte(0),t.writeByte(0),t.writeByte(255),t.writeByte(255),t.writeByte(255),t.writeString(","),t.writeShort(0),t.writeShort(0),t.writeShort(r),t.writeShort(o),t.writeByte(0);var e=a(2);t.writeByte(2);for(var n=0;e.length-n>255;)t.writeByte(255),t.writeBytes(e,n,255),n+=255;t.writeByte(e.length-n),t.writeBytes(e,n,e.length-n),t.writeByte(0),t.writeString(";")}},a=function(t){for(var e=1<>>e!=0)throw"length over";for(;u+e>=8;)c.writeByte(255&(t<>>=8-u,h=0,u=0;h|=t<0&&c.writeByte(h)}});l.write(e,o);var f=0,p=String.fromCharCode(n[f]);for(f+=1;f=6;)i(t>>>e-6),e-=6},n.flush=function(){if(e>0&&(i(t<<6-e),t=0,e=0),r%3!=0)for(var n=3-r%3,a=0;a>6,128|63&o):o<55296||o>=57344?e.push(224|o>>12,128|o>>6&63,128|63&o):(r++,o=65536+((1023&o)<<10|1023&t.charCodeAt(r)),e.push(240|o>>18,128|o>>12&63,128|o>>6&63,128|63&o))}return e}(t)},void 0===(o="function"==typeof(r=function(){return n})?r.apply(e,[]):r)||(t.exports=o)},796:(t,e,r)=>{"use strict";r.d(e,{default:()=>W});var o=function(){return(o=Object.assign||function(t){for(var e,r=1,o=arguments.length;ro||n&&n2||a&&s||c&&u)this._basicSquare({x:e,y:r,size:o,context:n,rotation:0});else{if(2===h){var d=0;return a&&c?d=Math.PI/2:c&&s?d=Math.PI:s&&u&&(d=-Math.PI/2),void this._basicCornerRounded({x:e,y:r,size:o,context:n,rotation:d})}if(1===h)return d=0,c?d=Math.PI/2:s?d=Math.PI:u&&(d=-Math.PI/2),void this._basicSideRounded({x:e,y:r,size:o,context:n,rotation:d})}else this._basicDot({x:e,y:r,size:o,context:n,rotation:0})},t.prototype._drawExtraRounded=function(t){var e=t.x,r=t.y,o=t.size,n=t.context,i=t.getNeighbor,a=i?+i(-1,0):0,s=i?+i(1,0):0,c=i?+i(0,-1):0,u=i?+i(0,1):0,h=a+s+c+u;if(0!==h)if(h>2||a&&s||c&&u)this._basicSquare({x:e,y:r,size:o,context:n,rotation:0});else{if(2===h){var d=0;return a&&c?d=Math.PI/2:c&&s?d=Math.PI:s&&u&&(d=-Math.PI/2),void this._basicCornerExtraRounded({x:e,y:r,size:o,context:n,rotation:d})}if(1===h)return d=0,c?d=Math.PI/2:s?d=Math.PI:u&&(d=-Math.PI/2),void this._basicSideRounded({x:e,y:r,size:o,context:n,rotation:d})}else this._basicDot({x:e,y:r,size:o,context:n,rotation:0})},t.prototype._drawClassy=function(t){var e=t.x,r=t.y,o=t.size,n=t.context,i=t.getNeighbor,a=i?+i(-1,0):0,s=i?+i(1,0):0,c=i?+i(0,-1):0,u=i?+i(0,1):0;0!==a+s+c+u?a||c?s||u?this._basicSquare({x:e,y:r,size:o,context:n,rotation:0}):this._basicCornerRounded({x:e,y:r,size:o,context:n,rotation:Math.PI/2}):this._basicCornerRounded({x:e,y:r,size:o,context:n,rotation:-Math.PI/2}):this._basicCornersRounded({x:e,y:r,size:o,context:n,rotation:Math.PI/2})},t.prototype._drawClassyRounded=function(t){var e=t.x,r=t.y,o=t.size,n=t.context,i=t.getNeighbor,a=i?+i(-1,0):0,s=i?+i(1,0):0,c=i?+i(0,-1):0,u=i?+i(0,1):0;0!==a+s+c+u?a||c?s||u?this._basicSquare({x:e,y:r,size:o,context:n,rotation:0}):this._basicCornerExtraRounded({x:e,y:r,size:o,context:n,rotation:Math.PI/2}):this._basicCornerExtraRounded({x:e,y:r,size:o,context:n,rotation:-Math.PI/2}):this._basicCornersRounded({x:e,y:r,size:o,context:n,rotation:Math.PI/2})},t}(),y="square",_="extra-rounded";var m=function(){return(m=Object.assign||function(t){for(var e,r=1,o=arguments.length;r0&&n[n.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!n||i[1]>n[0]&&i[1]=(e-n.hideXDots)/2&&t<(e+n.hideXDots)/2&&r>=(e-n.hideYDots)/2&&r<(e+n.hideYDots)/2||(null===(o=P[t])||void 0===o?void 0:o[r])||(null===(i=P[t-e+7])||void 0===i?void 0:i[r])||(null===(a=P[t])||void 0===a?void 0:a[r-e+7])||(null===(s=O[t])||void 0===s?void 0:s[r])||(null===(c=O[t-e+7])||void 0===c?void 0:c[r])||(null===(u=O[t])||void 0===u?void 0:u[r-e+7]))})),this.drawCorners(),this._options.image&&this.drawImage({width:n.width,height:n.height,count:e,dotSize:o}),[2]}}))},new((o=void 0)||(o=Promise))((function(t,i){function a(t){try{c(n.next(t))}catch(t){i(t)}}function s(t){try{c(n.throw(t))}catch(t){i(t)}}function c(e){var r;e.done?t(e.value):(r=e.value,r instanceof o?r:new o((function(t){t(r)}))).then(a,s)}c((n=n.apply(e,r||[])).next())}));var e,r,o,n},t.prototype.drawBackground=function(){var t=this.context,e=this._options;if(t){if(e.backgroundOptions.gradient){var r=e.backgroundOptions.gradient,o=this._createGradient({context:t,options:r,additionalRotation:0,x:0,y:0,size:this._canvas.width>this._canvas.height?this._canvas.width:this._canvas.height});r.colorStops.forEach((function(t){var e=t.offset,r=t.color;o.addColorStop(e,r)})),t.fillStyle=o}else e.backgroundOptions.color&&(t.fillStyle=e.backgroundOptions.color);t.fillRect(0,0,this._canvas.width,this._canvas.height)}},t.prototype.drawDots=function(t){var e=this;if(!this._qr)throw"QR code is not defined";var r=this.context;if(!r)throw"QR code is not defined";var o=this._options,n=this._qr.getModuleCount();if(n>o.width||n>o.height)throw"The canvas is too small.";var i=Math.min(o.width,o.height)-2*o.margin,a=Math.floor(i/n),s=Math.floor((o.width-n*a)/2),c=Math.floor((o.height-n*a)/2),u=new w({context:r,type:o.dotsOptions.type});r.beginPath();for(var h=function(r){for(var o=function(o){return t&&!t(r,o)?"continue":d._qr.isDark(r,o)?void u.draw(c+o*a,s+r*a,a,(function(i,a){return!(r+i<0||o+a<0||r+i>=n||o+a>=n)&&!(t&&!t(r+i,o+a))&&!!e._qr&&e._qr.isDark(r+i,o+a)})):"continue"},i=0;i=0&&u<=.25*Math.PI||u>1.75*Math.PI&&u<=2*Math.PI?(h-=s/2,d-=s/2*Math.tan(c),l+=s/2,f+=s/2*Math.tan(c)):u>.25*Math.PI&&u<=.75*Math.PI?(d-=s/2,h-=s/2/Math.tan(c),f+=s/2,l+=s/2/Math.tan(c)):u>.75*Math.PI&&u<=1.25*Math.PI?(h+=s/2,d+=s/2*Math.tan(c),l-=s/2,f-=s/2*Math.tan(c)):u>1.25*Math.PI&&u<=1.75*Math.PI&&(d+=s/2,h+=s/2/Math.tan(c),f-=s/2,l-=s/2/Math.tan(c)),e=r.createLinearGradient(Math.round(h),Math.round(d),Math.round(l),Math.round(f))}return e},t}();var z=function(){return(z=Object.assign||function(t){for(var e,r=1,o=arguments.length;r2||i&&a||s&&c)this._basicSquare({x:e,y:r,size:o,rotation:0});else{if(2===u){var h=0;return i&&s?h=Math.PI/2:s&&a?h=Math.PI:a&&c&&(h=-Math.PI/2),void this._basicCornerRounded({x:e,y:r,size:o,rotation:h})}if(1===u)return h=0,s?h=Math.PI/2:a?h=Math.PI:c&&(h=-Math.PI/2),void this._basicSideRounded({x:e,y:r,size:o,rotation:h})}else this._basicDot({x:e,y:r,size:o,rotation:0})},t.prototype._drawExtraRounded=function(t){var e=t.x,r=t.y,o=t.size,n=t.getNeighbor,i=n?+n(-1,0):0,a=n?+n(1,0):0,s=n?+n(0,-1):0,c=n?+n(0,1):0,u=i+a+s+c;if(0!==u)if(u>2||i&&a||s&&c)this._basicSquare({x:e,y:r,size:o,rotation:0});else{if(2===u){var h=0;return i&&s?h=Math.PI/2:s&&a?h=Math.PI:a&&c&&(h=-Math.PI/2),void this._basicCornerExtraRounded({x:e,y:r,size:o,rotation:h})}if(1===u)return h=0,s?h=Math.PI/2:a?h=Math.PI:c&&(h=-Math.PI/2),void this._basicSideRounded({x:e,y:r,size:o,rotation:h})}else this._basicDot({x:e,y:r,size:o,rotation:0})},t.prototype._drawClassy=function(t){var e=t.x,r=t.y,o=t.size,n=t.getNeighbor,i=n?+n(-1,0):0,a=n?+n(1,0):0,s=n?+n(0,-1):0,c=n?+n(0,1):0;0!==i+a+s+c?i||s?a||c?this._basicSquare({x:e,y:r,size:o,rotation:0}):this._basicCornerRounded({x:e,y:r,size:o,rotation:Math.PI/2}):this._basicCornerRounded({x:e,y:r,size:o,rotation:-Math.PI/2}):this._basicCornersRounded({x:e,y:r,size:o,rotation:Math.PI/2})},t.prototype._drawClassyRounded=function(t){var e=t.x,r=t.y,o=t.size,n=t.getNeighbor,i=n?+n(-1,0):0,a=n?+n(1,0):0,s=n?+n(0,-1):0,c=n?+n(0,1):0;0!==i+a+s+c?i||s?a||c?this._basicSquare({x:e,y:r,size:o,rotation:0}):this._basicCornerExtraRounded({x:e,y:r,size:o,rotation:Math.PI/2}):this._basicCornerExtraRounded({x:e,y:r,size:o,rotation:-Math.PI/2}):this._basicCornersRounded({x:e,y:r,size:o,rotation:Math.PI/2})},t}();var I=function(){return(I=Object.assign||function(t){for(var e,r=1,o=arguments.length;r0&&n[n.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!n||i[1]>n[0]&&i[1]=(e-n.hideXDots)/2&&t<(e+n.hideXDots)/2&&r>=(e-n.hideYDots)/2&&r<(e+n.hideYDots)/2||(null===(o=B[t])||void 0===o?void 0:o[r])||(null===(i=B[t-e+7])||void 0===i?void 0:i[r])||(null===(a=B[t])||void 0===a?void 0:a[r-e+7])||(null===(s=E[t])||void 0===s?void 0:s[r])||(null===(c=E[t-e+7])||void 0===c?void 0:c[r])||(null===(u=E[t])||void 0===u?void 0:u[r-e+7]))})),this.drawCorners(),this._options.image&&this.drawImage({width:n.width,height:n.height,count:e,dotSize:o}),[2]}}))},new((o=void 0)||(o=Promise))((function(t,i){function a(t){try{c(n.next(t))}catch(t){i(t)}}function s(t){try{c(n.throw(t))}catch(t){i(t)}}function c(e){var r;e.done?t(e.value):(r=e.value,r instanceof o?r:new o((function(t){t(r)}))).then(a,s)}c((n=n.apply(e,r||[])).next())}));var e,r,o,n},t.prototype.drawBackground=function(){var t,e,r,o=this._element,n=this._options;if(o){var i=null===(t=n.backgroundOptions)||void 0===t?void 0:t.gradient,a=null===(e=n.backgroundOptions)||void 0===e?void 0:e.color;i?this._createColor({options:i,color:a,additionalRotation:0,x:0,y:0,height:n.height,width:n.width,name:"background-color"}):(null===(r=n.backgroundOptions)||void 0===r?void 0:r.color)&&this._createStyle({color:a,name:"background-color"})}},t.prototype.drawDots=function(t){var e,r,o,n=this;if(!this._qr)throw"QR code is not defined";var i=this._options,a=this._qr.getModuleCount();if(a>i.width||a>i.height)throw"The canvas is too small.";var s=Math.min(i.width,i.height)-2*i.margin,c=Math.floor(s/a),u=Math.floor((i.width-a*c)/2),h=Math.floor((i.height-a*c)/2),d=new A({svg:this._element,type:i.dotsOptions.type});(null===(e=i.dotsOptions)||void 0===e?void 0:e.gradient)?(this._dotsClipPath=document.createElementNS("http://www.w3.org/2000/svg","clipPath"),this._dotsClipPath.setAttribute("id","clip-path-dot-color"),this._defs.appendChild(this._dotsClipPath),this._createColor({options:null===(r=i.dotsOptions)||void 0===r?void 0:r.gradient,color:i.dotsOptions.color,additionalRotation:0,x:u,y:h,height:a*c,width:a*c,name:"dot-color"})):i.dotsOptions.color&&(this._dots=document.createElementNS("http://www.w3.org/2000/svg","g"),this._dots.setAttribute("class","dot-color"),this._element.appendChild(this._dots),this._createStyle({color:i.dotsOptions.color,name:"dot-color"}));for(var l=function(e){for(var r=function(r){return t&&!t(e,r)?"continue":(null===(o=f._qr)||void 0===o?void 0:o.isDark(e,r))?(d.draw(h+r*c,u+e*c,c,(function(o,i){return!(e+o<0||r+i<0||e+o>=a||r+i>=a)&&!(t&&!t(e+o,r+i))&&!!n._qr&&n._qr.isDark(e+o,r+i)})),void(d._element&&f._dotsClipPath?f._dotsClipPath.appendChild(d._element):d._element&&f._dots&&f._dots.appendChild(d._element))):"continue"},i=0;ia?s:a,h=document.createElementNS("http://www.w3.org/2000/svg","rect");if(h.setAttribute("x",String(n)),h.setAttribute("y",String(i)),h.setAttribute("height",String(a)),h.setAttribute("width",String(s)),h.setAttribute("clip-path","url('#clip-path-"+c+"')"),e){var d;if(e.type===C)(d=document.createElementNS("http://www.w3.org/2000/svg","radialGradient")).setAttribute("id",c),d.setAttribute("gradientUnits","userSpaceOnUse"),d.setAttribute("fx",String(n+s/2)),d.setAttribute("fy",String(i+a/2)),d.setAttribute("cx",String(n+s/2)),d.setAttribute("cy",String(i+a/2)),d.setAttribute("r",String(u/2));else{var l=((e.rotation||0)+o)%(2*Math.PI),f=(l+2*Math.PI)%(2*Math.PI),p=n+s/2,g=i+a/2,v=n+s/2,w=i+a/2;f>=0&&f<=.25*Math.PI||f>1.75*Math.PI&&f<=2*Math.PI?(p-=s/2,g-=a/2*Math.tan(l),v+=s/2,w+=a/2*Math.tan(l)):f>.25*Math.PI&&f<=.75*Math.PI?(g-=a/2,p-=s/2/Math.tan(l),w+=a/2,v+=s/2/Math.tan(l)):f>.75*Math.PI&&f<=1.25*Math.PI?(p+=s/2,g+=a/2*Math.tan(l),v-=s/2,w-=a/2*Math.tan(l)):f>1.25*Math.PI&&f<=1.75*Math.PI&&(g+=a/2,p+=s/2/Math.tan(l),w-=a/2,v-=s/2/Math.tan(l)),(d=document.createElementNS("http://www.w3.org/2000/svg","linearGradient")).setAttribute("id",c),d.setAttribute("gradientUnits","userSpaceOnUse"),d.setAttribute("x1",String(Math.round(p))),d.setAttribute("y1",String(Math.round(g))),d.setAttribute("x2",String(Math.round(v))),d.setAttribute("y2",String(Math.round(w)))}e.colorStops.forEach((function(t){var e=t.offset,r=t.color,o=document.createElementNS("http://www.w3.org/2000/svg","stop");o.setAttribute("offset",100*e+"%"),o.setAttribute("stop-color",r),d.appendChild(o)})),h.setAttribute("fill","url('#"+c+"')"),this._defs.appendChild(d)}else r&&h.setAttribute("fill",r);this._element.appendChild(h)},t.prototype._createStyle=function(t){var e=t.color,r=t.name;this._style.innerHTML+="."+r+"{ fill: "+e+"; }"},t}(),L="canvas";for(var T={},j=0;j<=40;j++)T[j]=j;const F={type:L,width:300,height:300,data:"",margin:0,qrOptions:{typeNumber:T[0],mode:void 0,errorCorrectionLevel:"Q"},imageOptions:{hideBackgroundDots:!0,imageSize:.4,crossOrigin:void 0,margin:0},dotsOptions:{type:"square",color:"#000"},backgroundOptions:{color:"#fff"}};var Q=function(){return(Q=Object.assign||function(t){for(var e,r=1,o=arguments.length;rMath.min(e.width,e.height)&&(e.margin=Math.min(e.width,e.height)),e.dotsOptions=Q({},e.dotsOptions),e.dotsOptions.gradient&&(e.dotsOptions.gradient=H(e.dotsOptions.gradient)),e.cornersSquareOptions&&(e.cornersSquareOptions=Q({},e.cornersSquareOptions),e.cornersSquareOptions.gradient&&(e.cornersSquareOptions.gradient=H(e.cornersSquareOptions.gradient))),e.cornersDotOptions&&(e.cornersDotOptions=Q({},e.cornersDotOptions),e.cornersDotOptions.gradient&&(e.cornersDotOptions.gradient=H(e.cornersDotOptions.gradient))),e.backgroundOptions&&(e.backgroundOptions=Q({},e.backgroundOptions),e.backgroundOptions.gradient&&(e.backgroundOptions.gradient=H(e.backgroundOptions.gradient))),e}var X=r(192),U=r.n(X),Y=function(t,e,r,o){return new(r||(r=Promise))((function(n,i){function a(t){try{c(o.next(t))}catch(t){i(t)}}function s(t){try{c(o.throw(t))}catch(t){i(t)}}function c(t){var e;t.done?n(t.value):(e=t.value,e instanceof r?e:new r((function(t){t(e)}))).then(a,s)}c((o=o.apply(t,e||[])).next())}))},$=function(t,e){var r,o,n,i,a={label:0,sent:function(){if(1&n[0])throw n[1];return n[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(i){return function(s){return function(i){if(r)throw new TypeError("Generator is already executing.");for(;a;)try{if(r=1,o&&(n=2&i[0]?o.return:i[0]?o.throw||((n=o.return)&&n.call(o),0):o.next)&&!(n=n.call(o,i[1])).done)return n;switch(o=0,n&&(i=[2&i[0],n.value]),i[0]){case 0:case 1:n=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,o=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!((n=(n=a.trys).length>0&&n[n.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!n||i[1]>n[0]&&i[1]\r\n'+o],{type:"image/svg+xml"})]):[2,new Promise((function(r){return e.getCanvas().toBlob(r,"image/"+t,1)}))]}}))}))},t.prototype.download=function(t){return Y(this,void 0,void 0,(function(){var e,r,o,n,i;return $(this,(function(a){switch(a.label){case 0:if(!this._qr)throw"QR code is empty";return e="png",r="qr","string"==typeof t?(e=t,console.warn("Extension is deprecated as argument for 'download' method, please pass object { name: '...', extension: '...' } as argument")):"object"==typeof t&&null!==t&&(t.name&&(r=t.name),t.extension&&(e=t.extension)),[4,this._getQRStylingElement(e)];case 1:return o=a.sent(),"svg"===e.toLowerCase()?(n=new XMLSerializer,i='\r\n'+(i=n.serializeToString(o.getElement())),s("data:image/svg+xml;charset=utf-8,"+encodeURIComponent(i),r+".svg")):s(o.getCanvas().toDataURL("image/"+e),r+"."+e),[2]}}))}))},t}()}},e={};function r(o){if(e[o])return e[o].exports;var n=e[o]={exports:{}};return t[o](n,n.exports,r),n.exports}return r.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return r.d(e,{a:e}),e},r.d=(t,e)=>{for(var o in e)r.o(e,o)&&!r.o(t,o)&&Object.defineProperty(t,o,{enumerable:!0,get:e[o]})},r.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r(796)})().default})); +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.QRCodeStyling=e():t.QRCodeStyling=e()}(self,(function(){return(()=>{var t={192:(t,e)=>{var r,o,n=function(){var t=function(t,e){var r=t,o=a[e],n=null,i=0,c=null,v=[],w={},_=function(t,e){n=function(t){for(var e=new Array(t),r=0;r=7&&M(t),null==c&&(c=P(r,o,v)),C(c,e)},m=function(t,e){for(var r=-1;r<=7;r+=1)if(!(t+r<=-1||i<=t+r))for(var o=-1;o<=7;o+=1)e+o<=-1||i<=e+o||(n[t+r][e+o]=0<=r&&r<=6&&(0==o||6==o)||0<=o&&o<=6&&(0==r||6==r)||2<=r&&r<=4&&2<=o&&o<=4)},b=function(){for(var t=8;t>o&1);n[Math.floor(o/3)][o%3+i-8-3]=a}for(o=0;o<18;o+=1)a=!t&&1==(e>>o&1),n[o%3+i-8-3][Math.floor(o/3)]=a},S=function(t,e){for(var r=o<<3|e,a=s.getBCHTypeInfo(r),c=0;c<15;c+=1){var u=!t&&1==(a>>c&1);c<6?n[c][8]=u:c<8?n[c+1][8]=u:n[i-15+c][8]=u}for(c=0;c<15;c+=1)u=!t&&1==(a>>c&1),c<8?n[8][i-c-1]=u:c<9?n[8][15-c-1+1]=u:n[8][15-c-1]=u;n[i-8][8]=!t},C=function(t,e){for(var r=-1,o=i-1,a=7,c=0,u=s.getMaskFunction(e),h=i-1;h>0;h-=2)for(6==h&&(h-=1);;){for(var d=0;d<2;d+=1)if(null==n[o][h-d]){var l=!1;c>>a&1)),u(o,h-d)&&(l=!l),n[o][h-d]=l,-1==(a-=1)&&(c+=1,a=7)}if((o+=r)<0||i<=o){o-=r,r=-r;break}}},P=function(t,e,r){for(var o=h.getRSBlocks(t,e),n=d(),i=0;i8*c)throw"code length overflow. ("+n.getLengthInBits()+">"+8*c+")";for(n.getLengthInBits()+4<=8*c&&n.put(0,4);n.getLengthInBits()%8!=0;)n.putBit(!1);for(;!(n.getLengthInBits()>=8*c||(n.put(236,8),n.getLengthInBits()>=8*c));)n.put(17,8);return function(t,e){for(var r=0,o=0,n=0,i=new Array(e.length),a=new Array(e.length),c=0;c=0?p.getAt(g):0}}var v=0;for(l=0;lo)&&(t=o,e=r)}return e}())},w.createTableTag=function(t,e){t=t||2;var r="";r+='',r+="";for(var o=0;o";for(var n=0;n';r+=""}return(r+="")+"
"},w.createSvgTag=function(t,e,r,o){var n={};"object"==typeof arguments[0]&&(t=(n=arguments[0]).cellSize,e=n.margin,r=n.alt,o=n.title),t=t||2,e=void 0===e?4*t:e,(r="string"==typeof r?{text:r}:r||{}).text=r.text||null,r.id=r.text?r.id||"qrcode-description":null,(o="string"==typeof o?{text:o}:o||{}).text=o.text||null,o.id=o.text?o.id||"qrcode-title":null;var i,a,s,c,u=w.getModuleCount()*t+2*e,h="";for(c="l"+t+",0 0,"+t+" -"+t+",0 0,-"+t+"z ",h+=''+O(o.text)+"":"",h+=r.text?''+O(r.text)+"":"",h+='',h+='"},w.createDataURL=function(t,e){t=t||2,e=void 0===e?4*t:e;var r=w.getModuleCount()*t+2*e,o=e,n=r-e;return y(r,r,(function(e,r){if(o<=e&&e"};var O=function(t){for(var e="",r=0;r":e+=">";break;case"&":e+="&";break;case'"':e+=""";break;default:e+=o}}return e};return w.createASCII=function(t,e){if((t=t||1)<2)return function(t){t=void 0===t?2:t;var e,r,o,n,i,a=1*w.getModuleCount()+2*t,s=t,c=a-t,u={"██":"█","█ ":"▀"," █":"▄"," ":" "},h={"██":"▀","█ ":"▀"," █":" "," ":" "},d="";for(e=0;e=c?h[i]:u[i];d+="\n"}return a%2&&t>0?d.substring(0,d.length-a-1)+Array(a+1).join("▀"):d.substring(0,d.length-1)}(e);t-=1,e=void 0===e?2*t:e;var r,o,n,i,a=w.getModuleCount()*t+2*e,s=e,c=a-e,u=Array(t+1).join("██"),h=Array(t+1).join(" "),d="",l="";for(r=0;r>>8),e.push(255&a)):e.push(o)}}return e}};var e,r,o,n,i,a={L:1,M:0,Q:3,H:2},s=(e=[[],[6,18],[6,22],[6,26],[6,30],[6,34],[6,22,38],[6,24,42],[6,26,46],[6,28,50],[6,30,54],[6,32,58],[6,34,62],[6,26,46,66],[6,26,48,70],[6,26,50,74],[6,30,54,78],[6,30,56,82],[6,30,58,86],[6,34,62,90],[6,28,50,72,94],[6,26,50,74,98],[6,30,54,78,102],[6,28,54,80,106],[6,32,58,84,110],[6,30,58,86,114],[6,34,62,90,118],[6,26,50,74,98,122],[6,30,54,78,102,126],[6,26,52,78,104,130],[6,30,56,82,108,134],[6,34,60,86,112,138],[6,30,58,86,114,142],[6,34,62,90,118,146],[6,30,54,78,102,126,150],[6,24,50,76,102,128,154],[6,28,54,80,106,132,158],[6,32,58,84,110,136,162],[6,26,54,82,110,138,166],[6,30,58,86,114,142,170]],r=1335,o=7973,i=function(t){for(var e=0;0!=t;)e+=1,t>>>=1;return e},(n={}).getBCHTypeInfo=function(t){for(var e=t<<10;i(e)-i(r)>=0;)e^=r<=0;)e^=o<5&&(r+=3+i-5)}for(o=0;o=256;)e-=255;return t[e]}}}();function u(t,e){if(void 0===t.length)throw t.length+"/"+e;var r=function(){for(var r=0;r>>7-e%8&1)},put:function(t,e){for(var o=0;o>>e-o-1&1))},getLengthInBits:function(){return e},putBit:function(r){var o=Math.floor(e/8);t.length<=o&&t.push(0),r&&(t[o]|=128>>>e%8),e+=1}};return r},l=function(t){var e=t,r={getMode:function(){return 1},getLength:function(t){return e.length},write:function(t){for(var r=e,n=0;n+2>>8&255)+(255&n),t.put(n,13),r+=2}if(r>>8)},writeBytes:function(t,r,o){r=r||0,o=o||t.length;for(var n=0;n0&&(e+=","),e+=t[r];return e+"]"}};return e},w=function(t){var e=t,r=0,o=0,n=0,i={read:function(){for(;n<8;){if(r>=e.length){if(0==n)return-1;throw"unexpected end of file./"+n}var t=e.charAt(r);if(r+=1,"="==t)return n=0,-1;t.match(/^\s$/)||(o=o<<6|a(t.charCodeAt(0)),n+=6)}var i=o>>>n-8&255;return n-=8,i}},a=function(t){if(65<=t&&t<=90)return t-65;if(97<=t&&t<=122)return t-97+26;if(48<=t&&t<=57)return t-48+52;if(43==t)return 62;if(47==t)return 63;throw"c:"+t};return i},y=function(t,e,r){for(var o=function(t,e){var r=t,o=e,n=new Array(t*e),i={setPixel:function(t,e,o){n[e*r+t]=o},write:function(t){t.writeString("GIF87a"),t.writeShort(r),t.writeShort(o),t.writeByte(128),t.writeByte(0),t.writeByte(0),t.writeByte(0),t.writeByte(0),t.writeByte(0),t.writeByte(255),t.writeByte(255),t.writeByte(255),t.writeString(","),t.writeShort(0),t.writeShort(0),t.writeShort(r),t.writeShort(o),t.writeByte(0);var e=a(2);t.writeByte(2);for(var n=0;e.length-n>255;)t.writeByte(255),t.writeBytes(e,n,255),n+=255;t.writeByte(e.length-n),t.writeBytes(e,n,e.length-n),t.writeByte(0),t.writeString(";")}},a=function(t){for(var e=1<>>e!=0)throw"length over";for(;u+e>=8;)c.writeByte(255&(t<>>=8-u,h=0,u=0;h|=t<0&&c.writeByte(h)}});l.write(e,o);var f=0,p=String.fromCharCode(n[f]);for(f+=1;f=6;)i(t>>>e-6),e-=6},n.flush=function(){if(e>0&&(i(t<<6-e),t=0,e=0),r%3!=0)for(var n=3-r%3,a=0;a>6,128|63&o):o<55296||o>=57344?e.push(224|o>>12,128|o>>6&63,128|63&o):(r++,o=65536+((1023&o)<<10|1023&t.charCodeAt(r)),e.push(240|o>>18,128|o>>12&63,128|o>>6&63,128|63&o))}return e}(t)},void 0===(o="function"==typeof(r=function(){return n})?r.apply(e,[]):r)||(t.exports=o)},796:(t,e,r)=>{"use strict";r.d(e,{default:()=>W});var o=function(){return(o=Object.assign||function(t){for(var e,r=1,o=arguments.length;ro||n&&n2||a&&s||c&&u)this._basicSquare({x:e,y:r,size:o,context:n,rotation:0});else{if(2===h){var d=0;return a&&c?d=Math.PI/2:c&&s?d=Math.PI:s&&u&&(d=-Math.PI/2),void this._basicCornerRounded({x:e,y:r,size:o,context:n,rotation:d})}if(1===h)return d=0,c?d=Math.PI/2:s?d=Math.PI:u&&(d=-Math.PI/2),void this._basicSideRounded({x:e,y:r,size:o,context:n,rotation:d})}else this._basicDot({x:e,y:r,size:o,context:n,rotation:0})},t.prototype._drawExtraRounded=function(t){var e=t.x,r=t.y,o=t.size,n=t.context,i=t.getNeighbor,a=i?+i(-1,0):0,s=i?+i(1,0):0,c=i?+i(0,-1):0,u=i?+i(0,1):0,h=a+s+c+u;if(0!==h)if(h>2||a&&s||c&&u)this._basicSquare({x:e,y:r,size:o,context:n,rotation:0});else{if(2===h){var d=0;return a&&c?d=Math.PI/2:c&&s?d=Math.PI:s&&u&&(d=-Math.PI/2),void this._basicCornerExtraRounded({x:e,y:r,size:o,context:n,rotation:d})}if(1===h)return d=0,c?d=Math.PI/2:s?d=Math.PI:u&&(d=-Math.PI/2),void this._basicSideRounded({x:e,y:r,size:o,context:n,rotation:d})}else this._basicDot({x:e,y:r,size:o,context:n,rotation:0})},t.prototype._drawClassy=function(t){var e=t.x,r=t.y,o=t.size,n=t.context,i=t.getNeighbor,a=i?+i(-1,0):0,s=i?+i(1,0):0,c=i?+i(0,-1):0,u=i?+i(0,1):0;0!==a+s+c+u?a||c?s||u?this._basicSquare({x:e,y:r,size:o,context:n,rotation:0}):this._basicCornerRounded({x:e,y:r,size:o,context:n,rotation:Math.PI/2}):this._basicCornerRounded({x:e,y:r,size:o,context:n,rotation:-Math.PI/2}):this._basicCornersRounded({x:e,y:r,size:o,context:n,rotation:Math.PI/2})},t.prototype._drawClassyRounded=function(t){var e=t.x,r=t.y,o=t.size,n=t.context,i=t.getNeighbor,a=i?+i(-1,0):0,s=i?+i(1,0):0,c=i?+i(0,-1):0,u=i?+i(0,1):0;0!==a+s+c+u?a||c?s||u?this._basicSquare({x:e,y:r,size:o,context:n,rotation:0}):this._basicCornerExtraRounded({x:e,y:r,size:o,context:n,rotation:Math.PI/2}):this._basicCornerExtraRounded({x:e,y:r,size:o,context:n,rotation:-Math.PI/2}):this._basicCornersRounded({x:e,y:r,size:o,context:n,rotation:Math.PI/2})},t}(),y="square",_="extra-rounded";var m=function(){return(m=Object.assign||function(t){for(var e,r=1,o=arguments.length;r0&&n[n.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!n||i[1]>n[0]&&i[1]=(e-n.hideXDots)/2&&t<(e+n.hideXDots)/2&&r>=(e-n.hideYDots)/2&&r<(e+n.hideYDots)/2||(null===(o=P[t])||void 0===o?void 0:o[r])||(null===(i=P[t-e+7])||void 0===i?void 0:i[r])||(null===(a=P[t])||void 0===a?void 0:a[r-e+7])||(null===(s=O[t])||void 0===s?void 0:s[r])||(null===(c=O[t-e+7])||void 0===c?void 0:c[r])||(null===(u=O[t])||void 0===u?void 0:u[r-e+7]))})),this.drawCorners(),this._options.image&&this.drawImage({width:n.width,height:n.height,count:e,dotSize:o}),[2]}}))},new((o=void 0)||(o=Promise))((function(t,i){function a(t){try{c(n.next(t))}catch(t){i(t)}}function s(t){try{c(n.throw(t))}catch(t){i(t)}}function c(e){var r;e.done?t(e.value):(r=e.value,r instanceof o?r:new o((function(t){t(r)}))).then(a,s)}c((n=n.apply(e,r||[])).next())}));var e,r,o,n},t.prototype.drawBackground=function(){var t=this.context,e=this._options;if(t){if(e.backgroundOptions.gradient){var r=e.backgroundOptions.gradient,o=this._createGradient({context:t,options:r,additionalRotation:0,x:0,y:0,size:this._canvas.width>this._canvas.height?this._canvas.width:this._canvas.height});r.colorStops.forEach((function(t){var e=t.offset,r=t.color;o.addColorStop(e,r)})),t.fillStyle=o}else e.backgroundOptions.color&&(t.fillStyle=e.backgroundOptions.color);t.fillRect(0,0,this._canvas.width,this._canvas.height)}},t.prototype.drawDots=function(t){var e=this;if(!this._qr)throw"QR code is not defined";var r=this.context;if(!r)throw"QR code is not defined";var o=this._options,n=this._qr.getModuleCount();if(n>o.width||n>o.height)throw"The canvas is too small.";var i=Math.min(o.width,o.height)-2*o.margin,a=Math.floor(i/n),s=Math.floor((o.width-n*a)/2),c=Math.floor((o.height-n*a)/2),u=new w({context:r,type:o.dotsOptions.type});r.beginPath();for(var h=function(r){for(var o=function(o){return t&&!t(r,o)?"continue":d._qr.isDark(r,o)?void u.draw(c+o*a,s+r*a,a,(function(i,a){return!(r+i<0||o+a<0||r+i>=n||o+a>=n)&&!(t&&!t(r+i,o+a))&&!!e._qr&&e._qr.isDark(r+i,o+a)})):"continue"},i=0;i=0&&u<=.25*Math.PI||u>1.75*Math.PI&&u<=2*Math.PI?(h-=s/2,d-=s/2*Math.tan(c),l+=s/2,f+=s/2*Math.tan(c)):u>.25*Math.PI&&u<=.75*Math.PI?(d-=s/2,h-=s/2/Math.tan(c),f+=s/2,l+=s/2/Math.tan(c)):u>.75*Math.PI&&u<=1.25*Math.PI?(h+=s/2,d+=s/2*Math.tan(c),l-=s/2,f-=s/2*Math.tan(c)):u>1.25*Math.PI&&u<=1.75*Math.PI&&(d+=s/2,h+=s/2/Math.tan(c),f-=s/2,l-=s/2/Math.tan(c)),e=r.createLinearGradient(Math.round(h),Math.round(d),Math.round(l),Math.round(f))}return e},t}();var z=function(){return(z=Object.assign||function(t){for(var e,r=1,o=arguments.length;r2||i&&a||s&&c)this._basicSquare({x:e,y:r,size:o,rotation:0});else{if(2===u){var h=0;return i&&s?h=Math.PI/2:s&&a?h=Math.PI:a&&c&&(h=-Math.PI/2),void this._basicCornerRounded({x:e,y:r,size:o,rotation:h})}if(1===u)return h=0,s?h=Math.PI/2:a?h=Math.PI:c&&(h=-Math.PI/2),void this._basicSideRounded({x:e,y:r,size:o,rotation:h})}else this._basicDot({x:e,y:r,size:o,rotation:0})},t.prototype._drawExtraRounded=function(t){var e=t.x,r=t.y,o=t.size,n=t.getNeighbor,i=n?+n(-1,0):0,a=n?+n(1,0):0,s=n?+n(0,-1):0,c=n?+n(0,1):0,u=i+a+s+c;if(0!==u)if(u>2||i&&a||s&&c)this._basicSquare({x:e,y:r,size:o,rotation:0});else{if(2===u){var h=0;return i&&s?h=Math.PI/2:s&&a?h=Math.PI:a&&c&&(h=-Math.PI/2),void this._basicCornerExtraRounded({x:e,y:r,size:o,rotation:h})}if(1===u)return h=0,s?h=Math.PI/2:a?h=Math.PI:c&&(h=-Math.PI/2),void this._basicSideRounded({x:e,y:r,size:o,rotation:h})}else this._basicDot({x:e,y:r,size:o,rotation:0})},t.prototype._drawClassy=function(t){var e=t.x,r=t.y,o=t.size,n=t.getNeighbor,i=n?+n(-1,0):0,a=n?+n(1,0):0,s=n?+n(0,-1):0,c=n?+n(0,1):0;0!==i+a+s+c?i||s?a||c?this._basicSquare({x:e,y:r,size:o,rotation:0}):this._basicCornerRounded({x:e,y:r,size:o,rotation:Math.PI/2}):this._basicCornerRounded({x:e,y:r,size:o,rotation:-Math.PI/2}):this._basicCornersRounded({x:e,y:r,size:o,rotation:Math.PI/2})},t.prototype._drawClassyRounded=function(t){var e=t.x,r=t.y,o=t.size,n=t.getNeighbor,i=n?+n(-1,0):0,a=n?+n(1,0):0,s=n?+n(0,-1):0,c=n?+n(0,1):0;0!==i+a+s+c?i||s?a||c?this._basicSquare({x:e,y:r,size:o,rotation:0}):this._basicCornerExtraRounded({x:e,y:r,size:o,rotation:Math.PI/2}):this._basicCornerExtraRounded({x:e,y:r,size:o,rotation:-Math.PI/2}):this._basicCornersRounded({x:e,y:r,size:o,rotation:Math.PI/2})},t}();var I=function(){return(I=Object.assign||function(t){for(var e,r=1,o=arguments.length;r0&&n[n.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!n||i[1]>n[0]&&i[1]=(e-n.hideXDots)/2&&t<(e+n.hideXDots)/2&&r>=(e-n.hideYDots)/2&&r<(e+n.hideYDots)/2||(null===(o=B[t])||void 0===o?void 0:o[r])||(null===(i=B[t-e+7])||void 0===i?void 0:i[r])||(null===(a=B[t])||void 0===a?void 0:a[r-e+7])||(null===(s=E[t])||void 0===s?void 0:s[r])||(null===(c=E[t-e+7])||void 0===c?void 0:c[r])||(null===(u=E[t])||void 0===u?void 0:u[r-e+7]))})),this.drawCorners(),this._options.image&&this.drawImage({width:n.width,height:n.height,count:e,dotSize:o}),[2]}}))},new((o=void 0)||(o=Promise))((function(t,i){function a(t){try{c(n.next(t))}catch(t){i(t)}}function s(t){try{c(n.throw(t))}catch(t){i(t)}}function c(e){var r;e.done?t(e.value):(r=e.value,r instanceof o?r:new o((function(t){t(r)}))).then(a,s)}c((n=n.apply(e,r||[])).next())}));var e,r,o,n},t.prototype.drawBackground=function(){var t,e,r,o=this._element,n=this._options;if(o){var i=null===(t=n.backgroundOptions)||void 0===t?void 0:t.gradient,a=null===(e=n.backgroundOptions)||void 0===e?void 0:e.color;i?this._createColor({options:i,color:a,additionalRotation:0,x:0,y:0,height:n.height,width:n.width,name:"background-color"}):(null===(r=n.backgroundOptions)||void 0===r?void 0:r.color)&&this._createStyle({color:a,name:"background-color"})}},t.prototype.drawDots=function(t){var e,r,o,n=this;if(!this._qr)throw"QR code is not defined";var i=this._options,a=this._qr.getModuleCount();if(a>i.width||a>i.height)throw"The canvas is too small.";var s=Math.min(i.width,i.height)-2*i.margin,c=Math.floor(s/a),u=Math.floor((i.width-a*c)/2),h=Math.floor((i.height-a*c)/2),d=new A({svg:this._element,type:i.dotsOptions.type});(null===(e=i.dotsOptions)||void 0===e?void 0:e.gradient)?(this._dotsClipPath=document.createElementNS("http://www.w3.org/2000/svg","clipPath"),this._dotsClipPath.setAttribute("id","clip-path-dot-color"),this._defs.appendChild(this._dotsClipPath),this._createColor({options:null===(r=i.dotsOptions)||void 0===r?void 0:r.gradient,color:i.dotsOptions.color,additionalRotation:0,x:u,y:h,height:a*c,width:a*c,name:"dot-color"})):i.dotsOptions.color&&(this._dots=document.createElementNS("http://www.w3.org/2000/svg","g"),this._dots.setAttribute("class","dot-color"),this._element.appendChild(this._dots),this._createStyle({color:i.dotsOptions.color,name:"dot-color"}));for(var l=function(e){for(var r=function(r){return t&&!t(e,r)?"continue":(null===(o=f._qr)||void 0===o?void 0:o.isDark(e,r))?(d.draw(h+r*c,u+e*c,c,(function(o,i){return!(e+o<0||r+i<0||e+o>=a||r+i>=a)&&!(t&&!t(e+o,r+i))&&!!n._qr&&n._qr.isDark(e+o,r+i)})),void(d._element&&f._dotsClipPath?f._dotsClipPath.appendChild(d._element):d._element&&f._dots&&f._dots.appendChild(d._element))):"continue"},i=0;ia?s:a,h=document.createElementNS("http://www.w3.org/2000/svg","rect");if(h.setAttribute("x",String(n)),h.setAttribute("y",String(i)),h.setAttribute("height",String(a)),h.setAttribute("width",String(s)),h.setAttribute("clip-path","url('#clip-path-"+c+"')"),e){var d;if(e.type===C)(d=document.createElementNS("http://www.w3.org/2000/svg","radialGradient")).setAttribute("id",c),d.setAttribute("gradientUnits","userSpaceOnUse"),d.setAttribute("fx",String(n+s/2)),d.setAttribute("fy",String(i+a/2)),d.setAttribute("cx",String(n+s/2)),d.setAttribute("cy",String(i+a/2)),d.setAttribute("r",String(u/2));else{var l=((e.rotation||0)+o)%(2*Math.PI),f=(l+2*Math.PI)%(2*Math.PI),p=n+s/2,g=i+a/2,v=n+s/2,w=i+a/2;f>=0&&f<=.25*Math.PI||f>1.75*Math.PI&&f<=2*Math.PI?(p-=s/2,g-=a/2*Math.tan(l),v+=s/2,w+=a/2*Math.tan(l)):f>.25*Math.PI&&f<=.75*Math.PI?(g-=a/2,p-=s/2/Math.tan(l),w+=a/2,v+=s/2/Math.tan(l)):f>.75*Math.PI&&f<=1.25*Math.PI?(p+=s/2,g+=a/2*Math.tan(l),v-=s/2,w-=a/2*Math.tan(l)):f>1.25*Math.PI&&f<=1.75*Math.PI&&(g+=a/2,p+=s/2/Math.tan(l),w-=a/2,v-=s/2/Math.tan(l)),(d=document.createElementNS("http://www.w3.org/2000/svg","linearGradient")).setAttribute("id",c),d.setAttribute("gradientUnits","userSpaceOnUse"),d.setAttribute("x1",String(Math.round(p))),d.setAttribute("y1",String(Math.round(g))),d.setAttribute("x2",String(Math.round(v))),d.setAttribute("y2",String(Math.round(w)))}e.colorStops.forEach((function(t){var e=t.offset,r=t.color,o=document.createElementNS("http://www.w3.org/2000/svg","stop");o.setAttribute("offset",100*e+"%"),o.setAttribute("stop-color",r),d.appendChild(o)})),h.setAttribute("fill","url('#"+c+"')"),this._defs.appendChild(d)}else r&&h.setAttribute("fill",r);this._element.appendChild(h)},t.prototype._createStyle=function(t){var e=t.color,r=t.name;this._style.innerHTML+="."+r+"{ fill: "+e+"; }"},t}(),L="canvas";for(var T={},j=0;j<=40;j++)T[j]=j;const F={type:L,width:300,height:300,data:"",margin:0,qrOptions:{typeNumber:T[0],mode:void 0,errorCorrectionLevel:"Q"},imageOptions:{hideBackgroundDots:!0,imageSize:.4,crossOrigin:void 0,margin:0},dotsOptions:{type:"square",color:"#000"},backgroundOptions:{color:"#fff"}};var Q=function(){return(Q=Object.assign||function(t){for(var e,r=1,o=arguments.length;rMath.min(e.width,e.height)&&(e.margin=Math.min(e.width,e.height)),e.dotsOptions=Q({},e.dotsOptions),e.dotsOptions.gradient&&(e.dotsOptions.gradient=H(e.dotsOptions.gradient)),e.cornersSquareOptions&&(e.cornersSquareOptions=Q({},e.cornersSquareOptions),e.cornersSquareOptions.gradient&&(e.cornersSquareOptions.gradient=H(e.cornersSquareOptions.gradient))),e.cornersDotOptions&&(e.cornersDotOptions=Q({},e.cornersDotOptions),e.cornersDotOptions.gradient&&(e.cornersDotOptions.gradient=H(e.cornersDotOptions.gradient))),e.backgroundOptions&&(e.backgroundOptions=Q({},e.backgroundOptions),e.backgroundOptions.gradient&&(e.backgroundOptions.gradient=H(e.backgroundOptions.gradient))),e}var X=r(192),U=r.n(X),Y=function(t,e,r,o){return new(r||(r=Promise))((function(n,i){function a(t){try{c(o.next(t))}catch(t){i(t)}}function s(t){try{c(o.throw(t))}catch(t){i(t)}}function c(t){var e;t.done?n(t.value):(e=t.value,e instanceof r?e:new r((function(t){t(e)}))).then(a,s)}c((o=o.apply(t,e||[])).next())}))},$=function(t,e){var r,o,n,i,a={label:0,sent:function(){if(1&n[0])throw n[1];return n[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(i){return function(s){return function(i){if(r)throw new TypeError("Generator is already executing.");for(;a;)try{if(r=1,o&&(n=2&i[0]?o.return:i[0]?o.throw||((n=o.return)&&n.call(o),0):o.next)&&!(n=n.call(o,i[1])).done)return n;switch(o=0,n&&(i=[2&i[0],n.value]),i[0]){case 0:case 1:n=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,o=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!((n=(n=a.trys).length>0&&n[n.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!n||i[1]>n[0]&&i[1]\r\n'+o],{type:"image/svg+xml"})]):[2,new Promise((function(r){return e.getCanvas().toBlob(r,"image/"+t,1)}))]}}))}))},t.prototype.download=function(t){return Y(this,void 0,void 0,(function(){var e,r,o,n,i;return $(this,(function(a){switch(a.label){case 0:if(!this._qr)throw"QR code is empty";return e="png",r="qr","string"==typeof t?(e=t,console.warn("Extension is deprecated as argument for 'download' method, please pass object { name: '...', extension: '...' } as argument")):"object"==typeof t&&null!==t&&(t.name&&(r=t.name),t.extension&&(e=t.extension)),[4,this._getQRStylingElement(e)];case 1:return o=a.sent(),"svg"===e.toLowerCase()?(n=new XMLSerializer,i='\r\n'+(i=n.serializeToString(o.getElement())),s("data:image/svg+xml;charset=utf-8,"+encodeURIComponent(i),r+".svg")):s(o.getCanvas().toDataURL("image/"+e),r+"."+e),[2]}}))}))},t}()}},e={};function r(o){if(e[o])return e[o].exports;var n=e[o]={exports:{}};return t[o](n,n.exports,r),n.exports}return r.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return r.d(e,{a:e}),e},r.d=(t,e)=>{for(var o in e)r.o(e,o)&&!r.o(t,o)&&Object.defineProperty(t,o,{enumerable:!0,get:e[o]})},r.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r(796)})().default})); //# sourceMappingURL=qr-code-styling.js.map \ No newline at end of file diff --git a/lib/qr-code-styling.js.map b/lib/qr-code-styling.js.map index f81ce016..d6aa0a8a 100644 --- a/lib/qr-code-styling.js.map +++ b/lib/qr-code-styling.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://QRCodeStyling/webpack/universalModuleDefinition","webpack://QRCodeStyling/./node_modules/qrcode-generator/qrcode.js","webpack://QRCodeStyling/./src/tools/merge.ts","webpack://QRCodeStyling/./src/tools/downloadURI.ts","webpack://QRCodeStyling/./src/tools/calculateImageSize.ts","webpack://QRCodeStyling/./src/constants/errorCorrectionPercents.ts","webpack://QRCodeStyling/./src/constants/dotTypes.ts","webpack://QRCodeStyling/./src/figures/dot/canvas/QRDot.ts","webpack://QRCodeStyling/./src/constants/cornerSquareTypes.ts","webpack://QRCodeStyling/./src/figures/cornerSquare/canvas/QRCornerSquare.ts","webpack://QRCodeStyling/./src/constants/cornerDotTypes.ts","webpack://QRCodeStyling/./src/figures/cornerDot/canvas/QRCornerDot.ts","webpack://QRCodeStyling/./src/constants/gradientTypes.ts","webpack://QRCodeStyling/./src/core/QRCanvas.ts","webpack://QRCodeStyling/./src/figures/dot/svg/QRDot.ts","webpack://QRCodeStyling/./src/figures/cornerSquare/svg/QRCornerSquare.ts","webpack://QRCodeStyling/./src/figures/cornerDot/svg/QRCornerDot.ts","webpack://QRCodeStyling/./src/core/QRSVG.ts","webpack://QRCodeStyling/./src/constants/drawTypes.ts","webpack://QRCodeStyling/./src/constants/qrTypes.ts","webpack://QRCodeStyling/./src/core/QROptions.ts","webpack://QRCodeStyling/./src/constants/errorCorrectionLevels.ts","webpack://QRCodeStyling/./src/tools/sanitizeOptions.ts","webpack://QRCodeStyling/./src/index.ts","webpack://QRCodeStyling/./src/core/QRCodeStyling.ts","webpack://QRCodeStyling/./src/tools/getMode.ts","webpack://QRCodeStyling/./src/constants/modes.ts","webpack://QRCodeStyling/webpack/bootstrap","webpack://QRCodeStyling/webpack/startup","webpack://QRCodeStyling/webpack/runtime/compat get default export","webpack://QRCodeStyling/webpack/runtime/define property getters","webpack://QRCodeStyling/webpack/runtime/hasOwnProperty shorthand"],"names":["root","factory","exports","module","define","amd","self","qrcode","typeNumber","errorCorrectionLevel","_typeNumber","_errorCorrectionLevel","QRErrorCorrectionLevel","_modules","_moduleCount","_dataCache","_dataList","_this","makeImpl","test","maskPattern","moduleCount","modules","Array","row","col","setupPositionProbePattern","setupPositionAdjustPattern","setupTimingPattern","setupTypeInfo","setupTypeNumber","createData","mapData","r","c","pos","QRUtil","getPatternPosition","i","length","j","bits","getBCHTypeNumber","mod","Math","floor","data","getBCHTypeInfo","inc","bitIndex","byteIndex","maskFunc","getMaskFunction","dark","dataList","rsBlocks","QRRSBlock","getRSBlocks","buffer","qrBitBuffer","put","getMode","getLength","getLengthInBits","write","totalDataCount","dataCount","putBit","offset","maxDcCount","maxEcCount","dcdata","ecdata","dcCount","ecCount","totalCount","max","getBuffer","rsPoly","getErrorCorrectPolynomial","modPoly","qrPolynomial","modIndex","getAt","totalCodeCount","index","createBytes","addData","mode","newData","qrNumber","qrAlphaNum","qr8BitByte","qrKanji","push","isDark","getModuleCount","make","minLostPoint","pattern","lostPoint","getLostPoint","getBestMaskPattern","createTableTag","cellSize","margin","qrHtml","createSvgTag","alt","title","opts","arguments","text","id","mr","rect","size","qrSvg","scalable","escapeXml","join","trim","createDataURL","min","x","y","createImgTag","img","s","escaped","charAt","createASCII","r1","r2","p","blocks","blocksLastLineNoMargin","ascii","substring","_createHalfASCII","white","black","line","renderTo2dContext","context","fillStyle","fillRect","stringToBytes","stringToBytesFuncs","bytes","charCodeAt","createStringToBytes","unicodeData","numChars","unicodeMap","bin","base64DecodeInputStream","read","b","count","b0","b1","v","String","fromCharCode","unknownChar","PATTERN_POSITION_TABLE","G15","G18","getBCHDigit","L","M","Q","H","digit","d","errorCorrectLength","a","multiply","QRMath","gexp","type","sameCount","darkCount","abs","EXP_TABLE","LOG_TABLE","n","num","shift","_num","e","glog","ratio","RS_BLOCK_TABLE","qrRSBlock","rsBlock","getRsBlockTable","list","_buffer","_length","bufIndex","bit","_data","strToNum","chatToNum","getCode","_bytes","code","byteArrayOutputStream","writeByte","off","len","str","_str","_pos","_buflen","match","decode","width","height","getPixel","gif","_width","_height","pixel","out","writeString","writeShort","raster","getLZWRaster","writeBytes","lzwMinCodeSize","clearCode","endCode","bitLength","table","lzwTable","add","_out","_bitLength","_bitBuffer","byteOut","bitOut","dataIndex","contains","indexOf","flush","toByteArray","_map","_size","key","gifImage","setPixel","base64","_base64","writeEncoded","encode","padlen","toString","base64EncodeOutputStream","utf8","charcode","toUTF8Array","isObject","obj","isArray","mergeDeep","target","sources","source","undefined","Object","keys","forEach","targetValue","sourceValue","assign","downloadURI","uri","name","link","document","createElement","download","href","body","appendChild","click","removeChild","calculateImageSize","originalHeight","originalWidth","maxHiddenDots","maxHiddenAxisDots","dotSize","hideDots","imageSize","hideYDots","hideXDots","k","sqrt","ceil","round","this","_context","_type","draw","getNeighbor","drawFunction","dotTypes","_drawDot","_drawClassy","_drawClassyRounded","_drawRounded","_drawExtraRounded","_drawSquare","call","_rotateFigure","rotation","cx","cy","translate","rotate","closePath","_basicDot","args","arc","PI","_basicSquare","_basicSideRounded","lineTo","_basicCornerRounded","_basicCornerExtraRounded","_basicCornersRounded","_basicCornersExtraRounded","leftNeighbor","rightNeighbor","topNeighbor","bottomNeighbor","neighborsCount","cornerSquareTypes","_basicExtraRounded","cornerDotTypes","squareMask","dotMask","options","_canvas","_options","getContext","getCanvas","clear","canvasContext","clearRect","drawQR","qr","minSize","drawImageSize","_qr","image","loadImage","_image","imageOptions","qrOptions","coverLevel","errorCorrectionPercents","drawBackground","drawDots","hideBackgroundDots","drawCorners","drawImage","backgroundOptions","gradient","gradientOptions","_createGradient","additionalRotation","colorStops","color","addColorStop","filter","xBeginning","yBeginning","dot","dotsOptions","beginPath","xOffset","yOffset","strokeStyle","fill","cornersSquareSize","cornersDotSize","column","cornersSquareOptions","cornersSquare","cornersDotOptions","cornersDot","Promise","resolve","reject","Image","crossOrigin","onload","src","dx","dy","dw","dh","gradientTypes","createRadialGradient","positiveRotation","x0","y0","x1","y1","tan","createLinearGradient","svg","_svg","_element","setAttribute","createElementNS","_defs","_style","getElement","oldElement","cloneNode","parentNode","replaceChild","element","_createColor","_createStyle","_dotsClipPath","_dots","cornersSquareClipPath","cornersDotClipPath","_cornersSquareClipPath","_cornersDotClipPath","_cornerSquares","_cornerDots","stop","innerHTML","qrTypes","drawTypes","sanitizeGradient","newGradient","Number","map","colorStop","sanitizeOptions","newOptions","Boolean","update","_clearContainer","container","_getQRStylingElement","extension","toLowerCase","promise","_svgDrawingPromise","canvas","_canvasDrawingPromise","QRCodeStyling","_container","append","getRawData","serializer","XMLSerializer","serializeToString","Blob","toBlob","downloadOptions","console","warn","encodeURIComponent","toDataURL","__webpack_module_cache__","__webpack_require__","moduleId","__webpack_modules__","getter","__esModule","definition","o","defineProperty","enumerable","get","prop","prototype","hasOwnProperty"],"mappings":"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","file":"qr-code-styling.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"QRCodeStyling\"] = factory();\n\telse\n\t\troot[\"QRCodeStyling\"] = factory();\n})(self, function() {\nreturn ","//---------------------------------------------------------------------\n//\n// QR Code Generator for JavaScript\n//\n// Copyright (c) 2009 Kazuhiko Arase\n//\n// URL: http://www.d-project.com/\n//\n// Licensed under the MIT license:\n// http://www.opensource.org/licenses/mit-license.php\n//\n// The word 'QR Code' is registered trademark of\n// DENSO WAVE INCORPORATED\n// http://www.denso-wave.com/qrcode/faqpatent-e.html\n//\n//---------------------------------------------------------------------\n\nvar qrcode = function() {\n\n //---------------------------------------------------------------------\n // qrcode\n //---------------------------------------------------------------------\n\n /**\n * qrcode\n * @param typeNumber 1 to 40\n * @param errorCorrectionLevel 'L','M','Q','H'\n */\n var qrcode = function(typeNumber, errorCorrectionLevel) {\n\n var PAD0 = 0xEC;\n var PAD1 = 0x11;\n\n var _typeNumber = typeNumber;\n var _errorCorrectionLevel = QRErrorCorrectionLevel[errorCorrectionLevel];\n var _modules = null;\n var _moduleCount = 0;\n var _dataCache = null;\n var _dataList = [];\n\n var _this = {};\n\n var makeImpl = function(test, maskPattern) {\n\n _moduleCount = _typeNumber * 4 + 17;\n _modules = function(moduleCount) {\n var modules = new Array(moduleCount);\n for (var row = 0; row < moduleCount; row += 1) {\n modules[row] = new Array(moduleCount);\n for (var col = 0; col < moduleCount; col += 1) {\n modules[row][col] = null;\n }\n }\n return modules;\n }(_moduleCount);\n\n setupPositionProbePattern(0, 0);\n setupPositionProbePattern(_moduleCount - 7, 0);\n setupPositionProbePattern(0, _moduleCount - 7);\n setupPositionAdjustPattern();\n setupTimingPattern();\n setupTypeInfo(test, maskPattern);\n\n if (_typeNumber >= 7) {\n setupTypeNumber(test);\n }\n\n if (_dataCache == null) {\n _dataCache = createData(_typeNumber, _errorCorrectionLevel, _dataList);\n }\n\n mapData(_dataCache, maskPattern);\n };\n\n var setupPositionProbePattern = function(row, col) {\n\n for (var r = -1; r <= 7; r += 1) {\n\n if (row + r <= -1 || _moduleCount <= row + r) continue;\n\n for (var c = -1; c <= 7; c += 1) {\n\n if (col + c <= -1 || _moduleCount <= col + c) continue;\n\n if ( (0 <= r && r <= 6 && (c == 0 || c == 6) )\n || (0 <= c && c <= 6 && (r == 0 || r == 6) )\n || (2 <= r && r <= 4 && 2 <= c && c <= 4) ) {\n _modules[row + r][col + c] = true;\n } else {\n _modules[row + r][col + c] = false;\n }\n }\n }\n };\n\n var getBestMaskPattern = function() {\n\n var minLostPoint = 0;\n var pattern = 0;\n\n for (var i = 0; i < 8; i += 1) {\n\n makeImpl(true, i);\n\n var lostPoint = QRUtil.getLostPoint(_this);\n\n if (i == 0 || minLostPoint > lostPoint) {\n minLostPoint = lostPoint;\n pattern = i;\n }\n }\n\n return pattern;\n };\n\n var setupTimingPattern = function() {\n\n for (var r = 8; r < _moduleCount - 8; r += 1) {\n if (_modules[r][6] != null) {\n continue;\n }\n _modules[r][6] = (r % 2 == 0);\n }\n\n for (var c = 8; c < _moduleCount - 8; c += 1) {\n if (_modules[6][c] != null) {\n continue;\n }\n _modules[6][c] = (c % 2 == 0);\n }\n };\n\n var setupPositionAdjustPattern = function() {\n\n var pos = QRUtil.getPatternPosition(_typeNumber);\n\n for (var i = 0; i < pos.length; i += 1) {\n\n for (var j = 0; j < pos.length; j += 1) {\n\n var row = pos[i];\n var col = pos[j];\n\n if (_modules[row][col] != null) {\n continue;\n }\n\n for (var r = -2; r <= 2; r += 1) {\n\n for (var c = -2; c <= 2; c += 1) {\n\n if (r == -2 || r == 2 || c == -2 || c == 2\n || (r == 0 && c == 0) ) {\n _modules[row + r][col + c] = true;\n } else {\n _modules[row + r][col + c] = false;\n }\n }\n }\n }\n }\n };\n\n var setupTypeNumber = function(test) {\n\n var bits = QRUtil.getBCHTypeNumber(_typeNumber);\n\n for (var i = 0; i < 18; i += 1) {\n var mod = (!test && ( (bits >> i) & 1) == 1);\n _modules[Math.floor(i / 3)][i % 3 + _moduleCount - 8 - 3] = mod;\n }\n\n for (var i = 0; i < 18; i += 1) {\n var mod = (!test && ( (bits >> i) & 1) == 1);\n _modules[i % 3 + _moduleCount - 8 - 3][Math.floor(i / 3)] = mod;\n }\n };\n\n var setupTypeInfo = function(test, maskPattern) {\n\n var data = (_errorCorrectionLevel << 3) | maskPattern;\n var bits = QRUtil.getBCHTypeInfo(data);\n\n // vertical\n for (var i = 0; i < 15; i += 1) {\n\n var mod = (!test && ( (bits >> i) & 1) == 1);\n\n if (i < 6) {\n _modules[i][8] = mod;\n } else if (i < 8) {\n _modules[i + 1][8] = mod;\n } else {\n _modules[_moduleCount - 15 + i][8] = mod;\n }\n }\n\n // horizontal\n for (var i = 0; i < 15; i += 1) {\n\n var mod = (!test && ( (bits >> i) & 1) == 1);\n\n if (i < 8) {\n _modules[8][_moduleCount - i - 1] = mod;\n } else if (i < 9) {\n _modules[8][15 - i - 1 + 1] = mod;\n } else {\n _modules[8][15 - i - 1] = mod;\n }\n }\n\n // fixed module\n _modules[_moduleCount - 8][8] = (!test);\n };\n\n var mapData = function(data, maskPattern) {\n\n var inc = -1;\n var row = _moduleCount - 1;\n var bitIndex = 7;\n var byteIndex = 0;\n var maskFunc = QRUtil.getMaskFunction(maskPattern);\n\n for (var col = _moduleCount - 1; col > 0; col -= 2) {\n\n if (col == 6) col -= 1;\n\n while (true) {\n\n for (var c = 0; c < 2; c += 1) {\n\n if (_modules[row][col - c] == null) {\n\n var dark = false;\n\n if (byteIndex < data.length) {\n dark = ( ( (data[byteIndex] >>> bitIndex) & 1) == 1);\n }\n\n var mask = maskFunc(row, col - c);\n\n if (mask) {\n dark = !dark;\n }\n\n _modules[row][col - c] = dark;\n bitIndex -= 1;\n\n if (bitIndex == -1) {\n byteIndex += 1;\n bitIndex = 7;\n }\n }\n }\n\n row += inc;\n\n if (row < 0 || _moduleCount <= row) {\n row -= inc;\n inc = -inc;\n break;\n }\n }\n }\n };\n\n var createBytes = function(buffer, rsBlocks) {\n\n var offset = 0;\n\n var maxDcCount = 0;\n var maxEcCount = 0;\n\n var dcdata = new Array(rsBlocks.length);\n var ecdata = new Array(rsBlocks.length);\n\n for (var r = 0; r < rsBlocks.length; r += 1) {\n\n var dcCount = rsBlocks[r].dataCount;\n var ecCount = rsBlocks[r].totalCount - dcCount;\n\n maxDcCount = Math.max(maxDcCount, dcCount);\n maxEcCount = Math.max(maxEcCount, ecCount);\n\n dcdata[r] = new Array(dcCount);\n\n for (var i = 0; i < dcdata[r].length; i += 1) {\n dcdata[r][i] = 0xff & buffer.getBuffer()[i + offset];\n }\n offset += dcCount;\n\n var rsPoly = QRUtil.getErrorCorrectPolynomial(ecCount);\n var rawPoly = qrPolynomial(dcdata[r], rsPoly.getLength() - 1);\n\n var modPoly = rawPoly.mod(rsPoly);\n ecdata[r] = new Array(rsPoly.getLength() - 1);\n for (var i = 0; i < ecdata[r].length; i += 1) {\n var modIndex = i + modPoly.getLength() - ecdata[r].length;\n ecdata[r][i] = (modIndex >= 0)? modPoly.getAt(modIndex) : 0;\n }\n }\n\n var totalCodeCount = 0;\n for (var i = 0; i < rsBlocks.length; i += 1) {\n totalCodeCount += rsBlocks[i].totalCount;\n }\n\n var data = new Array(totalCodeCount);\n var index = 0;\n\n for (var i = 0; i < maxDcCount; i += 1) {\n for (var r = 0; r < rsBlocks.length; r += 1) {\n if (i < dcdata[r].length) {\n data[index] = dcdata[r][i];\n index += 1;\n }\n }\n }\n\n for (var i = 0; i < maxEcCount; i += 1) {\n for (var r = 0; r < rsBlocks.length; r += 1) {\n if (i < ecdata[r].length) {\n data[index] = ecdata[r][i];\n index += 1;\n }\n }\n }\n\n return data;\n };\n\n var createData = function(typeNumber, errorCorrectionLevel, dataList) {\n\n var rsBlocks = QRRSBlock.getRSBlocks(typeNumber, errorCorrectionLevel);\n\n var buffer = qrBitBuffer();\n\n for (var i = 0; i < dataList.length; i += 1) {\n var data = dataList[i];\n buffer.put(data.getMode(), 4);\n buffer.put(data.getLength(), QRUtil.getLengthInBits(data.getMode(), typeNumber) );\n data.write(buffer);\n }\n\n // calc num max data.\n var totalDataCount = 0;\n for (var i = 0; i < rsBlocks.length; i += 1) {\n totalDataCount += rsBlocks[i].dataCount;\n }\n\n if (buffer.getLengthInBits() > totalDataCount * 8) {\n throw 'code length overflow. ('\n + buffer.getLengthInBits()\n + '>'\n + totalDataCount * 8\n + ')';\n }\n\n // end code\n if (buffer.getLengthInBits() + 4 <= totalDataCount * 8) {\n buffer.put(0, 4);\n }\n\n // padding\n while (buffer.getLengthInBits() % 8 != 0) {\n buffer.putBit(false);\n }\n\n // padding\n while (true) {\n\n if (buffer.getLengthInBits() >= totalDataCount * 8) {\n break;\n }\n buffer.put(PAD0, 8);\n\n if (buffer.getLengthInBits() >= totalDataCount * 8) {\n break;\n }\n buffer.put(PAD1, 8);\n }\n\n return createBytes(buffer, rsBlocks);\n };\n\n _this.addData = function(data, mode) {\n\n mode = mode || 'Byte';\n\n var newData = null;\n\n switch(mode) {\n case 'Numeric' :\n newData = qrNumber(data);\n break;\n case 'Alphanumeric' :\n newData = qrAlphaNum(data);\n break;\n case 'Byte' :\n newData = qr8BitByte(data);\n break;\n case 'Kanji' :\n newData = qrKanji(data);\n break;\n default :\n throw 'mode:' + mode;\n }\n\n _dataList.push(newData);\n _dataCache = null;\n };\n\n _this.isDark = function(row, col) {\n if (row < 0 || _moduleCount <= row || col < 0 || _moduleCount <= col) {\n throw row + ',' + col;\n }\n return _modules[row][col];\n };\n\n _this.getModuleCount = function() {\n return _moduleCount;\n };\n\n _this.make = function() {\n if (_typeNumber < 1) {\n var typeNumber = 1;\n\n for (; typeNumber < 40; typeNumber++) {\n var rsBlocks = QRRSBlock.getRSBlocks(typeNumber, _errorCorrectionLevel);\n var buffer = qrBitBuffer();\n\n for (var i = 0; i < _dataList.length; i++) {\n var data = _dataList[i];\n buffer.put(data.getMode(), 4);\n buffer.put(data.getLength(), QRUtil.getLengthInBits(data.getMode(), typeNumber) );\n data.write(buffer);\n }\n\n var totalDataCount = 0;\n for (var i = 0; i < rsBlocks.length; i++) {\n totalDataCount += rsBlocks[i].dataCount;\n }\n\n if (buffer.getLengthInBits() <= totalDataCount * 8) {\n break;\n }\n }\n\n _typeNumber = typeNumber;\n }\n\n makeImpl(false, getBestMaskPattern() );\n };\n\n _this.createTableTag = function(cellSize, margin) {\n\n cellSize = cellSize || 2;\n margin = (typeof margin == 'undefined')? cellSize * 4 : margin;\n\n var qrHtml = '';\n\n qrHtml += '' +\n escapeXml(title.text) + '' : '';\n qrSvg += (alt.text) ? '' +\n escapeXml(alt.text) + '' : '';\n qrSvg += '';\n qrSvg += '': escaped += '>'; break;\n case '&': escaped += '&'; break;\n case '\"': escaped += '"'; break;\n default : escaped += c; break;\n }\n }\n return escaped;\n };\n\n var _createHalfASCII = function(margin) {\n var cellSize = 1;\n margin = (typeof margin == 'undefined')? cellSize * 2 : margin;\n\n var size = _this.getModuleCount() * cellSize + margin * 2;\n var min = margin;\n var max = size - margin;\n\n var y, x, r1, r2, p;\n\n var blocks = {\n '██': '█',\n '█ ': '▀',\n ' █': '▄',\n ' ': ' '\n };\n\n var blocksLastLineNoMargin = {\n '██': '▀',\n '█ ': '▀',\n ' █': ' ',\n ' ': ' '\n };\n\n var ascii = '';\n for (y = 0; y < size; y += 2) {\n r1 = Math.floor((y - min) / cellSize);\n r2 = Math.floor((y + 1 - min) / cellSize);\n for (x = 0; x < size; x += 1) {\n p = '█';\n\n if (min <= x && x < max && min <= y && y < max && _this.isDark(r1, Math.floor((x - min) / cellSize))) {\n p = ' ';\n }\n\n if (min <= x && x < max && min <= y+1 && y+1 < max && _this.isDark(r2, Math.floor((x - min) / cellSize))) {\n p += ' ';\n }\n else {\n p += '█';\n }\n\n // Output 2 characters per pixel, to create full square. 1 character per pixels gives only half width of square.\n ascii += (margin < 1 && y+1 >= max) ? blocksLastLineNoMargin[p] : blocks[p];\n }\n\n ascii += '\\n';\n }\n\n if (size % 2 && margin > 0) {\n return ascii.substring(0, ascii.length - size - 1) + Array(size+1).join('▀');\n }\n\n return ascii.substring(0, ascii.length-1);\n };\n\n _this.createASCII = function(cellSize, margin) {\n cellSize = cellSize || 1;\n\n if (cellSize < 2) {\n return _createHalfASCII(margin);\n }\n\n cellSize -= 1;\n margin = (typeof margin == 'undefined')? cellSize * 2 : margin;\n\n var size = _this.getModuleCount() * cellSize + margin * 2;\n var min = margin;\n var max = size - margin;\n\n var y, x, r, p;\n\n var white = Array(cellSize+1).join('██');\n var black = Array(cellSize+1).join(' ');\n\n var ascii = '';\n var line = '';\n for (y = 0; y < size; y += 1) {\n r = Math.floor( (y - min) / cellSize);\n line = '';\n for (x = 0; x < size; x += 1) {\n p = 1;\n\n if (min <= x && x < max && min <= y && y < max && _this.isDark(r, Math.floor((x - min) / cellSize))) {\n p = 0;\n }\n\n // Output 2 characters per pixel, to create full square. 1 character per pixels gives only half width of square.\n line += p ? white : black;\n }\n\n for (r = 0; r < cellSize; r += 1) {\n ascii += line + '\\n';\n }\n }\n\n return ascii.substring(0, ascii.length-1);\n };\n\n _this.renderTo2dContext = function(context, cellSize) {\n cellSize = cellSize || 2;\n var length = _this.getModuleCount();\n for (var row = 0; row < length; row++) {\n for (var col = 0; col < length; col++) {\n context.fillStyle = _this.isDark(row, col) ? 'black' : 'white';\n context.fillRect(row * cellSize, col * cellSize, cellSize, cellSize);\n }\n }\n }\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qrcode.stringToBytes\n //---------------------------------------------------------------------\n\n qrcode.stringToBytesFuncs = {\n 'default' : function(s) {\n var bytes = [];\n for (var i = 0; i < s.length; i += 1) {\n var c = s.charCodeAt(i);\n bytes.push(c & 0xff);\n }\n return bytes;\n }\n };\n\n qrcode.stringToBytes = qrcode.stringToBytesFuncs['default'];\n\n //---------------------------------------------------------------------\n // qrcode.createStringToBytes\n //---------------------------------------------------------------------\n\n /**\n * @param unicodeData base64 string of byte array.\n * [16bit Unicode],[16bit Bytes], ...\n * @param numChars\n */\n qrcode.createStringToBytes = function(unicodeData, numChars) {\n\n // create conversion map.\n\n var unicodeMap = function() {\n\n var bin = base64DecodeInputStream(unicodeData);\n var read = function() {\n var b = bin.read();\n if (b == -1) throw 'eof';\n return b;\n };\n\n var count = 0;\n var unicodeMap = {};\n while (true) {\n var b0 = bin.read();\n if (b0 == -1) break;\n var b1 = read();\n var b2 = read();\n var b3 = read();\n var k = String.fromCharCode( (b0 << 8) | b1);\n var v = (b2 << 8) | b3;\n unicodeMap[k] = v;\n count += 1;\n }\n if (count != numChars) {\n throw count + ' != ' + numChars;\n }\n\n return unicodeMap;\n }();\n\n var unknownChar = '?'.charCodeAt(0);\n\n return function(s) {\n var bytes = [];\n for (var i = 0; i < s.length; i += 1) {\n var c = s.charCodeAt(i);\n if (c < 128) {\n bytes.push(c);\n } else {\n var b = unicodeMap[s.charAt(i)];\n if (typeof b == 'number') {\n if ( (b & 0xff) == b) {\n // 1byte\n bytes.push(b);\n } else {\n // 2bytes\n bytes.push(b >>> 8);\n bytes.push(b & 0xff);\n }\n } else {\n bytes.push(unknownChar);\n }\n }\n }\n return bytes;\n };\n };\n\n //---------------------------------------------------------------------\n // QRMode\n //---------------------------------------------------------------------\n\n var QRMode = {\n MODE_NUMBER : 1 << 0,\n MODE_ALPHA_NUM : 1 << 1,\n MODE_8BIT_BYTE : 1 << 2,\n MODE_KANJI : 1 << 3\n };\n\n //---------------------------------------------------------------------\n // QRErrorCorrectionLevel\n //---------------------------------------------------------------------\n\n var QRErrorCorrectionLevel = {\n L : 1,\n M : 0,\n Q : 3,\n H : 2\n };\n\n //---------------------------------------------------------------------\n // QRMaskPattern\n //---------------------------------------------------------------------\n\n var QRMaskPattern = {\n PATTERN000 : 0,\n PATTERN001 : 1,\n PATTERN010 : 2,\n PATTERN011 : 3,\n PATTERN100 : 4,\n PATTERN101 : 5,\n PATTERN110 : 6,\n PATTERN111 : 7\n };\n\n //---------------------------------------------------------------------\n // QRUtil\n //---------------------------------------------------------------------\n\n var QRUtil = function() {\n\n var PATTERN_POSITION_TABLE = [\n [],\n [6, 18],\n [6, 22],\n [6, 26],\n [6, 30],\n [6, 34],\n [6, 22, 38],\n [6, 24, 42],\n [6, 26, 46],\n [6, 28, 50],\n [6, 30, 54],\n [6, 32, 58],\n [6, 34, 62],\n [6, 26, 46, 66],\n [6, 26, 48, 70],\n [6, 26, 50, 74],\n [6, 30, 54, 78],\n [6, 30, 56, 82],\n [6, 30, 58, 86],\n [6, 34, 62, 90],\n [6, 28, 50, 72, 94],\n [6, 26, 50, 74, 98],\n [6, 30, 54, 78, 102],\n [6, 28, 54, 80, 106],\n [6, 32, 58, 84, 110],\n [6, 30, 58, 86, 114],\n [6, 34, 62, 90, 118],\n [6, 26, 50, 74, 98, 122],\n [6, 30, 54, 78, 102, 126],\n [6, 26, 52, 78, 104, 130],\n [6, 30, 56, 82, 108, 134],\n [6, 34, 60, 86, 112, 138],\n [6, 30, 58, 86, 114, 142],\n [6, 34, 62, 90, 118, 146],\n [6, 30, 54, 78, 102, 126, 150],\n [6, 24, 50, 76, 102, 128, 154],\n [6, 28, 54, 80, 106, 132, 158],\n [6, 32, 58, 84, 110, 136, 162],\n [6, 26, 54, 82, 110, 138, 166],\n [6, 30, 58, 86, 114, 142, 170]\n ];\n var G15 = (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0);\n var G18 = (1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | (1 << 2) | (1 << 0);\n var G15_MASK = (1 << 14) | (1 << 12) | (1 << 10) | (1 << 4) | (1 << 1);\n\n var _this = {};\n\n var getBCHDigit = function(data) {\n var digit = 0;\n while (data != 0) {\n digit += 1;\n data >>>= 1;\n }\n return digit;\n };\n\n _this.getBCHTypeInfo = function(data) {\n var d = data << 10;\n while (getBCHDigit(d) - getBCHDigit(G15) >= 0) {\n d ^= (G15 << (getBCHDigit(d) - getBCHDigit(G15) ) );\n }\n return ( (data << 10) | d) ^ G15_MASK;\n };\n\n _this.getBCHTypeNumber = function(data) {\n var d = data << 12;\n while (getBCHDigit(d) - getBCHDigit(G18) >= 0) {\n d ^= (G18 << (getBCHDigit(d) - getBCHDigit(G18) ) );\n }\n return (data << 12) | d;\n };\n\n _this.getPatternPosition = function(typeNumber) {\n return PATTERN_POSITION_TABLE[typeNumber - 1];\n };\n\n _this.getMaskFunction = function(maskPattern) {\n\n switch (maskPattern) {\n\n case QRMaskPattern.PATTERN000 :\n return function(i, j) { return (i + j) % 2 == 0; };\n case QRMaskPattern.PATTERN001 :\n return function(i, j) { return i % 2 == 0; };\n case QRMaskPattern.PATTERN010 :\n return function(i, j) { return j % 3 == 0; };\n case QRMaskPattern.PATTERN011 :\n return function(i, j) { return (i + j) % 3 == 0; };\n case QRMaskPattern.PATTERN100 :\n return function(i, j) { return (Math.floor(i / 2) + Math.floor(j / 3) ) % 2 == 0; };\n case QRMaskPattern.PATTERN101 :\n return function(i, j) { return (i * j) % 2 + (i * j) % 3 == 0; };\n case QRMaskPattern.PATTERN110 :\n return function(i, j) { return ( (i * j) % 2 + (i * j) % 3) % 2 == 0; };\n case QRMaskPattern.PATTERN111 :\n return function(i, j) { return ( (i * j) % 3 + (i + j) % 2) % 2 == 0; };\n\n default :\n throw 'bad maskPattern:' + maskPattern;\n }\n };\n\n _this.getErrorCorrectPolynomial = function(errorCorrectLength) {\n var a = qrPolynomial([1], 0);\n for (var i = 0; i < errorCorrectLength; i += 1) {\n a = a.multiply(qrPolynomial([1, QRMath.gexp(i)], 0) );\n }\n return a;\n };\n\n _this.getLengthInBits = function(mode, type) {\n\n if (1 <= type && type < 10) {\n\n // 1 - 9\n\n switch(mode) {\n case QRMode.MODE_NUMBER : return 10;\n case QRMode.MODE_ALPHA_NUM : return 9;\n case QRMode.MODE_8BIT_BYTE : return 8;\n case QRMode.MODE_KANJI : return 8;\n default :\n throw 'mode:' + mode;\n }\n\n } else if (type < 27) {\n\n // 10 - 26\n\n switch(mode) {\n case QRMode.MODE_NUMBER : return 12;\n case QRMode.MODE_ALPHA_NUM : return 11;\n case QRMode.MODE_8BIT_BYTE : return 16;\n case QRMode.MODE_KANJI : return 10;\n default :\n throw 'mode:' + mode;\n }\n\n } else if (type < 41) {\n\n // 27 - 40\n\n switch(mode) {\n case QRMode.MODE_NUMBER : return 14;\n case QRMode.MODE_ALPHA_NUM : return 13;\n case QRMode.MODE_8BIT_BYTE : return 16;\n case QRMode.MODE_KANJI : return 12;\n default :\n throw 'mode:' + mode;\n }\n\n } else {\n throw 'type:' + type;\n }\n };\n\n _this.getLostPoint = function(qrcode) {\n\n var moduleCount = qrcode.getModuleCount();\n\n var lostPoint = 0;\n\n // LEVEL1\n\n for (var row = 0; row < moduleCount; row += 1) {\n for (var col = 0; col < moduleCount; col += 1) {\n\n var sameCount = 0;\n var dark = qrcode.isDark(row, col);\n\n for (var r = -1; r <= 1; r += 1) {\n\n if (row + r < 0 || moduleCount <= row + r) {\n continue;\n }\n\n for (var c = -1; c <= 1; c += 1) {\n\n if (col + c < 0 || moduleCount <= col + c) {\n continue;\n }\n\n if (r == 0 && c == 0) {\n continue;\n }\n\n if (dark == qrcode.isDark(row + r, col + c) ) {\n sameCount += 1;\n }\n }\n }\n\n if (sameCount > 5) {\n lostPoint += (3 + sameCount - 5);\n }\n }\n };\n\n // LEVEL2\n\n for (var row = 0; row < moduleCount - 1; row += 1) {\n for (var col = 0; col < moduleCount - 1; col += 1) {\n var count = 0;\n if (qrcode.isDark(row, col) ) count += 1;\n if (qrcode.isDark(row + 1, col) ) count += 1;\n if (qrcode.isDark(row, col + 1) ) count += 1;\n if (qrcode.isDark(row + 1, col + 1) ) count += 1;\n if (count == 0 || count == 4) {\n lostPoint += 3;\n }\n }\n }\n\n // LEVEL3\n\n for (var row = 0; row < moduleCount; row += 1) {\n for (var col = 0; col < moduleCount - 6; col += 1) {\n if (qrcode.isDark(row, col)\n && !qrcode.isDark(row, col + 1)\n && qrcode.isDark(row, col + 2)\n && qrcode.isDark(row, col + 3)\n && qrcode.isDark(row, col + 4)\n && !qrcode.isDark(row, col + 5)\n && qrcode.isDark(row, col + 6) ) {\n lostPoint += 40;\n }\n }\n }\n\n for (var col = 0; col < moduleCount; col += 1) {\n for (var row = 0; row < moduleCount - 6; row += 1) {\n if (qrcode.isDark(row, col)\n && !qrcode.isDark(row + 1, col)\n && qrcode.isDark(row + 2, col)\n && qrcode.isDark(row + 3, col)\n && qrcode.isDark(row + 4, col)\n && !qrcode.isDark(row + 5, col)\n && qrcode.isDark(row + 6, col) ) {\n lostPoint += 40;\n }\n }\n }\n\n // LEVEL4\n\n var darkCount = 0;\n\n for (var col = 0; col < moduleCount; col += 1) {\n for (var row = 0; row < moduleCount; row += 1) {\n if (qrcode.isDark(row, col) ) {\n darkCount += 1;\n }\n }\n }\n\n var ratio = Math.abs(100 * darkCount / moduleCount / moduleCount - 50) / 5;\n lostPoint += ratio * 10;\n\n return lostPoint;\n };\n\n return _this;\n }();\n\n //---------------------------------------------------------------------\n // QRMath\n //---------------------------------------------------------------------\n\n var QRMath = function() {\n\n var EXP_TABLE = new Array(256);\n var LOG_TABLE = new Array(256);\n\n // initialize tables\n for (var i = 0; i < 8; i += 1) {\n EXP_TABLE[i] = 1 << i;\n }\n for (var i = 8; i < 256; i += 1) {\n EXP_TABLE[i] = EXP_TABLE[i - 4]\n ^ EXP_TABLE[i - 5]\n ^ EXP_TABLE[i - 6]\n ^ EXP_TABLE[i - 8];\n }\n for (var i = 0; i < 255; i += 1) {\n LOG_TABLE[EXP_TABLE[i] ] = i;\n }\n\n var _this = {};\n\n _this.glog = function(n) {\n\n if (n < 1) {\n throw 'glog(' + n + ')';\n }\n\n return LOG_TABLE[n];\n };\n\n _this.gexp = function(n) {\n\n while (n < 0) {\n n += 255;\n }\n\n while (n >= 256) {\n n -= 255;\n }\n\n return EXP_TABLE[n];\n };\n\n return _this;\n }();\n\n //---------------------------------------------------------------------\n // qrPolynomial\n //---------------------------------------------------------------------\n\n function qrPolynomial(num, shift) {\n\n if (typeof num.length == 'undefined') {\n throw num.length + '/' + shift;\n }\n\n var _num = function() {\n var offset = 0;\n while (offset < num.length && num[offset] == 0) {\n offset += 1;\n }\n var _num = new Array(num.length - offset + shift);\n for (var i = 0; i < num.length - offset; i += 1) {\n _num[i] = num[i + offset];\n }\n return _num;\n }();\n\n var _this = {};\n\n _this.getAt = function(index) {\n return _num[index];\n };\n\n _this.getLength = function() {\n return _num.length;\n };\n\n _this.multiply = function(e) {\n\n var num = new Array(_this.getLength() + e.getLength() - 1);\n\n for (var i = 0; i < _this.getLength(); i += 1) {\n for (var j = 0; j < e.getLength(); j += 1) {\n num[i + j] ^= QRMath.gexp(QRMath.glog(_this.getAt(i) ) + QRMath.glog(e.getAt(j) ) );\n }\n }\n\n return qrPolynomial(num, 0);\n };\n\n _this.mod = function(e) {\n\n if (_this.getLength() - e.getLength() < 0) {\n return _this;\n }\n\n var ratio = QRMath.glog(_this.getAt(0) ) - QRMath.glog(e.getAt(0) );\n\n var num = new Array(_this.getLength() );\n for (var i = 0; i < _this.getLength(); i += 1) {\n num[i] = _this.getAt(i);\n }\n\n for (var i = 0; i < e.getLength(); i += 1) {\n num[i] ^= QRMath.gexp(QRMath.glog(e.getAt(i) ) + ratio);\n }\n\n // recursive call\n return qrPolynomial(num, 0).mod(e);\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // QRRSBlock\n //---------------------------------------------------------------------\n\n var QRRSBlock = function() {\n\n var RS_BLOCK_TABLE = [\n\n // L\n // M\n // Q\n // H\n\n // 1\n [1, 26, 19],\n [1, 26, 16],\n [1, 26, 13],\n [1, 26, 9],\n\n // 2\n [1, 44, 34],\n [1, 44, 28],\n [1, 44, 22],\n [1, 44, 16],\n\n // 3\n [1, 70, 55],\n [1, 70, 44],\n [2, 35, 17],\n [2, 35, 13],\n\n // 4\n [1, 100, 80],\n [2, 50, 32],\n [2, 50, 24],\n [4, 25, 9],\n\n // 5\n [1, 134, 108],\n [2, 67, 43],\n [2, 33, 15, 2, 34, 16],\n [2, 33, 11, 2, 34, 12],\n\n // 6\n [2, 86, 68],\n [4, 43, 27],\n [4, 43, 19],\n [4, 43, 15],\n\n // 7\n [2, 98, 78],\n [4, 49, 31],\n [2, 32, 14, 4, 33, 15],\n [4, 39, 13, 1, 40, 14],\n\n // 8\n [2, 121, 97],\n [2, 60, 38, 2, 61, 39],\n [4, 40, 18, 2, 41, 19],\n [4, 40, 14, 2, 41, 15],\n\n // 9\n [2, 146, 116],\n [3, 58, 36, 2, 59, 37],\n [4, 36, 16, 4, 37, 17],\n [4, 36, 12, 4, 37, 13],\n\n // 10\n [2, 86, 68, 2, 87, 69],\n [4, 69, 43, 1, 70, 44],\n [6, 43, 19, 2, 44, 20],\n [6, 43, 15, 2, 44, 16],\n\n // 11\n [4, 101, 81],\n [1, 80, 50, 4, 81, 51],\n [4, 50, 22, 4, 51, 23],\n [3, 36, 12, 8, 37, 13],\n\n // 12\n [2, 116, 92, 2, 117, 93],\n [6, 58, 36, 2, 59, 37],\n [4, 46, 20, 6, 47, 21],\n [7, 42, 14, 4, 43, 15],\n\n // 13\n [4, 133, 107],\n [8, 59, 37, 1, 60, 38],\n [8, 44, 20, 4, 45, 21],\n [12, 33, 11, 4, 34, 12],\n\n // 14\n [3, 145, 115, 1, 146, 116],\n [4, 64, 40, 5, 65, 41],\n [11, 36, 16, 5, 37, 17],\n [11, 36, 12, 5, 37, 13],\n\n // 15\n [5, 109, 87, 1, 110, 88],\n [5, 65, 41, 5, 66, 42],\n [5, 54, 24, 7, 55, 25],\n [11, 36, 12, 7, 37, 13],\n\n // 16\n [5, 122, 98, 1, 123, 99],\n [7, 73, 45, 3, 74, 46],\n [15, 43, 19, 2, 44, 20],\n [3, 45, 15, 13, 46, 16],\n\n // 17\n [1, 135, 107, 5, 136, 108],\n [10, 74, 46, 1, 75, 47],\n [1, 50, 22, 15, 51, 23],\n [2, 42, 14, 17, 43, 15],\n\n // 18\n [5, 150, 120, 1, 151, 121],\n [9, 69, 43, 4, 70, 44],\n [17, 50, 22, 1, 51, 23],\n [2, 42, 14, 19, 43, 15],\n\n // 19\n [3, 141, 113, 4, 142, 114],\n [3, 70, 44, 11, 71, 45],\n [17, 47, 21, 4, 48, 22],\n [9, 39, 13, 16, 40, 14],\n\n // 20\n [3, 135, 107, 5, 136, 108],\n [3, 67, 41, 13, 68, 42],\n [15, 54, 24, 5, 55, 25],\n [15, 43, 15, 10, 44, 16],\n\n // 21\n [4, 144, 116, 4, 145, 117],\n [17, 68, 42],\n [17, 50, 22, 6, 51, 23],\n [19, 46, 16, 6, 47, 17],\n\n // 22\n [2, 139, 111, 7, 140, 112],\n [17, 74, 46],\n [7, 54, 24, 16, 55, 25],\n [34, 37, 13],\n\n // 23\n [4, 151, 121, 5, 152, 122],\n [4, 75, 47, 14, 76, 48],\n [11, 54, 24, 14, 55, 25],\n [16, 45, 15, 14, 46, 16],\n\n // 24\n [6, 147, 117, 4, 148, 118],\n [6, 73, 45, 14, 74, 46],\n [11, 54, 24, 16, 55, 25],\n [30, 46, 16, 2, 47, 17],\n\n // 25\n [8, 132, 106, 4, 133, 107],\n [8, 75, 47, 13, 76, 48],\n [7, 54, 24, 22, 55, 25],\n [22, 45, 15, 13, 46, 16],\n\n // 26\n [10, 142, 114, 2, 143, 115],\n [19, 74, 46, 4, 75, 47],\n [28, 50, 22, 6, 51, 23],\n [33, 46, 16, 4, 47, 17],\n\n // 27\n [8, 152, 122, 4, 153, 123],\n [22, 73, 45, 3, 74, 46],\n [8, 53, 23, 26, 54, 24],\n [12, 45, 15, 28, 46, 16],\n\n // 28\n [3, 147, 117, 10, 148, 118],\n [3, 73, 45, 23, 74, 46],\n [4, 54, 24, 31, 55, 25],\n [11, 45, 15, 31, 46, 16],\n\n // 29\n [7, 146, 116, 7, 147, 117],\n [21, 73, 45, 7, 74, 46],\n [1, 53, 23, 37, 54, 24],\n [19, 45, 15, 26, 46, 16],\n\n // 30\n [5, 145, 115, 10, 146, 116],\n [19, 75, 47, 10, 76, 48],\n [15, 54, 24, 25, 55, 25],\n [23, 45, 15, 25, 46, 16],\n\n // 31\n [13, 145, 115, 3, 146, 116],\n [2, 74, 46, 29, 75, 47],\n [42, 54, 24, 1, 55, 25],\n [23, 45, 15, 28, 46, 16],\n\n // 32\n [17, 145, 115],\n [10, 74, 46, 23, 75, 47],\n [10, 54, 24, 35, 55, 25],\n [19, 45, 15, 35, 46, 16],\n\n // 33\n [17, 145, 115, 1, 146, 116],\n [14, 74, 46, 21, 75, 47],\n [29, 54, 24, 19, 55, 25],\n [11, 45, 15, 46, 46, 16],\n\n // 34\n [13, 145, 115, 6, 146, 116],\n [14, 74, 46, 23, 75, 47],\n [44, 54, 24, 7, 55, 25],\n [59, 46, 16, 1, 47, 17],\n\n // 35\n [12, 151, 121, 7, 152, 122],\n [12, 75, 47, 26, 76, 48],\n [39, 54, 24, 14, 55, 25],\n [22, 45, 15, 41, 46, 16],\n\n // 36\n [6, 151, 121, 14, 152, 122],\n [6, 75, 47, 34, 76, 48],\n [46, 54, 24, 10, 55, 25],\n [2, 45, 15, 64, 46, 16],\n\n // 37\n [17, 152, 122, 4, 153, 123],\n [29, 74, 46, 14, 75, 47],\n [49, 54, 24, 10, 55, 25],\n [24, 45, 15, 46, 46, 16],\n\n // 38\n [4, 152, 122, 18, 153, 123],\n [13, 74, 46, 32, 75, 47],\n [48, 54, 24, 14, 55, 25],\n [42, 45, 15, 32, 46, 16],\n\n // 39\n [20, 147, 117, 4, 148, 118],\n [40, 75, 47, 7, 76, 48],\n [43, 54, 24, 22, 55, 25],\n [10, 45, 15, 67, 46, 16],\n\n // 40\n [19, 148, 118, 6, 149, 119],\n [18, 75, 47, 31, 76, 48],\n [34, 54, 24, 34, 55, 25],\n [20, 45, 15, 61, 46, 16]\n ];\n\n var qrRSBlock = function(totalCount, dataCount) {\n var _this = {};\n _this.totalCount = totalCount;\n _this.dataCount = dataCount;\n return _this;\n };\n\n var _this = {};\n\n var getRsBlockTable = function(typeNumber, errorCorrectionLevel) {\n\n switch(errorCorrectionLevel) {\n case QRErrorCorrectionLevel.L :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 0];\n case QRErrorCorrectionLevel.M :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 1];\n case QRErrorCorrectionLevel.Q :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 2];\n case QRErrorCorrectionLevel.H :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 3];\n default :\n return undefined;\n }\n };\n\n _this.getRSBlocks = function(typeNumber, errorCorrectionLevel) {\n\n var rsBlock = getRsBlockTable(typeNumber, errorCorrectionLevel);\n\n if (typeof rsBlock == 'undefined') {\n throw 'bad rs block @ typeNumber:' + typeNumber +\n '/errorCorrectionLevel:' + errorCorrectionLevel;\n }\n\n var length = rsBlock.length / 3;\n\n var list = [];\n\n for (var i = 0; i < length; i += 1) {\n\n var count = rsBlock[i * 3 + 0];\n var totalCount = rsBlock[i * 3 + 1];\n var dataCount = rsBlock[i * 3 + 2];\n\n for (var j = 0; j < count; j += 1) {\n list.push(qrRSBlock(totalCount, dataCount) );\n }\n }\n\n return list;\n };\n\n return _this;\n }();\n\n //---------------------------------------------------------------------\n // qrBitBuffer\n //---------------------------------------------------------------------\n\n var qrBitBuffer = function() {\n\n var _buffer = [];\n var _length = 0;\n\n var _this = {};\n\n _this.getBuffer = function() {\n return _buffer;\n };\n\n _this.getAt = function(index) {\n var bufIndex = Math.floor(index / 8);\n return ( (_buffer[bufIndex] >>> (7 - index % 8) ) & 1) == 1;\n };\n\n _this.put = function(num, length) {\n for (var i = 0; i < length; i += 1) {\n _this.putBit( ( (num >>> (length - i - 1) ) & 1) == 1);\n }\n };\n\n _this.getLengthInBits = function() {\n return _length;\n };\n\n _this.putBit = function(bit) {\n\n var bufIndex = Math.floor(_length / 8);\n if (_buffer.length <= bufIndex) {\n _buffer.push(0);\n }\n\n if (bit) {\n _buffer[bufIndex] |= (0x80 >>> (_length % 8) );\n }\n\n _length += 1;\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qrNumber\n //---------------------------------------------------------------------\n\n var qrNumber = function(data) {\n\n var _mode = QRMode.MODE_NUMBER;\n var _data = data;\n\n var _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return _data.length;\n };\n\n _this.write = function(buffer) {\n\n var data = _data;\n\n var i = 0;\n\n while (i + 2 < data.length) {\n buffer.put(strToNum(data.substring(i, i + 3) ), 10);\n i += 3;\n }\n\n if (i < data.length) {\n if (data.length - i == 1) {\n buffer.put(strToNum(data.substring(i, i + 1) ), 4);\n } else if (data.length - i == 2) {\n buffer.put(strToNum(data.substring(i, i + 2) ), 7);\n }\n }\n };\n\n var strToNum = function(s) {\n var num = 0;\n for (var i = 0; i < s.length; i += 1) {\n num = num * 10 + chatToNum(s.charAt(i) );\n }\n return num;\n };\n\n var chatToNum = function(c) {\n if ('0' <= c && c <= '9') {\n return c.charCodeAt(0) - '0'.charCodeAt(0);\n }\n throw 'illegal char :' + c;\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qrAlphaNum\n //---------------------------------------------------------------------\n\n var qrAlphaNum = function(data) {\n\n var _mode = QRMode.MODE_ALPHA_NUM;\n var _data = data;\n\n var _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return _data.length;\n };\n\n _this.write = function(buffer) {\n\n var s = _data;\n\n var i = 0;\n\n while (i + 1 < s.length) {\n buffer.put(\n getCode(s.charAt(i) ) * 45 +\n getCode(s.charAt(i + 1) ), 11);\n i += 2;\n }\n\n if (i < s.length) {\n buffer.put(getCode(s.charAt(i) ), 6);\n }\n };\n\n var getCode = function(c) {\n\n if ('0' <= c && c <= '9') {\n return c.charCodeAt(0) - '0'.charCodeAt(0);\n } else if ('A' <= c && c <= 'Z') {\n return c.charCodeAt(0) - 'A'.charCodeAt(0) + 10;\n } else {\n switch (c) {\n case ' ' : return 36;\n case '$' : return 37;\n case '%' : return 38;\n case '*' : return 39;\n case '+' : return 40;\n case '-' : return 41;\n case '.' : return 42;\n case '/' : return 43;\n case ':' : return 44;\n default :\n throw 'illegal char :' + c;\n }\n }\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qr8BitByte\n //---------------------------------------------------------------------\n\n var qr8BitByte = function(data) {\n\n var _mode = QRMode.MODE_8BIT_BYTE;\n var _data = data;\n var _bytes = qrcode.stringToBytes(data);\n\n var _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return _bytes.length;\n };\n\n _this.write = function(buffer) {\n for (var i = 0; i < _bytes.length; i += 1) {\n buffer.put(_bytes[i], 8);\n }\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qrKanji\n //---------------------------------------------------------------------\n\n var qrKanji = function(data) {\n\n var _mode = QRMode.MODE_KANJI;\n var _data = data;\n\n var stringToBytes = qrcode.stringToBytesFuncs['SJIS'];\n if (!stringToBytes) {\n throw 'sjis not supported.';\n }\n !function(c, code) {\n // self test for sjis support.\n var test = stringToBytes(c);\n if (test.length != 2 || ( (test[0] << 8) | test[1]) != code) {\n throw 'sjis not supported.';\n }\n }('\\u53cb', 0x9746);\n\n var _bytes = stringToBytes(data);\n\n var _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return ~~(_bytes.length / 2);\n };\n\n _this.write = function(buffer) {\n\n var data = _bytes;\n\n var i = 0;\n\n while (i + 1 < data.length) {\n\n var c = ( (0xff & data[i]) << 8) | (0xff & data[i + 1]);\n\n if (0x8140 <= c && c <= 0x9FFC) {\n c -= 0x8140;\n } else if (0xE040 <= c && c <= 0xEBBF) {\n c -= 0xC140;\n } else {\n throw 'illegal char at ' + (i + 1) + '/' + c;\n }\n\n c = ( (c >>> 8) & 0xff) * 0xC0 + (c & 0xff);\n\n buffer.put(c, 13);\n\n i += 2;\n }\n\n if (i < data.length) {\n throw 'illegal char at ' + (i + 1);\n }\n };\n\n return _this;\n };\n\n //=====================================================================\n // GIF Support etc.\n //\n\n //---------------------------------------------------------------------\n // byteArrayOutputStream\n //---------------------------------------------------------------------\n\n var byteArrayOutputStream = function() {\n\n var _bytes = [];\n\n var _this = {};\n\n _this.writeByte = function(b) {\n _bytes.push(b & 0xff);\n };\n\n _this.writeShort = function(i) {\n _this.writeByte(i);\n _this.writeByte(i >>> 8);\n };\n\n _this.writeBytes = function(b, off, len) {\n off = off || 0;\n len = len || b.length;\n for (var i = 0; i < len; i += 1) {\n _this.writeByte(b[i + off]);\n }\n };\n\n _this.writeString = function(s) {\n for (var i = 0; i < s.length; i += 1) {\n _this.writeByte(s.charCodeAt(i) );\n }\n };\n\n _this.toByteArray = function() {\n return _bytes;\n };\n\n _this.toString = function() {\n var s = '';\n s += '[';\n for (var i = 0; i < _bytes.length; i += 1) {\n if (i > 0) {\n s += ',';\n }\n s += _bytes[i];\n }\n s += ']';\n return s;\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // base64EncodeOutputStream\n //---------------------------------------------------------------------\n\n var base64EncodeOutputStream = function() {\n\n var _buffer = 0;\n var _buflen = 0;\n var _length = 0;\n var _base64 = '';\n\n var _this = {};\n\n var writeEncoded = function(b) {\n _base64 += String.fromCharCode(encode(b & 0x3f) );\n };\n\n var encode = function(n) {\n if (n < 0) {\n // error.\n } else if (n < 26) {\n return 0x41 + n;\n } else if (n < 52) {\n return 0x61 + (n - 26);\n } else if (n < 62) {\n return 0x30 + (n - 52);\n } else if (n == 62) {\n return 0x2b;\n } else if (n == 63) {\n return 0x2f;\n }\n throw 'n:' + n;\n };\n\n _this.writeByte = function(n) {\n\n _buffer = (_buffer << 8) | (n & 0xff);\n _buflen += 8;\n _length += 1;\n\n while (_buflen >= 6) {\n writeEncoded(_buffer >>> (_buflen - 6) );\n _buflen -= 6;\n }\n };\n\n _this.flush = function() {\n\n if (_buflen > 0) {\n writeEncoded(_buffer << (6 - _buflen) );\n _buffer = 0;\n _buflen = 0;\n }\n\n if (_length % 3 != 0) {\n // padding\n var padlen = 3 - _length % 3;\n for (var i = 0; i < padlen; i += 1) {\n _base64 += '=';\n }\n }\n };\n\n _this.toString = function() {\n return _base64;\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // base64DecodeInputStream\n //---------------------------------------------------------------------\n\n var base64DecodeInputStream = function(str) {\n\n var _str = str;\n var _pos = 0;\n var _buffer = 0;\n var _buflen = 0;\n\n var _this = {};\n\n _this.read = function() {\n\n while (_buflen < 8) {\n\n if (_pos >= _str.length) {\n if (_buflen == 0) {\n return -1;\n }\n throw 'unexpected end of file./' + _buflen;\n }\n\n var c = _str.charAt(_pos);\n _pos += 1;\n\n if (c == '=') {\n _buflen = 0;\n return -1;\n } else if (c.match(/^\\s$/) ) {\n // ignore if whitespace.\n continue;\n }\n\n _buffer = (_buffer << 6) | decode(c.charCodeAt(0) );\n _buflen += 6;\n }\n\n var n = (_buffer >>> (_buflen - 8) ) & 0xff;\n _buflen -= 8;\n return n;\n };\n\n var decode = function(c) {\n if (0x41 <= c && c <= 0x5a) {\n return c - 0x41;\n } else if (0x61 <= c && c <= 0x7a) {\n return c - 0x61 + 26;\n } else if (0x30 <= c && c <= 0x39) {\n return c - 0x30 + 52;\n } else if (c == 0x2b) {\n return 62;\n } else if (c == 0x2f) {\n return 63;\n } else {\n throw 'c:' + c;\n }\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // gifImage (B/W)\n //---------------------------------------------------------------------\n\n var gifImage = function(width, height) {\n\n var _width = width;\n var _height = height;\n var _data = new Array(width * height);\n\n var _this = {};\n\n _this.setPixel = function(x, y, pixel) {\n _data[y * _width + x] = pixel;\n };\n\n _this.write = function(out) {\n\n //---------------------------------\n // GIF Signature\n\n out.writeString('GIF87a');\n\n //---------------------------------\n // Screen Descriptor\n\n out.writeShort(_width);\n out.writeShort(_height);\n\n out.writeByte(0x80); // 2bit\n out.writeByte(0);\n out.writeByte(0);\n\n //---------------------------------\n // Global Color Map\n\n // black\n out.writeByte(0x00);\n out.writeByte(0x00);\n out.writeByte(0x00);\n\n // white\n out.writeByte(0xff);\n out.writeByte(0xff);\n out.writeByte(0xff);\n\n //---------------------------------\n // Image Descriptor\n\n out.writeString(',');\n out.writeShort(0);\n out.writeShort(0);\n out.writeShort(_width);\n out.writeShort(_height);\n out.writeByte(0);\n\n //---------------------------------\n // Local Color Map\n\n //---------------------------------\n // Raster Data\n\n var lzwMinCodeSize = 2;\n var raster = getLZWRaster(lzwMinCodeSize);\n\n out.writeByte(lzwMinCodeSize);\n\n var offset = 0;\n\n while (raster.length - offset > 255) {\n out.writeByte(255);\n out.writeBytes(raster, offset, 255);\n offset += 255;\n }\n\n out.writeByte(raster.length - offset);\n out.writeBytes(raster, offset, raster.length - offset);\n out.writeByte(0x00);\n\n //---------------------------------\n // GIF Terminator\n out.writeString(';');\n };\n\n var bitOutputStream = function(out) {\n\n var _out = out;\n var _bitLength = 0;\n var _bitBuffer = 0;\n\n var _this = {};\n\n _this.write = function(data, length) {\n\n if ( (data >>> length) != 0) {\n throw 'length over';\n }\n\n while (_bitLength + length >= 8) {\n _out.writeByte(0xff & ( (data << _bitLength) | _bitBuffer) );\n length -= (8 - _bitLength);\n data >>>= (8 - _bitLength);\n _bitBuffer = 0;\n _bitLength = 0;\n }\n\n _bitBuffer = (data << _bitLength) | _bitBuffer;\n _bitLength = _bitLength + length;\n };\n\n _this.flush = function() {\n if (_bitLength > 0) {\n _out.writeByte(_bitBuffer);\n }\n };\n\n return _this;\n };\n\n var getLZWRaster = function(lzwMinCodeSize) {\n\n var clearCode = 1 << lzwMinCodeSize;\n var endCode = (1 << lzwMinCodeSize) + 1;\n var bitLength = lzwMinCodeSize + 1;\n\n // Setup LZWTable\n var table = lzwTable();\n\n for (var i = 0; i < clearCode; i += 1) {\n table.add(String.fromCharCode(i) );\n }\n table.add(String.fromCharCode(clearCode) );\n table.add(String.fromCharCode(endCode) );\n\n var byteOut = byteArrayOutputStream();\n var bitOut = bitOutputStream(byteOut);\n\n // clear code\n bitOut.write(clearCode, bitLength);\n\n var dataIndex = 0;\n\n var s = String.fromCharCode(_data[dataIndex]);\n dataIndex += 1;\n\n while (dataIndex < _data.length) {\n\n var c = String.fromCharCode(_data[dataIndex]);\n dataIndex += 1;\n\n if (table.contains(s + c) ) {\n\n s = s + c;\n\n } else {\n\n bitOut.write(table.indexOf(s), bitLength);\n\n if (table.size() < 0xfff) {\n\n if (table.size() == (1 << bitLength) ) {\n bitLength += 1;\n }\n\n table.add(s + c);\n }\n\n s = c;\n }\n }\n\n bitOut.write(table.indexOf(s), bitLength);\n\n // end code\n bitOut.write(endCode, bitLength);\n\n bitOut.flush();\n\n return byteOut.toByteArray();\n };\n\n var lzwTable = function() {\n\n var _map = {};\n var _size = 0;\n\n var _this = {};\n\n _this.add = function(key) {\n if (_this.contains(key) ) {\n throw 'dup key:' + key;\n }\n _map[key] = _size;\n _size += 1;\n };\n\n _this.size = function() {\n return _size;\n };\n\n _this.indexOf = function(key) {\n return _map[key];\n };\n\n _this.contains = function(key) {\n return typeof _map[key] != 'undefined';\n };\n\n return _this;\n };\n\n return _this;\n };\n\n var createDataURL = function(width, height, getPixel) {\n var gif = gifImage(width, height);\n for (var y = 0; y < height; y += 1) {\n for (var x = 0; x < width; x += 1) {\n gif.setPixel(x, y, getPixel(x, y) );\n }\n }\n\n var b = byteArrayOutputStream();\n gif.write(b);\n\n var base64 = base64EncodeOutputStream();\n var bytes = b.toByteArray();\n for (var i = 0; i < bytes.length; i += 1) {\n base64.writeByte(bytes[i]);\n }\n base64.flush();\n\n return 'data:image/gif;base64,' + base64;\n };\n\n //---------------------------------------------------------------------\n // returns qrcode function.\n\n return qrcode;\n}();\n\n// multibyte support\n!function() {\n\n qrcode.stringToBytesFuncs['UTF-8'] = function(s) {\n // http://stackoverflow.com/questions/18729405/how-to-convert-utf8-string-to-byte-array\n function toUTF8Array(str) {\n var utf8 = [];\n for (var i=0; i < str.length; i++) {\n var charcode = str.charCodeAt(i);\n if (charcode < 0x80) utf8.push(charcode);\n else if (charcode < 0x800) {\n utf8.push(0xc0 | (charcode >> 6),\n 0x80 | (charcode & 0x3f));\n }\n else if (charcode < 0xd800 || charcode >= 0xe000) {\n utf8.push(0xe0 | (charcode >> 12),\n 0x80 | ((charcode>>6) & 0x3f),\n 0x80 | (charcode & 0x3f));\n }\n // surrogate pair\n else {\n i++;\n // UTF-16 encodes 0x10000-0x10FFFF by\n // subtracting 0x10000 and splitting the\n // 20 bits of 0x0-0xFFFFF into two halves\n charcode = 0x10000 + (((charcode & 0x3ff)<<10)\n | (str.charCodeAt(i) & 0x3ff));\n utf8.push(0xf0 | (charcode >>18),\n 0x80 | ((charcode>>12) & 0x3f),\n 0x80 | ((charcode>>6) & 0x3f),\n 0x80 | (charcode & 0x3f));\n }\n }\n return utf8;\n }\n return toUTF8Array(s);\n };\n\n}();\n\n(function (factory) {\n if (typeof define === 'function' && define.amd) {\n define([], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory();\n }\n}(function () {\n return qrcode;\n}));\n","import { UnknownObject } from \"../types\";\n\nconst isObject = (obj: Record): boolean => !!obj && typeof obj === \"object\" && !Array.isArray(obj);\n\nexport default function mergeDeep(target: UnknownObject, ...sources: UnknownObject[]): UnknownObject {\n if (!sources.length) return target;\n const source = sources.shift();\n if (source === undefined || !isObject(target) || !isObject(source)) return target;\n target = { ...target };\n Object.keys(source).forEach((key: string): void => {\n const targetValue = target[key];\n const sourceValue = source[key];\n\n if (Array.isArray(targetValue) && Array.isArray(sourceValue)) {\n target[key] = sourceValue;\n } else if (isObject(targetValue) && isObject(sourceValue)) {\n target[key] = mergeDeep(Object.assign({}, targetValue), sourceValue);\n } else {\n target[key] = sourceValue;\n }\n });\n\n return mergeDeep(target, ...sources);\n}\n","export default function downloadURI(uri: string, name: string): void {\n const link = document.createElement(\"a\");\n link.download = name;\n link.href = uri;\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n}\n","interface ImageSizeOptions {\n originalHeight: number;\n originalWidth: number;\n maxHiddenDots: number;\n maxHiddenAxisDots?: number;\n dotSize: number;\n}\n\ninterface ImageSizeResult {\n height: number;\n width: number;\n hideYDots: number;\n hideXDots: number;\n}\n\nexport default function calculateImageSize({\n originalHeight,\n originalWidth,\n maxHiddenDots,\n maxHiddenAxisDots,\n dotSize\n}: ImageSizeOptions): ImageSizeResult {\n const hideDots = { x: 0, y: 0 };\n const imageSize = { x: 0, y: 0 };\n\n if (originalHeight <= 0 || originalWidth <= 0 || maxHiddenDots <= 0 || dotSize <= 0) {\n return {\n height: 0,\n width: 0,\n hideYDots: 0,\n hideXDots: 0\n };\n }\n\n const k = originalHeight / originalWidth;\n\n //Getting the maximum possible axis hidden dots\n hideDots.x = Math.floor(Math.sqrt(maxHiddenDots / k));\n //The count of hidden dot's can't be less than 1\n if (hideDots.x <= 0) hideDots.x = 1;\n //Check the limit of the maximum allowed axis hidden dots\n if (maxHiddenAxisDots && maxHiddenAxisDots < hideDots.x) hideDots.x = maxHiddenAxisDots;\n //The count of dots should be odd\n if (hideDots.x % 2 === 0) hideDots.x--;\n imageSize.x = hideDots.x * dotSize;\n //Calculate opposite axis hidden dots based on axis value.\n //The value will be odd.\n //We use ceil to prevent dots covering by the image.\n hideDots.y = 1 + 2 * Math.ceil((hideDots.x * k - 1) / 2);\n imageSize.y = Math.round(imageSize.x * k);\n //If the result dots count is bigger than max - then decrease size and calculate again\n if (hideDots.y * hideDots.x > maxHiddenDots || (maxHiddenAxisDots && maxHiddenAxisDots < hideDots.y)) {\n if (maxHiddenAxisDots && maxHiddenAxisDots < hideDots.y) {\n hideDots.y = maxHiddenAxisDots;\n if (hideDots.y % 2 === 0) hideDots.x--;\n } else {\n hideDots.y -= 2;\n }\n imageSize.y = hideDots.y * dotSize;\n hideDots.x = 1 + 2 * Math.ceil((hideDots.y / k - 1) / 2);\n imageSize.x = Math.round(imageSize.y / k);\n }\n\n return {\n height: imageSize.y,\n width: imageSize.x,\n hideYDots: hideDots.y,\n hideXDots: hideDots.x\n };\n}\n","interface ErrorCorrectionPercents {\n [key: string]: number;\n}\n\nexport default {\n L: 0.07,\n M: 0.15,\n Q: 0.25,\n H: 0.3\n} as ErrorCorrectionPercents;\n","import { DotTypes } from \"../types\";\n\nexport default {\n dots: \"dots\",\n rounded: \"rounded\",\n classy: \"classy\",\n classyRounded: \"classy-rounded\",\n square: \"square\",\n extraRounded: \"extra-rounded\"\n} as DotTypes;\n","import dotTypes from \"../../../constants/dotTypes\";\nimport {\n DotType,\n GetNeighbor,\n RotateFigureArgsCanvas,\n BasicFigureDrawArgsCanvas,\n DrawArgsCanvas\n} from \"../../../types\";\n\nexport default class QRDot {\n _context: CanvasRenderingContext2D;\n _type: DotType;\n\n constructor({ context, type }: { context: CanvasRenderingContext2D; type: DotType }) {\n this._context = context;\n this._type = type;\n }\n\n draw(x: number, y: number, size: number, getNeighbor: GetNeighbor): void {\n const context = this._context;\n const type = this._type;\n let drawFunction;\n\n switch (type) {\n case dotTypes.dots:\n drawFunction = this._drawDot;\n break;\n case dotTypes.classy:\n drawFunction = this._drawClassy;\n break;\n case dotTypes.classyRounded:\n drawFunction = this._drawClassyRounded;\n break;\n case dotTypes.rounded:\n drawFunction = this._drawRounded;\n break;\n case dotTypes.extraRounded:\n drawFunction = this._drawExtraRounded;\n break;\n case dotTypes.square:\n default:\n drawFunction = this._drawSquare;\n }\n\n drawFunction.call(this, { x, y, size, context, getNeighbor });\n }\n\n _rotateFigure({ x, y, size, context, rotation = 0, draw }: RotateFigureArgsCanvas): void {\n const cx = x + size / 2;\n const cy = y + size / 2;\n\n context.translate(cx, cy);\n rotation && context.rotate(rotation);\n draw();\n context.closePath();\n rotation && context.rotate(-rotation);\n context.translate(-cx, -cy);\n }\n\n _basicDot(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.arc(0, 0, size / 2, 0, Math.PI * 2);\n }\n });\n }\n\n _basicSquare(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.rect(-size / 2, -size / 2, size, size);\n }\n });\n }\n\n //if rotation === 0 - right side is rounded\n _basicSideRounded(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.arc(0, 0, size / 2, -Math.PI / 2, Math.PI / 2);\n context.lineTo(-size / 2, size / 2);\n context.lineTo(-size / 2, -size / 2);\n context.lineTo(0, -size / 2);\n }\n });\n }\n\n //if rotation === 0 - top right corner is rounded\n _basicCornerRounded(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.arc(0, 0, size / 2, -Math.PI / 2, 0);\n context.lineTo(size / 2, size / 2);\n context.lineTo(-size / 2, size / 2);\n context.lineTo(-size / 2, -size / 2);\n context.lineTo(0, -size / 2);\n }\n });\n }\n\n //if rotation === 0 - top right corner is rounded\n _basicCornerExtraRounded(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.arc(-size / 2, size / 2, size, -Math.PI / 2, 0);\n context.lineTo(-size / 2, size / 2);\n context.lineTo(-size / 2, -size / 2);\n }\n });\n }\n\n _basicCornersRounded(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.arc(0, 0, size / 2, -Math.PI / 2, 0);\n context.lineTo(size / 2, size / 2);\n context.lineTo(0, size / 2);\n context.arc(0, 0, size / 2, Math.PI / 2, Math.PI);\n context.lineTo(-size / 2, -size / 2);\n context.lineTo(0, -size / 2);\n }\n });\n }\n\n _basicCornersExtraRounded(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.arc(-size / 2, size / 2, size, -Math.PI / 2, 0);\n context.arc(size / 2, -size / 2, size, Math.PI / 2, Math.PI);\n }\n });\n }\n\n _drawDot({ x, y, size, context }: DrawArgsCanvas): void {\n this._basicDot({ x, y, size, context, rotation: 0 });\n }\n\n _drawSquare({ x, y, size, context }: DrawArgsCanvas): void {\n this._basicSquare({ x, y, size, context, rotation: 0 });\n }\n\n _drawRounded({ x, y, size, context, getNeighbor }: DrawArgsCanvas): void {\n const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\n const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\n const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\n const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\n\n const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\n\n if (neighborsCount === 0) {\n this._basicDot({ x, y, size, context, rotation: 0 });\n return;\n }\n\n if (neighborsCount > 2 || (leftNeighbor && rightNeighbor) || (topNeighbor && bottomNeighbor)) {\n this._basicSquare({ x, y, size, context, rotation: 0 });\n return;\n }\n\n if (neighborsCount === 2) {\n let rotation = 0;\n\n if (leftNeighbor && topNeighbor) {\n rotation = Math.PI / 2;\n } else if (topNeighbor && rightNeighbor) {\n rotation = Math.PI;\n } else if (rightNeighbor && bottomNeighbor) {\n rotation = -Math.PI / 2;\n }\n\n this._basicCornerRounded({ x, y, size, context, rotation });\n return;\n }\n\n if (neighborsCount === 1) {\n let rotation = 0;\n\n if (topNeighbor) {\n rotation = Math.PI / 2;\n } else if (rightNeighbor) {\n rotation = Math.PI;\n } else if (bottomNeighbor) {\n rotation = -Math.PI / 2;\n }\n\n this._basicSideRounded({ x, y, size, context, rotation });\n return;\n }\n }\n\n _drawExtraRounded({ x, y, size, context, getNeighbor }: DrawArgsCanvas): void {\n const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\n const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\n const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\n const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\n\n const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\n\n if (neighborsCount === 0) {\n this._basicDot({ x, y, size, context, rotation: 0 });\n return;\n }\n\n if (neighborsCount > 2 || (leftNeighbor && rightNeighbor) || (topNeighbor && bottomNeighbor)) {\n this._basicSquare({ x, y, size, context, rotation: 0 });\n return;\n }\n\n if (neighborsCount === 2) {\n let rotation = 0;\n\n if (leftNeighbor && topNeighbor) {\n rotation = Math.PI / 2;\n } else if (topNeighbor && rightNeighbor) {\n rotation = Math.PI;\n } else if (rightNeighbor && bottomNeighbor) {\n rotation = -Math.PI / 2;\n }\n\n this._basicCornerExtraRounded({ x, y, size, context, rotation });\n return;\n }\n\n if (neighborsCount === 1) {\n let rotation = 0;\n\n if (topNeighbor) {\n rotation = Math.PI / 2;\n } else if (rightNeighbor) {\n rotation = Math.PI;\n } else if (bottomNeighbor) {\n rotation = -Math.PI / 2;\n }\n\n this._basicSideRounded({ x, y, size, context, rotation });\n return;\n }\n }\n\n _drawClassy({ x, y, size, context, getNeighbor }: DrawArgsCanvas): void {\n const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\n const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\n const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\n const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\n\n const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\n\n if (neighborsCount === 0) {\n this._basicCornersRounded({ x, y, size, context, rotation: Math.PI / 2 });\n return;\n }\n\n if (!leftNeighbor && !topNeighbor) {\n this._basicCornerRounded({ x, y, size, context, rotation: -Math.PI / 2 });\n return;\n }\n\n if (!rightNeighbor && !bottomNeighbor) {\n this._basicCornerRounded({ x, y, size, context, rotation: Math.PI / 2 });\n return;\n }\n\n this._basicSquare({ x, y, size, context, rotation: 0 });\n }\n\n _drawClassyRounded({ x, y, size, context, getNeighbor }: DrawArgsCanvas): void {\n const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\n const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\n const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\n const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\n\n const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\n\n if (neighborsCount === 0) {\n this._basicCornersRounded({ x, y, size, context, rotation: Math.PI / 2 });\n return;\n }\n\n if (!leftNeighbor && !topNeighbor) {\n this._basicCornerExtraRounded({ x, y, size, context, rotation: -Math.PI / 2 });\n return;\n }\n\n if (!rightNeighbor && !bottomNeighbor) {\n this._basicCornerExtraRounded({ x, y, size, context, rotation: Math.PI / 2 });\n return;\n }\n\n this._basicSquare({ x, y, size, context, rotation: 0 });\n }\n}\n","import { CornerSquareTypes } from \"../types\";\n\nexport default {\n dot: \"dot\",\n square: \"square\",\n extraRounded: \"extra-rounded\"\n} as CornerSquareTypes;\n","import cornerSquareTypes from \"../../../constants/cornerSquareTypes\";\nimport { CornerSquareType, RotateFigureArgsCanvas, BasicFigureDrawArgsCanvas, DrawArgsCanvas } from \"../../../types\";\n\nexport default class QRCornerSquare {\n _context: CanvasRenderingContext2D;\n _type: CornerSquareType;\n\n constructor({ context, type }: { context: CanvasRenderingContext2D; type: CornerSquareType }) {\n this._context = context;\n this._type = type;\n }\n\n draw(x: number, y: number, size: number, rotation: number): void {\n const context = this._context;\n const type = this._type;\n let drawFunction;\n\n switch (type) {\n case cornerSquareTypes.square:\n drawFunction = this._drawSquare;\n break;\n case cornerSquareTypes.extraRounded:\n drawFunction = this._drawExtraRounded;\n break;\n case cornerSquareTypes.dot:\n default:\n drawFunction = this._drawDot;\n }\n\n drawFunction.call(this, { x, y, size, context, rotation });\n }\n\n _rotateFigure({ x, y, size, context, rotation = 0, draw }: RotateFigureArgsCanvas): void {\n const cx = x + size / 2;\n const cy = y + size / 2;\n\n context.translate(cx, cy);\n rotation && context.rotate(rotation);\n draw();\n context.closePath();\n rotation && context.rotate(-rotation);\n context.translate(-cx, -cy);\n }\n\n _basicDot(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n const dotSize = size / 7;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.arc(0, 0, size / 2, 0, Math.PI * 2);\n context.arc(0, 0, size / 2 - dotSize, 0, Math.PI * 2);\n }\n });\n }\n\n _basicSquare(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n const dotSize = size / 7;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.rect(-size / 2, -size / 2, size, size);\n context.rect(-size / 2 + dotSize, -size / 2 + dotSize, size - 2 * dotSize, size - 2 * dotSize);\n }\n });\n }\n\n _basicExtraRounded(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n const dotSize = size / 7;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.arc(-dotSize, -dotSize, 2.5 * dotSize, Math.PI, -Math.PI / 2);\n context.lineTo(dotSize, -3.5 * dotSize);\n context.arc(dotSize, -dotSize, 2.5 * dotSize, -Math.PI / 2, 0);\n context.lineTo(3.5 * dotSize, -dotSize);\n context.arc(dotSize, dotSize, 2.5 * dotSize, 0, Math.PI / 2);\n context.lineTo(-dotSize, 3.5 * dotSize);\n context.arc(-dotSize, dotSize, 2.5 * dotSize, Math.PI / 2, Math.PI);\n context.lineTo(-3.5 * dotSize, -dotSize);\n\n context.arc(-dotSize, -dotSize, 1.5 * dotSize, Math.PI, -Math.PI / 2);\n context.lineTo(dotSize, -2.5 * dotSize);\n context.arc(dotSize, -dotSize, 1.5 * dotSize, -Math.PI / 2, 0);\n context.lineTo(2.5 * dotSize, -dotSize);\n context.arc(dotSize, dotSize, 1.5 * dotSize, 0, Math.PI / 2);\n context.lineTo(-dotSize, 2.5 * dotSize);\n context.arc(-dotSize, dotSize, 1.5 * dotSize, Math.PI / 2, Math.PI);\n context.lineTo(-2.5 * dotSize, -dotSize);\n }\n });\n }\n\n _drawDot({ x, y, size, context, rotation }: DrawArgsCanvas): void {\n this._basicDot({ x, y, size, context, rotation });\n }\n\n _drawSquare({ x, y, size, context, rotation }: DrawArgsCanvas): void {\n this._basicSquare({ x, y, size, context, rotation });\n }\n\n _drawExtraRounded({ x, y, size, context, rotation }: DrawArgsCanvas): void {\n this._basicExtraRounded({ x, y, size, context, rotation });\n }\n}\n","import { CornerDotTypes } from \"../types\";\n\nexport default {\n dot: \"dot\",\n square: \"square\"\n} as CornerDotTypes;\n","import cornerDotTypes from \"../../../constants/cornerDotTypes\";\nimport { CornerDotType, RotateFigureArgsCanvas, BasicFigureDrawArgsCanvas, DrawArgsCanvas } from \"../../../types\";\n\nexport default class QRCornerDot {\n _context: CanvasRenderingContext2D;\n _type: CornerDotType;\n\n constructor({ context, type }: { context: CanvasRenderingContext2D; type: CornerDotType }) {\n this._context = context;\n this._type = type;\n }\n\n draw(x: number, y: number, size: number, rotation: number): void {\n const context = this._context;\n const type = this._type;\n let drawFunction;\n\n switch (type) {\n case cornerDotTypes.square:\n drawFunction = this._drawSquare;\n break;\n case cornerDotTypes.dot:\n default:\n drawFunction = this._drawDot;\n }\n\n drawFunction.call(this, { x, y, size, context, rotation });\n }\n\n _rotateFigure({ x, y, size, context, rotation = 0, draw }: RotateFigureArgsCanvas): void {\n const cx = x + size / 2;\n const cy = y + size / 2;\n\n context.translate(cx, cy);\n rotation && context.rotate(rotation);\n draw();\n context.closePath();\n rotation && context.rotate(-rotation);\n context.translate(-cx, -cy);\n }\n\n _basicDot(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.arc(0, 0, size / 2, 0, Math.PI * 2);\n }\n });\n }\n\n _basicSquare(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.rect(-size / 2, -size / 2, size, size);\n }\n });\n }\n\n _drawDot({ x, y, size, context, rotation }: DrawArgsCanvas): void {\n this._basicDot({ x, y, size, context, rotation });\n }\n\n _drawSquare({ x, y, size, context, rotation }: DrawArgsCanvas): void {\n this._basicSquare({ x, y, size, context, rotation });\n }\n}\n","import { GradientTypes } from \"../types\";\n\nexport default {\n radial: \"radial\",\n linear: \"linear\"\n} as GradientTypes;\n","import calculateImageSize from \"../tools/calculateImageSize\";\nimport errorCorrectionPercents from \"../constants/errorCorrectionPercents\";\nimport QRDot from \"../figures/dot/canvas/QRDot\";\nimport QRCornerSquare from \"../figures/cornerSquare/canvas/QRCornerSquare\";\nimport QRCornerDot from \"../figures/cornerDot/canvas/QRCornerDot\";\nimport { RequiredOptions } from \"./QROptions\";\nimport gradientTypes from \"../constants/gradientTypes\";\nimport { QRCode, Gradient, FilterFunction } from \"../types\";\n\nconst squareMask = [\n [1, 1, 1, 1, 1, 1, 1],\n [1, 0, 0, 0, 0, 0, 1],\n [1, 0, 0, 0, 0, 0, 1],\n [1, 0, 0, 0, 0, 0, 1],\n [1, 0, 0, 0, 0, 0, 1],\n [1, 0, 0, 0, 0, 0, 1],\n [1, 1, 1, 1, 1, 1, 1]\n];\n\nconst dotMask = [\n [0, 0, 0, 0, 0, 0, 0],\n [0, 0, 0, 0, 0, 0, 0],\n [0, 0, 1, 1, 1, 0, 0],\n [0, 0, 1, 1, 1, 0, 0],\n [0, 0, 1, 1, 1, 0, 0],\n [0, 0, 0, 0, 0, 0, 0],\n [0, 0, 0, 0, 0, 0, 0]\n];\n\nexport default class QRCanvas {\n _canvas: HTMLCanvasElement;\n _options: RequiredOptions;\n _qr?: QRCode;\n _image?: HTMLImageElement;\n\n //TODO don't pass all options to this class\n constructor(options: RequiredOptions) {\n this._canvas = document.createElement(\"canvas\");\n this._canvas.width = options.width;\n this._canvas.height = options.height;\n this._options = options;\n }\n\n get context(): CanvasRenderingContext2D | null {\n return this._canvas.getContext(\"2d\");\n }\n\n get width(): number {\n return this._canvas.width;\n }\n\n get height(): number {\n return this._canvas.height;\n }\n\n getCanvas(): HTMLCanvasElement {\n return this._canvas;\n }\n\n clear(): void {\n const canvasContext = this.context;\n\n if (canvasContext) {\n canvasContext.clearRect(0, 0, this._canvas.width, this._canvas.height);\n }\n }\n\n async drawQR(qr: QRCode): Promise {\n const count = qr.getModuleCount();\n const minSize = Math.min(this._options.width, this._options.height) - this._options.margin * 2;\n const dotSize = Math.floor(minSize / count);\n let drawImageSize = {\n hideXDots: 0,\n hideYDots: 0,\n width: 0,\n height: 0\n };\n\n this._qr = qr;\n\n if (this._options.image) {\n await this.loadImage();\n if (!this._image) return;\n const { imageOptions, qrOptions } = this._options;\n const coverLevel = imageOptions.imageSize * errorCorrectionPercents[qrOptions.errorCorrectionLevel];\n const maxHiddenDots = Math.floor(coverLevel * count * count);\n\n drawImageSize = calculateImageSize({\n originalWidth: this._image.width,\n originalHeight: this._image.height,\n maxHiddenDots,\n maxHiddenAxisDots: count - 14,\n dotSize\n });\n }\n\n this.clear();\n this.drawBackground();\n this.drawDots((i: number, j: number): boolean => {\n if (this._options.imageOptions.hideBackgroundDots) {\n if (\n i >= (count - drawImageSize.hideXDots) / 2 &&\n i < (count + drawImageSize.hideXDots) / 2 &&\n j >= (count - drawImageSize.hideYDots) / 2 &&\n j < (count + drawImageSize.hideYDots) / 2\n ) {\n return false;\n }\n }\n\n if (squareMask[i]?.[j] || squareMask[i - count + 7]?.[j] || squareMask[i]?.[j - count + 7]) {\n return false;\n }\n\n if (dotMask[i]?.[j] || dotMask[i - count + 7]?.[j] || dotMask[i]?.[j - count + 7]) {\n return false;\n }\n\n return true;\n });\n this.drawCorners();\n\n if (this._options.image) {\n this.drawImage({ width: drawImageSize.width, height: drawImageSize.height, count, dotSize });\n }\n }\n\n drawBackground(): void {\n const canvasContext = this.context;\n const options = this._options;\n\n if (canvasContext) {\n if (options.backgroundOptions.gradient) {\n const gradientOptions = options.backgroundOptions.gradient;\n const gradient = this._createGradient({\n context: canvasContext,\n options: gradientOptions,\n additionalRotation: 0,\n x: 0,\n y: 0,\n size: this._canvas.width > this._canvas.height ? this._canvas.width : this._canvas.height\n });\n\n gradientOptions.colorStops.forEach(({ offset, color }: { offset: number; color: string }) => {\n gradient.addColorStop(offset, color);\n });\n\n canvasContext.fillStyle = gradient;\n } else if (options.backgroundOptions.color) {\n canvasContext.fillStyle = options.backgroundOptions.color;\n }\n canvasContext.fillRect(0, 0, this._canvas.width, this._canvas.height);\n }\n }\n\n drawDots(filter?: FilterFunction): void {\n if (!this._qr) {\n throw \"QR code is not defined\";\n }\n\n const canvasContext = this.context;\n\n if (!canvasContext) {\n throw \"QR code is not defined\";\n }\n\n const options = this._options;\n const count = this._qr.getModuleCount();\n\n if (count > options.width || count > options.height) {\n throw \"The canvas is too small.\";\n }\n\n const minSize = Math.min(options.width, options.height) - options.margin * 2;\n const dotSize = Math.floor(minSize / count);\n const xBeginning = Math.floor((options.width - count * dotSize) / 2);\n const yBeginning = Math.floor((options.height - count * dotSize) / 2);\n const dot = new QRDot({ context: canvasContext, type: options.dotsOptions.type });\n\n canvasContext.beginPath();\n\n for (let i = 0; i < count; i++) {\n for (let j = 0; j < count; j++) {\n if (filter && !filter(i, j)) {\n continue;\n }\n if (!this._qr.isDark(i, j)) {\n continue;\n }\n dot.draw(\n yBeginning + j * dotSize,\n xBeginning + i * dotSize,\n dotSize,\n (xOffset: number, yOffset: number): boolean => {\n if (i + xOffset < 0 || j + yOffset < 0 || i + xOffset >= count || j + yOffset >= count) return false;\n if (filter && !filter(i + xOffset, j + yOffset)) return false;\n return !!this._qr && this._qr.isDark(i + xOffset, j + yOffset);\n }\n );\n }\n }\n\n if (options.dotsOptions.gradient) {\n const gradientOptions = options.dotsOptions.gradient;\n const gradient = this._createGradient({\n context: canvasContext,\n options: gradientOptions,\n additionalRotation: 0,\n x: xBeginning,\n y: yBeginning,\n size: count * dotSize\n });\n\n gradientOptions.colorStops.forEach(({ offset, color }: { offset: number; color: string }) => {\n gradient.addColorStop(offset, color);\n });\n\n canvasContext.fillStyle = canvasContext.strokeStyle = gradient;\n } else if (options.dotsOptions.color) {\n canvasContext.fillStyle = canvasContext.strokeStyle = options.dotsOptions.color;\n }\n\n canvasContext.fill(\"evenodd\");\n }\n\n drawCorners(filter?: FilterFunction): void {\n if (!this._qr) {\n throw \"QR code is not defined\";\n }\n\n const canvasContext = this.context;\n\n if (!canvasContext) {\n throw \"QR code is not defined\";\n }\n\n const options = this._options;\n\n const count = this._qr.getModuleCount();\n const minSize = Math.min(options.width, options.height) - options.margin * 2;\n const dotSize = Math.floor(minSize / count);\n const cornersSquareSize = dotSize * 7;\n const cornersDotSize = dotSize * 3;\n const xBeginning = Math.floor((options.width - count * dotSize) / 2);\n const yBeginning = Math.floor((options.height - count * dotSize) / 2);\n\n [\n [0, 0, 0],\n [1, 0, Math.PI / 2],\n [0, 1, -Math.PI / 2]\n ].forEach(([column, row, rotation]) => {\n if (filter && !filter(column, row)) {\n return;\n }\n\n const x = xBeginning + column * dotSize * (count - 7);\n const y = yBeginning + row * dotSize * (count - 7);\n\n if (options.cornersSquareOptions?.type) {\n const cornersSquare = new QRCornerSquare({ context: canvasContext, type: options.cornersSquareOptions?.type });\n\n canvasContext.beginPath();\n cornersSquare.draw(x, y, cornersSquareSize, rotation);\n } else {\n const dot = new QRDot({ context: canvasContext, type: options.dotsOptions.type });\n\n canvasContext.beginPath();\n\n for (let i = 0; i < squareMask.length; i++) {\n for (let j = 0; j < squareMask[i].length; j++) {\n if (!squareMask[i]?.[j]) {\n continue;\n }\n\n dot.draw(\n x + i * dotSize,\n y + j * dotSize,\n dotSize,\n (xOffset: number, yOffset: number): boolean => !!squareMask[i + xOffset]?.[j + yOffset]\n );\n }\n }\n }\n\n if (options.cornersSquareOptions?.gradient) {\n const gradientOptions = options.cornersSquareOptions.gradient;\n const gradient = this._createGradient({\n context: canvasContext,\n options: gradientOptions,\n additionalRotation: rotation,\n x,\n y,\n size: cornersSquareSize\n });\n\n gradientOptions.colorStops.forEach(({ offset, color }: { offset: number; color: string }) => {\n gradient.addColorStop(offset, color);\n });\n\n canvasContext.fillStyle = canvasContext.strokeStyle = gradient;\n } else if (options.cornersSquareOptions?.color) {\n canvasContext.fillStyle = canvasContext.strokeStyle = options.cornersSquareOptions.color;\n }\n\n canvasContext.fill(\"evenodd\");\n\n if (options.cornersDotOptions?.type) {\n const cornersDot = new QRCornerDot({ context: canvasContext, type: options.cornersDotOptions?.type });\n\n canvasContext.beginPath();\n cornersDot.draw(x + dotSize * 2, y + dotSize * 2, cornersDotSize, rotation);\n } else {\n const dot = new QRDot({ context: canvasContext, type: options.dotsOptions.type });\n\n canvasContext.beginPath();\n\n for (let i = 0; i < dotMask.length; i++) {\n for (let j = 0; j < dotMask[i].length; j++) {\n if (!dotMask[i]?.[j]) {\n continue;\n }\n\n dot.draw(\n x + i * dotSize,\n y + j * dotSize,\n dotSize,\n (xOffset: number, yOffset: number): boolean => !!dotMask[i + xOffset]?.[j + yOffset]\n );\n }\n }\n }\n\n if (options.cornersDotOptions?.gradient) {\n const gradientOptions = options.cornersDotOptions.gradient;\n const gradient = this._createGradient({\n context: canvasContext,\n options: gradientOptions,\n additionalRotation: rotation,\n x: x + dotSize * 2,\n y: y + dotSize * 2,\n size: cornersDotSize\n });\n\n gradientOptions.colorStops.forEach(({ offset, color }: { offset: number; color: string }) => {\n gradient.addColorStop(offset, color);\n });\n\n canvasContext.fillStyle = canvasContext.strokeStyle = gradient;\n } else if (options.cornersDotOptions?.color) {\n canvasContext.fillStyle = canvasContext.strokeStyle = options.cornersDotOptions.color;\n }\n\n canvasContext.fill(\"evenodd\");\n });\n }\n\n loadImage(): Promise {\n return new Promise((resolve, reject) => {\n const options = this._options;\n const image = new Image();\n\n if (!options.image) {\n return reject(\"Image is not defined\");\n }\n\n if (typeof options.imageOptions.crossOrigin === \"string\") {\n image.crossOrigin = options.imageOptions.crossOrigin;\n }\n\n this._image = image;\n image.onload = (): void => {\n resolve();\n };\n image.src = options.image;\n });\n }\n\n drawImage({\n width,\n height,\n count,\n dotSize\n }: {\n width: number;\n height: number;\n count: number;\n dotSize: number;\n }): void {\n const canvasContext = this.context;\n\n if (!canvasContext) {\n throw \"canvasContext is not defined\";\n }\n\n if (!this._image) {\n throw \"image is not defined\";\n }\n\n const options = this._options;\n const xBeginning = Math.floor((options.width - count * dotSize) / 2);\n const yBeginning = Math.floor((options.height - count * dotSize) / 2);\n const dx = xBeginning + options.imageOptions.margin + (count * dotSize - width) / 2;\n const dy = yBeginning + options.imageOptions.margin + (count * dotSize - height) / 2;\n const dw = width - options.imageOptions.margin * 2;\n const dh = height - options.imageOptions.margin * 2;\n\n canvasContext.drawImage(this._image, dx, dy, dw < 0 ? 0 : dw, dh < 0 ? 0 : dh);\n }\n\n _createGradient({\n context,\n options,\n additionalRotation,\n x,\n y,\n size\n }: {\n context: CanvasRenderingContext2D;\n options: Gradient;\n additionalRotation: number;\n x: number;\n y: number;\n size: number;\n }): CanvasGradient {\n let gradient;\n\n if (options.type === gradientTypes.radial) {\n gradient = context.createRadialGradient(x + size / 2, y + size / 2, 0, x + size / 2, y + size / 2, size / 2);\n } else {\n const rotation = ((options.rotation || 0) + additionalRotation) % (2 * Math.PI);\n const positiveRotation = (rotation + 2 * Math.PI) % (2 * Math.PI);\n let x0 = x + size / 2;\n let y0 = y + size / 2;\n let x1 = x + size / 2;\n let y1 = y + size / 2;\n\n if (\n (positiveRotation >= 0 && positiveRotation <= 0.25 * Math.PI) ||\n (positiveRotation > 1.75 * Math.PI && positiveRotation <= 2 * Math.PI)\n ) {\n x0 = x0 - size / 2;\n y0 = y0 - (size / 2) * Math.tan(rotation);\n x1 = x1 + size / 2;\n y1 = y1 + (size / 2) * Math.tan(rotation);\n } else if (positiveRotation > 0.25 * Math.PI && positiveRotation <= 0.75 * Math.PI) {\n y0 = y0 - size / 2;\n x0 = x0 - size / 2 / Math.tan(rotation);\n y1 = y1 + size / 2;\n x1 = x1 + size / 2 / Math.tan(rotation);\n } else if (positiveRotation > 0.75 * Math.PI && positiveRotation <= 1.25 * Math.PI) {\n x0 = x0 + size / 2;\n y0 = y0 + (size / 2) * Math.tan(rotation);\n x1 = x1 - size / 2;\n y1 = y1 - (size / 2) * Math.tan(rotation);\n } else if (positiveRotation > 1.25 * Math.PI && positiveRotation <= 1.75 * Math.PI) {\n y0 = y0 + size / 2;\n x0 = x0 + size / 2 / Math.tan(rotation);\n y1 = y1 - size / 2;\n x1 = x1 - size / 2 / Math.tan(rotation);\n }\n\n gradient = context.createLinearGradient(Math.round(x0), Math.round(y0), Math.round(x1), Math.round(y1));\n }\n\n return gradient;\n }\n}\n","import dotTypes from \"../../../constants/dotTypes\";\nimport { DotType, GetNeighbor, DrawArgs, BasicFigureDrawArgs, RotateFigureArgs } from \"../../../types\";\n\nexport default class QRDot {\n _element?: SVGElement;\n _svg: SVGElement;\n _type: DotType;\n\n constructor({ svg, type }: { svg: SVGElement; type: DotType }) {\n this._svg = svg;\n this._type = type;\n }\n\n draw(x: number, y: number, size: number, getNeighbor: GetNeighbor): void {\n const type = this._type;\n let drawFunction;\n\n switch (type) {\n case dotTypes.dots:\n drawFunction = this._drawDot;\n break;\n case dotTypes.classy:\n drawFunction = this._drawClassy;\n break;\n case dotTypes.classyRounded:\n drawFunction = this._drawClassyRounded;\n break;\n case dotTypes.rounded:\n drawFunction = this._drawRounded;\n break;\n case dotTypes.extraRounded:\n drawFunction = this._drawExtraRounded;\n break;\n case dotTypes.square:\n default:\n drawFunction = this._drawSquare;\n }\n\n drawFunction.call(this, { x, y, size, getNeighbor });\n }\n\n _rotateFigure({ x, y, size, rotation = 0, draw }: RotateFigureArgs): void {\n const cx = x + size / 2;\n const cy = y + size / 2;\n\n draw();\n this._element?.setAttribute(\"transform\", `rotate(${(180 * rotation) / Math.PI},${cx},${cy})`);\n }\n\n _basicDot(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"circle\");\n this._element.setAttribute(\"cx\", String(x + size / 2));\n this._element.setAttribute(\"cy\", String(y + size / 2));\n this._element.setAttribute(\"r\", String(size / 2));\n }\n });\n }\n\n _basicSquare(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"rect\");\n this._element.setAttribute(\"x\", String(x));\n this._element.setAttribute(\"y\", String(y));\n this._element.setAttribute(\"width\", String(size));\n this._element.setAttribute(\"height\", String(size));\n }\n });\n }\n\n //if rotation === 0 - right side is rounded\n _basicSideRounded(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n this._element.setAttribute(\n \"d\",\n `M ${x} ${y}` + //go to top left position\n `v ${size}` + //draw line to left bottom corner\n `h ${size / 2}` + //draw line to left bottom corner + half of size right\n `a ${size / 2} ${size / 2}, 0, 0, 0, 0 ${-size}` // draw rounded corner\n );\n }\n });\n }\n\n //if rotation === 0 - top right corner is rounded\n _basicCornerRounded(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n this._element.setAttribute(\n \"d\",\n `M ${x} ${y}` + //go to top left position\n `v ${size}` + //draw line to left bottom corner\n `h ${size}` + //draw line to right bottom corner\n `v ${-size / 2}` + //draw line to right bottom corner + half of size top\n `a ${size / 2} ${size / 2}, 0, 0, 0, ${-size / 2} ${-size / 2}` // draw rounded corner\n );\n }\n });\n }\n\n //if rotation === 0 - top right corner is rounded\n _basicCornerExtraRounded(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n this._element.setAttribute(\n \"d\",\n `M ${x} ${y}` + //go to top left position\n `v ${size}` + //draw line to left bottom corner\n `h ${size}` + //draw line to right bottom corner\n `a ${size} ${size}, 0, 0, 0, ${-size} ${-size}` // draw rounded top right corner\n );\n }\n });\n }\n\n //if rotation === 0 - left bottom and right top corners are rounded\n _basicCornersRounded(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n this._element.setAttribute(\n \"d\",\n `M ${x} ${y}` + //go to left top position\n `v ${size / 2}` + //draw line to left top corner + half of size bottom\n `a ${size / 2} ${size / 2}, 0, 0, 0, ${size / 2} ${size / 2}` + // draw rounded left bottom corner\n `h ${size / 2}` + //draw line to right bottom corner\n `v ${-size / 2}` + //draw line to right bottom corner + half of size top\n `a ${size / 2} ${size / 2}, 0, 0, 0, ${-size / 2} ${-size / 2}` // draw rounded right top corner\n );\n }\n });\n }\n\n _drawDot({ x, y, size }: DrawArgs): void {\n this._basicDot({ x, y, size, rotation: 0 });\n }\n\n _drawSquare({ x, y, size }: DrawArgs): void {\n this._basicSquare({ x, y, size, rotation: 0 });\n }\n\n _drawRounded({ x, y, size, getNeighbor }: DrawArgs): void {\n const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\n const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\n const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\n const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\n\n const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\n\n if (neighborsCount === 0) {\n this._basicDot({ x, y, size, rotation: 0 });\n return;\n }\n\n if (neighborsCount > 2 || (leftNeighbor && rightNeighbor) || (topNeighbor && bottomNeighbor)) {\n this._basicSquare({ x, y, size, rotation: 0 });\n return;\n }\n\n if (neighborsCount === 2) {\n let rotation = 0;\n\n if (leftNeighbor && topNeighbor) {\n rotation = Math.PI / 2;\n } else if (topNeighbor && rightNeighbor) {\n rotation = Math.PI;\n } else if (rightNeighbor && bottomNeighbor) {\n rotation = -Math.PI / 2;\n }\n\n this._basicCornerRounded({ x, y, size, rotation });\n return;\n }\n\n if (neighborsCount === 1) {\n let rotation = 0;\n\n if (topNeighbor) {\n rotation = Math.PI / 2;\n } else if (rightNeighbor) {\n rotation = Math.PI;\n } else if (bottomNeighbor) {\n rotation = -Math.PI / 2;\n }\n\n this._basicSideRounded({ x, y, size, rotation });\n return;\n }\n }\n\n _drawExtraRounded({ x, y, size, getNeighbor }: DrawArgs): void {\n const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\n const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\n const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\n const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\n\n const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\n\n if (neighborsCount === 0) {\n this._basicDot({ x, y, size, rotation: 0 });\n return;\n }\n\n if (neighborsCount > 2 || (leftNeighbor && rightNeighbor) || (topNeighbor && bottomNeighbor)) {\n this._basicSquare({ x, y, size, rotation: 0 });\n return;\n }\n\n if (neighborsCount === 2) {\n let rotation = 0;\n\n if (leftNeighbor && topNeighbor) {\n rotation = Math.PI / 2;\n } else if (topNeighbor && rightNeighbor) {\n rotation = Math.PI;\n } else if (rightNeighbor && bottomNeighbor) {\n rotation = -Math.PI / 2;\n }\n\n this._basicCornerExtraRounded({ x, y, size, rotation });\n return;\n }\n\n if (neighborsCount === 1) {\n let rotation = 0;\n\n if (topNeighbor) {\n rotation = Math.PI / 2;\n } else if (rightNeighbor) {\n rotation = Math.PI;\n } else if (bottomNeighbor) {\n rotation = -Math.PI / 2;\n }\n\n this._basicSideRounded({ x, y, size, rotation });\n return;\n }\n }\n\n _drawClassy({ x, y, size, getNeighbor }: DrawArgs): void {\n const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\n const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\n const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\n const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\n\n const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\n\n if (neighborsCount === 0) {\n this._basicCornersRounded({ x, y, size, rotation: Math.PI / 2 });\n return;\n }\n\n if (!leftNeighbor && !topNeighbor) {\n this._basicCornerRounded({ x, y, size, rotation: -Math.PI / 2 });\n return;\n }\n\n if (!rightNeighbor && !bottomNeighbor) {\n this._basicCornerRounded({ x, y, size, rotation: Math.PI / 2 });\n return;\n }\n\n this._basicSquare({ x, y, size, rotation: 0 });\n }\n\n _drawClassyRounded({ x, y, size, getNeighbor }: DrawArgs): void {\n const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\n const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\n const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\n const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\n\n const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\n\n if (neighborsCount === 0) {\n this._basicCornersRounded({ x, y, size, rotation: Math.PI / 2 });\n return;\n }\n\n if (!leftNeighbor && !topNeighbor) {\n this._basicCornerExtraRounded({ x, y, size, rotation: -Math.PI / 2 });\n return;\n }\n\n if (!rightNeighbor && !bottomNeighbor) {\n this._basicCornerExtraRounded({ x, y, size, rotation: Math.PI / 2 });\n return;\n }\n\n this._basicSquare({ x, y, size, rotation: 0 });\n }\n}\n","import cornerSquareTypes from \"../../../constants/cornerSquareTypes\";\nimport { CornerSquareType, DrawArgs, BasicFigureDrawArgs, RotateFigureArgs } from \"../../../types\";\n\nexport default class QRCornerSquare {\n _element?: SVGElement;\n _svg: SVGElement;\n _type: CornerSquareType;\n\n constructor({ svg, type }: { svg: SVGElement; type: CornerSquareType }) {\n this._svg = svg;\n this._type = type;\n }\n\n draw(x: number, y: number, size: number, rotation: number): void {\n const type = this._type;\n let drawFunction;\n\n switch (type) {\n case cornerSquareTypes.square:\n drawFunction = this._drawSquare;\n break;\n case cornerSquareTypes.extraRounded:\n drawFunction = this._drawExtraRounded;\n break;\n case cornerSquareTypes.dot:\n default:\n drawFunction = this._drawDot;\n }\n\n drawFunction.call(this, { x, y, size, rotation });\n }\n\n _rotateFigure({ x, y, size, rotation = 0, draw }: RotateFigureArgs): void {\n const cx = x + size / 2;\n const cy = y + size / 2;\n\n draw();\n this._element?.setAttribute(\"transform\", `rotate(${(180 * rotation) / Math.PI},${cx},${cy})`);\n }\n\n _basicDot(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n const dotSize = size / 7;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n this._element.setAttribute(\"clip-rule\", \"evenodd\");\n this._element.setAttribute(\n \"d\",\n `M ${x + size / 2} ${y}` + // M cx, y // Move to top of ring\n `a ${size / 2} ${size / 2} 0 1 0 0.1 0` + // a outerRadius, outerRadius, 0, 1, 0, 1, 0 // Draw outer arc, but don't close it\n `z` + // Z // Close the outer shape\n `m 0 ${dotSize}` + // m -1 outerRadius-innerRadius // Move to top point of inner radius\n `a ${size / 2 - dotSize} ${size / 2 - dotSize} 0 1 1 -0.1 0` + // a innerRadius, innerRadius, 0, 1, 1, -1, 0 // Draw inner arc, but don't close it\n `Z` // Z // Close the inner ring. Actually will still work without, but inner ring will have one unit missing in stroke\n );\n }\n });\n }\n\n _basicSquare(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n const dotSize = size / 7;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n this._element.setAttribute(\"clip-rule\", \"evenodd\");\n this._element.setAttribute(\n \"d\",\n `M ${x} ${y}` +\n `v ${size}` +\n `h ${size}` +\n `v ${-size}` +\n `z` +\n `M ${x + dotSize} ${y + dotSize}` +\n `h ${size - 2 * dotSize}` +\n `v ${size - 2 * dotSize}` +\n `h ${-size + 2 * dotSize}` +\n `z`\n );\n }\n });\n }\n\n _basicExtraRounded(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n const dotSize = size / 7;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n this._element.setAttribute(\"clip-rule\", \"evenodd\");\n this._element.setAttribute(\n \"d\",\n `M ${x} ${y + 2.5 * dotSize}` +\n `v ${2 * dotSize}` +\n `a ${2.5 * dotSize} ${2.5 * dotSize}, 0, 0, 0, ${dotSize * 2.5} ${dotSize * 2.5}` +\n `h ${2 * dotSize}` +\n `a ${2.5 * dotSize} ${2.5 * dotSize}, 0, 0, 0, ${dotSize * 2.5} ${-dotSize * 2.5}` +\n `v ${-2 * dotSize}` +\n `a ${2.5 * dotSize} ${2.5 * dotSize}, 0, 0, 0, ${-dotSize * 2.5} ${-dotSize * 2.5}` +\n `h ${-2 * dotSize}` +\n `a ${2.5 * dotSize} ${2.5 * dotSize}, 0, 0, 0, ${-dotSize * 2.5} ${dotSize * 2.5}` +\n `M ${x + 2.5 * dotSize} ${y + dotSize}` +\n `h ${2 * dotSize}` +\n `a ${1.5 * dotSize} ${1.5 * dotSize}, 0, 0, 1, ${dotSize * 1.5} ${dotSize * 1.5}` +\n `v ${2 * dotSize}` +\n `a ${1.5 * dotSize} ${1.5 * dotSize}, 0, 0, 1, ${-dotSize * 1.5} ${dotSize * 1.5}` +\n `h ${-2 * dotSize}` +\n `a ${1.5 * dotSize} ${1.5 * dotSize}, 0, 0, 1, ${-dotSize * 1.5} ${-dotSize * 1.5}` +\n `v ${-2 * dotSize}` +\n `a ${1.5 * dotSize} ${1.5 * dotSize}, 0, 0, 1, ${dotSize * 1.5} ${-dotSize * 1.5}`\n );\n }\n });\n }\n\n _drawDot({ x, y, size, rotation }: DrawArgs): void {\n this._basicDot({ x, y, size, rotation });\n }\n\n _drawSquare({ x, y, size, rotation }: DrawArgs): void {\n this._basicSquare({ x, y, size, rotation });\n }\n\n _drawExtraRounded({ x, y, size, rotation }: DrawArgs): void {\n this._basicExtraRounded({ x, y, size, rotation });\n }\n}\n","import cornerDotTypes from \"../../../constants/cornerDotTypes\";\nimport { CornerDotType, RotateFigureArgs, BasicFigureDrawArgs, DrawArgs } from \"../../../types\";\n\nexport default class QRCornerDot {\n _element?: SVGElement;\n _svg: SVGElement;\n _type: CornerDotType;\n\n constructor({ svg, type }: { svg: SVGElement; type: CornerDotType }) {\n this._svg = svg;\n this._type = type;\n }\n\n draw(x: number, y: number, size: number, rotation: number): void {\n const type = this._type;\n let drawFunction;\n\n switch (type) {\n case cornerDotTypes.square:\n drawFunction = this._drawSquare;\n break;\n case cornerDotTypes.dot:\n default:\n drawFunction = this._drawDot;\n }\n\n drawFunction.call(this, { x, y, size, rotation });\n }\n\n _rotateFigure({ x, y, size, rotation = 0, draw }: RotateFigureArgs): void {\n const cx = x + size / 2;\n const cy = y + size / 2;\n\n draw();\n this._element?.setAttribute(\"transform\", `rotate(${(180 * rotation) / Math.PI},${cx},${cy})`);\n }\n\n _basicDot(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"circle\");\n this._element.setAttribute(\"cx\", String(x + size / 2));\n this._element.setAttribute(\"cy\", String(y + size / 2));\n this._element.setAttribute(\"r\", String(size / 2));\n }\n });\n }\n\n _basicSquare(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"rect\");\n this._element.setAttribute(\"x\", String(x));\n this._element.setAttribute(\"y\", String(y));\n this._element.setAttribute(\"width\", String(size));\n this._element.setAttribute(\"height\", String(size));\n }\n });\n }\n\n _drawDot({ x, y, size, rotation }: DrawArgs): void {\n this._basicDot({ x, y, size, rotation });\n }\n\n _drawSquare({ x, y, size, rotation }: DrawArgs): void {\n this._basicSquare({ x, y, size, rotation });\n }\n}\n","import calculateImageSize from \"../tools/calculateImageSize\";\nimport errorCorrectionPercents from \"../constants/errorCorrectionPercents\";\nimport QRDot from \"../figures/dot/svg/QRDot\";\nimport QRCornerSquare from \"../figures/cornerSquare/svg/QRCornerSquare\";\nimport QRCornerDot from \"../figures/cornerDot/svg/QRCornerDot\";\nimport { RequiredOptions } from \"./QROptions\";\nimport gradientTypes from \"../constants/gradientTypes\";\nimport { QRCode, FilterFunction, Gradient } from \"../types\";\n\nconst squareMask = [\n [1, 1, 1, 1, 1, 1, 1],\n [1, 0, 0, 0, 0, 0, 1],\n [1, 0, 0, 0, 0, 0, 1],\n [1, 0, 0, 0, 0, 0, 1],\n [1, 0, 0, 0, 0, 0, 1],\n [1, 0, 0, 0, 0, 0, 1],\n [1, 1, 1, 1, 1, 1, 1]\n];\n\nconst dotMask = [\n [0, 0, 0, 0, 0, 0, 0],\n [0, 0, 0, 0, 0, 0, 0],\n [0, 0, 1, 1, 1, 0, 0],\n [0, 0, 1, 1, 1, 0, 0],\n [0, 0, 1, 1, 1, 0, 0],\n [0, 0, 0, 0, 0, 0, 0],\n [0, 0, 0, 0, 0, 0, 0]\n];\n\nexport default class QRSVG {\n _element: SVGElement;\n _style: SVGStyleElement;\n _defs: SVGElement;\n _dotsClipPath?: SVGElement;\n _cornersSquareClipPath?: SVGElement;\n _cornersDotClipPath?: SVGElement;\n _dots?: SVGElement;\n _cornerSquares?: SVGElement;\n _corners?: SVGElement;\n _cornerDots?: SVGElement;\n _options: RequiredOptions;\n _qr?: QRCode;\n _image?: HTMLImageElement;\n\n //TODO don't pass all options to this class\n constructor(options: RequiredOptions) {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\");\n this._element.setAttribute(\"width\", String(options.width));\n this._element.setAttribute(\"height\", String(options.height));\n this._defs = document.createElementNS(\"http://www.w3.org/2000/svg\", \"defs\");\n this._style = document.createElementNS(\"http://www.w3.org/2000/svg\", \"style\");\n\n this._options = options;\n }\n\n get width(): number {\n return this._options.width;\n }\n\n get height(): number {\n return this._options.height;\n }\n\n getElement(): SVGElement {\n return this._element;\n }\n\n clear(): void {\n const oldElement = this._element;\n this._element = oldElement.cloneNode(false) as SVGElement;\n oldElement?.parentNode?.replaceChild(this._element, oldElement);\n this._defs = document.createElementNS(\"http://www.w3.org/2000/svg\", \"defs\");\n this._style = document.createElementNS(\"http://www.w3.org/2000/svg\", \"style\");\n this._element.appendChild(this._style);\n this._element.appendChild(this._defs);\n }\n\n async drawQR(qr: QRCode): Promise {\n const count = qr.getModuleCount();\n const minSize = Math.min(this._options.width, this._options.height) - this._options.margin * 2;\n const dotSize = Math.floor(minSize / count);\n let drawImageSize = {\n hideXDots: 0,\n hideYDots: 0,\n width: 0,\n height: 0\n };\n\n this._qr = qr;\n\n if (this._options.image) {\n //We need it to get image size\n await this.loadImage();\n if (!this._image) return;\n const { imageOptions, qrOptions } = this._options;\n const coverLevel = imageOptions.imageSize * errorCorrectionPercents[qrOptions.errorCorrectionLevel];\n const maxHiddenDots = Math.floor(coverLevel * count * count);\n\n drawImageSize = calculateImageSize({\n originalWidth: this._image.width,\n originalHeight: this._image.height,\n maxHiddenDots,\n maxHiddenAxisDots: count - 14,\n dotSize\n });\n }\n\n this._element.appendChild(this._style);\n this._element.appendChild(this._defs);\n\n this.clear();\n this.drawBackground();\n this.drawDots((i: number, j: number): boolean => {\n if (this._options.imageOptions.hideBackgroundDots) {\n if (\n i >= (count - drawImageSize.hideXDots) / 2 &&\n i < (count + drawImageSize.hideXDots) / 2 &&\n j >= (count - drawImageSize.hideYDots) / 2 &&\n j < (count + drawImageSize.hideYDots) / 2\n ) {\n return false;\n }\n }\n\n if (squareMask[i]?.[j] || squareMask[i - count + 7]?.[j] || squareMask[i]?.[j - count + 7]) {\n return false;\n }\n\n if (dotMask[i]?.[j] || dotMask[i - count + 7]?.[j] || dotMask[i]?.[j - count + 7]) {\n return false;\n }\n\n return true;\n });\n this.drawCorners();\n\n if (this._options.image) {\n this.drawImage({ width: drawImageSize.width, height: drawImageSize.height, count, dotSize });\n }\n }\n\n drawBackground(): void {\n const element = this._element;\n const options = this._options;\n\n if (element) {\n const gradientOptions = options.backgroundOptions?.gradient;\n const color = options.backgroundOptions?.color;\n\n if (gradientOptions) {\n this._createColor({\n options: gradientOptions,\n color: color,\n additionalRotation: 0,\n x: 0,\n y: 0,\n height: options.height,\n width: options.width,\n name: \"background-color\"\n });\n } else if (options.backgroundOptions?.color) {\n this._createStyle({\n color: color,\n name: \"background-color\"\n });\n }\n }\n }\n\n drawDots(filter?: FilterFunction): void {\n if (!this._qr) {\n throw \"QR code is not defined\";\n }\n\n const options = this._options;\n const count = this._qr.getModuleCount();\n\n if (count > options.width || count > options.height) {\n throw \"The canvas is too small.\";\n }\n\n const minSize = Math.min(options.width, options.height) - options.margin * 2;\n const dotSize = Math.floor(minSize / count);\n const xBeginning = Math.floor((options.width - count * dotSize) / 2);\n const yBeginning = Math.floor((options.height - count * dotSize) / 2);\n const dot = new QRDot({ svg: this._element, type: options.dotsOptions.type });\n\n if (options.dotsOptions?.gradient) {\n this._dotsClipPath = document.createElementNS(\"http://www.w3.org/2000/svg\", \"clipPath\");\n this._dotsClipPath.setAttribute(\"id\", \"clip-path-dot-color\");\n this._defs.appendChild(this._dotsClipPath);\n this._createColor({\n options: options.dotsOptions?.gradient,\n color: options.dotsOptions.color,\n additionalRotation: 0,\n x: xBeginning,\n y: yBeginning,\n height: count * dotSize,\n width: count * dotSize,\n name: \"dot-color\"\n });\n } else if (options.dotsOptions.color) {\n this._dots = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n this._dots.setAttribute(\"class\", \"dot-color\");\n this._element.appendChild(this._dots);\n this._createStyle({\n color: options.dotsOptions.color,\n name: \"dot-color\"\n });\n }\n\n for (let i = 0; i < count; i++) {\n for (let j = 0; j < count; j++) {\n if (filter && !filter(i, j)) {\n continue;\n }\n if (!this._qr?.isDark(i, j)) {\n continue;\n }\n\n dot.draw(\n yBeginning + j * dotSize,\n xBeginning + i * dotSize,\n dotSize,\n (xOffset: number, yOffset: number): boolean => {\n if (i + xOffset < 0 || j + yOffset < 0 || i + xOffset >= count || j + yOffset >= count) return false;\n if (filter && !filter(i + xOffset, j + yOffset)) return false;\n return !!this._qr && this._qr.isDark(i + xOffset, j + yOffset);\n }\n );\n\n if (dot._element && this._dotsClipPath) {\n this._dotsClipPath.appendChild(dot._element);\n } else if (dot._element && this._dots) {\n this._dots.appendChild(dot._element);\n }\n }\n }\n }\n\n drawCorners(): void {\n if (!this._qr) {\n throw \"QR code is not defined\";\n }\n\n const element = this._element;\n const options = this._options;\n\n if (!element) {\n throw \"Element code is not defined\";\n }\n\n const count = this._qr.getModuleCount();\n const minSize = Math.min(options.width, options.height) - options.margin * 2;\n const dotSize = Math.floor(minSize / count);\n const cornersSquareSize = dotSize * 7;\n const cornersDotSize = dotSize * 3;\n const xBeginning = Math.floor((options.width - count * dotSize) / 2);\n const yBeginning = Math.floor((options.height - count * dotSize) / 2);\n\n [\n [0, 0, 0],\n [1, 0, Math.PI / 2],\n [0, 1, -Math.PI / 2]\n ].forEach(([column, row, rotation]) => {\n const x = xBeginning + column * dotSize * (count - 7);\n const y = yBeginning + row * dotSize * (count - 7);\n let cornersSquareClipPath = this._dotsClipPath;\n let cornersDotClipPath = this._dotsClipPath;\n\n if (options.cornersSquareOptions?.gradient) {\n cornersSquareClipPath = document.createElementNS(\"http://www.w3.org/2000/svg\", \"clipPath\");\n cornersSquareClipPath.setAttribute(\"id\", `clip-path-corners-square-color-${column}-${row}`);\n this._defs.appendChild(cornersSquareClipPath);\n this._cornersSquareClipPath = this._cornersDotClipPath = cornersDotClipPath = cornersSquareClipPath;\n\n this._createColor({\n options: options.cornersSquareOptions?.gradient,\n color: options.cornersSquareOptions?.color,\n additionalRotation: rotation,\n x,\n y,\n height: cornersSquareSize,\n width: cornersSquareSize,\n name: `corners-square-color-${column}-${row}`\n });\n } else {\n this._cornerSquares = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n this._cornerSquares.setAttribute(\"class\", `corners-square-color-${column}-${row}`);\n this._element.appendChild(this._cornerSquares);\n this._createStyle({\n color: options.cornersSquareOptions?.color,\n name: `corners-square-color-${column}-${row}`\n });\n }\n\n if (options.cornersSquareOptions?.type) {\n const cornersSquare = new QRCornerSquare({ svg: this._element, type: options.cornersSquareOptions.type });\n\n cornersSquare.draw(x, y, cornersSquareSize, rotation);\n\n if (options.cornersSquareOptions?.gradient && cornersSquare._element && cornersSquareClipPath) {\n cornersSquareClipPath.appendChild(cornersSquare._element);\n } else if (cornersSquare._element && this._cornerSquares) {\n this._cornerSquares.appendChild(cornersSquare._element);\n }\n } else {\n const dot = new QRDot({ svg: this._element, type: options.dotsOptions.type });\n\n for (let i = 0; i < squareMask.length; i++) {\n for (let j = 0; j < squareMask[i].length; j++) {\n if (!squareMask[i]?.[j]) {\n continue;\n }\n\n dot.draw(\n x + i * dotSize,\n y + j * dotSize,\n dotSize,\n (xOffset: number, yOffset: number): boolean => !!squareMask[i + xOffset]?.[j + yOffset]\n );\n\n if (dot._element && this._cornersSquareClipPath) {\n this._cornersSquareClipPath.appendChild(dot._element);\n } else if (dot._element && this._cornerSquares) {\n this._cornerSquares.appendChild(dot._element);\n }\n }\n }\n }\n\n if (options.cornersDotOptions?.gradient) {\n cornersDotClipPath = document.createElementNS(\"http://www.w3.org/2000/svg\", \"clipPath\");\n cornersDotClipPath.setAttribute(\"id\", `clip-path-corners-dot-color-${column}-${row}`);\n this._defs.appendChild(cornersDotClipPath);\n this._cornersDotClipPath = cornersDotClipPath;\n\n this._createColor({\n options: options.cornersDotOptions?.gradient,\n color: options.cornersDotOptions?.color,\n additionalRotation: rotation,\n x: x + dotSize * 2,\n y: y + dotSize * 2,\n height: cornersDotSize,\n width: cornersDotSize,\n name: `corners-dot-color-${column}-${row}`\n });\n } else {\n this._cornerDots = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n this._cornerDots.setAttribute(\"class\", `corners-dot-color-${column}-${row}`);\n this._element.appendChild(this._cornerDots);\n this._createStyle({\n color: options.cornersDotOptions?.color,\n name: `corners-dot-color-${column}-${row}`\n });\n }\n\n if (options.cornersDotOptions?.type) {\n const cornersDot = new QRCornerDot({ svg: this._element, type: options.cornersDotOptions.type });\n\n cornersDot.draw(x + dotSize * 2, y + dotSize * 2, cornersDotSize, rotation);\n\n if (options.cornersDotOptions?.gradient && cornersDot._element && cornersDotClipPath) {\n cornersDotClipPath.appendChild(cornersDot._element);\n } else if (cornersDot._element && this._cornerDots) {\n this._cornerDots.appendChild(cornersDot._element);\n }\n } else {\n const dot = new QRDot({ svg: this._element, type: options.dotsOptions.type });\n\n for (let i = 0; i < dotMask.length; i++) {\n for (let j = 0; j < dotMask[i].length; j++) {\n if (!dotMask[i]?.[j]) {\n continue;\n }\n\n dot.draw(\n x + i * dotSize,\n y + j * dotSize,\n dotSize,\n (xOffset: number, yOffset: number): boolean => !!dotMask[i + xOffset]?.[j + yOffset]\n );\n\n if (dot._element && this._cornersDotClipPath) {\n this._cornersDotClipPath.appendChild(dot._element);\n } else if (dot._element && this._cornerDots) {\n this._cornerDots.appendChild(dot._element);\n }\n }\n }\n }\n });\n }\n\n loadImage(): Promise {\n return new Promise((resolve, reject) => {\n const options = this._options;\n const image = new Image();\n\n if (!options.image) {\n return reject(\"Image is not defined\");\n }\n\n if (typeof options.imageOptions.crossOrigin === \"string\") {\n image.crossOrigin = options.imageOptions.crossOrigin;\n }\n\n this._image = image;\n image.onload = (): void => {\n resolve();\n };\n image.src = options.image;\n });\n }\n\n drawImage({\n width,\n height,\n count,\n dotSize\n }: {\n width: number;\n height: number;\n count: number;\n dotSize: number;\n }): void {\n const options = this._options;\n const xBeginning = Math.floor((options.width - count * dotSize) / 2);\n const yBeginning = Math.floor((options.height - count * dotSize) / 2);\n const dx = xBeginning + options.imageOptions.margin + (count * dotSize - width) / 2;\n const dy = yBeginning + options.imageOptions.margin + (count * dotSize - height) / 2;\n const dw = width - options.imageOptions.margin * 2;\n const dh = height - options.imageOptions.margin * 2;\n\n const image = document.createElementNS(\"http://www.w3.org/2000/svg\", \"image\");\n image.setAttribute(\"href\", options.image || \"\");\n image.setAttribute(\"x\", String(dx));\n image.setAttribute(\"y\", String(dy));\n image.setAttribute(\"width\", `${dw}px`);\n image.setAttribute(\"height\", `${dh}px`);\n\n this._element.appendChild(image);\n }\n\n _createColor({\n options,\n color,\n additionalRotation,\n x,\n y,\n height,\n width,\n name\n }: {\n options?: Gradient;\n color?: string;\n additionalRotation: number;\n x: number;\n y: number;\n height: number;\n width: number;\n name: string;\n }): void {\n const size = width > height ? width : height;\n const rect = document.createElementNS(\"http://www.w3.org/2000/svg\", \"rect\");\n rect.setAttribute(\"x\", String(x));\n rect.setAttribute(\"y\", String(y));\n rect.setAttribute(\"height\", String(height));\n rect.setAttribute(\"width\", String(width));\n rect.setAttribute(\"clip-path\", `url('#clip-path-${name}')`);\n\n if (options) {\n let gradient: SVGElement;\n if (options.type === gradientTypes.radial) {\n gradient = document.createElementNS(\"http://www.w3.org/2000/svg\", \"radialGradient\");\n gradient.setAttribute(\"id\", name);\n gradient.setAttribute(\"gradientUnits\", \"userSpaceOnUse\");\n gradient.setAttribute(\"fx\", String(x + width / 2));\n gradient.setAttribute(\"fy\", String(y + height / 2));\n gradient.setAttribute(\"cx\", String(x + width / 2));\n gradient.setAttribute(\"cy\", String(y + height / 2));\n gradient.setAttribute(\"r\", String(size / 2));\n } else {\n const rotation = ((options.rotation || 0) + additionalRotation) % (2 * Math.PI);\n const positiveRotation = (rotation + 2 * Math.PI) % (2 * Math.PI);\n let x0 = x + width / 2;\n let y0 = y + height / 2;\n let x1 = x + width / 2;\n let y1 = y + height / 2;\n\n if (\n (positiveRotation >= 0 && positiveRotation <= 0.25 * Math.PI) ||\n (positiveRotation > 1.75 * Math.PI && positiveRotation <= 2 * Math.PI)\n ) {\n x0 = x0 - width / 2;\n y0 = y0 - (height / 2) * Math.tan(rotation);\n x1 = x1 + width / 2;\n y1 = y1 + (height / 2) * Math.tan(rotation);\n } else if (positiveRotation > 0.25 * Math.PI && positiveRotation <= 0.75 * Math.PI) {\n y0 = y0 - height / 2;\n x0 = x0 - width / 2 / Math.tan(rotation);\n y1 = y1 + height / 2;\n x1 = x1 + width / 2 / Math.tan(rotation);\n } else if (positiveRotation > 0.75 * Math.PI && positiveRotation <= 1.25 * Math.PI) {\n x0 = x0 + width / 2;\n y0 = y0 + (height / 2) * Math.tan(rotation);\n x1 = x1 - width / 2;\n y1 = y1 - (height / 2) * Math.tan(rotation);\n } else if (positiveRotation > 1.25 * Math.PI && positiveRotation <= 1.75 * Math.PI) {\n y0 = y0 + height / 2;\n x0 = x0 + width / 2 / Math.tan(rotation);\n y1 = y1 - height / 2;\n x1 = x1 - width / 2 / Math.tan(rotation);\n }\n\n gradient = document.createElementNS(\"http://www.w3.org/2000/svg\", \"linearGradient\");\n gradient.setAttribute(\"id\", name);\n gradient.setAttribute(\"gradientUnits\", \"userSpaceOnUse\");\n gradient.setAttribute(\"x1\", String(Math.round(x0)));\n gradient.setAttribute(\"y1\", String(Math.round(y0)));\n gradient.setAttribute(\"x2\", String(Math.round(x1)));\n gradient.setAttribute(\"y2\", String(Math.round(y1)));\n }\n\n options.colorStops.forEach(({ offset, color }: { offset: number; color: string }) => {\n const stop = document.createElementNS(\"http://www.w3.org/2000/svg\", \"stop\");\n stop.setAttribute(\"offset\", `${100 * offset}%`);\n stop.setAttribute(\"stop-color\", color);\n gradient.appendChild(stop);\n });\n\n rect.setAttribute(\"fill\", `url('#${name}')`);\n this._defs.appendChild(gradient);\n } else if (color) {\n rect.setAttribute(\"fill\", color);\n }\n\n this._element.appendChild(rect);\n }\n\n _createStyle({ color, name }: { color?: string; name: string }): void {\n this._style.innerHTML += `.${name}{ fill: ${color}; }`;\n }\n}\n","import { DrawTypes } from \"../types\";\n\nexport default {\n canvas: \"canvas\",\n svg: \"svg\"\n} as DrawTypes;\n","import { TypeNumber } from \"../types\";\n\ninterface TypesMap {\n [key: number]: TypeNumber;\n}\n\nconst qrTypes: TypesMap = {};\n\nfor (let type = 0; type <= 40; type++) {\n qrTypes[type] = type as TypeNumber;\n}\n\n// 0 types is autodetect\n\n// types = {\n// 0: 0,\n// 1: 1,\n// ...\n// 40: 40\n// }\n\nexport default qrTypes;\n","import qrTypes from \"../constants/qrTypes\";\nimport drawTypes from \"../constants/drawTypes\";\nimport errorCorrectionLevels from \"../constants/errorCorrectionLevels\";\nimport { DotType, Options, TypeNumber, ErrorCorrectionLevel, Mode, DrawType, Gradient } from \"../types\";\n\nexport interface RequiredOptions extends Options {\n type: DrawType;\n width: number;\n height: number;\n margin: number;\n data: string;\n qrOptions: {\n typeNumber: TypeNumber;\n mode?: Mode;\n errorCorrectionLevel: ErrorCorrectionLevel;\n };\n imageOptions: {\n hideBackgroundDots: boolean;\n imageSize: number;\n crossOrigin?: string;\n margin: number;\n };\n dotsOptions: {\n type: DotType;\n color: string;\n gradient?: Gradient;\n };\n backgroundOptions: {\n color: string;\n gradient?: Gradient;\n };\n}\n\nconst defaultOptions: RequiredOptions = {\n type: drawTypes.canvas,\n width: 300,\n height: 300,\n data: \"\",\n margin: 0,\n qrOptions: {\n typeNumber: qrTypes[0],\n mode: undefined,\n errorCorrectionLevel: errorCorrectionLevels.Q\n },\n imageOptions: {\n hideBackgroundDots: true,\n imageSize: 0.4,\n crossOrigin: undefined,\n margin: 0\n },\n dotsOptions: {\n type: \"square\",\n color: \"#000\"\n },\n backgroundOptions: {\n color: \"#fff\"\n }\n};\n\nexport default defaultOptions;\n","import { ErrorCorrectionLevel } from \"../types\";\n\ninterface ErrorCorrectionLevels {\n [key: string]: ErrorCorrectionLevel;\n}\n\nexport default {\n L: \"L\",\n M: \"M\",\n Q: \"Q\",\n H: \"H\"\n} as ErrorCorrectionLevels;\n","import { RequiredOptions } from \"../core/QROptions\";\nimport { Gradient } from \"../types\";\n\nfunction sanitizeGradient(gradient: Gradient): Gradient {\n const newGradient = { ...gradient };\n\n if (!newGradient.colorStops || !newGradient.colorStops.length) {\n throw \"Field 'colorStops' is required in gradient\";\n }\n\n if (newGradient.rotation) {\n newGradient.rotation = Number(newGradient.rotation);\n } else {\n newGradient.rotation = 0;\n }\n\n newGradient.colorStops = newGradient.colorStops.map((colorStop: { offset: number; color: string }) => ({\n ...colorStop,\n offset: Number(colorStop.offset)\n }));\n\n return newGradient;\n}\n\nexport default function sanitizeOptions(options: RequiredOptions): RequiredOptions {\n const newOptions = { ...options };\n\n newOptions.width = Number(newOptions.width);\n newOptions.height = Number(newOptions.height);\n newOptions.margin = Number(newOptions.margin);\n newOptions.imageOptions = {\n ...newOptions.imageOptions,\n hideBackgroundDots: Boolean(newOptions.imageOptions.hideBackgroundDots),\n imageSize: Number(newOptions.imageOptions.imageSize),\n margin: Number(newOptions.imageOptions.margin)\n };\n\n if (newOptions.margin > Math.min(newOptions.width, newOptions.height)) {\n newOptions.margin = Math.min(newOptions.width, newOptions.height);\n }\n\n newOptions.dotsOptions = {\n ...newOptions.dotsOptions\n };\n if (newOptions.dotsOptions.gradient) {\n newOptions.dotsOptions.gradient = sanitizeGradient(newOptions.dotsOptions.gradient);\n }\n\n if (newOptions.cornersSquareOptions) {\n newOptions.cornersSquareOptions = {\n ...newOptions.cornersSquareOptions\n };\n if (newOptions.cornersSquareOptions.gradient) {\n newOptions.cornersSquareOptions.gradient = sanitizeGradient(newOptions.cornersSquareOptions.gradient);\n }\n }\n\n if (newOptions.cornersDotOptions) {\n newOptions.cornersDotOptions = {\n ...newOptions.cornersDotOptions\n };\n if (newOptions.cornersDotOptions.gradient) {\n newOptions.cornersDotOptions.gradient = sanitizeGradient(newOptions.cornersDotOptions.gradient);\n }\n }\n\n if (newOptions.backgroundOptions) {\n newOptions.backgroundOptions = {\n ...newOptions.backgroundOptions\n };\n if (newOptions.backgroundOptions.gradient) {\n newOptions.backgroundOptions.gradient = sanitizeGradient(newOptions.backgroundOptions.gradient);\n }\n }\n\n return newOptions;\n}\n","import QRCodeStyling from \"./core/QRCodeStyling\";\nimport dotTypes from \"./constants/dotTypes\";\nimport cornerDotTypes from \"./constants/cornerDotTypes\";\nimport cornerSquareTypes from \"./constants/cornerSquareTypes\";\nimport errorCorrectionLevels from \"./constants/errorCorrectionLevels\";\nimport errorCorrectionPercents from \"./constants/errorCorrectionPercents\";\nimport modes from \"./constants/modes\";\nimport qrTypes from \"./constants/qrTypes\";\nimport drawTypes from \"./constants/drawTypes\";\n\nexport * from \"./types\";\n\nexport {\n dotTypes,\n cornerDotTypes,\n cornerSquareTypes,\n errorCorrectionLevels,\n errorCorrectionPercents,\n modes,\n qrTypes,\n drawTypes\n};\n\nexport default QRCodeStyling;\n","import getMode from \"../tools/getMode\";\nimport mergeDeep from \"../tools/merge\";\nimport downloadURI from \"../tools/downloadURI\";\nimport QRCanvas from \"./QRCanvas\";\nimport QRSVG from \"./QRSVG\";\nimport drawTypes from \"../constants/drawTypes\";\n\nimport defaultOptions, { RequiredOptions } from \"./QROptions\";\nimport sanitizeOptions from \"../tools/sanitizeOptions\";\nimport { Extension, QRCode, Options, DownloadOptions } from \"../types\";\nimport qrcode from \"qrcode-generator\";\n\nexport default class QRCodeStyling {\n _options: RequiredOptions;\n _container?: HTMLElement;\n _canvas?: QRCanvas;\n _svg?: QRSVG;\n _qr?: QRCode;\n _canvasDrawingPromise?: Promise;\n _svgDrawingPromise?: Promise;\n\n constructor(options?: Partial) {\n this._options = options ? sanitizeOptions(mergeDeep(defaultOptions, options) as RequiredOptions) : defaultOptions;\n this.update();\n }\n\n static _clearContainer(container?: HTMLElement): void {\n if (container) {\n container.innerHTML = \"\";\n }\n }\n\n async _getQRStylingElement(extension: Extension = \"png\"): Promise {\n if (!this._qr) throw \"QR code is empty\";\n\n if (extension.toLowerCase() === \"svg\") {\n let promise, svg: QRSVG;\n\n if (this._svg && this._svgDrawingPromise) {\n svg = this._svg;\n promise = this._svgDrawingPromise;\n } else {\n svg = new QRSVG(this._options);\n promise = svg.drawQR(this._qr);\n }\n\n await promise;\n\n return svg;\n } else {\n let promise, canvas: QRCanvas;\n\n if (this._canvas && this._canvasDrawingPromise) {\n canvas = this._canvas;\n promise = this._canvasDrawingPromise;\n } else {\n canvas = new QRCanvas(this._options);\n promise = canvas.drawQR(this._qr);\n }\n\n await promise;\n\n return canvas;\n }\n }\n\n update(options?: Partial): void {\n QRCodeStyling._clearContainer(this._container);\n this._options = options ? sanitizeOptions(mergeDeep(this._options, options) as RequiredOptions) : this._options;\n\n if (!this._options.data) {\n return;\n }\n\n this._qr = qrcode(this._options.qrOptions.typeNumber, this._options.qrOptions.errorCorrectionLevel);\n this._qr.addData(this._options.data, this._options.qrOptions.mode || getMode(this._options.data));\n this._qr.make();\n\n if (this._options.type === drawTypes.canvas) {\n this._canvas = new QRCanvas(this._options);\n this._canvasDrawingPromise = this._canvas.drawQR(this._qr);\n this._svgDrawingPromise = undefined;\n this._svg = undefined;\n } else {\n this._svg = new QRSVG(this._options);\n this._svgDrawingPromise = this._svg.drawQR(this._qr);\n this._canvasDrawingPromise = undefined;\n this._canvas = undefined;\n }\n\n this.append(this._container);\n }\n\n append(container?: HTMLElement): void {\n if (!container) {\n return;\n }\n\n if (typeof container.appendChild !== \"function\") {\n throw \"Container should be a single DOM node\";\n }\n\n if (this._options.type === drawTypes.canvas) {\n if (this._canvas) {\n container.appendChild(this._canvas.getCanvas());\n }\n } else {\n if (this._svg) {\n container.appendChild(this._svg.getElement());\n }\n }\n\n this._container = container;\n }\n\n async getRawData(extension: Extension = \"png\"): Promise {\n if (!this._qr) throw \"QR code is empty\";\n const element = await this._getQRStylingElement(extension);\n\n if (extension.toLowerCase() === \"svg\") {\n const serializer = new XMLSerializer();\n const source = serializer.serializeToString(((element as unknown) as QRSVG).getElement());\n\n return new Blob(['\\r\\n' + source], { type: \"image/svg+xml\" });\n } else {\n return new Promise((resolve) =>\n ((element as unknown) as QRCanvas).getCanvas().toBlob(resolve, `image/${extension}`, 1)\n );\n }\n }\n\n async download(downloadOptions?: Partial | string): Promise {\n if (!this._qr) throw \"QR code is empty\";\n let extension = \"png\" as Extension;\n let name = \"qr\";\n\n //TODO remove deprecated code in the v2\n if (typeof downloadOptions === \"string\") {\n extension = downloadOptions as Extension;\n console.warn(\n \"Extension is deprecated as argument for 'download' method, please pass object { name: '...', extension: '...' } as argument\"\n );\n } else if (typeof downloadOptions === \"object\" && downloadOptions !== null) {\n if (downloadOptions.name) {\n name = downloadOptions.name;\n }\n if (downloadOptions.extension) {\n extension = downloadOptions.extension;\n }\n }\n\n const element = await this._getQRStylingElement(extension);\n\n if (extension.toLowerCase() === \"svg\") {\n const serializer = new XMLSerializer();\n let source = serializer.serializeToString(((element as unknown) as QRSVG).getElement());\n\n source = '\\r\\n' + source;\n const url = \"data:image/svg+xml;charset=utf-8,\" + encodeURIComponent(source);\n downloadURI(url, `${name}.svg`);\n } else {\n const url = ((element as unknown) as QRCanvas).getCanvas().toDataURL(`image/${extension}`);\n downloadURI(url, `${name}.${extension}`);\n }\n }\n}\n","import modes from \"../constants/modes\";\nimport { Mode } from \"../types\";\n\nexport default function getMode(data: string): Mode {\n switch (true) {\n case /^[0-9]*$/.test(data):\n return modes.numeric;\n case /^[0-9A-Z $%*+\\-./:]*$/.test(data):\n return modes.alphanumeric;\n default:\n return modes.byte;\n }\n}\n","import { Mode } from \"../types\";\n\ninterface Modes {\n [key: string]: Mode;\n}\n\nexport default {\n numeric: \"Numeric\",\n alphanumeric: \"Alphanumeric\",\n byte: \"Byte\",\n kanji: \"Kanji\"\n} as Modes;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tif(__webpack_module_cache__[moduleId]) {\n\t\treturn __webpack_module_cache__[moduleId].exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// module exports must be returned from runtime so entry inlining is disabled\n// startup\n// Load entry module and return exports\nreturn __webpack_require__(796);\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => module['default'] :\n\t\t() => module;\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop)"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://QRCodeStyling/webpack/universalModuleDefinition","webpack://QRCodeStyling/./node_modules/qrcode-generator/qrcode.js","webpack://QRCodeStyling/./src/tools/merge.ts","webpack://QRCodeStyling/./src/tools/downloadURI.ts","webpack://QRCodeStyling/./src/tools/calculateImageSize.ts","webpack://QRCodeStyling/./src/constants/errorCorrectionPercents.ts","webpack://QRCodeStyling/./src/constants/dotTypes.ts","webpack://QRCodeStyling/./src/figures/dot/canvas/QRDot.ts","webpack://QRCodeStyling/./src/constants/cornerSquareTypes.ts","webpack://QRCodeStyling/./src/figures/cornerSquare/canvas/QRCornerSquare.ts","webpack://QRCodeStyling/./src/constants/cornerDotTypes.ts","webpack://QRCodeStyling/./src/figures/cornerDot/canvas/QRCornerDot.ts","webpack://QRCodeStyling/./src/constants/gradientTypes.ts","webpack://QRCodeStyling/./src/core/QRCanvas.ts","webpack://QRCodeStyling/./src/figures/dot/svg/QRDot.ts","webpack://QRCodeStyling/./src/figures/cornerSquare/svg/QRCornerSquare.ts","webpack://QRCodeStyling/./src/figures/cornerDot/svg/QRCornerDot.ts","webpack://QRCodeStyling/./src/core/QRSVG.ts","webpack://QRCodeStyling/./src/constants/drawTypes.ts","webpack://QRCodeStyling/./src/constants/qrTypes.ts","webpack://QRCodeStyling/./src/core/QROptions.ts","webpack://QRCodeStyling/./src/constants/errorCorrectionLevels.ts","webpack://QRCodeStyling/./src/tools/sanitizeOptions.ts","webpack://QRCodeStyling/./src/index.ts","webpack://QRCodeStyling/./src/core/QRCodeStyling.ts","webpack://QRCodeStyling/./src/tools/getMode.ts","webpack://QRCodeStyling/./src/constants/modes.ts","webpack://QRCodeStyling/webpack/bootstrap","webpack://QRCodeStyling/webpack/startup","webpack://QRCodeStyling/webpack/runtime/compat get default export","webpack://QRCodeStyling/webpack/runtime/define property getters","webpack://QRCodeStyling/webpack/runtime/hasOwnProperty shorthand"],"names":["root","factory","exports","module","define","amd","self","qrcode","typeNumber","errorCorrectionLevel","_typeNumber","_errorCorrectionLevel","QRErrorCorrectionLevel","_modules","_moduleCount","_dataCache","_dataList","_this","makeImpl","test","maskPattern","moduleCount","modules","Array","row","col","setupPositionProbePattern","setupPositionAdjustPattern","setupTimingPattern","setupTypeInfo","setupTypeNumber","createData","mapData","r","c","pos","QRUtil","getPatternPosition","i","length","j","bits","getBCHTypeNumber","mod","Math","floor","data","getBCHTypeInfo","inc","bitIndex","byteIndex","maskFunc","getMaskFunction","dark","dataList","rsBlocks","QRRSBlock","getRSBlocks","buffer","qrBitBuffer","put","getMode","getLength","getLengthInBits","write","totalDataCount","dataCount","putBit","offset","maxDcCount","maxEcCount","dcdata","ecdata","dcCount","ecCount","totalCount","max","getBuffer","rsPoly","getErrorCorrectPolynomial","modPoly","qrPolynomial","modIndex","getAt","totalCodeCount","index","createBytes","addData","mode","newData","qrNumber","qrAlphaNum","qr8BitByte","qrKanji","push","isDark","getModuleCount","make","minLostPoint","pattern","lostPoint","getLostPoint","getBestMaskPattern","createTableTag","cellSize","margin","qrHtml","createSvgTag","alt","title","opts","arguments","text","id","mr","rect","size","qrSvg","scalable","escapeXml","join","trim","createDataURL","min","x","y","createImgTag","img","s","escaped","charAt","createASCII","r1","r2","p","blocks","blocksLastLineNoMargin","ascii","substring","_createHalfASCII","white","black","line","renderTo2dContext","context","fillStyle","fillRect","stringToBytes","stringToBytesFuncs","bytes","charCodeAt","createStringToBytes","unicodeData","numChars","unicodeMap","bin","base64DecodeInputStream","read","b","count","b0","b1","v","String","fromCharCode","unknownChar","PATTERN_POSITION_TABLE","G15","G18","getBCHDigit","L","M","Q","H","digit","d","errorCorrectLength","a","multiply","QRMath","gexp","type","sameCount","darkCount","abs","EXP_TABLE","LOG_TABLE","n","num","shift","_num","e","glog","ratio","RS_BLOCK_TABLE","qrRSBlock","rsBlock","getRsBlockTable","list","_buffer","_length","bufIndex","bit","_data","strToNum","chatToNum","getCode","_bytes","code","byteArrayOutputStream","writeByte","off","len","str","_str","_pos","_buflen","match","decode","width","height","getPixel","gif","_width","_height","pixel","out","writeString","writeShort","raster","getLZWRaster","writeBytes","lzwMinCodeSize","clearCode","endCode","bitLength","table","lzwTable","add","_out","_bitLength","_bitBuffer","byteOut","bitOut","dataIndex","contains","indexOf","flush","toByteArray","_map","_size","key","gifImage","setPixel","base64","_base64","writeEncoded","encode","padlen","toString","base64EncodeOutputStream","utf8","charcode","toUTF8Array","isObject","obj","isArray","mergeDeep","target","sources","source","undefined","Object","keys","forEach","targetValue","sourceValue","assign","downloadURI","uri","name","link","document","createElement","download","href","body","appendChild","click","removeChild","calculateImageSize","originalHeight","originalWidth","maxHiddenDots","maxHiddenAxisDots","dotSize","hideDots","imageSize","hideYDots","hideXDots","k","sqrt","ceil","round","this","_context","_type","draw","getNeighbor","drawFunction","dotTypes","_drawDot","_drawClassy","_drawClassyRounded","_drawRounded","_drawExtraRounded","_drawSquare","call","_rotateFigure","rotation","cx","cy","translate","rotate","closePath","_basicDot","args","arc","PI","_basicSquare","_basicSideRounded","lineTo","_basicCornerRounded","_basicCornerExtraRounded","_basicCornersRounded","_basicCornersExtraRounded","leftNeighbor","rightNeighbor","topNeighbor","bottomNeighbor","neighborsCount","cornerSquareTypes","_basicExtraRounded","cornerDotTypes","squareMask","dotMask","options","_canvas","_options","getContext","getCanvas","clear","canvasContext","clearRect","drawQR","qr","minSize","drawImageSize","_qr","image","loadImage","_image","imageOptions","qrOptions","coverLevel","errorCorrectionPercents","drawBackground","drawDots","hideBackgroundDots","drawCorners","drawImage","backgroundOptions","gradient","gradientOptions","_createGradient","additionalRotation","colorStops","color","addColorStop","filter","xBeginning","yBeginning","dot","dotsOptions","beginPath","xOffset","yOffset","strokeStyle","fill","cornersSquareSize","cornersDotSize","column","cornersSquareOptions","cornersSquare","cornersDotOptions","cornersDot","Promise","resolve","reject","Image","crossOrigin","onload","src","dx","dy","dw","dh","gradientTypes","createRadialGradient","positiveRotation","x0","y0","x1","y1","tan","createLinearGradient","svg","_svg","_element","setAttribute","createElementNS","_defs","_style","getElement","oldElement","cloneNode","parentNode","replaceChild","element","_createColor","_createStyle","_dotsClipPath","_dots","cornersSquareClipPath","cornersDotClipPath","_cornersSquareClipPath","_cornersDotClipPath","_cornerSquares","_cornerDots","stop","innerHTML","qrTypes","drawTypes","sanitizeGradient","newGradient","Number","map","colorStop","sanitizeOptions","newOptions","Boolean","update","_clearContainer","container","_getQRStylingElement","extension","toLowerCase","promise","_svgDrawingPromise","canvas","_canvasDrawingPromise","QRCodeStyling","_container","append","getRawData","serializer","XMLSerializer","serializeToString","Blob","toBlob","downloadOptions","console","warn","encodeURIComponent","toDataURL","__webpack_module_cache__","__webpack_require__","moduleId","__webpack_modules__","getter","__esModule","definition","o","defineProperty","enumerable","get","prop","prototype","hasOwnProperty"],"mappings":"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","file":"qr-code-styling.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"QRCodeStyling\"] = factory();\n\telse\n\t\troot[\"QRCodeStyling\"] = factory();\n})(self, function() {\nreturn ","//---------------------------------------------------------------------\n//\n// QR Code Generator for JavaScript\n//\n// Copyright (c) 2009 Kazuhiko Arase\n//\n// URL: http://www.d-project.com/\n//\n// Licensed under the MIT license:\n// http://www.opensource.org/licenses/mit-license.php\n//\n// The word 'QR Code' is registered trademark of\n// DENSO WAVE INCORPORATED\n// http://www.denso-wave.com/qrcode/faqpatent-e.html\n//\n//---------------------------------------------------------------------\n\nvar qrcode = function() {\n\n //---------------------------------------------------------------------\n // qrcode\n //---------------------------------------------------------------------\n\n /**\n * qrcode\n * @param typeNumber 1 to 40\n * @param errorCorrectionLevel 'L','M','Q','H'\n */\n var qrcode = function(typeNumber, errorCorrectionLevel) {\n\n var PAD0 = 0xEC;\n var PAD1 = 0x11;\n\n var _typeNumber = typeNumber;\n var _errorCorrectionLevel = QRErrorCorrectionLevel[errorCorrectionLevel];\n var _modules = null;\n var _moduleCount = 0;\n var _dataCache = null;\n var _dataList = [];\n\n var _this = {};\n\n var makeImpl = function(test, maskPattern) {\n\n _moduleCount = _typeNumber * 4 + 17;\n _modules = function(moduleCount) {\n var modules = new Array(moduleCount);\n for (var row = 0; row < moduleCount; row += 1) {\n modules[row] = new Array(moduleCount);\n for (var col = 0; col < moduleCount; col += 1) {\n modules[row][col] = null;\n }\n }\n return modules;\n }(_moduleCount);\n\n setupPositionProbePattern(0, 0);\n setupPositionProbePattern(_moduleCount - 7, 0);\n setupPositionProbePattern(0, _moduleCount - 7);\n setupPositionAdjustPattern();\n setupTimingPattern();\n setupTypeInfo(test, maskPattern);\n\n if (_typeNumber >= 7) {\n setupTypeNumber(test);\n }\n\n if (_dataCache == null) {\n _dataCache = createData(_typeNumber, _errorCorrectionLevel, _dataList);\n }\n\n mapData(_dataCache, maskPattern);\n };\n\n var setupPositionProbePattern = function(row, col) {\n\n for (var r = -1; r <= 7; r += 1) {\n\n if (row + r <= -1 || _moduleCount <= row + r) continue;\n\n for (var c = -1; c <= 7; c += 1) {\n\n if (col + c <= -1 || _moduleCount <= col + c) continue;\n\n if ( (0 <= r && r <= 6 && (c == 0 || c == 6) )\n || (0 <= c && c <= 6 && (r == 0 || r == 6) )\n || (2 <= r && r <= 4 && 2 <= c && c <= 4) ) {\n _modules[row + r][col + c] = true;\n } else {\n _modules[row + r][col + c] = false;\n }\n }\n }\n };\n\n var getBestMaskPattern = function() {\n\n var minLostPoint = 0;\n var pattern = 0;\n\n for (var i = 0; i < 8; i += 1) {\n\n makeImpl(true, i);\n\n var lostPoint = QRUtil.getLostPoint(_this);\n\n if (i == 0 || minLostPoint > lostPoint) {\n minLostPoint = lostPoint;\n pattern = i;\n }\n }\n\n return pattern;\n };\n\n var setupTimingPattern = function() {\n\n for (var r = 8; r < _moduleCount - 8; r += 1) {\n if (_modules[r][6] != null) {\n continue;\n }\n _modules[r][6] = (r % 2 == 0);\n }\n\n for (var c = 8; c < _moduleCount - 8; c += 1) {\n if (_modules[6][c] != null) {\n continue;\n }\n _modules[6][c] = (c % 2 == 0);\n }\n };\n\n var setupPositionAdjustPattern = function() {\n\n var pos = QRUtil.getPatternPosition(_typeNumber);\n\n for (var i = 0; i < pos.length; i += 1) {\n\n for (var j = 0; j < pos.length; j += 1) {\n\n var row = pos[i];\n var col = pos[j];\n\n if (_modules[row][col] != null) {\n continue;\n }\n\n for (var r = -2; r <= 2; r += 1) {\n\n for (var c = -2; c <= 2; c += 1) {\n\n if (r == -2 || r == 2 || c == -2 || c == 2\n || (r == 0 && c == 0) ) {\n _modules[row + r][col + c] = true;\n } else {\n _modules[row + r][col + c] = false;\n }\n }\n }\n }\n }\n };\n\n var setupTypeNumber = function(test) {\n\n var bits = QRUtil.getBCHTypeNumber(_typeNumber);\n\n for (var i = 0; i < 18; i += 1) {\n var mod = (!test && ( (bits >> i) & 1) == 1);\n _modules[Math.floor(i / 3)][i % 3 + _moduleCount - 8 - 3] = mod;\n }\n\n for (var i = 0; i < 18; i += 1) {\n var mod = (!test && ( (bits >> i) & 1) == 1);\n _modules[i % 3 + _moduleCount - 8 - 3][Math.floor(i / 3)] = mod;\n }\n };\n\n var setupTypeInfo = function(test, maskPattern) {\n\n var data = (_errorCorrectionLevel << 3) | maskPattern;\n var bits = QRUtil.getBCHTypeInfo(data);\n\n // vertical\n for (var i = 0; i < 15; i += 1) {\n\n var mod = (!test && ( (bits >> i) & 1) == 1);\n\n if (i < 6) {\n _modules[i][8] = mod;\n } else if (i < 8) {\n _modules[i + 1][8] = mod;\n } else {\n _modules[_moduleCount - 15 + i][8] = mod;\n }\n }\n\n // horizontal\n for (var i = 0; i < 15; i += 1) {\n\n var mod = (!test && ( (bits >> i) & 1) == 1);\n\n if (i < 8) {\n _modules[8][_moduleCount - i - 1] = mod;\n } else if (i < 9) {\n _modules[8][15 - i - 1 + 1] = mod;\n } else {\n _modules[8][15 - i - 1] = mod;\n }\n }\n\n // fixed module\n _modules[_moduleCount - 8][8] = (!test);\n };\n\n var mapData = function(data, maskPattern) {\n\n var inc = -1;\n var row = _moduleCount - 1;\n var bitIndex = 7;\n var byteIndex = 0;\n var maskFunc = QRUtil.getMaskFunction(maskPattern);\n\n for (var col = _moduleCount - 1; col > 0; col -= 2) {\n\n if (col == 6) col -= 1;\n\n while (true) {\n\n for (var c = 0; c < 2; c += 1) {\n\n if (_modules[row][col - c] == null) {\n\n var dark = false;\n\n if (byteIndex < data.length) {\n dark = ( ( (data[byteIndex] >>> bitIndex) & 1) == 1);\n }\n\n var mask = maskFunc(row, col - c);\n\n if (mask) {\n dark = !dark;\n }\n\n _modules[row][col - c] = dark;\n bitIndex -= 1;\n\n if (bitIndex == -1) {\n byteIndex += 1;\n bitIndex = 7;\n }\n }\n }\n\n row += inc;\n\n if (row < 0 || _moduleCount <= row) {\n row -= inc;\n inc = -inc;\n break;\n }\n }\n }\n };\n\n var createBytes = function(buffer, rsBlocks) {\n\n var offset = 0;\n\n var maxDcCount = 0;\n var maxEcCount = 0;\n\n var dcdata = new Array(rsBlocks.length);\n var ecdata = new Array(rsBlocks.length);\n\n for (var r = 0; r < rsBlocks.length; r += 1) {\n\n var dcCount = rsBlocks[r].dataCount;\n var ecCount = rsBlocks[r].totalCount - dcCount;\n\n maxDcCount = Math.max(maxDcCount, dcCount);\n maxEcCount = Math.max(maxEcCount, ecCount);\n\n dcdata[r] = new Array(dcCount);\n\n for (var i = 0; i < dcdata[r].length; i += 1) {\n dcdata[r][i] = 0xff & buffer.getBuffer()[i + offset];\n }\n offset += dcCount;\n\n var rsPoly = QRUtil.getErrorCorrectPolynomial(ecCount);\n var rawPoly = qrPolynomial(dcdata[r], rsPoly.getLength() - 1);\n\n var modPoly = rawPoly.mod(rsPoly);\n ecdata[r] = new Array(rsPoly.getLength() - 1);\n for (var i = 0; i < ecdata[r].length; i += 1) {\n var modIndex = i + modPoly.getLength() - ecdata[r].length;\n ecdata[r][i] = (modIndex >= 0)? modPoly.getAt(modIndex) : 0;\n }\n }\n\n var totalCodeCount = 0;\n for (var i = 0; i < rsBlocks.length; i += 1) {\n totalCodeCount += rsBlocks[i].totalCount;\n }\n\n var data = new Array(totalCodeCount);\n var index = 0;\n\n for (var i = 0; i < maxDcCount; i += 1) {\n for (var r = 0; r < rsBlocks.length; r += 1) {\n if (i < dcdata[r].length) {\n data[index] = dcdata[r][i];\n index += 1;\n }\n }\n }\n\n for (var i = 0; i < maxEcCount; i += 1) {\n for (var r = 0; r < rsBlocks.length; r += 1) {\n if (i < ecdata[r].length) {\n data[index] = ecdata[r][i];\n index += 1;\n }\n }\n }\n\n return data;\n };\n\n var createData = function(typeNumber, errorCorrectionLevel, dataList) {\n\n var rsBlocks = QRRSBlock.getRSBlocks(typeNumber, errorCorrectionLevel);\n\n var buffer = qrBitBuffer();\n\n for (var i = 0; i < dataList.length; i += 1) {\n var data = dataList[i];\n buffer.put(data.getMode(), 4);\n buffer.put(data.getLength(), QRUtil.getLengthInBits(data.getMode(), typeNumber) );\n data.write(buffer);\n }\n\n // calc num max data.\n var totalDataCount = 0;\n for (var i = 0; i < rsBlocks.length; i += 1) {\n totalDataCount += rsBlocks[i].dataCount;\n }\n\n if (buffer.getLengthInBits() > totalDataCount * 8) {\n throw 'code length overflow. ('\n + buffer.getLengthInBits()\n + '>'\n + totalDataCount * 8\n + ')';\n }\n\n // end code\n if (buffer.getLengthInBits() + 4 <= totalDataCount * 8) {\n buffer.put(0, 4);\n }\n\n // padding\n while (buffer.getLengthInBits() % 8 != 0) {\n buffer.putBit(false);\n }\n\n // padding\n while (true) {\n\n if (buffer.getLengthInBits() >= totalDataCount * 8) {\n break;\n }\n buffer.put(PAD0, 8);\n\n if (buffer.getLengthInBits() >= totalDataCount * 8) {\n break;\n }\n buffer.put(PAD1, 8);\n }\n\n return createBytes(buffer, rsBlocks);\n };\n\n _this.addData = function(data, mode) {\n\n mode = mode || 'Byte';\n\n var newData = null;\n\n switch(mode) {\n case 'Numeric' :\n newData = qrNumber(data);\n break;\n case 'Alphanumeric' :\n newData = qrAlphaNum(data);\n break;\n case 'Byte' :\n newData = qr8BitByte(data);\n break;\n case 'Kanji' :\n newData = qrKanji(data);\n break;\n default :\n throw 'mode:' + mode;\n }\n\n _dataList.push(newData);\n _dataCache = null;\n };\n\n _this.isDark = function(row, col) {\n if (row < 0 || _moduleCount <= row || col < 0 || _moduleCount <= col) {\n throw row + ',' + col;\n }\n return _modules[row][col];\n };\n\n _this.getModuleCount = function() {\n return _moduleCount;\n };\n\n _this.make = function() {\n if (_typeNumber < 1) {\n var typeNumber = 1;\n\n for (; typeNumber < 40; typeNumber++) {\n var rsBlocks = QRRSBlock.getRSBlocks(typeNumber, _errorCorrectionLevel);\n var buffer = qrBitBuffer();\n\n for (var i = 0; i < _dataList.length; i++) {\n var data = _dataList[i];\n buffer.put(data.getMode(), 4);\n buffer.put(data.getLength(), QRUtil.getLengthInBits(data.getMode(), typeNumber) );\n data.write(buffer);\n }\n\n var totalDataCount = 0;\n for (var i = 0; i < rsBlocks.length; i++) {\n totalDataCount += rsBlocks[i].dataCount;\n }\n\n if (buffer.getLengthInBits() <= totalDataCount * 8) {\n break;\n }\n }\n\n _typeNumber = typeNumber;\n }\n\n makeImpl(false, getBestMaskPattern() );\n };\n\n _this.createTableTag = function(cellSize, margin) {\n\n cellSize = cellSize || 2;\n margin = (typeof margin == 'undefined')? cellSize * 4 : margin;\n\n var qrHtml = '';\n\n qrHtml += '
' +\n escapeXml(title.text) + '' : '';\n qrSvg += (alt.text) ? '' +\n escapeXml(alt.text) + '' : '';\n qrSvg += '';\n qrSvg += '': escaped += '>'; break;\n case '&': escaped += '&'; break;\n case '\"': escaped += '"'; break;\n default : escaped += c; break;\n }\n }\n return escaped;\n };\n\n var _createHalfASCII = function(margin) {\n var cellSize = 1;\n margin = (typeof margin == 'undefined')? cellSize * 2 : margin;\n\n var size = _this.getModuleCount() * cellSize + margin * 2;\n var min = margin;\n var max = size - margin;\n\n var y, x, r1, r2, p;\n\n var blocks = {\n '██': '█',\n '█ ': '▀',\n ' █': '▄',\n ' ': ' '\n };\n\n var blocksLastLineNoMargin = {\n '██': '▀',\n '█ ': '▀',\n ' █': ' ',\n ' ': ' '\n };\n\n var ascii = '';\n for (y = 0; y < size; y += 2) {\n r1 = Math.floor((y - min) / cellSize);\n r2 = Math.floor((y + 1 - min) / cellSize);\n for (x = 0; x < size; x += 1) {\n p = '█';\n\n if (min <= x && x < max && min <= y && y < max && _this.isDark(r1, Math.floor((x - min) / cellSize))) {\n p = ' ';\n }\n\n if (min <= x && x < max && min <= y+1 && y+1 < max && _this.isDark(r2, Math.floor((x - min) / cellSize))) {\n p += ' ';\n }\n else {\n p += '█';\n }\n\n // Output 2 characters per pixel, to create full square. 1 character per pixels gives only half width of square.\n ascii += (margin < 1 && y+1 >= max) ? blocksLastLineNoMargin[p] : blocks[p];\n }\n\n ascii += '\\n';\n }\n\n if (size % 2 && margin > 0) {\n return ascii.substring(0, ascii.length - size - 1) + Array(size+1).join('▀');\n }\n\n return ascii.substring(0, ascii.length-1);\n };\n\n _this.createASCII = function(cellSize, margin) {\n cellSize = cellSize || 1;\n\n if (cellSize < 2) {\n return _createHalfASCII(margin);\n }\n\n cellSize -= 1;\n margin = (typeof margin == 'undefined')? cellSize * 2 : margin;\n\n var size = _this.getModuleCount() * cellSize + margin * 2;\n var min = margin;\n var max = size - margin;\n\n var y, x, r, p;\n\n var white = Array(cellSize+1).join('██');\n var black = Array(cellSize+1).join(' ');\n\n var ascii = '';\n var line = '';\n for (y = 0; y < size; y += 1) {\n r = Math.floor( (y - min) / cellSize);\n line = '';\n for (x = 0; x < size; x += 1) {\n p = 1;\n\n if (min <= x && x < max && min <= y && y < max && _this.isDark(r, Math.floor((x - min) / cellSize))) {\n p = 0;\n }\n\n // Output 2 characters per pixel, to create full square. 1 character per pixels gives only half width of square.\n line += p ? white : black;\n }\n\n for (r = 0; r < cellSize; r += 1) {\n ascii += line + '\\n';\n }\n }\n\n return ascii.substring(0, ascii.length-1);\n };\n\n _this.renderTo2dContext = function(context, cellSize) {\n cellSize = cellSize || 2;\n var length = _this.getModuleCount();\n for (var row = 0; row < length; row++) {\n for (var col = 0; col < length; col++) {\n context.fillStyle = _this.isDark(row, col) ? 'black' : 'white';\n context.fillRect(row * cellSize, col * cellSize, cellSize, cellSize);\n }\n }\n }\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qrcode.stringToBytes\n //---------------------------------------------------------------------\n\n qrcode.stringToBytesFuncs = {\n 'default' : function(s) {\n var bytes = [];\n for (var i = 0; i < s.length; i += 1) {\n var c = s.charCodeAt(i);\n bytes.push(c & 0xff);\n }\n return bytes;\n }\n };\n\n qrcode.stringToBytes = qrcode.stringToBytesFuncs['default'];\n\n //---------------------------------------------------------------------\n // qrcode.createStringToBytes\n //---------------------------------------------------------------------\n\n /**\n * @param unicodeData base64 string of byte array.\n * [16bit Unicode],[16bit Bytes], ...\n * @param numChars\n */\n qrcode.createStringToBytes = function(unicodeData, numChars) {\n\n // create conversion map.\n\n var unicodeMap = function() {\n\n var bin = base64DecodeInputStream(unicodeData);\n var read = function() {\n var b = bin.read();\n if (b == -1) throw 'eof';\n return b;\n };\n\n var count = 0;\n var unicodeMap = {};\n while (true) {\n var b0 = bin.read();\n if (b0 == -1) break;\n var b1 = read();\n var b2 = read();\n var b3 = read();\n var k = String.fromCharCode( (b0 << 8) | b1);\n var v = (b2 << 8) | b3;\n unicodeMap[k] = v;\n count += 1;\n }\n if (count != numChars) {\n throw count + ' != ' + numChars;\n }\n\n return unicodeMap;\n }();\n\n var unknownChar = '?'.charCodeAt(0);\n\n return function(s) {\n var bytes = [];\n for (var i = 0; i < s.length; i += 1) {\n var c = s.charCodeAt(i);\n if (c < 128) {\n bytes.push(c);\n } else {\n var b = unicodeMap[s.charAt(i)];\n if (typeof b == 'number') {\n if ( (b & 0xff) == b) {\n // 1byte\n bytes.push(b);\n } else {\n // 2bytes\n bytes.push(b >>> 8);\n bytes.push(b & 0xff);\n }\n } else {\n bytes.push(unknownChar);\n }\n }\n }\n return bytes;\n };\n };\n\n //---------------------------------------------------------------------\n // QRMode\n //---------------------------------------------------------------------\n\n var QRMode = {\n MODE_NUMBER : 1 << 0,\n MODE_ALPHA_NUM : 1 << 1,\n MODE_8BIT_BYTE : 1 << 2,\n MODE_KANJI : 1 << 3\n };\n\n //---------------------------------------------------------------------\n // QRErrorCorrectionLevel\n //---------------------------------------------------------------------\n\n var QRErrorCorrectionLevel = {\n L : 1,\n M : 0,\n Q : 3,\n H : 2\n };\n\n //---------------------------------------------------------------------\n // QRMaskPattern\n //---------------------------------------------------------------------\n\n var QRMaskPattern = {\n PATTERN000 : 0,\n PATTERN001 : 1,\n PATTERN010 : 2,\n PATTERN011 : 3,\n PATTERN100 : 4,\n PATTERN101 : 5,\n PATTERN110 : 6,\n PATTERN111 : 7\n };\n\n //---------------------------------------------------------------------\n // QRUtil\n //---------------------------------------------------------------------\n\n var QRUtil = function() {\n\n var PATTERN_POSITION_TABLE = [\n [],\n [6, 18],\n [6, 22],\n [6, 26],\n [6, 30],\n [6, 34],\n [6, 22, 38],\n [6, 24, 42],\n [6, 26, 46],\n [6, 28, 50],\n [6, 30, 54],\n [6, 32, 58],\n [6, 34, 62],\n [6, 26, 46, 66],\n [6, 26, 48, 70],\n [6, 26, 50, 74],\n [6, 30, 54, 78],\n [6, 30, 56, 82],\n [6, 30, 58, 86],\n [6, 34, 62, 90],\n [6, 28, 50, 72, 94],\n [6, 26, 50, 74, 98],\n [6, 30, 54, 78, 102],\n [6, 28, 54, 80, 106],\n [6, 32, 58, 84, 110],\n [6, 30, 58, 86, 114],\n [6, 34, 62, 90, 118],\n [6, 26, 50, 74, 98, 122],\n [6, 30, 54, 78, 102, 126],\n [6, 26, 52, 78, 104, 130],\n [6, 30, 56, 82, 108, 134],\n [6, 34, 60, 86, 112, 138],\n [6, 30, 58, 86, 114, 142],\n [6, 34, 62, 90, 118, 146],\n [6, 30, 54, 78, 102, 126, 150],\n [6, 24, 50, 76, 102, 128, 154],\n [6, 28, 54, 80, 106, 132, 158],\n [6, 32, 58, 84, 110, 136, 162],\n [6, 26, 54, 82, 110, 138, 166],\n [6, 30, 58, 86, 114, 142, 170]\n ];\n var G15 = (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0);\n var G18 = (1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | (1 << 2) | (1 << 0);\n var G15_MASK = (1 << 14) | (1 << 12) | (1 << 10) | (1 << 4) | (1 << 1);\n\n var _this = {};\n\n var getBCHDigit = function(data) {\n var digit = 0;\n while (data != 0) {\n digit += 1;\n data >>>= 1;\n }\n return digit;\n };\n\n _this.getBCHTypeInfo = function(data) {\n var d = data << 10;\n while (getBCHDigit(d) - getBCHDigit(G15) >= 0) {\n d ^= (G15 << (getBCHDigit(d) - getBCHDigit(G15) ) );\n }\n return ( (data << 10) | d) ^ G15_MASK;\n };\n\n _this.getBCHTypeNumber = function(data) {\n var d = data << 12;\n while (getBCHDigit(d) - getBCHDigit(G18) >= 0) {\n d ^= (G18 << (getBCHDigit(d) - getBCHDigit(G18) ) );\n }\n return (data << 12) | d;\n };\n\n _this.getPatternPosition = function(typeNumber) {\n return PATTERN_POSITION_TABLE[typeNumber - 1];\n };\n\n _this.getMaskFunction = function(maskPattern) {\n\n switch (maskPattern) {\n\n case QRMaskPattern.PATTERN000 :\n return function(i, j) { return (i + j) % 2 == 0; };\n case QRMaskPattern.PATTERN001 :\n return function(i, j) { return i % 2 == 0; };\n case QRMaskPattern.PATTERN010 :\n return function(i, j) { return j % 3 == 0; };\n case QRMaskPattern.PATTERN011 :\n return function(i, j) { return (i + j) % 3 == 0; };\n case QRMaskPattern.PATTERN100 :\n return function(i, j) { return (Math.floor(i / 2) + Math.floor(j / 3) ) % 2 == 0; };\n case QRMaskPattern.PATTERN101 :\n return function(i, j) { return (i * j) % 2 + (i * j) % 3 == 0; };\n case QRMaskPattern.PATTERN110 :\n return function(i, j) { return ( (i * j) % 2 + (i * j) % 3) % 2 == 0; };\n case QRMaskPattern.PATTERN111 :\n return function(i, j) { return ( (i * j) % 3 + (i + j) % 2) % 2 == 0; };\n\n default :\n throw 'bad maskPattern:' + maskPattern;\n }\n };\n\n _this.getErrorCorrectPolynomial = function(errorCorrectLength) {\n var a = qrPolynomial([1], 0);\n for (var i = 0; i < errorCorrectLength; i += 1) {\n a = a.multiply(qrPolynomial([1, QRMath.gexp(i)], 0) );\n }\n return a;\n };\n\n _this.getLengthInBits = function(mode, type) {\n\n if (1 <= type && type < 10) {\n\n // 1 - 9\n\n switch(mode) {\n case QRMode.MODE_NUMBER : return 10;\n case QRMode.MODE_ALPHA_NUM : return 9;\n case QRMode.MODE_8BIT_BYTE : return 8;\n case QRMode.MODE_KANJI : return 8;\n default :\n throw 'mode:' + mode;\n }\n\n } else if (type < 27) {\n\n // 10 - 26\n\n switch(mode) {\n case QRMode.MODE_NUMBER : return 12;\n case QRMode.MODE_ALPHA_NUM : return 11;\n case QRMode.MODE_8BIT_BYTE : return 16;\n case QRMode.MODE_KANJI : return 10;\n default :\n throw 'mode:' + mode;\n }\n\n } else if (type < 41) {\n\n // 27 - 40\n\n switch(mode) {\n case QRMode.MODE_NUMBER : return 14;\n case QRMode.MODE_ALPHA_NUM : return 13;\n case QRMode.MODE_8BIT_BYTE : return 16;\n case QRMode.MODE_KANJI : return 12;\n default :\n throw 'mode:' + mode;\n }\n\n } else {\n throw 'type:' + type;\n }\n };\n\n _this.getLostPoint = function(qrcode) {\n\n var moduleCount = qrcode.getModuleCount();\n\n var lostPoint = 0;\n\n // LEVEL1\n\n for (var row = 0; row < moduleCount; row += 1) {\n for (var col = 0; col < moduleCount; col += 1) {\n\n var sameCount = 0;\n var dark = qrcode.isDark(row, col);\n\n for (var r = -1; r <= 1; r += 1) {\n\n if (row + r < 0 || moduleCount <= row + r) {\n continue;\n }\n\n for (var c = -1; c <= 1; c += 1) {\n\n if (col + c < 0 || moduleCount <= col + c) {\n continue;\n }\n\n if (r == 0 && c == 0) {\n continue;\n }\n\n if (dark == qrcode.isDark(row + r, col + c) ) {\n sameCount += 1;\n }\n }\n }\n\n if (sameCount > 5) {\n lostPoint += (3 + sameCount - 5);\n }\n }\n };\n\n // LEVEL2\n\n for (var row = 0; row < moduleCount - 1; row += 1) {\n for (var col = 0; col < moduleCount - 1; col += 1) {\n var count = 0;\n if (qrcode.isDark(row, col) ) count += 1;\n if (qrcode.isDark(row + 1, col) ) count += 1;\n if (qrcode.isDark(row, col + 1) ) count += 1;\n if (qrcode.isDark(row + 1, col + 1) ) count += 1;\n if (count == 0 || count == 4) {\n lostPoint += 3;\n }\n }\n }\n\n // LEVEL3\n\n for (var row = 0; row < moduleCount; row += 1) {\n for (var col = 0; col < moduleCount - 6; col += 1) {\n if (qrcode.isDark(row, col)\n && !qrcode.isDark(row, col + 1)\n && qrcode.isDark(row, col + 2)\n && qrcode.isDark(row, col + 3)\n && qrcode.isDark(row, col + 4)\n && !qrcode.isDark(row, col + 5)\n && qrcode.isDark(row, col + 6) ) {\n lostPoint += 40;\n }\n }\n }\n\n for (var col = 0; col < moduleCount; col += 1) {\n for (var row = 0; row < moduleCount - 6; row += 1) {\n if (qrcode.isDark(row, col)\n && !qrcode.isDark(row + 1, col)\n && qrcode.isDark(row + 2, col)\n && qrcode.isDark(row + 3, col)\n && qrcode.isDark(row + 4, col)\n && !qrcode.isDark(row + 5, col)\n && qrcode.isDark(row + 6, col) ) {\n lostPoint += 40;\n }\n }\n }\n\n // LEVEL4\n\n var darkCount = 0;\n\n for (var col = 0; col < moduleCount; col += 1) {\n for (var row = 0; row < moduleCount; row += 1) {\n if (qrcode.isDark(row, col) ) {\n darkCount += 1;\n }\n }\n }\n\n var ratio = Math.abs(100 * darkCount / moduleCount / moduleCount - 50) / 5;\n lostPoint += ratio * 10;\n\n return lostPoint;\n };\n\n return _this;\n }();\n\n //---------------------------------------------------------------------\n // QRMath\n //---------------------------------------------------------------------\n\n var QRMath = function() {\n\n var EXP_TABLE = new Array(256);\n var LOG_TABLE = new Array(256);\n\n // initialize tables\n for (var i = 0; i < 8; i += 1) {\n EXP_TABLE[i] = 1 << i;\n }\n for (var i = 8; i < 256; i += 1) {\n EXP_TABLE[i] = EXP_TABLE[i - 4]\n ^ EXP_TABLE[i - 5]\n ^ EXP_TABLE[i - 6]\n ^ EXP_TABLE[i - 8];\n }\n for (var i = 0; i < 255; i += 1) {\n LOG_TABLE[EXP_TABLE[i] ] = i;\n }\n\n var _this = {};\n\n _this.glog = function(n) {\n\n if (n < 1) {\n throw 'glog(' + n + ')';\n }\n\n return LOG_TABLE[n];\n };\n\n _this.gexp = function(n) {\n\n while (n < 0) {\n n += 255;\n }\n\n while (n >= 256) {\n n -= 255;\n }\n\n return EXP_TABLE[n];\n };\n\n return _this;\n }();\n\n //---------------------------------------------------------------------\n // qrPolynomial\n //---------------------------------------------------------------------\n\n function qrPolynomial(num, shift) {\n\n if (typeof num.length == 'undefined') {\n throw num.length + '/' + shift;\n }\n\n var _num = function() {\n var offset = 0;\n while (offset < num.length && num[offset] == 0) {\n offset += 1;\n }\n var _num = new Array(num.length - offset + shift);\n for (var i = 0; i < num.length - offset; i += 1) {\n _num[i] = num[i + offset];\n }\n return _num;\n }();\n\n var _this = {};\n\n _this.getAt = function(index) {\n return _num[index];\n };\n\n _this.getLength = function() {\n return _num.length;\n };\n\n _this.multiply = function(e) {\n\n var num = new Array(_this.getLength() + e.getLength() - 1);\n\n for (var i = 0; i < _this.getLength(); i += 1) {\n for (var j = 0; j < e.getLength(); j += 1) {\n num[i + j] ^= QRMath.gexp(QRMath.glog(_this.getAt(i) ) + QRMath.glog(e.getAt(j) ) );\n }\n }\n\n return qrPolynomial(num, 0);\n };\n\n _this.mod = function(e) {\n\n if (_this.getLength() - e.getLength() < 0) {\n return _this;\n }\n\n var ratio = QRMath.glog(_this.getAt(0) ) - QRMath.glog(e.getAt(0) );\n\n var num = new Array(_this.getLength() );\n for (var i = 0; i < _this.getLength(); i += 1) {\n num[i] = _this.getAt(i);\n }\n\n for (var i = 0; i < e.getLength(); i += 1) {\n num[i] ^= QRMath.gexp(QRMath.glog(e.getAt(i) ) + ratio);\n }\n\n // recursive call\n return qrPolynomial(num, 0).mod(e);\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // QRRSBlock\n //---------------------------------------------------------------------\n\n var QRRSBlock = function() {\n\n var RS_BLOCK_TABLE = [\n\n // L\n // M\n // Q\n // H\n\n // 1\n [1, 26, 19],\n [1, 26, 16],\n [1, 26, 13],\n [1, 26, 9],\n\n // 2\n [1, 44, 34],\n [1, 44, 28],\n [1, 44, 22],\n [1, 44, 16],\n\n // 3\n [1, 70, 55],\n [1, 70, 44],\n [2, 35, 17],\n [2, 35, 13],\n\n // 4\n [1, 100, 80],\n [2, 50, 32],\n [2, 50, 24],\n [4, 25, 9],\n\n // 5\n [1, 134, 108],\n [2, 67, 43],\n [2, 33, 15, 2, 34, 16],\n [2, 33, 11, 2, 34, 12],\n\n // 6\n [2, 86, 68],\n [4, 43, 27],\n [4, 43, 19],\n [4, 43, 15],\n\n // 7\n [2, 98, 78],\n [4, 49, 31],\n [2, 32, 14, 4, 33, 15],\n [4, 39, 13, 1, 40, 14],\n\n // 8\n [2, 121, 97],\n [2, 60, 38, 2, 61, 39],\n [4, 40, 18, 2, 41, 19],\n [4, 40, 14, 2, 41, 15],\n\n // 9\n [2, 146, 116],\n [3, 58, 36, 2, 59, 37],\n [4, 36, 16, 4, 37, 17],\n [4, 36, 12, 4, 37, 13],\n\n // 10\n [2, 86, 68, 2, 87, 69],\n [4, 69, 43, 1, 70, 44],\n [6, 43, 19, 2, 44, 20],\n [6, 43, 15, 2, 44, 16],\n\n // 11\n [4, 101, 81],\n [1, 80, 50, 4, 81, 51],\n [4, 50, 22, 4, 51, 23],\n [3, 36, 12, 8, 37, 13],\n\n // 12\n [2, 116, 92, 2, 117, 93],\n [6, 58, 36, 2, 59, 37],\n [4, 46, 20, 6, 47, 21],\n [7, 42, 14, 4, 43, 15],\n\n // 13\n [4, 133, 107],\n [8, 59, 37, 1, 60, 38],\n [8, 44, 20, 4, 45, 21],\n [12, 33, 11, 4, 34, 12],\n\n // 14\n [3, 145, 115, 1, 146, 116],\n [4, 64, 40, 5, 65, 41],\n [11, 36, 16, 5, 37, 17],\n [11, 36, 12, 5, 37, 13],\n\n // 15\n [5, 109, 87, 1, 110, 88],\n [5, 65, 41, 5, 66, 42],\n [5, 54, 24, 7, 55, 25],\n [11, 36, 12, 7, 37, 13],\n\n // 16\n [5, 122, 98, 1, 123, 99],\n [7, 73, 45, 3, 74, 46],\n [15, 43, 19, 2, 44, 20],\n [3, 45, 15, 13, 46, 16],\n\n // 17\n [1, 135, 107, 5, 136, 108],\n [10, 74, 46, 1, 75, 47],\n [1, 50, 22, 15, 51, 23],\n [2, 42, 14, 17, 43, 15],\n\n // 18\n [5, 150, 120, 1, 151, 121],\n [9, 69, 43, 4, 70, 44],\n [17, 50, 22, 1, 51, 23],\n [2, 42, 14, 19, 43, 15],\n\n // 19\n [3, 141, 113, 4, 142, 114],\n [3, 70, 44, 11, 71, 45],\n [17, 47, 21, 4, 48, 22],\n [9, 39, 13, 16, 40, 14],\n\n // 20\n [3, 135, 107, 5, 136, 108],\n [3, 67, 41, 13, 68, 42],\n [15, 54, 24, 5, 55, 25],\n [15, 43, 15, 10, 44, 16],\n\n // 21\n [4, 144, 116, 4, 145, 117],\n [17, 68, 42],\n [17, 50, 22, 6, 51, 23],\n [19, 46, 16, 6, 47, 17],\n\n // 22\n [2, 139, 111, 7, 140, 112],\n [17, 74, 46],\n [7, 54, 24, 16, 55, 25],\n [34, 37, 13],\n\n // 23\n [4, 151, 121, 5, 152, 122],\n [4, 75, 47, 14, 76, 48],\n [11, 54, 24, 14, 55, 25],\n [16, 45, 15, 14, 46, 16],\n\n // 24\n [6, 147, 117, 4, 148, 118],\n [6, 73, 45, 14, 74, 46],\n [11, 54, 24, 16, 55, 25],\n [30, 46, 16, 2, 47, 17],\n\n // 25\n [8, 132, 106, 4, 133, 107],\n [8, 75, 47, 13, 76, 48],\n [7, 54, 24, 22, 55, 25],\n [22, 45, 15, 13, 46, 16],\n\n // 26\n [10, 142, 114, 2, 143, 115],\n [19, 74, 46, 4, 75, 47],\n [28, 50, 22, 6, 51, 23],\n [33, 46, 16, 4, 47, 17],\n\n // 27\n [8, 152, 122, 4, 153, 123],\n [22, 73, 45, 3, 74, 46],\n [8, 53, 23, 26, 54, 24],\n [12, 45, 15, 28, 46, 16],\n\n // 28\n [3, 147, 117, 10, 148, 118],\n [3, 73, 45, 23, 74, 46],\n [4, 54, 24, 31, 55, 25],\n [11, 45, 15, 31, 46, 16],\n\n // 29\n [7, 146, 116, 7, 147, 117],\n [21, 73, 45, 7, 74, 46],\n [1, 53, 23, 37, 54, 24],\n [19, 45, 15, 26, 46, 16],\n\n // 30\n [5, 145, 115, 10, 146, 116],\n [19, 75, 47, 10, 76, 48],\n [15, 54, 24, 25, 55, 25],\n [23, 45, 15, 25, 46, 16],\n\n // 31\n [13, 145, 115, 3, 146, 116],\n [2, 74, 46, 29, 75, 47],\n [42, 54, 24, 1, 55, 25],\n [23, 45, 15, 28, 46, 16],\n\n // 32\n [17, 145, 115],\n [10, 74, 46, 23, 75, 47],\n [10, 54, 24, 35, 55, 25],\n [19, 45, 15, 35, 46, 16],\n\n // 33\n [17, 145, 115, 1, 146, 116],\n [14, 74, 46, 21, 75, 47],\n [29, 54, 24, 19, 55, 25],\n [11, 45, 15, 46, 46, 16],\n\n // 34\n [13, 145, 115, 6, 146, 116],\n [14, 74, 46, 23, 75, 47],\n [44, 54, 24, 7, 55, 25],\n [59, 46, 16, 1, 47, 17],\n\n // 35\n [12, 151, 121, 7, 152, 122],\n [12, 75, 47, 26, 76, 48],\n [39, 54, 24, 14, 55, 25],\n [22, 45, 15, 41, 46, 16],\n\n // 36\n [6, 151, 121, 14, 152, 122],\n [6, 75, 47, 34, 76, 48],\n [46, 54, 24, 10, 55, 25],\n [2, 45, 15, 64, 46, 16],\n\n // 37\n [17, 152, 122, 4, 153, 123],\n [29, 74, 46, 14, 75, 47],\n [49, 54, 24, 10, 55, 25],\n [24, 45, 15, 46, 46, 16],\n\n // 38\n [4, 152, 122, 18, 153, 123],\n [13, 74, 46, 32, 75, 47],\n [48, 54, 24, 14, 55, 25],\n [42, 45, 15, 32, 46, 16],\n\n // 39\n [20, 147, 117, 4, 148, 118],\n [40, 75, 47, 7, 76, 48],\n [43, 54, 24, 22, 55, 25],\n [10, 45, 15, 67, 46, 16],\n\n // 40\n [19, 148, 118, 6, 149, 119],\n [18, 75, 47, 31, 76, 48],\n [34, 54, 24, 34, 55, 25],\n [20, 45, 15, 61, 46, 16]\n ];\n\n var qrRSBlock = function(totalCount, dataCount) {\n var _this = {};\n _this.totalCount = totalCount;\n _this.dataCount = dataCount;\n return _this;\n };\n\n var _this = {};\n\n var getRsBlockTable = function(typeNumber, errorCorrectionLevel) {\n\n switch(errorCorrectionLevel) {\n case QRErrorCorrectionLevel.L :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 0];\n case QRErrorCorrectionLevel.M :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 1];\n case QRErrorCorrectionLevel.Q :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 2];\n case QRErrorCorrectionLevel.H :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 3];\n default :\n return undefined;\n }\n };\n\n _this.getRSBlocks = function(typeNumber, errorCorrectionLevel) {\n\n var rsBlock = getRsBlockTable(typeNumber, errorCorrectionLevel);\n\n if (typeof rsBlock == 'undefined') {\n throw 'bad rs block @ typeNumber:' + typeNumber +\n '/errorCorrectionLevel:' + errorCorrectionLevel;\n }\n\n var length = rsBlock.length / 3;\n\n var list = [];\n\n for (var i = 0; i < length; i += 1) {\n\n var count = rsBlock[i * 3 + 0];\n var totalCount = rsBlock[i * 3 + 1];\n var dataCount = rsBlock[i * 3 + 2];\n\n for (var j = 0; j < count; j += 1) {\n list.push(qrRSBlock(totalCount, dataCount) );\n }\n }\n\n return list;\n };\n\n return _this;\n }();\n\n //---------------------------------------------------------------------\n // qrBitBuffer\n //---------------------------------------------------------------------\n\n var qrBitBuffer = function() {\n\n var _buffer = [];\n var _length = 0;\n\n var _this = {};\n\n _this.getBuffer = function() {\n return _buffer;\n };\n\n _this.getAt = function(index) {\n var bufIndex = Math.floor(index / 8);\n return ( (_buffer[bufIndex] >>> (7 - index % 8) ) & 1) == 1;\n };\n\n _this.put = function(num, length) {\n for (var i = 0; i < length; i += 1) {\n _this.putBit( ( (num >>> (length - i - 1) ) & 1) == 1);\n }\n };\n\n _this.getLengthInBits = function() {\n return _length;\n };\n\n _this.putBit = function(bit) {\n\n var bufIndex = Math.floor(_length / 8);\n if (_buffer.length <= bufIndex) {\n _buffer.push(0);\n }\n\n if (bit) {\n _buffer[bufIndex] |= (0x80 >>> (_length % 8) );\n }\n\n _length += 1;\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qrNumber\n //---------------------------------------------------------------------\n\n var qrNumber = function(data) {\n\n var _mode = QRMode.MODE_NUMBER;\n var _data = data;\n\n var _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return _data.length;\n };\n\n _this.write = function(buffer) {\n\n var data = _data;\n\n var i = 0;\n\n while (i + 2 < data.length) {\n buffer.put(strToNum(data.substring(i, i + 3) ), 10);\n i += 3;\n }\n\n if (i < data.length) {\n if (data.length - i == 1) {\n buffer.put(strToNum(data.substring(i, i + 1) ), 4);\n } else if (data.length - i == 2) {\n buffer.put(strToNum(data.substring(i, i + 2) ), 7);\n }\n }\n };\n\n var strToNum = function(s) {\n var num = 0;\n for (var i = 0; i < s.length; i += 1) {\n num = num * 10 + chatToNum(s.charAt(i) );\n }\n return num;\n };\n\n var chatToNum = function(c) {\n if ('0' <= c && c <= '9') {\n return c.charCodeAt(0) - '0'.charCodeAt(0);\n }\n throw 'illegal char :' + c;\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qrAlphaNum\n //---------------------------------------------------------------------\n\n var qrAlphaNum = function(data) {\n\n var _mode = QRMode.MODE_ALPHA_NUM;\n var _data = data;\n\n var _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return _data.length;\n };\n\n _this.write = function(buffer) {\n\n var s = _data;\n\n var i = 0;\n\n while (i + 1 < s.length) {\n buffer.put(\n getCode(s.charAt(i) ) * 45 +\n getCode(s.charAt(i + 1) ), 11);\n i += 2;\n }\n\n if (i < s.length) {\n buffer.put(getCode(s.charAt(i) ), 6);\n }\n };\n\n var getCode = function(c) {\n\n if ('0' <= c && c <= '9') {\n return c.charCodeAt(0) - '0'.charCodeAt(0);\n } else if ('A' <= c && c <= 'Z') {\n return c.charCodeAt(0) - 'A'.charCodeAt(0) + 10;\n } else {\n switch (c) {\n case ' ' : return 36;\n case '$' : return 37;\n case '%' : return 38;\n case '*' : return 39;\n case '+' : return 40;\n case '-' : return 41;\n case '.' : return 42;\n case '/' : return 43;\n case ':' : return 44;\n default :\n throw 'illegal char :' + c;\n }\n }\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qr8BitByte\n //---------------------------------------------------------------------\n\n var qr8BitByte = function(data) {\n\n var _mode = QRMode.MODE_8BIT_BYTE;\n var _data = data;\n var _bytes = qrcode.stringToBytes(data);\n\n var _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return _bytes.length;\n };\n\n _this.write = function(buffer) {\n for (var i = 0; i < _bytes.length; i += 1) {\n buffer.put(_bytes[i], 8);\n }\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qrKanji\n //---------------------------------------------------------------------\n\n var qrKanji = function(data) {\n\n var _mode = QRMode.MODE_KANJI;\n var _data = data;\n\n var stringToBytes = qrcode.stringToBytesFuncs['SJIS'];\n if (!stringToBytes) {\n throw 'sjis not supported.';\n }\n !function(c, code) {\n // self test for sjis support.\n var test = stringToBytes(c);\n if (test.length != 2 || ( (test[0] << 8) | test[1]) != code) {\n throw 'sjis not supported.';\n }\n }('\\u53cb', 0x9746);\n\n var _bytes = stringToBytes(data);\n\n var _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return ~~(_bytes.length / 2);\n };\n\n _this.write = function(buffer) {\n\n var data = _bytes;\n\n var i = 0;\n\n while (i + 1 < data.length) {\n\n var c = ( (0xff & data[i]) << 8) | (0xff & data[i + 1]);\n\n if (0x8140 <= c && c <= 0x9FFC) {\n c -= 0x8140;\n } else if (0xE040 <= c && c <= 0xEBBF) {\n c -= 0xC140;\n } else {\n throw 'illegal char at ' + (i + 1) + '/' + c;\n }\n\n c = ( (c >>> 8) & 0xff) * 0xC0 + (c & 0xff);\n\n buffer.put(c, 13);\n\n i += 2;\n }\n\n if (i < data.length) {\n throw 'illegal char at ' + (i + 1);\n }\n };\n\n return _this;\n };\n\n //=====================================================================\n // GIF Support etc.\n //\n\n //---------------------------------------------------------------------\n // byteArrayOutputStream\n //---------------------------------------------------------------------\n\n var byteArrayOutputStream = function() {\n\n var _bytes = [];\n\n var _this = {};\n\n _this.writeByte = function(b) {\n _bytes.push(b & 0xff);\n };\n\n _this.writeShort = function(i) {\n _this.writeByte(i);\n _this.writeByte(i >>> 8);\n };\n\n _this.writeBytes = function(b, off, len) {\n off = off || 0;\n len = len || b.length;\n for (var i = 0; i < len; i += 1) {\n _this.writeByte(b[i + off]);\n }\n };\n\n _this.writeString = function(s) {\n for (var i = 0; i < s.length; i += 1) {\n _this.writeByte(s.charCodeAt(i) );\n }\n };\n\n _this.toByteArray = function() {\n return _bytes;\n };\n\n _this.toString = function() {\n var s = '';\n s += '[';\n for (var i = 0; i < _bytes.length; i += 1) {\n if (i > 0) {\n s += ',';\n }\n s += _bytes[i];\n }\n s += ']';\n return s;\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // base64EncodeOutputStream\n //---------------------------------------------------------------------\n\n var base64EncodeOutputStream = function() {\n\n var _buffer = 0;\n var _buflen = 0;\n var _length = 0;\n var _base64 = '';\n\n var _this = {};\n\n var writeEncoded = function(b) {\n _base64 += String.fromCharCode(encode(b & 0x3f) );\n };\n\n var encode = function(n) {\n if (n < 0) {\n // error.\n } else if (n < 26) {\n return 0x41 + n;\n } else if (n < 52) {\n return 0x61 + (n - 26);\n } else if (n < 62) {\n return 0x30 + (n - 52);\n } else if (n == 62) {\n return 0x2b;\n } else if (n == 63) {\n return 0x2f;\n }\n throw 'n:' + n;\n };\n\n _this.writeByte = function(n) {\n\n _buffer = (_buffer << 8) | (n & 0xff);\n _buflen += 8;\n _length += 1;\n\n while (_buflen >= 6) {\n writeEncoded(_buffer >>> (_buflen - 6) );\n _buflen -= 6;\n }\n };\n\n _this.flush = function() {\n\n if (_buflen > 0) {\n writeEncoded(_buffer << (6 - _buflen) );\n _buffer = 0;\n _buflen = 0;\n }\n\n if (_length % 3 != 0) {\n // padding\n var padlen = 3 - _length % 3;\n for (var i = 0; i < padlen; i += 1) {\n _base64 += '=';\n }\n }\n };\n\n _this.toString = function() {\n return _base64;\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // base64DecodeInputStream\n //---------------------------------------------------------------------\n\n var base64DecodeInputStream = function(str) {\n\n var _str = str;\n var _pos = 0;\n var _buffer = 0;\n var _buflen = 0;\n\n var _this = {};\n\n _this.read = function() {\n\n while (_buflen < 8) {\n\n if (_pos >= _str.length) {\n if (_buflen == 0) {\n return -1;\n }\n throw 'unexpected end of file./' + _buflen;\n }\n\n var c = _str.charAt(_pos);\n _pos += 1;\n\n if (c == '=') {\n _buflen = 0;\n return -1;\n } else if (c.match(/^\\s$/) ) {\n // ignore if whitespace.\n continue;\n }\n\n _buffer = (_buffer << 6) | decode(c.charCodeAt(0) );\n _buflen += 6;\n }\n\n var n = (_buffer >>> (_buflen - 8) ) & 0xff;\n _buflen -= 8;\n return n;\n };\n\n var decode = function(c) {\n if (0x41 <= c && c <= 0x5a) {\n return c - 0x41;\n } else if (0x61 <= c && c <= 0x7a) {\n return c - 0x61 + 26;\n } else if (0x30 <= c && c <= 0x39) {\n return c - 0x30 + 52;\n } else if (c == 0x2b) {\n return 62;\n } else if (c == 0x2f) {\n return 63;\n } else {\n throw 'c:' + c;\n }\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // gifImage (B/W)\n //---------------------------------------------------------------------\n\n var gifImage = function(width, height) {\n\n var _width = width;\n var _height = height;\n var _data = new Array(width * height);\n\n var _this = {};\n\n _this.setPixel = function(x, y, pixel) {\n _data[y * _width + x] = pixel;\n };\n\n _this.write = function(out) {\n\n //---------------------------------\n // GIF Signature\n\n out.writeString('GIF87a');\n\n //---------------------------------\n // Screen Descriptor\n\n out.writeShort(_width);\n out.writeShort(_height);\n\n out.writeByte(0x80); // 2bit\n out.writeByte(0);\n out.writeByte(0);\n\n //---------------------------------\n // Global Color Map\n\n // black\n out.writeByte(0x00);\n out.writeByte(0x00);\n out.writeByte(0x00);\n\n // white\n out.writeByte(0xff);\n out.writeByte(0xff);\n out.writeByte(0xff);\n\n //---------------------------------\n // Image Descriptor\n\n out.writeString(',');\n out.writeShort(0);\n out.writeShort(0);\n out.writeShort(_width);\n out.writeShort(_height);\n out.writeByte(0);\n\n //---------------------------------\n // Local Color Map\n\n //---------------------------------\n // Raster Data\n\n var lzwMinCodeSize = 2;\n var raster = getLZWRaster(lzwMinCodeSize);\n\n out.writeByte(lzwMinCodeSize);\n\n var offset = 0;\n\n while (raster.length - offset > 255) {\n out.writeByte(255);\n out.writeBytes(raster, offset, 255);\n offset += 255;\n }\n\n out.writeByte(raster.length - offset);\n out.writeBytes(raster, offset, raster.length - offset);\n out.writeByte(0x00);\n\n //---------------------------------\n // GIF Terminator\n out.writeString(';');\n };\n\n var bitOutputStream = function(out) {\n\n var _out = out;\n var _bitLength = 0;\n var _bitBuffer = 0;\n\n var _this = {};\n\n _this.write = function(data, length) {\n\n if ( (data >>> length) != 0) {\n throw 'length over';\n }\n\n while (_bitLength + length >= 8) {\n _out.writeByte(0xff & ( (data << _bitLength) | _bitBuffer) );\n length -= (8 - _bitLength);\n data >>>= (8 - _bitLength);\n _bitBuffer = 0;\n _bitLength = 0;\n }\n\n _bitBuffer = (data << _bitLength) | _bitBuffer;\n _bitLength = _bitLength + length;\n };\n\n _this.flush = function() {\n if (_bitLength > 0) {\n _out.writeByte(_bitBuffer);\n }\n };\n\n return _this;\n };\n\n var getLZWRaster = function(lzwMinCodeSize) {\n\n var clearCode = 1 << lzwMinCodeSize;\n var endCode = (1 << lzwMinCodeSize) + 1;\n var bitLength = lzwMinCodeSize + 1;\n\n // Setup LZWTable\n var table = lzwTable();\n\n for (var i = 0; i < clearCode; i += 1) {\n table.add(String.fromCharCode(i) );\n }\n table.add(String.fromCharCode(clearCode) );\n table.add(String.fromCharCode(endCode) );\n\n var byteOut = byteArrayOutputStream();\n var bitOut = bitOutputStream(byteOut);\n\n // clear code\n bitOut.write(clearCode, bitLength);\n\n var dataIndex = 0;\n\n var s = String.fromCharCode(_data[dataIndex]);\n dataIndex += 1;\n\n while (dataIndex < _data.length) {\n\n var c = String.fromCharCode(_data[dataIndex]);\n dataIndex += 1;\n\n if (table.contains(s + c) ) {\n\n s = s + c;\n\n } else {\n\n bitOut.write(table.indexOf(s), bitLength);\n\n if (table.size() < 0xfff) {\n\n if (table.size() == (1 << bitLength) ) {\n bitLength += 1;\n }\n\n table.add(s + c);\n }\n\n s = c;\n }\n }\n\n bitOut.write(table.indexOf(s), bitLength);\n\n // end code\n bitOut.write(endCode, bitLength);\n\n bitOut.flush();\n\n return byteOut.toByteArray();\n };\n\n var lzwTable = function() {\n\n var _map = {};\n var _size = 0;\n\n var _this = {};\n\n _this.add = function(key) {\n if (_this.contains(key) ) {\n throw 'dup key:' + key;\n }\n _map[key] = _size;\n _size += 1;\n };\n\n _this.size = function() {\n return _size;\n };\n\n _this.indexOf = function(key) {\n return _map[key];\n };\n\n _this.contains = function(key) {\n return typeof _map[key] != 'undefined';\n };\n\n return _this;\n };\n\n return _this;\n };\n\n var createDataURL = function(width, height, getPixel) {\n var gif = gifImage(width, height);\n for (var y = 0; y < height; y += 1) {\n for (var x = 0; x < width; x += 1) {\n gif.setPixel(x, y, getPixel(x, y) );\n }\n }\n\n var b = byteArrayOutputStream();\n gif.write(b);\n\n var base64 = base64EncodeOutputStream();\n var bytes = b.toByteArray();\n for (var i = 0; i < bytes.length; i += 1) {\n base64.writeByte(bytes[i]);\n }\n base64.flush();\n\n return 'data:image/gif;base64,' + base64;\n };\n\n //---------------------------------------------------------------------\n // returns qrcode function.\n\n return qrcode;\n}();\n\n// multibyte support\n!function() {\n\n qrcode.stringToBytesFuncs['UTF-8'] = function(s) {\n // http://stackoverflow.com/questions/18729405/how-to-convert-utf8-string-to-byte-array\n function toUTF8Array(str) {\n var utf8 = [];\n for (var i=0; i < str.length; i++) {\n var charcode = str.charCodeAt(i);\n if (charcode < 0x80) utf8.push(charcode);\n else if (charcode < 0x800) {\n utf8.push(0xc0 | (charcode >> 6),\n 0x80 | (charcode & 0x3f));\n }\n else if (charcode < 0xd800 || charcode >= 0xe000) {\n utf8.push(0xe0 | (charcode >> 12),\n 0x80 | ((charcode>>6) & 0x3f),\n 0x80 | (charcode & 0x3f));\n }\n // surrogate pair\n else {\n i++;\n // UTF-16 encodes 0x10000-0x10FFFF by\n // subtracting 0x10000 and splitting the\n // 20 bits of 0x0-0xFFFFF into two halves\n charcode = 0x10000 + (((charcode & 0x3ff)<<10)\n | (str.charCodeAt(i) & 0x3ff));\n utf8.push(0xf0 | (charcode >>18),\n 0x80 | ((charcode>>12) & 0x3f),\n 0x80 | ((charcode>>6) & 0x3f),\n 0x80 | (charcode & 0x3f));\n }\n }\n return utf8;\n }\n return toUTF8Array(s);\n };\n\n}();\n\n(function (factory) {\n if (typeof define === 'function' && define.amd) {\n define([], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory();\n }\n}(function () {\n return qrcode;\n}));\n","import { UnknownObject } from \"../types\";\n\nconst isObject = (obj: Record): boolean => !!obj && typeof obj === \"object\" && !Array.isArray(obj);\n\nexport default function mergeDeep(target: UnknownObject, ...sources: UnknownObject[]): UnknownObject {\n if (!sources.length) return target;\n const source = sources.shift();\n if (source === undefined || !isObject(target) || !isObject(source)) return target;\n target = { ...target };\n Object.keys(source).forEach((key: string): void => {\n const targetValue = target[key];\n const sourceValue = source[key];\n\n if (Array.isArray(targetValue) && Array.isArray(sourceValue)) {\n target[key] = sourceValue;\n } else if (isObject(targetValue) && isObject(sourceValue)) {\n target[key] = mergeDeep(Object.assign({}, targetValue), sourceValue);\n } else {\n target[key] = sourceValue;\n }\n });\n\n return mergeDeep(target, ...sources);\n}\n","export default function downloadURI(uri: string, name: string): void {\n const link = document.createElement(\"a\");\n link.download = name;\n link.href = uri;\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n}\n","interface ImageSizeOptions {\n originalHeight: number;\n originalWidth: number;\n maxHiddenDots: number;\n maxHiddenAxisDots?: number;\n dotSize: number;\n}\n\ninterface ImageSizeResult {\n height: number;\n width: number;\n hideYDots: number;\n hideXDots: number;\n}\n\nexport default function calculateImageSize({\n originalHeight,\n originalWidth,\n maxHiddenDots,\n maxHiddenAxisDots,\n dotSize\n}: ImageSizeOptions): ImageSizeResult {\n const hideDots = { x: 0, y: 0 };\n const imageSize = { x: 0, y: 0 };\n\n if (originalHeight <= 0 || originalWidth <= 0 || maxHiddenDots <= 0 || dotSize <= 0) {\n return {\n height: 0,\n width: 0,\n hideYDots: 0,\n hideXDots: 0\n };\n }\n\n const k = originalHeight / originalWidth;\n\n //Getting the maximum possible axis hidden dots\n hideDots.x = Math.floor(Math.sqrt(maxHiddenDots / k));\n //The count of hidden dot's can't be less than 1\n if (hideDots.x <= 0) hideDots.x = 1;\n //Check the limit of the maximum allowed axis hidden dots\n if (maxHiddenAxisDots && maxHiddenAxisDots < hideDots.x) hideDots.x = maxHiddenAxisDots;\n //The count of dots should be odd\n if (hideDots.x % 2 === 0) hideDots.x--;\n imageSize.x = hideDots.x * dotSize;\n //Calculate opposite axis hidden dots based on axis value.\n //The value will be odd.\n //We use ceil to prevent dots covering by the image.\n hideDots.y = 1 + 2 * Math.ceil((hideDots.x * k - 1) / 2);\n imageSize.y = Math.round(imageSize.x * k);\n //If the result dots count is bigger than max - then decrease size and calculate again\n if (hideDots.y * hideDots.x > maxHiddenDots || (maxHiddenAxisDots && maxHiddenAxisDots < hideDots.y)) {\n if (maxHiddenAxisDots && maxHiddenAxisDots < hideDots.y) {\n hideDots.y = maxHiddenAxisDots;\n if (hideDots.y % 2 === 0) hideDots.x--;\n } else {\n hideDots.y -= 2;\n }\n imageSize.y = hideDots.y * dotSize;\n hideDots.x = 1 + 2 * Math.ceil((hideDots.y / k - 1) / 2);\n imageSize.x = Math.round(imageSize.y / k);\n }\n\n return {\n height: imageSize.y,\n width: imageSize.x,\n hideYDots: hideDots.x,\n hideXDots: hideDots.y\n };\n}\n","interface ErrorCorrectionPercents {\n [key: string]: number;\n}\n\nexport default {\n L: 0.07,\n M: 0.15,\n Q: 0.25,\n H: 0.3\n} as ErrorCorrectionPercents;\n","import { DotTypes } from \"../types\";\n\nexport default {\n dots: \"dots\",\n rounded: \"rounded\",\n classy: \"classy\",\n classyRounded: \"classy-rounded\",\n square: \"square\",\n extraRounded: \"extra-rounded\"\n} as DotTypes;\n","import dotTypes from \"../../../constants/dotTypes\";\nimport {\n DotType,\n GetNeighbor,\n RotateFigureArgsCanvas,\n BasicFigureDrawArgsCanvas,\n DrawArgsCanvas\n} from \"../../../types\";\n\nexport default class QRDot {\n _context: CanvasRenderingContext2D;\n _type: DotType;\n\n constructor({ context, type }: { context: CanvasRenderingContext2D; type: DotType }) {\n this._context = context;\n this._type = type;\n }\n\n draw(x: number, y: number, size: number, getNeighbor: GetNeighbor): void {\n const context = this._context;\n const type = this._type;\n let drawFunction;\n\n switch (type) {\n case dotTypes.dots:\n drawFunction = this._drawDot;\n break;\n case dotTypes.classy:\n drawFunction = this._drawClassy;\n break;\n case dotTypes.classyRounded:\n drawFunction = this._drawClassyRounded;\n break;\n case dotTypes.rounded:\n drawFunction = this._drawRounded;\n break;\n case dotTypes.extraRounded:\n drawFunction = this._drawExtraRounded;\n break;\n case dotTypes.square:\n default:\n drawFunction = this._drawSquare;\n }\n\n drawFunction.call(this, { x, y, size, context, getNeighbor });\n }\n\n _rotateFigure({ x, y, size, context, rotation = 0, draw }: RotateFigureArgsCanvas): void {\n const cx = x + size / 2;\n const cy = y + size / 2;\n\n context.translate(cx, cy);\n rotation && context.rotate(rotation);\n draw();\n context.closePath();\n rotation && context.rotate(-rotation);\n context.translate(-cx, -cy);\n }\n\n _basicDot(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.arc(0, 0, size / 2, 0, Math.PI * 2);\n }\n });\n }\n\n _basicSquare(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.rect(-size / 2, -size / 2, size, size);\n }\n });\n }\n\n //if rotation === 0 - right side is rounded\n _basicSideRounded(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.arc(0, 0, size / 2, -Math.PI / 2, Math.PI / 2);\n context.lineTo(-size / 2, size / 2);\n context.lineTo(-size / 2, -size / 2);\n context.lineTo(0, -size / 2);\n }\n });\n }\n\n //if rotation === 0 - top right corner is rounded\n _basicCornerRounded(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.arc(0, 0, size / 2, -Math.PI / 2, 0);\n context.lineTo(size / 2, size / 2);\n context.lineTo(-size / 2, size / 2);\n context.lineTo(-size / 2, -size / 2);\n context.lineTo(0, -size / 2);\n }\n });\n }\n\n //if rotation === 0 - top right corner is rounded\n _basicCornerExtraRounded(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.arc(-size / 2, size / 2, size, -Math.PI / 2, 0);\n context.lineTo(-size / 2, size / 2);\n context.lineTo(-size / 2, -size / 2);\n }\n });\n }\n\n _basicCornersRounded(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.arc(0, 0, size / 2, -Math.PI / 2, 0);\n context.lineTo(size / 2, size / 2);\n context.lineTo(0, size / 2);\n context.arc(0, 0, size / 2, Math.PI / 2, Math.PI);\n context.lineTo(-size / 2, -size / 2);\n context.lineTo(0, -size / 2);\n }\n });\n }\n\n _basicCornersExtraRounded(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.arc(-size / 2, size / 2, size, -Math.PI / 2, 0);\n context.arc(size / 2, -size / 2, size, Math.PI / 2, Math.PI);\n }\n });\n }\n\n _drawDot({ x, y, size, context }: DrawArgsCanvas): void {\n this._basicDot({ x, y, size, context, rotation: 0 });\n }\n\n _drawSquare({ x, y, size, context }: DrawArgsCanvas): void {\n this._basicSquare({ x, y, size, context, rotation: 0 });\n }\n\n _drawRounded({ x, y, size, context, getNeighbor }: DrawArgsCanvas): void {\n const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\n const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\n const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\n const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\n\n const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\n\n if (neighborsCount === 0) {\n this._basicDot({ x, y, size, context, rotation: 0 });\n return;\n }\n\n if (neighborsCount > 2 || (leftNeighbor && rightNeighbor) || (topNeighbor && bottomNeighbor)) {\n this._basicSquare({ x, y, size, context, rotation: 0 });\n return;\n }\n\n if (neighborsCount === 2) {\n let rotation = 0;\n\n if (leftNeighbor && topNeighbor) {\n rotation = Math.PI / 2;\n } else if (topNeighbor && rightNeighbor) {\n rotation = Math.PI;\n } else if (rightNeighbor && bottomNeighbor) {\n rotation = -Math.PI / 2;\n }\n\n this._basicCornerRounded({ x, y, size, context, rotation });\n return;\n }\n\n if (neighborsCount === 1) {\n let rotation = 0;\n\n if (topNeighbor) {\n rotation = Math.PI / 2;\n } else if (rightNeighbor) {\n rotation = Math.PI;\n } else if (bottomNeighbor) {\n rotation = -Math.PI / 2;\n }\n\n this._basicSideRounded({ x, y, size, context, rotation });\n return;\n }\n }\n\n _drawExtraRounded({ x, y, size, context, getNeighbor }: DrawArgsCanvas): void {\n const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\n const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\n const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\n const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\n\n const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\n\n if (neighborsCount === 0) {\n this._basicDot({ x, y, size, context, rotation: 0 });\n return;\n }\n\n if (neighborsCount > 2 || (leftNeighbor && rightNeighbor) || (topNeighbor && bottomNeighbor)) {\n this._basicSquare({ x, y, size, context, rotation: 0 });\n return;\n }\n\n if (neighborsCount === 2) {\n let rotation = 0;\n\n if (leftNeighbor && topNeighbor) {\n rotation = Math.PI / 2;\n } else if (topNeighbor && rightNeighbor) {\n rotation = Math.PI;\n } else if (rightNeighbor && bottomNeighbor) {\n rotation = -Math.PI / 2;\n }\n\n this._basicCornerExtraRounded({ x, y, size, context, rotation });\n return;\n }\n\n if (neighborsCount === 1) {\n let rotation = 0;\n\n if (topNeighbor) {\n rotation = Math.PI / 2;\n } else if (rightNeighbor) {\n rotation = Math.PI;\n } else if (bottomNeighbor) {\n rotation = -Math.PI / 2;\n }\n\n this._basicSideRounded({ x, y, size, context, rotation });\n return;\n }\n }\n\n _drawClassy({ x, y, size, context, getNeighbor }: DrawArgsCanvas): void {\n const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\n const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\n const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\n const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\n\n const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\n\n if (neighborsCount === 0) {\n this._basicCornersRounded({ x, y, size, context, rotation: Math.PI / 2 });\n return;\n }\n\n if (!leftNeighbor && !topNeighbor) {\n this._basicCornerRounded({ x, y, size, context, rotation: -Math.PI / 2 });\n return;\n }\n\n if (!rightNeighbor && !bottomNeighbor) {\n this._basicCornerRounded({ x, y, size, context, rotation: Math.PI / 2 });\n return;\n }\n\n this._basicSquare({ x, y, size, context, rotation: 0 });\n }\n\n _drawClassyRounded({ x, y, size, context, getNeighbor }: DrawArgsCanvas): void {\n const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\n const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\n const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\n const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\n\n const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\n\n if (neighborsCount === 0) {\n this._basicCornersRounded({ x, y, size, context, rotation: Math.PI / 2 });\n return;\n }\n\n if (!leftNeighbor && !topNeighbor) {\n this._basicCornerExtraRounded({ x, y, size, context, rotation: -Math.PI / 2 });\n return;\n }\n\n if (!rightNeighbor && !bottomNeighbor) {\n this._basicCornerExtraRounded({ x, y, size, context, rotation: Math.PI / 2 });\n return;\n }\n\n this._basicSquare({ x, y, size, context, rotation: 0 });\n }\n}\n","import { CornerSquareTypes } from \"../types\";\n\nexport default {\n dot: \"dot\",\n square: \"square\",\n extraRounded: \"extra-rounded\"\n} as CornerSquareTypes;\n","import cornerSquareTypes from \"../../../constants/cornerSquareTypes\";\nimport { CornerSquareType, RotateFigureArgsCanvas, BasicFigureDrawArgsCanvas, DrawArgsCanvas } from \"../../../types\";\n\nexport default class QRCornerSquare {\n _context: CanvasRenderingContext2D;\n _type: CornerSquareType;\n\n constructor({ context, type }: { context: CanvasRenderingContext2D; type: CornerSquareType }) {\n this._context = context;\n this._type = type;\n }\n\n draw(x: number, y: number, size: number, rotation: number): void {\n const context = this._context;\n const type = this._type;\n let drawFunction;\n\n switch (type) {\n case cornerSquareTypes.square:\n drawFunction = this._drawSquare;\n break;\n case cornerSquareTypes.extraRounded:\n drawFunction = this._drawExtraRounded;\n break;\n case cornerSquareTypes.dot:\n default:\n drawFunction = this._drawDot;\n }\n\n drawFunction.call(this, { x, y, size, context, rotation });\n }\n\n _rotateFigure({ x, y, size, context, rotation = 0, draw }: RotateFigureArgsCanvas): void {\n const cx = x + size / 2;\n const cy = y + size / 2;\n\n context.translate(cx, cy);\n rotation && context.rotate(rotation);\n draw();\n context.closePath();\n rotation && context.rotate(-rotation);\n context.translate(-cx, -cy);\n }\n\n _basicDot(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n const dotSize = size / 7;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.arc(0, 0, size / 2, 0, Math.PI * 2);\n context.arc(0, 0, size / 2 - dotSize, 0, Math.PI * 2);\n }\n });\n }\n\n _basicSquare(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n const dotSize = size / 7;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.rect(-size / 2, -size / 2, size, size);\n context.rect(-size / 2 + dotSize, -size / 2 + dotSize, size - 2 * dotSize, size - 2 * dotSize);\n }\n });\n }\n\n _basicExtraRounded(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n const dotSize = size / 7;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.arc(-dotSize, -dotSize, 2.5 * dotSize, Math.PI, -Math.PI / 2);\n context.lineTo(dotSize, -3.5 * dotSize);\n context.arc(dotSize, -dotSize, 2.5 * dotSize, -Math.PI / 2, 0);\n context.lineTo(3.5 * dotSize, -dotSize);\n context.arc(dotSize, dotSize, 2.5 * dotSize, 0, Math.PI / 2);\n context.lineTo(-dotSize, 3.5 * dotSize);\n context.arc(-dotSize, dotSize, 2.5 * dotSize, Math.PI / 2, Math.PI);\n context.lineTo(-3.5 * dotSize, -dotSize);\n\n context.arc(-dotSize, -dotSize, 1.5 * dotSize, Math.PI, -Math.PI / 2);\n context.lineTo(dotSize, -2.5 * dotSize);\n context.arc(dotSize, -dotSize, 1.5 * dotSize, -Math.PI / 2, 0);\n context.lineTo(2.5 * dotSize, -dotSize);\n context.arc(dotSize, dotSize, 1.5 * dotSize, 0, Math.PI / 2);\n context.lineTo(-dotSize, 2.5 * dotSize);\n context.arc(-dotSize, dotSize, 1.5 * dotSize, Math.PI / 2, Math.PI);\n context.lineTo(-2.5 * dotSize, -dotSize);\n }\n });\n }\n\n _drawDot({ x, y, size, context, rotation }: DrawArgsCanvas): void {\n this._basicDot({ x, y, size, context, rotation });\n }\n\n _drawSquare({ x, y, size, context, rotation }: DrawArgsCanvas): void {\n this._basicSquare({ x, y, size, context, rotation });\n }\n\n _drawExtraRounded({ x, y, size, context, rotation }: DrawArgsCanvas): void {\n this._basicExtraRounded({ x, y, size, context, rotation });\n }\n}\n","import { CornerDotTypes } from \"../types\";\n\nexport default {\n dot: \"dot\",\n square: \"square\"\n} as CornerDotTypes;\n","import cornerDotTypes from \"../../../constants/cornerDotTypes\";\nimport { CornerDotType, RotateFigureArgsCanvas, BasicFigureDrawArgsCanvas, DrawArgsCanvas } from \"../../../types\";\n\nexport default class QRCornerDot {\n _context: CanvasRenderingContext2D;\n _type: CornerDotType;\n\n constructor({ context, type }: { context: CanvasRenderingContext2D; type: CornerDotType }) {\n this._context = context;\n this._type = type;\n }\n\n draw(x: number, y: number, size: number, rotation: number): void {\n const context = this._context;\n const type = this._type;\n let drawFunction;\n\n switch (type) {\n case cornerDotTypes.square:\n drawFunction = this._drawSquare;\n break;\n case cornerDotTypes.dot:\n default:\n drawFunction = this._drawDot;\n }\n\n drawFunction.call(this, { x, y, size, context, rotation });\n }\n\n _rotateFigure({ x, y, size, context, rotation = 0, draw }: RotateFigureArgsCanvas): void {\n const cx = x + size / 2;\n const cy = y + size / 2;\n\n context.translate(cx, cy);\n rotation && context.rotate(rotation);\n draw();\n context.closePath();\n rotation && context.rotate(-rotation);\n context.translate(-cx, -cy);\n }\n\n _basicDot(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.arc(0, 0, size / 2, 0, Math.PI * 2);\n }\n });\n }\n\n _basicSquare(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.rect(-size / 2, -size / 2, size, size);\n }\n });\n }\n\n _drawDot({ x, y, size, context, rotation }: DrawArgsCanvas): void {\n this._basicDot({ x, y, size, context, rotation });\n }\n\n _drawSquare({ x, y, size, context, rotation }: DrawArgsCanvas): void {\n this._basicSquare({ x, y, size, context, rotation });\n }\n}\n","import { GradientTypes } from \"../types\";\n\nexport default {\n radial: \"radial\",\n linear: \"linear\"\n} as GradientTypes;\n","import calculateImageSize from \"../tools/calculateImageSize\";\nimport errorCorrectionPercents from \"../constants/errorCorrectionPercents\";\nimport QRDot from \"../figures/dot/canvas/QRDot\";\nimport QRCornerSquare from \"../figures/cornerSquare/canvas/QRCornerSquare\";\nimport QRCornerDot from \"../figures/cornerDot/canvas/QRCornerDot\";\nimport { RequiredOptions } from \"./QROptions\";\nimport gradientTypes from \"../constants/gradientTypes\";\nimport { QRCode, Gradient, FilterFunction } from \"../types\";\n\nconst squareMask = [\n [1, 1, 1, 1, 1, 1, 1],\n [1, 0, 0, 0, 0, 0, 1],\n [1, 0, 0, 0, 0, 0, 1],\n [1, 0, 0, 0, 0, 0, 1],\n [1, 0, 0, 0, 0, 0, 1],\n [1, 0, 0, 0, 0, 0, 1],\n [1, 1, 1, 1, 1, 1, 1]\n];\n\nconst dotMask = [\n [0, 0, 0, 0, 0, 0, 0],\n [0, 0, 0, 0, 0, 0, 0],\n [0, 0, 1, 1, 1, 0, 0],\n [0, 0, 1, 1, 1, 0, 0],\n [0, 0, 1, 1, 1, 0, 0],\n [0, 0, 0, 0, 0, 0, 0],\n [0, 0, 0, 0, 0, 0, 0]\n];\n\nexport default class QRCanvas {\n _canvas: HTMLCanvasElement;\n _options: RequiredOptions;\n _qr?: QRCode;\n _image?: HTMLImageElement;\n\n //TODO don't pass all options to this class\n constructor(options: RequiredOptions) {\n this._canvas = document.createElement(\"canvas\");\n this._canvas.width = options.width;\n this._canvas.height = options.height;\n this._options = options;\n }\n\n get context(): CanvasRenderingContext2D | null {\n return this._canvas.getContext(\"2d\");\n }\n\n get width(): number {\n return this._canvas.width;\n }\n\n get height(): number {\n return this._canvas.height;\n }\n\n getCanvas(): HTMLCanvasElement {\n return this._canvas;\n }\n\n clear(): void {\n const canvasContext = this.context;\n\n if (canvasContext) {\n canvasContext.clearRect(0, 0, this._canvas.width, this._canvas.height);\n }\n }\n\n async drawQR(qr: QRCode): Promise {\n const count = qr.getModuleCount();\n const minSize = Math.min(this._options.width, this._options.height) - this._options.margin * 2;\n const dotSize = Math.floor(minSize / count);\n let drawImageSize = {\n hideXDots: 0,\n hideYDots: 0,\n width: 0,\n height: 0\n };\n\n this._qr = qr;\n\n if (this._options.image) {\n await this.loadImage();\n if (!this._image) return;\n const { imageOptions, qrOptions } = this._options;\n const coverLevel = imageOptions.imageSize * errorCorrectionPercents[qrOptions.errorCorrectionLevel];\n const maxHiddenDots = Math.floor(coverLevel * count * count);\n\n drawImageSize = calculateImageSize({\n originalWidth: this._image.width,\n originalHeight: this._image.height,\n maxHiddenDots,\n maxHiddenAxisDots: count - 14,\n dotSize\n });\n }\n\n this.clear();\n this.drawBackground();\n this.drawDots((i: number, j: number): boolean => {\n if (this._options.imageOptions.hideBackgroundDots) {\n if (\n i >= (count - drawImageSize.hideXDots) / 2 &&\n i < (count + drawImageSize.hideXDots) / 2 &&\n j >= (count - drawImageSize.hideYDots) / 2 &&\n j < (count + drawImageSize.hideYDots) / 2\n ) {\n return false;\n }\n }\n\n if (squareMask[i]?.[j] || squareMask[i - count + 7]?.[j] || squareMask[i]?.[j - count + 7]) {\n return false;\n }\n\n if (dotMask[i]?.[j] || dotMask[i - count + 7]?.[j] || dotMask[i]?.[j - count + 7]) {\n return false;\n }\n\n return true;\n });\n this.drawCorners();\n\n if (this._options.image) {\n this.drawImage({ width: drawImageSize.width, height: drawImageSize.height, count, dotSize });\n }\n }\n\n drawBackground(): void {\n const canvasContext = this.context;\n const options = this._options;\n\n if (canvasContext) {\n if (options.backgroundOptions.gradient) {\n const gradientOptions = options.backgroundOptions.gradient;\n const gradient = this._createGradient({\n context: canvasContext,\n options: gradientOptions,\n additionalRotation: 0,\n x: 0,\n y: 0,\n size: this._canvas.width > this._canvas.height ? this._canvas.width : this._canvas.height\n });\n\n gradientOptions.colorStops.forEach(({ offset, color }: { offset: number; color: string }) => {\n gradient.addColorStop(offset, color);\n });\n\n canvasContext.fillStyle = gradient;\n } else if (options.backgroundOptions.color) {\n canvasContext.fillStyle = options.backgroundOptions.color;\n }\n canvasContext.fillRect(0, 0, this._canvas.width, this._canvas.height);\n }\n }\n\n drawDots(filter?: FilterFunction): void {\n if (!this._qr) {\n throw \"QR code is not defined\";\n }\n\n const canvasContext = this.context;\n\n if (!canvasContext) {\n throw \"QR code is not defined\";\n }\n\n const options = this._options;\n const count = this._qr.getModuleCount();\n\n if (count > options.width || count > options.height) {\n throw \"The canvas is too small.\";\n }\n\n const minSize = Math.min(options.width, options.height) - options.margin * 2;\n const dotSize = Math.floor(minSize / count);\n const xBeginning = Math.floor((options.width - count * dotSize) / 2);\n const yBeginning = Math.floor((options.height - count * dotSize) / 2);\n const dot = new QRDot({ context: canvasContext, type: options.dotsOptions.type });\n\n canvasContext.beginPath();\n\n for (let i = 0; i < count; i++) {\n for (let j = 0; j < count; j++) {\n if (filter && !filter(i, j)) {\n continue;\n }\n if (!this._qr.isDark(i, j)) {\n continue;\n }\n dot.draw(\n yBeginning + j * dotSize,\n xBeginning + i * dotSize,\n dotSize,\n (xOffset: number, yOffset: number): boolean => {\n if (i + xOffset < 0 || j + yOffset < 0 || i + xOffset >= count || j + yOffset >= count) return false;\n if (filter && !filter(i + xOffset, j + yOffset)) return false;\n return !!this._qr && this._qr.isDark(i + xOffset, j + yOffset);\n }\n );\n }\n }\n\n if (options.dotsOptions.gradient) {\n const gradientOptions = options.dotsOptions.gradient;\n const gradient = this._createGradient({\n context: canvasContext,\n options: gradientOptions,\n additionalRotation: 0,\n x: xBeginning,\n y: yBeginning,\n size: count * dotSize\n });\n\n gradientOptions.colorStops.forEach(({ offset, color }: { offset: number; color: string }) => {\n gradient.addColorStop(offset, color);\n });\n\n canvasContext.fillStyle = canvasContext.strokeStyle = gradient;\n } else if (options.dotsOptions.color) {\n canvasContext.fillStyle = canvasContext.strokeStyle = options.dotsOptions.color;\n }\n\n canvasContext.fill(\"evenodd\");\n }\n\n drawCorners(filter?: FilterFunction): void {\n if (!this._qr) {\n throw \"QR code is not defined\";\n }\n\n const canvasContext = this.context;\n\n if (!canvasContext) {\n throw \"QR code is not defined\";\n }\n\n const options = this._options;\n\n const count = this._qr.getModuleCount();\n const minSize = Math.min(options.width, options.height) - options.margin * 2;\n const dotSize = Math.floor(minSize / count);\n const cornersSquareSize = dotSize * 7;\n const cornersDotSize = dotSize * 3;\n const xBeginning = Math.floor((options.width - count * dotSize) / 2);\n const yBeginning = Math.floor((options.height - count * dotSize) / 2);\n\n [\n [0, 0, 0],\n [1, 0, Math.PI / 2],\n [0, 1, -Math.PI / 2]\n ].forEach(([column, row, rotation]) => {\n if (filter && !filter(column, row)) {\n return;\n }\n\n const x = xBeginning + column * dotSize * (count - 7);\n const y = yBeginning + row * dotSize * (count - 7);\n\n if (options.cornersSquareOptions?.type) {\n const cornersSquare = new QRCornerSquare({ context: canvasContext, type: options.cornersSquareOptions?.type });\n\n canvasContext.beginPath();\n cornersSquare.draw(x, y, cornersSquareSize, rotation);\n } else {\n const dot = new QRDot({ context: canvasContext, type: options.dotsOptions.type });\n\n canvasContext.beginPath();\n\n for (let i = 0; i < squareMask.length; i++) {\n for (let j = 0; j < squareMask[i].length; j++) {\n if (!squareMask[i]?.[j]) {\n continue;\n }\n\n dot.draw(\n x + i * dotSize,\n y + j * dotSize,\n dotSize,\n (xOffset: number, yOffset: number): boolean => !!squareMask[i + xOffset]?.[j + yOffset]\n );\n }\n }\n }\n\n if (options.cornersSquareOptions?.gradient) {\n const gradientOptions = options.cornersSquareOptions.gradient;\n const gradient = this._createGradient({\n context: canvasContext,\n options: gradientOptions,\n additionalRotation: rotation,\n x,\n y,\n size: cornersSquareSize\n });\n\n gradientOptions.colorStops.forEach(({ offset, color }: { offset: number; color: string }) => {\n gradient.addColorStop(offset, color);\n });\n\n canvasContext.fillStyle = canvasContext.strokeStyle = gradient;\n } else if (options.cornersSquareOptions?.color) {\n canvasContext.fillStyle = canvasContext.strokeStyle = options.cornersSquareOptions.color;\n }\n\n canvasContext.fill(\"evenodd\");\n\n if (options.cornersDotOptions?.type) {\n const cornersDot = new QRCornerDot({ context: canvasContext, type: options.cornersDotOptions?.type });\n\n canvasContext.beginPath();\n cornersDot.draw(x + dotSize * 2, y + dotSize * 2, cornersDotSize, rotation);\n } else {\n const dot = new QRDot({ context: canvasContext, type: options.dotsOptions.type });\n\n canvasContext.beginPath();\n\n for (let i = 0; i < dotMask.length; i++) {\n for (let j = 0; j < dotMask[i].length; j++) {\n if (!dotMask[i]?.[j]) {\n continue;\n }\n\n dot.draw(\n x + i * dotSize,\n y + j * dotSize,\n dotSize,\n (xOffset: number, yOffset: number): boolean => !!dotMask[i + xOffset]?.[j + yOffset]\n );\n }\n }\n }\n\n if (options.cornersDotOptions?.gradient) {\n const gradientOptions = options.cornersDotOptions.gradient;\n const gradient = this._createGradient({\n context: canvasContext,\n options: gradientOptions,\n additionalRotation: rotation,\n x: x + dotSize * 2,\n y: y + dotSize * 2,\n size: cornersDotSize\n });\n\n gradientOptions.colorStops.forEach(({ offset, color }: { offset: number; color: string }) => {\n gradient.addColorStop(offset, color);\n });\n\n canvasContext.fillStyle = canvasContext.strokeStyle = gradient;\n } else if (options.cornersDotOptions?.color) {\n canvasContext.fillStyle = canvasContext.strokeStyle = options.cornersDotOptions.color;\n }\n\n canvasContext.fill(\"evenodd\");\n });\n }\n\n loadImage(): Promise {\n return new Promise((resolve, reject) => {\n const options = this._options;\n const image = new Image();\n\n if (!options.image) {\n return reject(\"Image is not defined\");\n }\n\n if (typeof options.imageOptions.crossOrigin === \"string\") {\n image.crossOrigin = options.imageOptions.crossOrigin;\n }\n\n this._image = image;\n image.onload = (): void => {\n resolve();\n };\n image.src = options.image;\n });\n }\n\n drawImage({\n width,\n height,\n count,\n dotSize\n }: {\n width: number;\n height: number;\n count: number;\n dotSize: number;\n }): void {\n const canvasContext = this.context;\n\n if (!canvasContext) {\n throw \"canvasContext is not defined\";\n }\n\n if (!this._image) {\n throw \"image is not defined\";\n }\n\n const options = this._options;\n const xBeginning = Math.floor((options.width - count * dotSize) / 2);\n const yBeginning = Math.floor((options.height - count * dotSize) / 2);\n const dx = xBeginning + options.imageOptions.margin + (count * dotSize - width) / 2;\n const dy = yBeginning + options.imageOptions.margin + (count * dotSize - height) / 2;\n const dw = width - options.imageOptions.margin * 2;\n const dh = height - options.imageOptions.margin * 2;\n\n canvasContext.drawImage(this._image, dx, dy, dw < 0 ? 0 : dw, dh < 0 ? 0 : dh);\n }\n\n _createGradient({\n context,\n options,\n additionalRotation,\n x,\n y,\n size\n }: {\n context: CanvasRenderingContext2D;\n options: Gradient;\n additionalRotation: number;\n x: number;\n y: number;\n size: number;\n }): CanvasGradient {\n let gradient;\n\n if (options.type === gradientTypes.radial) {\n gradient = context.createRadialGradient(x + size / 2, y + size / 2, 0, x + size / 2, y + size / 2, size / 2);\n } else {\n const rotation = ((options.rotation || 0) + additionalRotation) % (2 * Math.PI);\n const positiveRotation = (rotation + 2 * Math.PI) % (2 * Math.PI);\n let x0 = x + size / 2;\n let y0 = y + size / 2;\n let x1 = x + size / 2;\n let y1 = y + size / 2;\n\n if (\n (positiveRotation >= 0 && positiveRotation <= 0.25 * Math.PI) ||\n (positiveRotation > 1.75 * Math.PI && positiveRotation <= 2 * Math.PI)\n ) {\n x0 = x0 - size / 2;\n y0 = y0 - (size / 2) * Math.tan(rotation);\n x1 = x1 + size / 2;\n y1 = y1 + (size / 2) * Math.tan(rotation);\n } else if (positiveRotation > 0.25 * Math.PI && positiveRotation <= 0.75 * Math.PI) {\n y0 = y0 - size / 2;\n x0 = x0 - size / 2 / Math.tan(rotation);\n y1 = y1 + size / 2;\n x1 = x1 + size / 2 / Math.tan(rotation);\n } else if (positiveRotation > 0.75 * Math.PI && positiveRotation <= 1.25 * Math.PI) {\n x0 = x0 + size / 2;\n y0 = y0 + (size / 2) * Math.tan(rotation);\n x1 = x1 - size / 2;\n y1 = y1 - (size / 2) * Math.tan(rotation);\n } else if (positiveRotation > 1.25 * Math.PI && positiveRotation <= 1.75 * Math.PI) {\n y0 = y0 + size / 2;\n x0 = x0 + size / 2 / Math.tan(rotation);\n y1 = y1 - size / 2;\n x1 = x1 - size / 2 / Math.tan(rotation);\n }\n\n gradient = context.createLinearGradient(Math.round(x0), Math.round(y0), Math.round(x1), Math.round(y1));\n }\n\n return gradient;\n }\n}\n","import dotTypes from \"../../../constants/dotTypes\";\nimport { DotType, GetNeighbor, DrawArgs, BasicFigureDrawArgs, RotateFigureArgs } from \"../../../types\";\n\nexport default class QRDot {\n _element?: SVGElement;\n _svg: SVGElement;\n _type: DotType;\n\n constructor({ svg, type }: { svg: SVGElement; type: DotType }) {\n this._svg = svg;\n this._type = type;\n }\n\n draw(x: number, y: number, size: number, getNeighbor: GetNeighbor): void {\n const type = this._type;\n let drawFunction;\n\n switch (type) {\n case dotTypes.dots:\n drawFunction = this._drawDot;\n break;\n case dotTypes.classy:\n drawFunction = this._drawClassy;\n break;\n case dotTypes.classyRounded:\n drawFunction = this._drawClassyRounded;\n break;\n case dotTypes.rounded:\n drawFunction = this._drawRounded;\n break;\n case dotTypes.extraRounded:\n drawFunction = this._drawExtraRounded;\n break;\n case dotTypes.square:\n default:\n drawFunction = this._drawSquare;\n }\n\n drawFunction.call(this, { x, y, size, getNeighbor });\n }\n\n _rotateFigure({ x, y, size, rotation = 0, draw }: RotateFigureArgs): void {\n const cx = x + size / 2;\n const cy = y + size / 2;\n\n draw();\n this._element?.setAttribute(\"transform\", `rotate(${(180 * rotation) / Math.PI},${cx},${cy})`);\n }\n\n _basicDot(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"circle\");\n this._element.setAttribute(\"cx\", String(x + size / 2));\n this._element.setAttribute(\"cy\", String(y + size / 2));\n this._element.setAttribute(\"r\", String(size / 2));\n }\n });\n }\n\n _basicSquare(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"rect\");\n this._element.setAttribute(\"x\", String(x));\n this._element.setAttribute(\"y\", String(y));\n this._element.setAttribute(\"width\", String(size));\n this._element.setAttribute(\"height\", String(size));\n }\n });\n }\n\n //if rotation === 0 - right side is rounded\n _basicSideRounded(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n this._element.setAttribute(\n \"d\",\n `M ${x} ${y}` + //go to top left position\n `v ${size}` + //draw line to left bottom corner\n `h ${size / 2}` + //draw line to left bottom corner + half of size right\n `a ${size / 2} ${size / 2}, 0, 0, 0, 0 ${-size}` // draw rounded corner\n );\n }\n });\n }\n\n //if rotation === 0 - top right corner is rounded\n _basicCornerRounded(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n this._element.setAttribute(\n \"d\",\n `M ${x} ${y}` + //go to top left position\n `v ${size}` + //draw line to left bottom corner\n `h ${size}` + //draw line to right bottom corner\n `v ${-size / 2}` + //draw line to right bottom corner + half of size top\n `a ${size / 2} ${size / 2}, 0, 0, 0, ${-size / 2} ${-size / 2}` // draw rounded corner\n );\n }\n });\n }\n\n //if rotation === 0 - top right corner is rounded\n _basicCornerExtraRounded(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n this._element.setAttribute(\n \"d\",\n `M ${x} ${y}` + //go to top left position\n `v ${size}` + //draw line to left bottom corner\n `h ${size}` + //draw line to right bottom corner\n `a ${size} ${size}, 0, 0, 0, ${-size} ${-size}` // draw rounded top right corner\n );\n }\n });\n }\n\n //if rotation === 0 - left bottom and right top corners are rounded\n _basicCornersRounded(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n this._element.setAttribute(\n \"d\",\n `M ${x} ${y}` + //go to left top position\n `v ${size / 2}` + //draw line to left top corner + half of size bottom\n `a ${size / 2} ${size / 2}, 0, 0, 0, ${size / 2} ${size / 2}` + // draw rounded left bottom corner\n `h ${size / 2}` + //draw line to right bottom corner\n `v ${-size / 2}` + //draw line to right bottom corner + half of size top\n `a ${size / 2} ${size / 2}, 0, 0, 0, ${-size / 2} ${-size / 2}` // draw rounded right top corner\n );\n }\n });\n }\n\n _drawDot({ x, y, size }: DrawArgs): void {\n this._basicDot({ x, y, size, rotation: 0 });\n }\n\n _drawSquare({ x, y, size }: DrawArgs): void {\n this._basicSquare({ x, y, size, rotation: 0 });\n }\n\n _drawRounded({ x, y, size, getNeighbor }: DrawArgs): void {\n const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\n const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\n const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\n const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\n\n const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\n\n if (neighborsCount === 0) {\n this._basicDot({ x, y, size, rotation: 0 });\n return;\n }\n\n if (neighborsCount > 2 || (leftNeighbor && rightNeighbor) || (topNeighbor && bottomNeighbor)) {\n this._basicSquare({ x, y, size, rotation: 0 });\n return;\n }\n\n if (neighborsCount === 2) {\n let rotation = 0;\n\n if (leftNeighbor && topNeighbor) {\n rotation = Math.PI / 2;\n } else if (topNeighbor && rightNeighbor) {\n rotation = Math.PI;\n } else if (rightNeighbor && bottomNeighbor) {\n rotation = -Math.PI / 2;\n }\n\n this._basicCornerRounded({ x, y, size, rotation });\n return;\n }\n\n if (neighborsCount === 1) {\n let rotation = 0;\n\n if (topNeighbor) {\n rotation = Math.PI / 2;\n } else if (rightNeighbor) {\n rotation = Math.PI;\n } else if (bottomNeighbor) {\n rotation = -Math.PI / 2;\n }\n\n this._basicSideRounded({ x, y, size, rotation });\n return;\n }\n }\n\n _drawExtraRounded({ x, y, size, getNeighbor }: DrawArgs): void {\n const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\n const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\n const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\n const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\n\n const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\n\n if (neighborsCount === 0) {\n this._basicDot({ x, y, size, rotation: 0 });\n return;\n }\n\n if (neighborsCount > 2 || (leftNeighbor && rightNeighbor) || (topNeighbor && bottomNeighbor)) {\n this._basicSquare({ x, y, size, rotation: 0 });\n return;\n }\n\n if (neighborsCount === 2) {\n let rotation = 0;\n\n if (leftNeighbor && topNeighbor) {\n rotation = Math.PI / 2;\n } else if (topNeighbor && rightNeighbor) {\n rotation = Math.PI;\n } else if (rightNeighbor && bottomNeighbor) {\n rotation = -Math.PI / 2;\n }\n\n this._basicCornerExtraRounded({ x, y, size, rotation });\n return;\n }\n\n if (neighborsCount === 1) {\n let rotation = 0;\n\n if (topNeighbor) {\n rotation = Math.PI / 2;\n } else if (rightNeighbor) {\n rotation = Math.PI;\n } else if (bottomNeighbor) {\n rotation = -Math.PI / 2;\n }\n\n this._basicSideRounded({ x, y, size, rotation });\n return;\n }\n }\n\n _drawClassy({ x, y, size, getNeighbor }: DrawArgs): void {\n const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\n const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\n const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\n const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\n\n const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\n\n if (neighborsCount === 0) {\n this._basicCornersRounded({ x, y, size, rotation: Math.PI / 2 });\n return;\n }\n\n if (!leftNeighbor && !topNeighbor) {\n this._basicCornerRounded({ x, y, size, rotation: -Math.PI / 2 });\n return;\n }\n\n if (!rightNeighbor && !bottomNeighbor) {\n this._basicCornerRounded({ x, y, size, rotation: Math.PI / 2 });\n return;\n }\n\n this._basicSquare({ x, y, size, rotation: 0 });\n }\n\n _drawClassyRounded({ x, y, size, getNeighbor }: DrawArgs): void {\n const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\n const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\n const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\n const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\n\n const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\n\n if (neighborsCount === 0) {\n this._basicCornersRounded({ x, y, size, rotation: Math.PI / 2 });\n return;\n }\n\n if (!leftNeighbor && !topNeighbor) {\n this._basicCornerExtraRounded({ x, y, size, rotation: -Math.PI / 2 });\n return;\n }\n\n if (!rightNeighbor && !bottomNeighbor) {\n this._basicCornerExtraRounded({ x, y, size, rotation: Math.PI / 2 });\n return;\n }\n\n this._basicSquare({ x, y, size, rotation: 0 });\n }\n}\n","import cornerSquareTypes from \"../../../constants/cornerSquareTypes\";\nimport { CornerSquareType, DrawArgs, BasicFigureDrawArgs, RotateFigureArgs } from \"../../../types\";\n\nexport default class QRCornerSquare {\n _element?: SVGElement;\n _svg: SVGElement;\n _type: CornerSquareType;\n\n constructor({ svg, type }: { svg: SVGElement; type: CornerSquareType }) {\n this._svg = svg;\n this._type = type;\n }\n\n draw(x: number, y: number, size: number, rotation: number): void {\n const type = this._type;\n let drawFunction;\n\n switch (type) {\n case cornerSquareTypes.square:\n drawFunction = this._drawSquare;\n break;\n case cornerSquareTypes.extraRounded:\n drawFunction = this._drawExtraRounded;\n break;\n case cornerSquareTypes.dot:\n default:\n drawFunction = this._drawDot;\n }\n\n drawFunction.call(this, { x, y, size, rotation });\n }\n\n _rotateFigure({ x, y, size, rotation = 0, draw }: RotateFigureArgs): void {\n const cx = x + size / 2;\n const cy = y + size / 2;\n\n draw();\n this._element?.setAttribute(\"transform\", `rotate(${(180 * rotation) / Math.PI},${cx},${cy})`);\n }\n\n _basicDot(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n const dotSize = size / 7;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n this._element.setAttribute(\"clip-rule\", \"evenodd\");\n this._element.setAttribute(\n \"d\",\n `M ${x + size / 2} ${y}` + // M cx, y // Move to top of ring\n `a ${size / 2} ${size / 2} 0 1 0 0.1 0` + // a outerRadius, outerRadius, 0, 1, 0, 1, 0 // Draw outer arc, but don't close it\n `z` + // Z // Close the outer shape\n `m 0 ${dotSize}` + // m -1 outerRadius-innerRadius // Move to top point of inner radius\n `a ${size / 2 - dotSize} ${size / 2 - dotSize} 0 1 1 -0.1 0` + // a innerRadius, innerRadius, 0, 1, 1, -1, 0 // Draw inner arc, but don't close it\n `Z` // Z // Close the inner ring. Actually will still work without, but inner ring will have one unit missing in stroke\n );\n }\n });\n }\n\n _basicSquare(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n const dotSize = size / 7;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n this._element.setAttribute(\"clip-rule\", \"evenodd\");\n this._element.setAttribute(\n \"d\",\n `M ${x} ${y}` +\n `v ${size}` +\n `h ${size}` +\n `v ${-size}` +\n `z` +\n `M ${x + dotSize} ${y + dotSize}` +\n `h ${size - 2 * dotSize}` +\n `v ${size - 2 * dotSize}` +\n `h ${-size + 2 * dotSize}` +\n `z`\n );\n }\n });\n }\n\n _basicExtraRounded(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n const dotSize = size / 7;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n this._element.setAttribute(\"clip-rule\", \"evenodd\");\n this._element.setAttribute(\n \"d\",\n `M ${x} ${y + 2.5 * dotSize}` +\n `v ${2 * dotSize}` +\n `a ${2.5 * dotSize} ${2.5 * dotSize}, 0, 0, 0, ${dotSize * 2.5} ${dotSize * 2.5}` +\n `h ${2 * dotSize}` +\n `a ${2.5 * dotSize} ${2.5 * dotSize}, 0, 0, 0, ${dotSize * 2.5} ${-dotSize * 2.5}` +\n `v ${-2 * dotSize}` +\n `a ${2.5 * dotSize} ${2.5 * dotSize}, 0, 0, 0, ${-dotSize * 2.5} ${-dotSize * 2.5}` +\n `h ${-2 * dotSize}` +\n `a ${2.5 * dotSize} ${2.5 * dotSize}, 0, 0, 0, ${-dotSize * 2.5} ${dotSize * 2.5}` +\n `M ${x + 2.5 * dotSize} ${y + dotSize}` +\n `h ${2 * dotSize}` +\n `a ${1.5 * dotSize} ${1.5 * dotSize}, 0, 0, 1, ${dotSize * 1.5} ${dotSize * 1.5}` +\n `v ${2 * dotSize}` +\n `a ${1.5 * dotSize} ${1.5 * dotSize}, 0, 0, 1, ${-dotSize * 1.5} ${dotSize * 1.5}` +\n `h ${-2 * dotSize}` +\n `a ${1.5 * dotSize} ${1.5 * dotSize}, 0, 0, 1, ${-dotSize * 1.5} ${-dotSize * 1.5}` +\n `v ${-2 * dotSize}` +\n `a ${1.5 * dotSize} ${1.5 * dotSize}, 0, 0, 1, ${dotSize * 1.5} ${-dotSize * 1.5}`\n );\n }\n });\n }\n\n _drawDot({ x, y, size, rotation }: DrawArgs): void {\n this._basicDot({ x, y, size, rotation });\n }\n\n _drawSquare({ x, y, size, rotation }: DrawArgs): void {\n this._basicSquare({ x, y, size, rotation });\n }\n\n _drawExtraRounded({ x, y, size, rotation }: DrawArgs): void {\n this._basicExtraRounded({ x, y, size, rotation });\n }\n}\n","import cornerDotTypes from \"../../../constants/cornerDotTypes\";\nimport { CornerDotType, RotateFigureArgs, BasicFigureDrawArgs, DrawArgs } from \"../../../types\";\n\nexport default class QRCornerDot {\n _element?: SVGElement;\n _svg: SVGElement;\n _type: CornerDotType;\n\n constructor({ svg, type }: { svg: SVGElement; type: CornerDotType }) {\n this._svg = svg;\n this._type = type;\n }\n\n draw(x: number, y: number, size: number, rotation: number): void {\n const type = this._type;\n let drawFunction;\n\n switch (type) {\n case cornerDotTypes.square:\n drawFunction = this._drawSquare;\n break;\n case cornerDotTypes.dot:\n default:\n drawFunction = this._drawDot;\n }\n\n drawFunction.call(this, { x, y, size, rotation });\n }\n\n _rotateFigure({ x, y, size, rotation = 0, draw }: RotateFigureArgs): void {\n const cx = x + size / 2;\n const cy = y + size / 2;\n\n draw();\n this._element?.setAttribute(\"transform\", `rotate(${(180 * rotation) / Math.PI},${cx},${cy})`);\n }\n\n _basicDot(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"circle\");\n this._element.setAttribute(\"cx\", String(x + size / 2));\n this._element.setAttribute(\"cy\", String(y + size / 2));\n this._element.setAttribute(\"r\", String(size / 2));\n }\n });\n }\n\n _basicSquare(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"rect\");\n this._element.setAttribute(\"x\", String(x));\n this._element.setAttribute(\"y\", String(y));\n this._element.setAttribute(\"width\", String(size));\n this._element.setAttribute(\"height\", String(size));\n }\n });\n }\n\n _drawDot({ x, y, size, rotation }: DrawArgs): void {\n this._basicDot({ x, y, size, rotation });\n }\n\n _drawSquare({ x, y, size, rotation }: DrawArgs): void {\n this._basicSquare({ x, y, size, rotation });\n }\n}\n","import calculateImageSize from \"../tools/calculateImageSize\";\nimport errorCorrectionPercents from \"../constants/errorCorrectionPercents\";\nimport QRDot from \"../figures/dot/svg/QRDot\";\nimport QRCornerSquare from \"../figures/cornerSquare/svg/QRCornerSquare\";\nimport QRCornerDot from \"../figures/cornerDot/svg/QRCornerDot\";\nimport { RequiredOptions } from \"./QROptions\";\nimport gradientTypes from \"../constants/gradientTypes\";\nimport { QRCode, FilterFunction, Gradient } from \"../types\";\n\nconst squareMask = [\n [1, 1, 1, 1, 1, 1, 1],\n [1, 0, 0, 0, 0, 0, 1],\n [1, 0, 0, 0, 0, 0, 1],\n [1, 0, 0, 0, 0, 0, 1],\n [1, 0, 0, 0, 0, 0, 1],\n [1, 0, 0, 0, 0, 0, 1],\n [1, 1, 1, 1, 1, 1, 1]\n];\n\nconst dotMask = [\n [0, 0, 0, 0, 0, 0, 0],\n [0, 0, 0, 0, 0, 0, 0],\n [0, 0, 1, 1, 1, 0, 0],\n [0, 0, 1, 1, 1, 0, 0],\n [0, 0, 1, 1, 1, 0, 0],\n [0, 0, 0, 0, 0, 0, 0],\n [0, 0, 0, 0, 0, 0, 0]\n];\n\nexport default class QRSVG {\n _element: SVGElement;\n _style: SVGStyleElement;\n _defs: SVGElement;\n _dotsClipPath?: SVGElement;\n _cornersSquareClipPath?: SVGElement;\n _cornersDotClipPath?: SVGElement;\n _dots?: SVGElement;\n _cornerSquares?: SVGElement;\n _corners?: SVGElement;\n _cornerDots?: SVGElement;\n _options: RequiredOptions;\n _qr?: QRCode;\n _image?: HTMLImageElement;\n\n //TODO don't pass all options to this class\n constructor(options: RequiredOptions) {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\");\n this._element.setAttribute(\"width\", String(options.width));\n this._element.setAttribute(\"height\", String(options.height));\n this._defs = document.createElementNS(\"http://www.w3.org/2000/svg\", \"defs\");\n this._style = document.createElementNS(\"http://www.w3.org/2000/svg\", \"style\");\n\n this._options = options;\n }\n\n get width(): number {\n return this._options.width;\n }\n\n get height(): number {\n return this._options.height;\n }\n\n getElement(): SVGElement {\n return this._element;\n }\n\n clear(): void {\n const oldElement = this._element;\n this._element = oldElement.cloneNode(false) as SVGElement;\n oldElement?.parentNode?.replaceChild(this._element, oldElement);\n this._defs = document.createElementNS(\"http://www.w3.org/2000/svg\", \"defs\");\n this._style = document.createElementNS(\"http://www.w3.org/2000/svg\", \"style\");\n this._element.appendChild(this._style);\n this._element.appendChild(this._defs);\n }\n\n async drawQR(qr: QRCode): Promise {\n const count = qr.getModuleCount();\n const minSize = Math.min(this._options.width, this._options.height) - this._options.margin * 2;\n const dotSize = Math.floor(minSize / count);\n let drawImageSize = {\n hideXDots: 0,\n hideYDots: 0,\n width: 0,\n height: 0\n };\n\n this._qr = qr;\n\n if (this._options.image) {\n //We need it to get image size\n await this.loadImage();\n if (!this._image) return;\n const { imageOptions, qrOptions } = this._options;\n const coverLevel = imageOptions.imageSize * errorCorrectionPercents[qrOptions.errorCorrectionLevel];\n const maxHiddenDots = Math.floor(coverLevel * count * count);\n\n drawImageSize = calculateImageSize({\n originalWidth: this._image.width,\n originalHeight: this._image.height,\n maxHiddenDots,\n maxHiddenAxisDots: count - 14,\n dotSize\n });\n }\n\n this._element.appendChild(this._style);\n this._element.appendChild(this._defs);\n\n this.clear();\n this.drawBackground();\n this.drawDots((i: number, j: number): boolean => {\n if (this._options.imageOptions.hideBackgroundDots) {\n if (\n i >= (count - drawImageSize.hideXDots) / 2 &&\n i < (count + drawImageSize.hideXDots) / 2 &&\n j >= (count - drawImageSize.hideYDots) / 2 &&\n j < (count + drawImageSize.hideYDots) / 2\n ) {\n return false;\n }\n }\n\n if (squareMask[i]?.[j] || squareMask[i - count + 7]?.[j] || squareMask[i]?.[j - count + 7]) {\n return false;\n }\n\n if (dotMask[i]?.[j] || dotMask[i - count + 7]?.[j] || dotMask[i]?.[j - count + 7]) {\n return false;\n }\n\n return true;\n });\n this.drawCorners();\n\n if (this._options.image) {\n this.drawImage({ width: drawImageSize.width, height: drawImageSize.height, count, dotSize });\n }\n }\n\n drawBackground(): void {\n const element = this._element;\n const options = this._options;\n\n if (element) {\n const gradientOptions = options.backgroundOptions?.gradient;\n const color = options.backgroundOptions?.color;\n\n if (gradientOptions) {\n this._createColor({\n options: gradientOptions,\n color: color,\n additionalRotation: 0,\n x: 0,\n y: 0,\n height: options.height,\n width: options.width,\n name: \"background-color\"\n });\n } else if (options.backgroundOptions?.color) {\n this._createStyle({\n color: color,\n name: \"background-color\"\n });\n }\n }\n }\n\n drawDots(filter?: FilterFunction): void {\n if (!this._qr) {\n throw \"QR code is not defined\";\n }\n\n const options = this._options;\n const count = this._qr.getModuleCount();\n\n if (count > options.width || count > options.height) {\n throw \"The canvas is too small.\";\n }\n\n const minSize = Math.min(options.width, options.height) - options.margin * 2;\n const dotSize = Math.floor(minSize / count);\n const xBeginning = Math.floor((options.width - count * dotSize) / 2);\n const yBeginning = Math.floor((options.height - count * dotSize) / 2);\n const dot = new QRDot({ svg: this._element, type: options.dotsOptions.type });\n\n if (options.dotsOptions?.gradient) {\n this._dotsClipPath = document.createElementNS(\"http://www.w3.org/2000/svg\", \"clipPath\");\n this._dotsClipPath.setAttribute(\"id\", \"clip-path-dot-color\");\n this._defs.appendChild(this._dotsClipPath);\n this._createColor({\n options: options.dotsOptions?.gradient,\n color: options.dotsOptions.color,\n additionalRotation: 0,\n x: xBeginning,\n y: yBeginning,\n height: count * dotSize,\n width: count * dotSize,\n name: \"dot-color\"\n });\n } else if (options.dotsOptions.color) {\n this._dots = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n this._dots.setAttribute(\"class\", \"dot-color\");\n this._element.appendChild(this._dots);\n this._createStyle({\n color: options.dotsOptions.color,\n name: \"dot-color\"\n });\n }\n\n for (let i = 0; i < count; i++) {\n for (let j = 0; j < count; j++) {\n if (filter && !filter(i, j)) {\n continue;\n }\n if (!this._qr?.isDark(i, j)) {\n continue;\n }\n\n dot.draw(\n yBeginning + j * dotSize,\n xBeginning + i * dotSize,\n dotSize,\n (xOffset: number, yOffset: number): boolean => {\n if (i + xOffset < 0 || j + yOffset < 0 || i + xOffset >= count || j + yOffset >= count) return false;\n if (filter && !filter(i + xOffset, j + yOffset)) return false;\n return !!this._qr && this._qr.isDark(i + xOffset, j + yOffset);\n }\n );\n\n if (dot._element && this._dotsClipPath) {\n this._dotsClipPath.appendChild(dot._element);\n } else if (dot._element && this._dots) {\n this._dots.appendChild(dot._element);\n }\n }\n }\n }\n\n drawCorners(): void {\n if (!this._qr) {\n throw \"QR code is not defined\";\n }\n\n const element = this._element;\n const options = this._options;\n\n if (!element) {\n throw \"Element code is not defined\";\n }\n\n const count = this._qr.getModuleCount();\n const minSize = Math.min(options.width, options.height) - options.margin * 2;\n const dotSize = Math.floor(minSize / count);\n const cornersSquareSize = dotSize * 7;\n const cornersDotSize = dotSize * 3;\n const xBeginning = Math.floor((options.width - count * dotSize) / 2);\n const yBeginning = Math.floor((options.height - count * dotSize) / 2);\n\n [\n [0, 0, 0],\n [1, 0, Math.PI / 2],\n [0, 1, -Math.PI / 2]\n ].forEach(([column, row, rotation]) => {\n const x = xBeginning + column * dotSize * (count - 7);\n const y = yBeginning + row * dotSize * (count - 7);\n let cornersSquareClipPath = this._dotsClipPath;\n let cornersDotClipPath = this._dotsClipPath;\n\n if (options.cornersSquareOptions?.gradient) {\n cornersSquareClipPath = document.createElementNS(\"http://www.w3.org/2000/svg\", \"clipPath\");\n cornersSquareClipPath.setAttribute(\"id\", `clip-path-corners-square-color-${column}-${row}`);\n this._defs.appendChild(cornersSquareClipPath);\n this._cornersSquareClipPath = this._cornersDotClipPath = cornersDotClipPath = cornersSquareClipPath;\n\n this._createColor({\n options: options.cornersSquareOptions?.gradient,\n color: options.cornersSquareOptions?.color,\n additionalRotation: rotation,\n x,\n y,\n height: cornersSquareSize,\n width: cornersSquareSize,\n name: `corners-square-color-${column}-${row}`\n });\n } else {\n this._cornerSquares = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n this._cornerSquares.setAttribute(\"class\", `corners-square-color-${column}-${row}`);\n this._element.appendChild(this._cornerSquares);\n this._createStyle({\n color: options.cornersSquareOptions?.color,\n name: `corners-square-color-${column}-${row}`\n });\n }\n\n if (options.cornersSquareOptions?.type) {\n const cornersSquare = new QRCornerSquare({ svg: this._element, type: options.cornersSquareOptions.type });\n\n cornersSquare.draw(x, y, cornersSquareSize, rotation);\n\n if (options.cornersSquareOptions?.gradient && cornersSquare._element && cornersSquareClipPath) {\n cornersSquareClipPath.appendChild(cornersSquare._element);\n } else if (cornersSquare._element && this._cornerSquares) {\n this._cornerSquares.appendChild(cornersSquare._element);\n }\n } else {\n const dot = new QRDot({ svg: this._element, type: options.dotsOptions.type });\n\n for (let i = 0; i < squareMask.length; i++) {\n for (let j = 0; j < squareMask[i].length; j++) {\n if (!squareMask[i]?.[j]) {\n continue;\n }\n\n dot.draw(\n x + i * dotSize,\n y + j * dotSize,\n dotSize,\n (xOffset: number, yOffset: number): boolean => !!squareMask[i + xOffset]?.[j + yOffset]\n );\n\n if (dot._element && this._cornersSquareClipPath) {\n this._cornersSquareClipPath.appendChild(dot._element);\n } else if (dot._element && this._cornerSquares) {\n this._cornerSquares.appendChild(dot._element);\n }\n }\n }\n }\n\n if (options.cornersDotOptions?.gradient) {\n cornersDotClipPath = document.createElementNS(\"http://www.w3.org/2000/svg\", \"clipPath\");\n cornersDotClipPath.setAttribute(\"id\", `clip-path-corners-dot-color-${column}-${row}`);\n this._defs.appendChild(cornersDotClipPath);\n this._cornersDotClipPath = cornersDotClipPath;\n\n this._createColor({\n options: options.cornersDotOptions?.gradient,\n color: options.cornersDotOptions?.color,\n additionalRotation: rotation,\n x: x + dotSize * 2,\n y: y + dotSize * 2,\n height: cornersDotSize,\n width: cornersDotSize,\n name: `corners-dot-color-${column}-${row}`\n });\n } else {\n this._cornerDots = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n this._cornerDots.setAttribute(\"class\", `corners-dot-color-${column}-${row}`);\n this._element.appendChild(this._cornerDots);\n this._createStyle({\n color: options.cornersDotOptions?.color,\n name: `corners-dot-color-${column}-${row}`\n });\n }\n\n if (options.cornersDotOptions?.type) {\n const cornersDot = new QRCornerDot({ svg: this._element, type: options.cornersDotOptions.type });\n\n cornersDot.draw(x + dotSize * 2, y + dotSize * 2, cornersDotSize, rotation);\n\n if (options.cornersDotOptions?.gradient && cornersDot._element && cornersDotClipPath) {\n cornersDotClipPath.appendChild(cornersDot._element);\n } else if (cornersDot._element && this._cornerDots) {\n this._cornerDots.appendChild(cornersDot._element);\n }\n } else {\n const dot = new QRDot({ svg: this._element, type: options.dotsOptions.type });\n\n for (let i = 0; i < dotMask.length; i++) {\n for (let j = 0; j < dotMask[i].length; j++) {\n if (!dotMask[i]?.[j]) {\n continue;\n }\n\n dot.draw(\n x + i * dotSize,\n y + j * dotSize,\n dotSize,\n (xOffset: number, yOffset: number): boolean => !!dotMask[i + xOffset]?.[j + yOffset]\n );\n\n if (dot._element && this._cornersDotClipPath) {\n this._cornersDotClipPath.appendChild(dot._element);\n } else if (dot._element && this._cornerDots) {\n this._cornerDots.appendChild(dot._element);\n }\n }\n }\n }\n });\n }\n\n loadImage(): Promise {\n return new Promise((resolve, reject) => {\n const options = this._options;\n const image = new Image();\n\n if (!options.image) {\n return reject(\"Image is not defined\");\n }\n\n if (typeof options.imageOptions.crossOrigin === \"string\") {\n image.crossOrigin = options.imageOptions.crossOrigin;\n }\n\n this._image = image;\n image.onload = (): void => {\n resolve();\n };\n image.src = options.image;\n });\n }\n\n drawImage({\n width,\n height,\n count,\n dotSize\n }: {\n width: number;\n height: number;\n count: number;\n dotSize: number;\n }): void {\n const options = this._options;\n const xBeginning = Math.floor((options.width - count * dotSize) / 2);\n const yBeginning = Math.floor((options.height - count * dotSize) / 2);\n const dx = xBeginning + options.imageOptions.margin + (count * dotSize - width) / 2;\n const dy = yBeginning + options.imageOptions.margin + (count * dotSize - height) / 2;\n const dw = width - options.imageOptions.margin * 2;\n const dh = height - options.imageOptions.margin * 2;\n\n const image = document.createElementNS(\"http://www.w3.org/2000/svg\", \"image\");\n image.setAttribute(\"href\", options.image || \"\");\n image.setAttribute(\"x\", String(dx));\n image.setAttribute(\"y\", String(dy));\n image.setAttribute(\"width\", `${dw}px`);\n image.setAttribute(\"height\", `${dh}px`);\n\n this._element.appendChild(image);\n }\n\n _createColor({\n options,\n color,\n additionalRotation,\n x,\n y,\n height,\n width,\n name\n }: {\n options?: Gradient;\n color?: string;\n additionalRotation: number;\n x: number;\n y: number;\n height: number;\n width: number;\n name: string;\n }): void {\n const size = width > height ? width : height;\n const rect = document.createElementNS(\"http://www.w3.org/2000/svg\", \"rect\");\n rect.setAttribute(\"x\", String(x));\n rect.setAttribute(\"y\", String(y));\n rect.setAttribute(\"height\", String(height));\n rect.setAttribute(\"width\", String(width));\n rect.setAttribute(\"clip-path\", `url('#clip-path-${name}')`);\n\n if (options) {\n let gradient: SVGElement;\n if (options.type === gradientTypes.radial) {\n gradient = document.createElementNS(\"http://www.w3.org/2000/svg\", \"radialGradient\");\n gradient.setAttribute(\"id\", name);\n gradient.setAttribute(\"gradientUnits\", \"userSpaceOnUse\");\n gradient.setAttribute(\"fx\", String(x + width / 2));\n gradient.setAttribute(\"fy\", String(y + height / 2));\n gradient.setAttribute(\"cx\", String(x + width / 2));\n gradient.setAttribute(\"cy\", String(y + height / 2));\n gradient.setAttribute(\"r\", String(size / 2));\n } else {\n const rotation = ((options.rotation || 0) + additionalRotation) % (2 * Math.PI);\n const positiveRotation = (rotation + 2 * Math.PI) % (2 * Math.PI);\n let x0 = x + width / 2;\n let y0 = y + height / 2;\n let x1 = x + width / 2;\n let y1 = y + height / 2;\n\n if (\n (positiveRotation >= 0 && positiveRotation <= 0.25 * Math.PI) ||\n (positiveRotation > 1.75 * Math.PI && positiveRotation <= 2 * Math.PI)\n ) {\n x0 = x0 - width / 2;\n y0 = y0 - (height / 2) * Math.tan(rotation);\n x1 = x1 + width / 2;\n y1 = y1 + (height / 2) * Math.tan(rotation);\n } else if (positiveRotation > 0.25 * Math.PI && positiveRotation <= 0.75 * Math.PI) {\n y0 = y0 - height / 2;\n x0 = x0 - width / 2 / Math.tan(rotation);\n y1 = y1 + height / 2;\n x1 = x1 + width / 2 / Math.tan(rotation);\n } else if (positiveRotation > 0.75 * Math.PI && positiveRotation <= 1.25 * Math.PI) {\n x0 = x0 + width / 2;\n y0 = y0 + (height / 2) * Math.tan(rotation);\n x1 = x1 - width / 2;\n y1 = y1 - (height / 2) * Math.tan(rotation);\n } else if (positiveRotation > 1.25 * Math.PI && positiveRotation <= 1.75 * Math.PI) {\n y0 = y0 + height / 2;\n x0 = x0 + width / 2 / Math.tan(rotation);\n y1 = y1 - height / 2;\n x1 = x1 - width / 2 / Math.tan(rotation);\n }\n\n gradient = document.createElementNS(\"http://www.w3.org/2000/svg\", \"linearGradient\");\n gradient.setAttribute(\"id\", name);\n gradient.setAttribute(\"gradientUnits\", \"userSpaceOnUse\");\n gradient.setAttribute(\"x1\", String(Math.round(x0)));\n gradient.setAttribute(\"y1\", String(Math.round(y0)));\n gradient.setAttribute(\"x2\", String(Math.round(x1)));\n gradient.setAttribute(\"y2\", String(Math.round(y1)));\n }\n\n options.colorStops.forEach(({ offset, color }: { offset: number; color: string }) => {\n const stop = document.createElementNS(\"http://www.w3.org/2000/svg\", \"stop\");\n stop.setAttribute(\"offset\", `${100 * offset}%`);\n stop.setAttribute(\"stop-color\", color);\n gradient.appendChild(stop);\n });\n\n rect.setAttribute(\"fill\", `url('#${name}')`);\n this._defs.appendChild(gradient);\n } else if (color) {\n rect.setAttribute(\"fill\", color);\n }\n\n this._element.appendChild(rect);\n }\n\n _createStyle({ color, name }: { color?: string; name: string }): void {\n this._style.innerHTML += `.${name}{ fill: ${color}; }`;\n }\n}\n","import { DrawTypes } from \"../types\";\n\nexport default {\n canvas: \"canvas\",\n svg: \"svg\"\n} as DrawTypes;\n","import { TypeNumber } from \"../types\";\n\ninterface TypesMap {\n [key: number]: TypeNumber;\n}\n\nconst qrTypes: TypesMap = {};\n\nfor (let type = 0; type <= 40; type++) {\n qrTypes[type] = type as TypeNumber;\n}\n\n// 0 types is autodetect\n\n// types = {\n// 0: 0,\n// 1: 1,\n// ...\n// 40: 40\n// }\n\nexport default qrTypes;\n","import qrTypes from \"../constants/qrTypes\";\nimport drawTypes from \"../constants/drawTypes\";\nimport errorCorrectionLevels from \"../constants/errorCorrectionLevels\";\nimport { DotType, Options, TypeNumber, ErrorCorrectionLevel, Mode, DrawType, Gradient } from \"../types\";\n\nexport interface RequiredOptions extends Options {\n type: DrawType;\n width: number;\n height: number;\n margin: number;\n data: string;\n qrOptions: {\n typeNumber: TypeNumber;\n mode?: Mode;\n errorCorrectionLevel: ErrorCorrectionLevel;\n };\n imageOptions: {\n hideBackgroundDots: boolean;\n imageSize: number;\n crossOrigin?: string;\n margin: number;\n };\n dotsOptions: {\n type: DotType;\n color: string;\n gradient?: Gradient;\n };\n backgroundOptions: {\n color: string;\n gradient?: Gradient;\n };\n}\n\nconst defaultOptions: RequiredOptions = {\n type: drawTypes.canvas,\n width: 300,\n height: 300,\n data: \"\",\n margin: 0,\n qrOptions: {\n typeNumber: qrTypes[0],\n mode: undefined,\n errorCorrectionLevel: errorCorrectionLevels.Q\n },\n imageOptions: {\n hideBackgroundDots: true,\n imageSize: 0.4,\n crossOrigin: undefined,\n margin: 0\n },\n dotsOptions: {\n type: \"square\",\n color: \"#000\"\n },\n backgroundOptions: {\n color: \"#fff\"\n }\n};\n\nexport default defaultOptions;\n","import { ErrorCorrectionLevel } from \"../types\";\n\ninterface ErrorCorrectionLevels {\n [key: string]: ErrorCorrectionLevel;\n}\n\nexport default {\n L: \"L\",\n M: \"M\",\n Q: \"Q\",\n H: \"H\"\n} as ErrorCorrectionLevels;\n","import { RequiredOptions } from \"../core/QROptions\";\nimport { Gradient } from \"../types\";\n\nfunction sanitizeGradient(gradient: Gradient): Gradient {\n const newGradient = { ...gradient };\n\n if (!newGradient.colorStops || !newGradient.colorStops.length) {\n throw \"Field 'colorStops' is required in gradient\";\n }\n\n if (newGradient.rotation) {\n newGradient.rotation = Number(newGradient.rotation);\n } else {\n newGradient.rotation = 0;\n }\n\n newGradient.colorStops = newGradient.colorStops.map((colorStop: { offset: number; color: string }) => ({\n ...colorStop,\n offset: Number(colorStop.offset)\n }));\n\n return newGradient;\n}\n\nexport default function sanitizeOptions(options: RequiredOptions): RequiredOptions {\n const newOptions = { ...options };\n\n newOptions.width = Number(newOptions.width);\n newOptions.height = Number(newOptions.height);\n newOptions.margin = Number(newOptions.margin);\n newOptions.imageOptions = {\n ...newOptions.imageOptions,\n hideBackgroundDots: Boolean(newOptions.imageOptions.hideBackgroundDots),\n imageSize: Number(newOptions.imageOptions.imageSize),\n margin: Number(newOptions.imageOptions.margin)\n };\n\n if (newOptions.margin > Math.min(newOptions.width, newOptions.height)) {\n newOptions.margin = Math.min(newOptions.width, newOptions.height);\n }\n\n newOptions.dotsOptions = {\n ...newOptions.dotsOptions\n };\n if (newOptions.dotsOptions.gradient) {\n newOptions.dotsOptions.gradient = sanitizeGradient(newOptions.dotsOptions.gradient);\n }\n\n if (newOptions.cornersSquareOptions) {\n newOptions.cornersSquareOptions = {\n ...newOptions.cornersSquareOptions\n };\n if (newOptions.cornersSquareOptions.gradient) {\n newOptions.cornersSquareOptions.gradient = sanitizeGradient(newOptions.cornersSquareOptions.gradient);\n }\n }\n\n if (newOptions.cornersDotOptions) {\n newOptions.cornersDotOptions = {\n ...newOptions.cornersDotOptions\n };\n if (newOptions.cornersDotOptions.gradient) {\n newOptions.cornersDotOptions.gradient = sanitizeGradient(newOptions.cornersDotOptions.gradient);\n }\n }\n\n if (newOptions.backgroundOptions) {\n newOptions.backgroundOptions = {\n ...newOptions.backgroundOptions\n };\n if (newOptions.backgroundOptions.gradient) {\n newOptions.backgroundOptions.gradient = sanitizeGradient(newOptions.backgroundOptions.gradient);\n }\n }\n\n return newOptions;\n}\n","import QRCodeStyling from \"./core/QRCodeStyling\";\nimport dotTypes from \"./constants/dotTypes\";\nimport cornerDotTypes from \"./constants/cornerDotTypes\";\nimport cornerSquareTypes from \"./constants/cornerSquareTypes\";\nimport errorCorrectionLevels from \"./constants/errorCorrectionLevels\";\nimport errorCorrectionPercents from \"./constants/errorCorrectionPercents\";\nimport modes from \"./constants/modes\";\nimport qrTypes from \"./constants/qrTypes\";\nimport drawTypes from \"./constants/drawTypes\";\n\nexport * from \"./types\";\n\nexport {\n dotTypes,\n cornerDotTypes,\n cornerSquareTypes,\n errorCorrectionLevels,\n errorCorrectionPercents,\n modes,\n qrTypes,\n drawTypes\n};\n\nexport default QRCodeStyling;\n","import getMode from \"../tools/getMode\";\nimport mergeDeep from \"../tools/merge\";\nimport downloadURI from \"../tools/downloadURI\";\nimport QRCanvas from \"./QRCanvas\";\nimport QRSVG from \"./QRSVG\";\nimport drawTypes from \"../constants/drawTypes\";\n\nimport defaultOptions, { RequiredOptions } from \"./QROptions\";\nimport sanitizeOptions from \"../tools/sanitizeOptions\";\nimport { Extension, QRCode, Options, DownloadOptions } from \"../types\";\nimport qrcode from \"qrcode-generator\";\n\nexport default class QRCodeStyling {\n _options: RequiredOptions;\n _container?: HTMLElement;\n _canvas?: QRCanvas;\n _svg?: QRSVG;\n _qr?: QRCode;\n _canvasDrawingPromise?: Promise;\n _svgDrawingPromise?: Promise;\n\n constructor(options?: Partial) {\n this._options = options ? sanitizeOptions(mergeDeep(defaultOptions, options) as RequiredOptions) : defaultOptions;\n this.update();\n }\n\n static _clearContainer(container?: HTMLElement): void {\n if (container) {\n container.innerHTML = \"\";\n }\n }\n\n async _getQRStylingElement(extension: Extension = \"png\"): Promise {\n if (!this._qr) throw \"QR code is empty\";\n\n if (extension.toLowerCase() === \"svg\") {\n let promise, svg: QRSVG;\n\n if (this._svg && this._svgDrawingPromise) {\n svg = this._svg;\n promise = this._svgDrawingPromise;\n } else {\n svg = new QRSVG(this._options);\n promise = svg.drawQR(this._qr);\n }\n\n await promise;\n\n return svg;\n } else {\n let promise, canvas: QRCanvas;\n\n if (this._canvas && this._canvasDrawingPromise) {\n canvas = this._canvas;\n promise = this._canvasDrawingPromise;\n } else {\n canvas = new QRCanvas(this._options);\n promise = canvas.drawQR(this._qr);\n }\n\n await promise;\n\n return canvas;\n }\n }\n\n update(options?: Partial): void {\n QRCodeStyling._clearContainer(this._container);\n this._options = options ? sanitizeOptions(mergeDeep(this._options, options) as RequiredOptions) : this._options;\n\n if (!this._options.data) {\n return;\n }\n\n this._qr = qrcode(this._options.qrOptions.typeNumber, this._options.qrOptions.errorCorrectionLevel);\n this._qr.addData(this._options.data, this._options.qrOptions.mode || getMode(this._options.data));\n this._qr.make();\n\n if (this._options.type === drawTypes.canvas) {\n this._canvas = new QRCanvas(this._options);\n this._canvasDrawingPromise = this._canvas.drawQR(this._qr);\n this._svgDrawingPromise = undefined;\n this._svg = undefined;\n } else {\n this._svg = new QRSVG(this._options);\n this._svgDrawingPromise = this._svg.drawQR(this._qr);\n this._canvasDrawingPromise = undefined;\n this._canvas = undefined;\n }\n\n this.append(this._container);\n }\n\n append(container?: HTMLElement): void {\n if (!container) {\n return;\n }\n\n if (typeof container.appendChild !== \"function\") {\n throw \"Container should be a single DOM node\";\n }\n\n if (this._options.type === drawTypes.canvas) {\n if (this._canvas) {\n container.appendChild(this._canvas.getCanvas());\n }\n } else {\n if (this._svg) {\n container.appendChild(this._svg.getElement());\n }\n }\n\n this._container = container;\n }\n\n async getRawData(extension: Extension = \"png\"): Promise {\n if (!this._qr) throw \"QR code is empty\";\n const element = await this._getQRStylingElement(extension);\n\n if (extension.toLowerCase() === \"svg\") {\n const serializer = new XMLSerializer();\n const source = serializer.serializeToString(((element as unknown) as QRSVG).getElement());\n\n return new Blob(['\\r\\n' + source], { type: \"image/svg+xml\" });\n } else {\n return new Promise((resolve) =>\n ((element as unknown) as QRCanvas).getCanvas().toBlob(resolve, `image/${extension}`, 1)\n );\n }\n }\n\n async download(downloadOptions?: Partial | string): Promise {\n if (!this._qr) throw \"QR code is empty\";\n let extension = \"png\" as Extension;\n let name = \"qr\";\n\n //TODO remove deprecated code in the v2\n if (typeof downloadOptions === \"string\") {\n extension = downloadOptions as Extension;\n console.warn(\n \"Extension is deprecated as argument for 'download' method, please pass object { name: '...', extension: '...' } as argument\"\n );\n } else if (typeof downloadOptions === \"object\" && downloadOptions !== null) {\n if (downloadOptions.name) {\n name = downloadOptions.name;\n }\n if (downloadOptions.extension) {\n extension = downloadOptions.extension;\n }\n }\n\n const element = await this._getQRStylingElement(extension);\n\n if (extension.toLowerCase() === \"svg\") {\n const serializer = new XMLSerializer();\n let source = serializer.serializeToString(((element as unknown) as QRSVG).getElement());\n\n source = '\\r\\n' + source;\n const url = \"data:image/svg+xml;charset=utf-8,\" + encodeURIComponent(source);\n downloadURI(url, `${name}.svg`);\n } else {\n const url = ((element as unknown) as QRCanvas).getCanvas().toDataURL(`image/${extension}`);\n downloadURI(url, `${name}.${extension}`);\n }\n }\n}\n","import modes from \"../constants/modes\";\nimport { Mode } from \"../types\";\n\nexport default function getMode(data: string): Mode {\n switch (true) {\n case /^[0-9]*$/.test(data):\n return modes.numeric;\n case /^[0-9A-Z $%*+\\-./:]*$/.test(data):\n return modes.alphanumeric;\n default:\n return modes.byte;\n }\n}\n","import { Mode } from \"../types\";\n\ninterface Modes {\n [key: string]: Mode;\n}\n\nexport default {\n numeric: \"Numeric\",\n alphanumeric: \"Alphanumeric\",\n byte: \"Byte\",\n kanji: \"Kanji\"\n} as Modes;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tif(__webpack_module_cache__[moduleId]) {\n\t\treturn __webpack_module_cache__[moduleId].exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// module exports must be returned from runtime so entry inlining is disabled\n// startup\n// Load entry module and return exports\nreturn __webpack_require__(796);\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => module['default'] :\n\t\t() => module;\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop)"],"sourceRoot":""} \ No newline at end of file From 9ec6fcd7f6671fd02311860fb87e44b951fbdeca Mon Sep 17 00:00:00 2001 From: Henk van Maanen <36051232+HenkVanMaanen@users.noreply.github.com> Date: Thu, 28 Jul 2022 11:24:03 +0200 Subject: [PATCH 12/25] add default image anonymous option --- src/core/QROptions.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/QROptions.ts b/src/core/QROptions.ts index dca57f86..69fac09c 100644 --- a/src/core/QROptions.ts +++ b/src/core/QROptions.ts @@ -45,7 +45,7 @@ const defaultOptions: RequiredOptions = { imageOptions: { hideBackgroundDots: true, imageSize: 0.4, - crossOrigin: undefined, + crossOrigin: "anonymous", margin: 0 }, dotsOptions: { From 78070cf808e0b60bb2f6ac310083688f1c27cf99 Mon Sep 17 00:00:00 2001 From: Henk van Maanen <36051232+HenkVanMaanen@users.noreply.github.com> Date: Thu, 28 Jul 2022 11:24:29 +0200 Subject: [PATCH 13/25] add xlink for image tag and include image as base64 in svg --- src/core/QRSVG.ts | 42 ++++++++++++++++++++++++++++++++++++++---- src/index.html | 6 +++--- 2 files changed, 41 insertions(+), 7 deletions(-) diff --git a/src/core/QRSVG.ts b/src/core/QRSVG.ts index 1d32980c..dd572be6 100644 --- a/src/core/QRSVG.ts +++ b/src/core/QRSVG.ts @@ -47,6 +47,7 @@ export default class QRSVG { this._element = document.createElementNS("http://www.w3.org/2000/svg", "svg"); this._element.setAttribute("width", String(options.width)); this._element.setAttribute("height", String(options.height)); + this._element.setAttribute("xmlns:xlink", "http://www.w3.org/1999/xlink"); this._defs = document.createElementNS("http://www.w3.org/2000/svg", "defs"); this._style = document.createElementNS("http://www.w3.org/2000/svg", "style"); @@ -135,7 +136,7 @@ export default class QRSVG { this.drawCorners(); if (this._options.image) { - this.drawImage({ width: drawImageSize.width, height: drawImageSize.height, count, dotSize }); + await this.drawImage({ width: drawImageSize.width, height: drawImageSize.height, count, dotSize }); } } @@ -413,7 +414,7 @@ export default class QRSVG { }); } - drawImage({ + async drawImage({ width, height, count, @@ -423,7 +424,7 @@ export default class QRSVG { height: number; count: number; dotSize: number; - }): void { + }): Promise { const options = this._options; const xBeginning = Math.floor((options.width - count * dotSize) / 2); const yBeginning = Math.floor((options.height - count * dotSize) / 2); @@ -433,7 +434,11 @@ export default class QRSVG { const dh = height - options.imageOptions.margin * 2; const image = document.createElementNS("http://www.w3.org/2000/svg", "image"); - image.setAttribute("href", options.image || ""); + + const base64Image = await this._getBase64Image(options.image || ""); + + image.setAttribute("href", base64Image); + image.setAttribute("xlink:href", base64Image); image.setAttribute("x", String(dx)); image.setAttribute("y", String(dy)); image.setAttribute("width", `${dw}px`); @@ -442,6 +447,35 @@ export default class QRSVG { this._element.appendChild(image); } + async _getImageBlob(url: string): Promise { + const resp = await fetch(url); + return resp.blob(); + } + + // convert a blob to base64 + _blobToBase64(blob: Blob): Promise { + return new Promise((resolve) => { + const reader = new FileReader(); + reader.onload = function () { + const dataUrl = reader.result; + resolve(dataUrl as string); + }; + reader.readAsDataURL(blob); + }); + } + + async _getBase64Image(url: string): Promise { + if (url === "") { + return new Promise((resolve) => { + resolve(""); + }); + } + + const blob = await this._getImageBlob(url); + const base64 = await this._blobToBase64(blob); + return base64; + } + _createColor({ options, color, diff --git a/src/index.html b/src/index.html index 728dc023..f6b844a4 100644 --- a/src/index.html +++ b/src/index.html @@ -14,14 +14,14 @@ width: 500, height: 500, data: "https://google.com", - // image: "https://upload.wikimedia.org/wikipedia/commons/5/51/Facebook_f_logo_%282019%29.svg", + image: "https://upload.wikimedia.org/wikipedia/commons/5/51/Facebook_f_logo_%282019%29.svg", dotsOptions: { type: "square", - color: "black", + color: "#123ddd", }, cornersSquareOptions: { type: "square", - color: "black", + color: "#321ccc", }, imageOptions: { crossOrigin: "anonymous", From 66a77287fed232f16cfc17dee179f96765b17b43 Mon Sep 17 00:00:00 2001 From: Henk van Maanen <36051232+HenkVanMaanen@users.noreply.github.com> Date: Thu, 28 Jul 2022 11:24:38 +0200 Subject: [PATCH 14/25] build new updates --- lib/core/QRSVG.d.ts | 5 ++++- lib/qr-code-styling.js | 2 +- lib/qr-code-styling.js.map | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/lib/core/QRSVG.d.ts b/lib/core/QRSVG.d.ts index 2f43ffe5..4c89981f 100644 --- a/lib/core/QRSVG.d.ts +++ b/lib/core/QRSVG.d.ts @@ -29,7 +29,10 @@ export default class QRSVG { height: number; count: number; dotSize: number; - }): void; + }): Promise; + _getImageBlob(url: string): Promise; + _blobToBase64(blob: Blob): Promise; + _getBase64Image(url: string): Promise; _createColor({ options, color, additionalRotation, x, y, height, width, name }: { options?: Gradient; color?: string; diff --git a/lib/qr-code-styling.js b/lib/qr-code-styling.js index 95d3de13..1aea2ac7 100644 --- a/lib/qr-code-styling.js +++ b/lib/qr-code-styling.js @@ -1,2 +1,2 @@ -!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.QRCodeStyling=e():t.QRCodeStyling=e()}(self,(function(){return(()=>{var t={192:(t,e)=>{var r,o,n=function(){var t=function(t,e){var r=t,o=a[e],n=null,i=0,c=null,v=[],w={},_=function(t,e){n=function(t){for(var e=new Array(t),r=0;r=7&&M(t),null==c&&(c=P(r,o,v)),C(c,e)},m=function(t,e){for(var r=-1;r<=7;r+=1)if(!(t+r<=-1||i<=t+r))for(var o=-1;o<=7;o+=1)e+o<=-1||i<=e+o||(n[t+r][e+o]=0<=r&&r<=6&&(0==o||6==o)||0<=o&&o<=6&&(0==r||6==r)||2<=r&&r<=4&&2<=o&&o<=4)},b=function(){for(var t=8;t>o&1);n[Math.floor(o/3)][o%3+i-8-3]=a}for(o=0;o<18;o+=1)a=!t&&1==(e>>o&1),n[o%3+i-8-3][Math.floor(o/3)]=a},S=function(t,e){for(var r=o<<3|e,a=s.getBCHTypeInfo(r),c=0;c<15;c+=1){var u=!t&&1==(a>>c&1);c<6?n[c][8]=u:c<8?n[c+1][8]=u:n[i-15+c][8]=u}for(c=0;c<15;c+=1)u=!t&&1==(a>>c&1),c<8?n[8][i-c-1]=u:c<9?n[8][15-c-1+1]=u:n[8][15-c-1]=u;n[i-8][8]=!t},C=function(t,e){for(var r=-1,o=i-1,a=7,c=0,u=s.getMaskFunction(e),h=i-1;h>0;h-=2)for(6==h&&(h-=1);;){for(var d=0;d<2;d+=1)if(null==n[o][h-d]){var l=!1;c>>a&1)),u(o,h-d)&&(l=!l),n[o][h-d]=l,-1==(a-=1)&&(c+=1,a=7)}if((o+=r)<0||i<=o){o-=r,r=-r;break}}},P=function(t,e,r){for(var o=h.getRSBlocks(t,e),n=d(),i=0;i8*c)throw"code length overflow. ("+n.getLengthInBits()+">"+8*c+")";for(n.getLengthInBits()+4<=8*c&&n.put(0,4);n.getLengthInBits()%8!=0;)n.putBit(!1);for(;!(n.getLengthInBits()>=8*c||(n.put(236,8),n.getLengthInBits()>=8*c));)n.put(17,8);return function(t,e){for(var r=0,o=0,n=0,i=new Array(e.length),a=new Array(e.length),c=0;c=0?p.getAt(g):0}}var v=0;for(l=0;lo)&&(t=o,e=r)}return e}())},w.createTableTag=function(t,e){t=t||2;var r="";r+='
',r+="";for(var o=0;o";for(var n=0;n';r+=""}return(r+="")+"
"},w.createSvgTag=function(t,e,r,o){var n={};"object"==typeof arguments[0]&&(t=(n=arguments[0]).cellSize,e=n.margin,r=n.alt,o=n.title),t=t||2,e=void 0===e?4*t:e,(r="string"==typeof r?{text:r}:r||{}).text=r.text||null,r.id=r.text?r.id||"qrcode-description":null,(o="string"==typeof o?{text:o}:o||{}).text=o.text||null,o.id=o.text?o.id||"qrcode-title":null;var i,a,s,c,u=w.getModuleCount()*t+2*e,h="";for(c="l"+t+",0 0,"+t+" -"+t+",0 0,-"+t+"z ",h+=''+O(o.text)+"":"",h+=r.text?''+O(r.text)+"":"",h+='',h+='"},w.createDataURL=function(t,e){t=t||2,e=void 0===e?4*t:e;var r=w.getModuleCount()*t+2*e,o=e,n=r-e;return y(r,r,(function(e,r){if(o<=e&&e"};var O=function(t){for(var e="",r=0;r":e+=">";break;case"&":e+="&";break;case'"':e+=""";break;default:e+=o}}return e};return w.createASCII=function(t,e){if((t=t||1)<2)return function(t){t=void 0===t?2:t;var e,r,o,n,i,a=1*w.getModuleCount()+2*t,s=t,c=a-t,u={"██":"█","█ ":"▀"," █":"▄"," ":" "},h={"██":"▀","█ ":"▀"," █":" "," ":" "},d="";for(e=0;e=c?h[i]:u[i];d+="\n"}return a%2&&t>0?d.substring(0,d.length-a-1)+Array(a+1).join("▀"):d.substring(0,d.length-1)}(e);t-=1,e=void 0===e?2*t:e;var r,o,n,i,a=w.getModuleCount()*t+2*e,s=e,c=a-e,u=Array(t+1).join("██"),h=Array(t+1).join(" "),d="",l="";for(r=0;r>>8),e.push(255&a)):e.push(o)}}return e}};var e,r,o,n,i,a={L:1,M:0,Q:3,H:2},s=(e=[[],[6,18],[6,22],[6,26],[6,30],[6,34],[6,22,38],[6,24,42],[6,26,46],[6,28,50],[6,30,54],[6,32,58],[6,34,62],[6,26,46,66],[6,26,48,70],[6,26,50,74],[6,30,54,78],[6,30,56,82],[6,30,58,86],[6,34,62,90],[6,28,50,72,94],[6,26,50,74,98],[6,30,54,78,102],[6,28,54,80,106],[6,32,58,84,110],[6,30,58,86,114],[6,34,62,90,118],[6,26,50,74,98,122],[6,30,54,78,102,126],[6,26,52,78,104,130],[6,30,56,82,108,134],[6,34,60,86,112,138],[6,30,58,86,114,142],[6,34,62,90,118,146],[6,30,54,78,102,126,150],[6,24,50,76,102,128,154],[6,28,54,80,106,132,158],[6,32,58,84,110,136,162],[6,26,54,82,110,138,166],[6,30,58,86,114,142,170]],r=1335,o=7973,i=function(t){for(var e=0;0!=t;)e+=1,t>>>=1;return e},(n={}).getBCHTypeInfo=function(t){for(var e=t<<10;i(e)-i(r)>=0;)e^=r<=0;)e^=o<5&&(r+=3+i-5)}for(o=0;o=256;)e-=255;return t[e]}}}();function u(t,e){if(void 0===t.length)throw t.length+"/"+e;var r=function(){for(var r=0;r>>7-e%8&1)},put:function(t,e){for(var o=0;o>>e-o-1&1))},getLengthInBits:function(){return e},putBit:function(r){var o=Math.floor(e/8);t.length<=o&&t.push(0),r&&(t[o]|=128>>>e%8),e+=1}};return r},l=function(t){var e=t,r={getMode:function(){return 1},getLength:function(t){return e.length},write:function(t){for(var r=e,n=0;n+2>>8&255)+(255&n),t.put(n,13),r+=2}if(r>>8)},writeBytes:function(t,r,o){r=r||0,o=o||t.length;for(var n=0;n0&&(e+=","),e+=t[r];return e+"]"}};return e},w=function(t){var e=t,r=0,o=0,n=0,i={read:function(){for(;n<8;){if(r>=e.length){if(0==n)return-1;throw"unexpected end of file./"+n}var t=e.charAt(r);if(r+=1,"="==t)return n=0,-1;t.match(/^\s$/)||(o=o<<6|a(t.charCodeAt(0)),n+=6)}var i=o>>>n-8&255;return n-=8,i}},a=function(t){if(65<=t&&t<=90)return t-65;if(97<=t&&t<=122)return t-97+26;if(48<=t&&t<=57)return t-48+52;if(43==t)return 62;if(47==t)return 63;throw"c:"+t};return i},y=function(t,e,r){for(var o=function(t,e){var r=t,o=e,n=new Array(t*e),i={setPixel:function(t,e,o){n[e*r+t]=o},write:function(t){t.writeString("GIF87a"),t.writeShort(r),t.writeShort(o),t.writeByte(128),t.writeByte(0),t.writeByte(0),t.writeByte(0),t.writeByte(0),t.writeByte(0),t.writeByte(255),t.writeByte(255),t.writeByte(255),t.writeString(","),t.writeShort(0),t.writeShort(0),t.writeShort(r),t.writeShort(o),t.writeByte(0);var e=a(2);t.writeByte(2);for(var n=0;e.length-n>255;)t.writeByte(255),t.writeBytes(e,n,255),n+=255;t.writeByte(e.length-n),t.writeBytes(e,n,e.length-n),t.writeByte(0),t.writeString(";")}},a=function(t){for(var e=1<>>e!=0)throw"length over";for(;u+e>=8;)c.writeByte(255&(t<>>=8-u,h=0,u=0;h|=t<0&&c.writeByte(h)}});l.write(e,o);var f=0,p=String.fromCharCode(n[f]);for(f+=1;f=6;)i(t>>>e-6),e-=6},n.flush=function(){if(e>0&&(i(t<<6-e),t=0,e=0),r%3!=0)for(var n=3-r%3,a=0;a>6,128|63&o):o<55296||o>=57344?e.push(224|o>>12,128|o>>6&63,128|63&o):(r++,o=65536+((1023&o)<<10|1023&t.charCodeAt(r)),e.push(240|o>>18,128|o>>12&63,128|o>>6&63,128|63&o))}return e}(t)},void 0===(o="function"==typeof(r=function(){return n})?r.apply(e,[]):r)||(t.exports=o)},796:(t,e,r)=>{"use strict";r.d(e,{default:()=>W});var o=function(){return(o=Object.assign||function(t){for(var e,r=1,o=arguments.length;ro||n&&n2||a&&s||c&&u)this._basicSquare({x:e,y:r,size:o,context:n,rotation:0});else{if(2===h){var d=0;return a&&c?d=Math.PI/2:c&&s?d=Math.PI:s&&u&&(d=-Math.PI/2),void this._basicCornerRounded({x:e,y:r,size:o,context:n,rotation:d})}if(1===h)return d=0,c?d=Math.PI/2:s?d=Math.PI:u&&(d=-Math.PI/2),void this._basicSideRounded({x:e,y:r,size:o,context:n,rotation:d})}else this._basicDot({x:e,y:r,size:o,context:n,rotation:0})},t.prototype._drawExtraRounded=function(t){var e=t.x,r=t.y,o=t.size,n=t.context,i=t.getNeighbor,a=i?+i(-1,0):0,s=i?+i(1,0):0,c=i?+i(0,-1):0,u=i?+i(0,1):0,h=a+s+c+u;if(0!==h)if(h>2||a&&s||c&&u)this._basicSquare({x:e,y:r,size:o,context:n,rotation:0});else{if(2===h){var d=0;return a&&c?d=Math.PI/2:c&&s?d=Math.PI:s&&u&&(d=-Math.PI/2),void this._basicCornerExtraRounded({x:e,y:r,size:o,context:n,rotation:d})}if(1===h)return d=0,c?d=Math.PI/2:s?d=Math.PI:u&&(d=-Math.PI/2),void this._basicSideRounded({x:e,y:r,size:o,context:n,rotation:d})}else this._basicDot({x:e,y:r,size:o,context:n,rotation:0})},t.prototype._drawClassy=function(t){var e=t.x,r=t.y,o=t.size,n=t.context,i=t.getNeighbor,a=i?+i(-1,0):0,s=i?+i(1,0):0,c=i?+i(0,-1):0,u=i?+i(0,1):0;0!==a+s+c+u?a||c?s||u?this._basicSquare({x:e,y:r,size:o,context:n,rotation:0}):this._basicCornerRounded({x:e,y:r,size:o,context:n,rotation:Math.PI/2}):this._basicCornerRounded({x:e,y:r,size:o,context:n,rotation:-Math.PI/2}):this._basicCornersRounded({x:e,y:r,size:o,context:n,rotation:Math.PI/2})},t.prototype._drawClassyRounded=function(t){var e=t.x,r=t.y,o=t.size,n=t.context,i=t.getNeighbor,a=i?+i(-1,0):0,s=i?+i(1,0):0,c=i?+i(0,-1):0,u=i?+i(0,1):0;0!==a+s+c+u?a||c?s||u?this._basicSquare({x:e,y:r,size:o,context:n,rotation:0}):this._basicCornerExtraRounded({x:e,y:r,size:o,context:n,rotation:Math.PI/2}):this._basicCornerExtraRounded({x:e,y:r,size:o,context:n,rotation:-Math.PI/2}):this._basicCornersRounded({x:e,y:r,size:o,context:n,rotation:Math.PI/2})},t}(),y="square",_="extra-rounded";var m=function(){return(m=Object.assign||function(t){for(var e,r=1,o=arguments.length;r0&&n[n.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!n||i[1]>n[0]&&i[1]=(e-n.hideXDots)/2&&t<(e+n.hideXDots)/2&&r>=(e-n.hideYDots)/2&&r<(e+n.hideYDots)/2||(null===(o=P[t])||void 0===o?void 0:o[r])||(null===(i=P[t-e+7])||void 0===i?void 0:i[r])||(null===(a=P[t])||void 0===a?void 0:a[r-e+7])||(null===(s=O[t])||void 0===s?void 0:s[r])||(null===(c=O[t-e+7])||void 0===c?void 0:c[r])||(null===(u=O[t])||void 0===u?void 0:u[r-e+7]))})),this.drawCorners(),this._options.image&&this.drawImage({width:n.width,height:n.height,count:e,dotSize:o}),[2]}}))},new((o=void 0)||(o=Promise))((function(t,i){function a(t){try{c(n.next(t))}catch(t){i(t)}}function s(t){try{c(n.throw(t))}catch(t){i(t)}}function c(e){var r;e.done?t(e.value):(r=e.value,r instanceof o?r:new o((function(t){t(r)}))).then(a,s)}c((n=n.apply(e,r||[])).next())}));var e,r,o,n},t.prototype.drawBackground=function(){var t=this.context,e=this._options;if(t){if(e.backgroundOptions.gradient){var r=e.backgroundOptions.gradient,o=this._createGradient({context:t,options:r,additionalRotation:0,x:0,y:0,size:this._canvas.width>this._canvas.height?this._canvas.width:this._canvas.height});r.colorStops.forEach((function(t){var e=t.offset,r=t.color;o.addColorStop(e,r)})),t.fillStyle=o}else e.backgroundOptions.color&&(t.fillStyle=e.backgroundOptions.color);t.fillRect(0,0,this._canvas.width,this._canvas.height)}},t.prototype.drawDots=function(t){var e=this;if(!this._qr)throw"QR code is not defined";var r=this.context;if(!r)throw"QR code is not defined";var o=this._options,n=this._qr.getModuleCount();if(n>o.width||n>o.height)throw"The canvas is too small.";var i=Math.min(o.width,o.height)-2*o.margin,a=Math.floor(i/n),s=Math.floor((o.width-n*a)/2),c=Math.floor((o.height-n*a)/2),u=new w({context:r,type:o.dotsOptions.type});r.beginPath();for(var h=function(r){for(var o=function(o){return t&&!t(r,o)?"continue":d._qr.isDark(r,o)?void u.draw(c+o*a,s+r*a,a,(function(i,a){return!(r+i<0||o+a<0||r+i>=n||o+a>=n)&&!(t&&!t(r+i,o+a))&&!!e._qr&&e._qr.isDark(r+i,o+a)})):"continue"},i=0;i=0&&u<=.25*Math.PI||u>1.75*Math.PI&&u<=2*Math.PI?(h-=s/2,d-=s/2*Math.tan(c),l+=s/2,f+=s/2*Math.tan(c)):u>.25*Math.PI&&u<=.75*Math.PI?(d-=s/2,h-=s/2/Math.tan(c),f+=s/2,l+=s/2/Math.tan(c)):u>.75*Math.PI&&u<=1.25*Math.PI?(h+=s/2,d+=s/2*Math.tan(c),l-=s/2,f-=s/2*Math.tan(c)):u>1.25*Math.PI&&u<=1.75*Math.PI&&(d+=s/2,h+=s/2/Math.tan(c),f-=s/2,l-=s/2/Math.tan(c)),e=r.createLinearGradient(Math.round(h),Math.round(d),Math.round(l),Math.round(f))}return e},t}();var z=function(){return(z=Object.assign||function(t){for(var e,r=1,o=arguments.length;r2||i&&a||s&&c)this._basicSquare({x:e,y:r,size:o,rotation:0});else{if(2===u){var h=0;return i&&s?h=Math.PI/2:s&&a?h=Math.PI:a&&c&&(h=-Math.PI/2),void this._basicCornerRounded({x:e,y:r,size:o,rotation:h})}if(1===u)return h=0,s?h=Math.PI/2:a?h=Math.PI:c&&(h=-Math.PI/2),void this._basicSideRounded({x:e,y:r,size:o,rotation:h})}else this._basicDot({x:e,y:r,size:o,rotation:0})},t.prototype._drawExtraRounded=function(t){var e=t.x,r=t.y,o=t.size,n=t.getNeighbor,i=n?+n(-1,0):0,a=n?+n(1,0):0,s=n?+n(0,-1):0,c=n?+n(0,1):0,u=i+a+s+c;if(0!==u)if(u>2||i&&a||s&&c)this._basicSquare({x:e,y:r,size:o,rotation:0});else{if(2===u){var h=0;return i&&s?h=Math.PI/2:s&&a?h=Math.PI:a&&c&&(h=-Math.PI/2),void this._basicCornerExtraRounded({x:e,y:r,size:o,rotation:h})}if(1===u)return h=0,s?h=Math.PI/2:a?h=Math.PI:c&&(h=-Math.PI/2),void this._basicSideRounded({x:e,y:r,size:o,rotation:h})}else this._basicDot({x:e,y:r,size:o,rotation:0})},t.prototype._drawClassy=function(t){var e=t.x,r=t.y,o=t.size,n=t.getNeighbor,i=n?+n(-1,0):0,a=n?+n(1,0):0,s=n?+n(0,-1):0,c=n?+n(0,1):0;0!==i+a+s+c?i||s?a||c?this._basicSquare({x:e,y:r,size:o,rotation:0}):this._basicCornerRounded({x:e,y:r,size:o,rotation:Math.PI/2}):this._basicCornerRounded({x:e,y:r,size:o,rotation:-Math.PI/2}):this._basicCornersRounded({x:e,y:r,size:o,rotation:Math.PI/2})},t.prototype._drawClassyRounded=function(t){var e=t.x,r=t.y,o=t.size,n=t.getNeighbor,i=n?+n(-1,0):0,a=n?+n(1,0):0,s=n?+n(0,-1):0,c=n?+n(0,1):0;0!==i+a+s+c?i||s?a||c?this._basicSquare({x:e,y:r,size:o,rotation:0}):this._basicCornerExtraRounded({x:e,y:r,size:o,rotation:Math.PI/2}):this._basicCornerExtraRounded({x:e,y:r,size:o,rotation:-Math.PI/2}):this._basicCornersRounded({x:e,y:r,size:o,rotation:Math.PI/2})},t}();var I=function(){return(I=Object.assign||function(t){for(var e,r=1,o=arguments.length;r0&&n[n.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!n||i[1]>n[0]&&i[1]=(e-n.hideXDots)/2&&t<(e+n.hideXDots)/2&&r>=(e-n.hideYDots)/2&&r<(e+n.hideYDots)/2||(null===(o=B[t])||void 0===o?void 0:o[r])||(null===(i=B[t-e+7])||void 0===i?void 0:i[r])||(null===(a=B[t])||void 0===a?void 0:a[r-e+7])||(null===(s=E[t])||void 0===s?void 0:s[r])||(null===(c=E[t-e+7])||void 0===c?void 0:c[r])||(null===(u=E[t])||void 0===u?void 0:u[r-e+7]))})),this.drawCorners(),this._options.image&&this.drawImage({width:n.width,height:n.height,count:e,dotSize:o}),[2]}}))},new((o=void 0)||(o=Promise))((function(t,i){function a(t){try{c(n.next(t))}catch(t){i(t)}}function s(t){try{c(n.throw(t))}catch(t){i(t)}}function c(e){var r;e.done?t(e.value):(r=e.value,r instanceof o?r:new o((function(t){t(r)}))).then(a,s)}c((n=n.apply(e,r||[])).next())}));var e,r,o,n},t.prototype.drawBackground=function(){var t,e,r,o=this._element,n=this._options;if(o){var i=null===(t=n.backgroundOptions)||void 0===t?void 0:t.gradient,a=null===(e=n.backgroundOptions)||void 0===e?void 0:e.color;i?this._createColor({options:i,color:a,additionalRotation:0,x:0,y:0,height:n.height,width:n.width,name:"background-color"}):(null===(r=n.backgroundOptions)||void 0===r?void 0:r.color)&&this._createStyle({color:a,name:"background-color"})}},t.prototype.drawDots=function(t){var e,r,o,n=this;if(!this._qr)throw"QR code is not defined";var i=this._options,a=this._qr.getModuleCount();if(a>i.width||a>i.height)throw"The canvas is too small.";var s=Math.min(i.width,i.height)-2*i.margin,c=Math.floor(s/a),u=Math.floor((i.width-a*c)/2),h=Math.floor((i.height-a*c)/2),d=new A({svg:this._element,type:i.dotsOptions.type});(null===(e=i.dotsOptions)||void 0===e?void 0:e.gradient)?(this._dotsClipPath=document.createElementNS("http://www.w3.org/2000/svg","clipPath"),this._dotsClipPath.setAttribute("id","clip-path-dot-color"),this._defs.appendChild(this._dotsClipPath),this._createColor({options:null===(r=i.dotsOptions)||void 0===r?void 0:r.gradient,color:i.dotsOptions.color,additionalRotation:0,x:u,y:h,height:a*c,width:a*c,name:"dot-color"})):i.dotsOptions.color&&(this._dots=document.createElementNS("http://www.w3.org/2000/svg","g"),this._dots.setAttribute("class","dot-color"),this._element.appendChild(this._dots),this._createStyle({color:i.dotsOptions.color,name:"dot-color"}));for(var l=function(e){for(var r=function(r){return t&&!t(e,r)?"continue":(null===(o=f._qr)||void 0===o?void 0:o.isDark(e,r))?(d.draw(h+r*c,u+e*c,c,(function(o,i){return!(e+o<0||r+i<0||e+o>=a||r+i>=a)&&!(t&&!t(e+o,r+i))&&!!n._qr&&n._qr.isDark(e+o,r+i)})),void(d._element&&f._dotsClipPath?f._dotsClipPath.appendChild(d._element):d._element&&f._dots&&f._dots.appendChild(d._element))):"continue"},i=0;ia?s:a,h=document.createElementNS("http://www.w3.org/2000/svg","rect");if(h.setAttribute("x",String(n)),h.setAttribute("y",String(i)),h.setAttribute("height",String(a)),h.setAttribute("width",String(s)),h.setAttribute("clip-path","url('#clip-path-"+c+"')"),e){var d;if(e.type===C)(d=document.createElementNS("http://www.w3.org/2000/svg","radialGradient")).setAttribute("id",c),d.setAttribute("gradientUnits","userSpaceOnUse"),d.setAttribute("fx",String(n+s/2)),d.setAttribute("fy",String(i+a/2)),d.setAttribute("cx",String(n+s/2)),d.setAttribute("cy",String(i+a/2)),d.setAttribute("r",String(u/2));else{var l=((e.rotation||0)+o)%(2*Math.PI),f=(l+2*Math.PI)%(2*Math.PI),p=n+s/2,g=i+a/2,v=n+s/2,w=i+a/2;f>=0&&f<=.25*Math.PI||f>1.75*Math.PI&&f<=2*Math.PI?(p-=s/2,g-=a/2*Math.tan(l),v+=s/2,w+=a/2*Math.tan(l)):f>.25*Math.PI&&f<=.75*Math.PI?(g-=a/2,p-=s/2/Math.tan(l),w+=a/2,v+=s/2/Math.tan(l)):f>.75*Math.PI&&f<=1.25*Math.PI?(p+=s/2,g+=a/2*Math.tan(l),v-=s/2,w-=a/2*Math.tan(l)):f>1.25*Math.PI&&f<=1.75*Math.PI&&(g+=a/2,p+=s/2/Math.tan(l),w-=a/2,v-=s/2/Math.tan(l)),(d=document.createElementNS("http://www.w3.org/2000/svg","linearGradient")).setAttribute("id",c),d.setAttribute("gradientUnits","userSpaceOnUse"),d.setAttribute("x1",String(Math.round(p))),d.setAttribute("y1",String(Math.round(g))),d.setAttribute("x2",String(Math.round(v))),d.setAttribute("y2",String(Math.round(w)))}e.colorStops.forEach((function(t){var e=t.offset,r=t.color,o=document.createElementNS("http://www.w3.org/2000/svg","stop");o.setAttribute("offset",100*e+"%"),o.setAttribute("stop-color",r),d.appendChild(o)})),h.setAttribute("fill","url('#"+c+"')"),this._defs.appendChild(d)}else r&&h.setAttribute("fill",r);this._element.appendChild(h)},t.prototype._createStyle=function(t){var e=t.color,r=t.name;this._style.innerHTML+="."+r+"{ fill: "+e+"; }"},t}(),L="canvas";for(var T={},j=0;j<=40;j++)T[j]=j;const F={type:L,width:300,height:300,data:"",margin:0,qrOptions:{typeNumber:T[0],mode:void 0,errorCorrectionLevel:"Q"},imageOptions:{hideBackgroundDots:!0,imageSize:.4,crossOrigin:void 0,margin:0},dotsOptions:{type:"square",color:"#000"},backgroundOptions:{color:"#fff"}};var Q=function(){return(Q=Object.assign||function(t){for(var e,r=1,o=arguments.length;rMath.min(e.width,e.height)&&(e.margin=Math.min(e.width,e.height)),e.dotsOptions=Q({},e.dotsOptions),e.dotsOptions.gradient&&(e.dotsOptions.gradient=H(e.dotsOptions.gradient)),e.cornersSquareOptions&&(e.cornersSquareOptions=Q({},e.cornersSquareOptions),e.cornersSquareOptions.gradient&&(e.cornersSquareOptions.gradient=H(e.cornersSquareOptions.gradient))),e.cornersDotOptions&&(e.cornersDotOptions=Q({},e.cornersDotOptions),e.cornersDotOptions.gradient&&(e.cornersDotOptions.gradient=H(e.cornersDotOptions.gradient))),e.backgroundOptions&&(e.backgroundOptions=Q({},e.backgroundOptions),e.backgroundOptions.gradient&&(e.backgroundOptions.gradient=H(e.backgroundOptions.gradient))),e}var X=r(192),U=r.n(X),Y=function(t,e,r,o){return new(r||(r=Promise))((function(n,i){function a(t){try{c(o.next(t))}catch(t){i(t)}}function s(t){try{c(o.throw(t))}catch(t){i(t)}}function c(t){var e;t.done?n(t.value):(e=t.value,e instanceof r?e:new r((function(t){t(e)}))).then(a,s)}c((o=o.apply(t,e||[])).next())}))},$=function(t,e){var r,o,n,i,a={label:0,sent:function(){if(1&n[0])throw n[1];return n[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(i){return function(s){return function(i){if(r)throw new TypeError("Generator is already executing.");for(;a;)try{if(r=1,o&&(n=2&i[0]?o.return:i[0]?o.throw||((n=o.return)&&n.call(o),0):o.next)&&!(n=n.call(o,i[1])).done)return n;switch(o=0,n&&(i=[2&i[0],n.value]),i[0]){case 0:case 1:n=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,o=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!((n=(n=a.trys).length>0&&n[n.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!n||i[1]>n[0]&&i[1]\r\n'+o],{type:"image/svg+xml"})]):[2,new Promise((function(r){return e.getCanvas().toBlob(r,"image/"+t,1)}))]}}))}))},t.prototype.download=function(t){return Y(this,void 0,void 0,(function(){var e,r,o,n,i;return $(this,(function(a){switch(a.label){case 0:if(!this._qr)throw"QR code is empty";return e="png",r="qr","string"==typeof t?(e=t,console.warn("Extension is deprecated as argument for 'download' method, please pass object { name: '...', extension: '...' } as argument")):"object"==typeof t&&null!==t&&(t.name&&(r=t.name),t.extension&&(e=t.extension)),[4,this._getQRStylingElement(e)];case 1:return o=a.sent(),"svg"===e.toLowerCase()?(n=new XMLSerializer,i='\r\n'+(i=n.serializeToString(o.getElement())),s("data:image/svg+xml;charset=utf-8,"+encodeURIComponent(i),r+".svg")):s(o.getCanvas().toDataURL("image/"+e),r+"."+e),[2]}}))}))},t}()}},e={};function r(o){if(e[o])return e[o].exports;var n=e[o]={exports:{}};return t[o](n,n.exports,r),n.exports}return r.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return r.d(e,{a:e}),e},r.d=(t,e)=>{for(var o in e)r.o(e,o)&&!r.o(t,o)&&Object.defineProperty(t,o,{enumerable:!0,get:e[o]})},r.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r(796)})().default})); +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.QRCodeStyling=e():t.QRCodeStyling=e()}(self,(function(){return(()=>{var t={192:(t,e)=>{var r,n,o=function(){var t=function(t,e){var r=t,n=a[e],o=null,i=0,u=null,v=[],w={},_=function(t,e){o=function(t){for(var e=new Array(t),r=0;r=7&&M(t),null==u&&(u=P(r,n,v)),C(u,e)},m=function(t,e){for(var r=-1;r<=7;r+=1)if(!(t+r<=-1||i<=t+r))for(var n=-1;n<=7;n+=1)e+n<=-1||i<=e+n||(o[t+r][e+n]=0<=r&&r<=6&&(0==n||6==n)||0<=n&&n<=6&&(0==r||6==r)||2<=r&&r<=4&&2<=n&&n<=4)},b=function(){for(var t=8;t>n&1);o[Math.floor(n/3)][n%3+i-8-3]=a}for(n=0;n<18;n+=1)a=!t&&1==(e>>n&1),o[n%3+i-8-3][Math.floor(n/3)]=a},S=function(t,e){for(var r=n<<3|e,a=s.getBCHTypeInfo(r),u=0;u<15;u+=1){var c=!t&&1==(a>>u&1);u<6?o[u][8]=c:u<8?o[u+1][8]=c:o[i-15+u][8]=c}for(u=0;u<15;u+=1)c=!t&&1==(a>>u&1),u<8?o[8][i-u-1]=c:u<9?o[8][15-u-1+1]=c:o[8][15-u-1]=c;o[i-8][8]=!t},C=function(t,e){for(var r=-1,n=i-1,a=7,u=0,c=s.getMaskFunction(e),h=i-1;h>0;h-=2)for(6==h&&(h-=1);;){for(var l=0;l<2;l+=1)if(null==o[n][h-l]){var d=!1;u>>a&1)),c(n,h-l)&&(d=!d),o[n][h-l]=d,-1==(a-=1)&&(u+=1,a=7)}if((n+=r)<0||i<=n){n-=r,r=-r;break}}},P=function(t,e,r){for(var n=h.getRSBlocks(t,e),o=l(),i=0;i8*u)throw"code length overflow. ("+o.getLengthInBits()+">"+8*u+")";for(o.getLengthInBits()+4<=8*u&&o.put(0,4);o.getLengthInBits()%8!=0;)o.putBit(!1);for(;!(o.getLengthInBits()>=8*u||(o.put(236,8),o.getLengthInBits()>=8*u));)o.put(17,8);return function(t,e){for(var r=0,n=0,o=0,i=new Array(e.length),a=new Array(e.length),u=0;u=0?p.getAt(g):0}}var v=0;for(d=0;dn)&&(t=n,e=r)}return e}())},w.createTableTag=function(t,e){t=t||2;var r="";r+='',r+="";for(var n=0;n";for(var o=0;o';r+=""}return(r+="")+"
"},w.createSvgTag=function(t,e,r,n){var o={};"object"==typeof arguments[0]&&(t=(o=arguments[0]).cellSize,e=o.margin,r=o.alt,n=o.title),t=t||2,e=void 0===e?4*t:e,(r="string"==typeof r?{text:r}:r||{}).text=r.text||null,r.id=r.text?r.id||"qrcode-description":null,(n="string"==typeof n?{text:n}:n||{}).text=n.text||null,n.id=n.text?n.id||"qrcode-title":null;var i,a,s,u,c=w.getModuleCount()*t+2*e,h="";for(u="l"+t+",0 0,"+t+" -"+t+",0 0,-"+t+"z ",h+=''+O(n.text)+"":"",h+=r.text?''+O(r.text)+"":"",h+='',h+='"},w.createDataURL=function(t,e){t=t||2,e=void 0===e?4*t:e;var r=w.getModuleCount()*t+2*e,n=e,o=r-e;return y(r,r,(function(e,r){if(n<=e&&e"};var O=function(t){for(var e="",r=0;r":e+=">";break;case"&":e+="&";break;case'"':e+=""";break;default:e+=n}}return e};return w.createASCII=function(t,e){if((t=t||1)<2)return function(t){t=void 0===t?2:t;var e,r,n,o,i,a=1*w.getModuleCount()+2*t,s=t,u=a-t,c={"██":"█","█ ":"▀"," █":"▄"," ":" "},h={"██":"▀","█ ":"▀"," █":" "," ":" "},l="";for(e=0;e=u?h[i]:c[i];l+="\n"}return a%2&&t>0?l.substring(0,l.length-a-1)+Array(a+1).join("▀"):l.substring(0,l.length-1)}(e);t-=1,e=void 0===e?2*t:e;var r,n,o,i,a=w.getModuleCount()*t+2*e,s=e,u=a-e,c=Array(t+1).join("██"),h=Array(t+1).join(" "),l="",d="";for(r=0;r>>8),e.push(255&a)):e.push(n)}}return e}};var e,r,n,o,i,a={L:1,M:0,Q:3,H:2},s=(e=[[],[6,18],[6,22],[6,26],[6,30],[6,34],[6,22,38],[6,24,42],[6,26,46],[6,28,50],[6,30,54],[6,32,58],[6,34,62],[6,26,46,66],[6,26,48,70],[6,26,50,74],[6,30,54,78],[6,30,56,82],[6,30,58,86],[6,34,62,90],[6,28,50,72,94],[6,26,50,74,98],[6,30,54,78,102],[6,28,54,80,106],[6,32,58,84,110],[6,30,58,86,114],[6,34,62,90,118],[6,26,50,74,98,122],[6,30,54,78,102,126],[6,26,52,78,104,130],[6,30,56,82,108,134],[6,34,60,86,112,138],[6,30,58,86,114,142],[6,34,62,90,118,146],[6,30,54,78,102,126,150],[6,24,50,76,102,128,154],[6,28,54,80,106,132,158],[6,32,58,84,110,136,162],[6,26,54,82,110,138,166],[6,30,58,86,114,142,170]],r=1335,n=7973,i=function(t){for(var e=0;0!=t;)e+=1,t>>>=1;return e},(o={}).getBCHTypeInfo=function(t){for(var e=t<<10;i(e)-i(r)>=0;)e^=r<=0;)e^=n<5&&(r+=3+i-5)}for(n=0;n=256;)e-=255;return t[e]}}}();function c(t,e){if(void 0===t.length)throw t.length+"/"+e;var r=function(){for(var r=0;r>>7-e%8&1)},put:function(t,e){for(var n=0;n>>e-n-1&1))},getLengthInBits:function(){return e},putBit:function(r){var n=Math.floor(e/8);t.length<=n&&t.push(0),r&&(t[n]|=128>>>e%8),e+=1}};return r},d=function(t){var e=t,r={getMode:function(){return 1},getLength:function(t){return e.length},write:function(t){for(var r=e,o=0;o+2>>8&255)+(255&o),t.put(o,13),r+=2}if(r>>8)},writeBytes:function(t,r,n){r=r||0,n=n||t.length;for(var o=0;o0&&(e+=","),e+=t[r];return e+"]"}};return e},w=function(t){var e=t,r=0,n=0,o=0,i={read:function(){for(;o<8;){if(r>=e.length){if(0==o)return-1;throw"unexpected end of file./"+o}var t=e.charAt(r);if(r+=1,"="==t)return o=0,-1;t.match(/^\s$/)||(n=n<<6|a(t.charCodeAt(0)),o+=6)}var i=n>>>o-8&255;return o-=8,i}},a=function(t){if(65<=t&&t<=90)return t-65;if(97<=t&&t<=122)return t-97+26;if(48<=t&&t<=57)return t-48+52;if(43==t)return 62;if(47==t)return 63;throw"c:"+t};return i},y=function(t,e,r){for(var n=function(t,e){var r=t,n=e,o=new Array(t*e),i={setPixel:function(t,e,n){o[e*r+t]=n},write:function(t){t.writeString("GIF87a"),t.writeShort(r),t.writeShort(n),t.writeByte(128),t.writeByte(0),t.writeByte(0),t.writeByte(0),t.writeByte(0),t.writeByte(0),t.writeByte(255),t.writeByte(255),t.writeByte(255),t.writeString(","),t.writeShort(0),t.writeShort(0),t.writeShort(r),t.writeShort(n),t.writeByte(0);var e=a(2);t.writeByte(2);for(var o=0;e.length-o>255;)t.writeByte(255),t.writeBytes(e,o,255),o+=255;t.writeByte(e.length-o),t.writeBytes(e,o,e.length-o),t.writeByte(0),t.writeString(";")}},a=function(t){for(var e=1<>>e!=0)throw"length over";for(;c+e>=8;)u.writeByte(255&(t<>>=8-c,h=0,c=0;h|=t<0&&u.writeByte(h)}});d.write(e,n);var f=0,p=String.fromCharCode(o[f]);for(f+=1;f=6;)i(t>>>e-6),e-=6},o.flush=function(){if(e>0&&(i(t<<6-e),t=0,e=0),r%3!=0)for(var o=3-r%3,a=0;a>6,128|63&n):n<55296||n>=57344?e.push(224|n>>12,128|n>>6&63,128|63&n):(r++,n=65536+((1023&n)<<10|1023&t.charCodeAt(r)),e.push(240|n>>18,128|n>>12&63,128|n>>6&63,128|63&n))}return e}(t)},void 0===(n="function"==typeof(r=function(){return o})?r.apply(e,[]):r)||(t.exports=n)},796:(t,e,r)=>{"use strict";r.d(e,{default:()=>J});var n=function(){return(n=Object.assign||function(t){for(var e,r=1,n=arguments.length;rn||o&&o2||a&&s||u&&c)this._basicSquare({x:e,y:r,size:n,context:o,rotation:0});else{if(2===h){var l=0;return a&&u?l=Math.PI/2:u&&s?l=Math.PI:s&&c&&(l=-Math.PI/2),void this._basicCornerRounded({x:e,y:r,size:n,context:o,rotation:l})}if(1===h)return l=0,u?l=Math.PI/2:s?l=Math.PI:c&&(l=-Math.PI/2),void this._basicSideRounded({x:e,y:r,size:n,context:o,rotation:l})}else this._basicDot({x:e,y:r,size:n,context:o,rotation:0})},t.prototype._drawExtraRounded=function(t){var e=t.x,r=t.y,n=t.size,o=t.context,i=t.getNeighbor,a=i?+i(-1,0):0,s=i?+i(1,0):0,u=i?+i(0,-1):0,c=i?+i(0,1):0,h=a+s+u+c;if(0!==h)if(h>2||a&&s||u&&c)this._basicSquare({x:e,y:r,size:n,context:o,rotation:0});else{if(2===h){var l=0;return a&&u?l=Math.PI/2:u&&s?l=Math.PI:s&&c&&(l=-Math.PI/2),void this._basicCornerExtraRounded({x:e,y:r,size:n,context:o,rotation:l})}if(1===h)return l=0,u?l=Math.PI/2:s?l=Math.PI:c&&(l=-Math.PI/2),void this._basicSideRounded({x:e,y:r,size:n,context:o,rotation:l})}else this._basicDot({x:e,y:r,size:n,context:o,rotation:0})},t.prototype._drawClassy=function(t){var e=t.x,r=t.y,n=t.size,o=t.context,i=t.getNeighbor,a=i?+i(-1,0):0,s=i?+i(1,0):0,u=i?+i(0,-1):0,c=i?+i(0,1):0;0!==a+s+u+c?a||u?s||c?this._basicSquare({x:e,y:r,size:n,context:o,rotation:0}):this._basicCornerRounded({x:e,y:r,size:n,context:o,rotation:Math.PI/2}):this._basicCornerRounded({x:e,y:r,size:n,context:o,rotation:-Math.PI/2}):this._basicCornersRounded({x:e,y:r,size:n,context:o,rotation:Math.PI/2})},t.prototype._drawClassyRounded=function(t){var e=t.x,r=t.y,n=t.size,o=t.context,i=t.getNeighbor,a=i?+i(-1,0):0,s=i?+i(1,0):0,u=i?+i(0,-1):0,c=i?+i(0,1):0;0!==a+s+u+c?a||u?s||c?this._basicSquare({x:e,y:r,size:n,context:o,rotation:0}):this._basicCornerExtraRounded({x:e,y:r,size:n,context:o,rotation:Math.PI/2}):this._basicCornerExtraRounded({x:e,y:r,size:n,context:o,rotation:-Math.PI/2}):this._basicCornersRounded({x:e,y:r,size:n,context:o,rotation:Math.PI/2})},t}(),y="square",_="extra-rounded";var m=function(){return(m=Object.assign||function(t){for(var e,r=1,n=arguments.length;r0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]=(e-o.hideXDots)/2&&t<(e+o.hideXDots)/2&&r>=(e-o.hideYDots)/2&&r<(e+o.hideYDots)/2||(null===(n=P[t])||void 0===n?void 0:n[r])||(null===(i=P[t-e+7])||void 0===i?void 0:i[r])||(null===(a=P[t])||void 0===a?void 0:a[r-e+7])||(null===(s=O[t])||void 0===s?void 0:s[r])||(null===(u=O[t-e+7])||void 0===u?void 0:u[r])||(null===(c=O[t])||void 0===c?void 0:c[r-e+7]))})),this.drawCorners(),this._options.image&&this.drawImage({width:o.width,height:o.height,count:e,dotSize:n}),[2]}}))},new((n=void 0)||(n=Promise))((function(t,i){function a(t){try{u(o.next(t))}catch(t){i(t)}}function s(t){try{u(o.throw(t))}catch(t){i(t)}}function u(e){var r;e.done?t(e.value):(r=e.value,r instanceof n?r:new n((function(t){t(r)}))).then(a,s)}u((o=o.apply(e,r||[])).next())}));var e,r,n,o},t.prototype.drawBackground=function(){var t=this.context,e=this._options;if(t){if(e.backgroundOptions.gradient){var r=e.backgroundOptions.gradient,n=this._createGradient({context:t,options:r,additionalRotation:0,x:0,y:0,size:this._canvas.width>this._canvas.height?this._canvas.width:this._canvas.height});r.colorStops.forEach((function(t){var e=t.offset,r=t.color;n.addColorStop(e,r)})),t.fillStyle=n}else e.backgroundOptions.color&&(t.fillStyle=e.backgroundOptions.color);t.fillRect(0,0,this._canvas.width,this._canvas.height)}},t.prototype.drawDots=function(t){var e=this;if(!this._qr)throw"QR code is not defined";var r=this.context;if(!r)throw"QR code is not defined";var n=this._options,o=this._qr.getModuleCount();if(o>n.width||o>n.height)throw"The canvas is too small.";var i=Math.min(n.width,n.height)-2*n.margin,a=Math.floor(i/o),s=Math.floor((n.width-o*a)/2),u=Math.floor((n.height-o*a)/2),c=new w({context:r,type:n.dotsOptions.type});r.beginPath();for(var h=function(r){for(var n=function(n){return t&&!t(r,n)?"continue":l._qr.isDark(r,n)?void c.draw(u+n*a,s+r*a,a,(function(i,a){return!(r+i<0||n+a<0||r+i>=o||n+a>=o)&&!(t&&!t(r+i,n+a))&&!!e._qr&&e._qr.isDark(r+i,n+a)})):"continue"},i=0;i=0&&c<=.25*Math.PI||c>1.75*Math.PI&&c<=2*Math.PI?(h-=s/2,l-=s/2*Math.tan(u),d+=s/2,f+=s/2*Math.tan(u)):c>.25*Math.PI&&c<=.75*Math.PI?(l-=s/2,h-=s/2/Math.tan(u),f+=s/2,d+=s/2/Math.tan(u)):c>.75*Math.PI&&c<=1.25*Math.PI?(h+=s/2,l+=s/2*Math.tan(u),d-=s/2,f-=s/2*Math.tan(u)):c>1.25*Math.PI&&c<=1.75*Math.PI&&(l+=s/2,h+=s/2/Math.tan(u),f-=s/2,d-=s/2/Math.tan(u)),e=r.createLinearGradient(Math.round(h),Math.round(l),Math.round(d),Math.round(f))}return e},t}();var z=function(){return(z=Object.assign||function(t){for(var e,r=1,n=arguments.length;r2||i&&a||s&&u)this._basicSquare({x:e,y:r,size:n,rotation:0});else{if(2===c){var h=0;return i&&s?h=Math.PI/2:s&&a?h=Math.PI:a&&u&&(h=-Math.PI/2),void this._basicCornerRounded({x:e,y:r,size:n,rotation:h})}if(1===c)return h=0,s?h=Math.PI/2:a?h=Math.PI:u&&(h=-Math.PI/2),void this._basicSideRounded({x:e,y:r,size:n,rotation:h})}else this._basicDot({x:e,y:r,size:n,rotation:0})},t.prototype._drawExtraRounded=function(t){var e=t.x,r=t.y,n=t.size,o=t.getNeighbor,i=o?+o(-1,0):0,a=o?+o(1,0):0,s=o?+o(0,-1):0,u=o?+o(0,1):0,c=i+a+s+u;if(0!==c)if(c>2||i&&a||s&&u)this._basicSquare({x:e,y:r,size:n,rotation:0});else{if(2===c){var h=0;return i&&s?h=Math.PI/2:s&&a?h=Math.PI:a&&u&&(h=-Math.PI/2),void this._basicCornerExtraRounded({x:e,y:r,size:n,rotation:h})}if(1===c)return h=0,s?h=Math.PI/2:a?h=Math.PI:u&&(h=-Math.PI/2),void this._basicSideRounded({x:e,y:r,size:n,rotation:h})}else this._basicDot({x:e,y:r,size:n,rotation:0})},t.prototype._drawClassy=function(t){var e=t.x,r=t.y,n=t.size,o=t.getNeighbor,i=o?+o(-1,0):0,a=o?+o(1,0):0,s=o?+o(0,-1):0,u=o?+o(0,1):0;0!==i+a+s+u?i||s?a||u?this._basicSquare({x:e,y:r,size:n,rotation:0}):this._basicCornerRounded({x:e,y:r,size:n,rotation:Math.PI/2}):this._basicCornerRounded({x:e,y:r,size:n,rotation:-Math.PI/2}):this._basicCornersRounded({x:e,y:r,size:n,rotation:Math.PI/2})},t.prototype._drawClassyRounded=function(t){var e=t.x,r=t.y,n=t.size,o=t.getNeighbor,i=o?+o(-1,0):0,a=o?+o(1,0):0,s=o?+o(0,-1):0,u=o?+o(0,1):0;0!==i+a+s+u?i||s?a||u?this._basicSquare({x:e,y:r,size:n,rotation:0}):this._basicCornerExtraRounded({x:e,y:r,size:n,rotation:Math.PI/2}):this._basicCornerExtraRounded({x:e,y:r,size:n,rotation:-Math.PI/2}):this._basicCornersRounded({x:e,y:r,size:n,rotation:Math.PI/2})},t}();var I=function(){return(I=Object.assign||function(t){for(var e,r=1,n=arguments.length;r0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]=(e-o.hideXDots)/2&&t<(e+o.hideXDots)/2&&r>=(e-o.hideYDots)/2&&r<(e+o.hideYDots)/2||(null===(n=N[t])||void 0===n?void 0:n[r])||(null===(i=N[t-e+7])||void 0===i?void 0:i[r])||(null===(a=N[t])||void 0===a?void 0:a[r-e+7])||(null===(s=L[t])||void 0===s?void 0:s[r])||(null===(u=L[t-e+7])||void 0===u?void 0:u[r])||(null===(c=L[t])||void 0===c?void 0:c[r-e+7]))})),this.drawCorners(),this._options.image?[4,this.drawImage({width:o.width,height:o.height,count:e,dotSize:n})]:[3,4];case 3:f.sent(),f.label=4;case 4:return[2]}}))}))},t.prototype.drawBackground=function(){var t,e,r,n=this._element,o=this._options;if(n){var i=null===(t=o.backgroundOptions)||void 0===t?void 0:t.gradient,a=null===(e=o.backgroundOptions)||void 0===e?void 0:e.color;i?this._createColor({options:i,color:a,additionalRotation:0,x:0,y:0,height:o.height,width:o.width,name:"background-color"}):(null===(r=o.backgroundOptions)||void 0===r?void 0:r.color)&&this._createStyle({color:a,name:"background-color"})}},t.prototype.drawDots=function(t){var e,r,n,o=this;if(!this._qr)throw"QR code is not defined";var i=this._options,a=this._qr.getModuleCount();if(a>i.width||a>i.height)throw"The canvas is too small.";var s=Math.min(i.width,i.height)-2*i.margin,u=Math.floor(s/a),c=Math.floor((i.width-a*u)/2),h=Math.floor((i.height-a*u)/2),l=new A({svg:this._element,type:i.dotsOptions.type});(null===(e=i.dotsOptions)||void 0===e?void 0:e.gradient)?(this._dotsClipPath=document.createElementNS("http://www.w3.org/2000/svg","clipPath"),this._dotsClipPath.setAttribute("id","clip-path-dot-color"),this._defs.appendChild(this._dotsClipPath),this._createColor({options:null===(r=i.dotsOptions)||void 0===r?void 0:r.gradient,color:i.dotsOptions.color,additionalRotation:0,x:c,y:h,height:a*u,width:a*u,name:"dot-color"})):i.dotsOptions.color&&(this._dots=document.createElementNS("http://www.w3.org/2000/svg","g"),this._dots.setAttribute("class","dot-color"),this._element.appendChild(this._dots),this._createStyle({color:i.dotsOptions.color,name:"dot-color"}));for(var d=function(e){for(var r=function(r){return t&&!t(e,r)?"continue":(null===(n=f._qr)||void 0===n?void 0:n.isDark(e,r))?(l.draw(h+r*u,c+e*u,u,(function(n,i){return!(e+n<0||r+i<0||e+n>=a||r+i>=a)&&!(t&&!t(e+n,r+i))&&!!o._qr&&o._qr.isDark(e+n,r+i)})),void(l._element&&f._dotsClipPath?f._dotsClipPath.appendChild(l._element):l._element&&f._dots&&f._dots.appendChild(l._element))):"continue"},i=0;ia?s:a,h=document.createElementNS("http://www.w3.org/2000/svg","rect");if(h.setAttribute("x",String(o)),h.setAttribute("y",String(i)),h.setAttribute("height",String(a)),h.setAttribute("width",String(s)),h.setAttribute("clip-path","url('#clip-path-"+u+"')"),e){var l;if(e.type===C)(l=document.createElementNS("http://www.w3.org/2000/svg","radialGradient")).setAttribute("id",u),l.setAttribute("gradientUnits","userSpaceOnUse"),l.setAttribute("fx",String(o+s/2)),l.setAttribute("fy",String(i+a/2)),l.setAttribute("cx",String(o+s/2)),l.setAttribute("cy",String(i+a/2)),l.setAttribute("r",String(c/2));else{var d=((e.rotation||0)+n)%(2*Math.PI),f=(d+2*Math.PI)%(2*Math.PI),p=o+s/2,g=i+a/2,v=o+s/2,w=i+a/2;f>=0&&f<=.25*Math.PI||f>1.75*Math.PI&&f<=2*Math.PI?(p-=s/2,g-=a/2*Math.tan(d),v+=s/2,w+=a/2*Math.tan(d)):f>.25*Math.PI&&f<=.75*Math.PI?(g-=a/2,p-=s/2/Math.tan(d),w+=a/2,v+=s/2/Math.tan(d)):f>.75*Math.PI&&f<=1.25*Math.PI?(p+=s/2,g+=a/2*Math.tan(d),v-=s/2,w-=a/2*Math.tan(d)):f>1.25*Math.PI&&f<=1.75*Math.PI&&(g+=a/2,p+=s/2/Math.tan(d),w-=a/2,v-=s/2/Math.tan(d)),(l=document.createElementNS("http://www.w3.org/2000/svg","linearGradient")).setAttribute("id",u),l.setAttribute("gradientUnits","userSpaceOnUse"),l.setAttribute("x1",String(Math.round(p))),l.setAttribute("y1",String(Math.round(g))),l.setAttribute("x2",String(Math.round(v))),l.setAttribute("y2",String(Math.round(w)))}e.colorStops.forEach((function(t){var e=t.offset,r=t.color,n=document.createElementNS("http://www.w3.org/2000/svg","stop");n.setAttribute("offset",100*e+"%"),n.setAttribute("stop-color",r),l.appendChild(n)})),h.setAttribute("fill","url('#"+u+"')"),this._defs.appendChild(l)}else r&&h.setAttribute("fill",r);this._element.appendChild(h)},t.prototype._createStyle=function(t){var e=t.color,r=t.name;this._style.innerHTML+="."+r+"{ fill: "+e+"; }"},t}(),j="canvas";for(var F={},Q=0;Q<=40;Q++)F[Q]=Q;const H={type:j,width:300,height:300,data:"",margin:0,qrOptions:{typeNumber:F[0],mode:void 0,errorCorrectionLevel:"Q"},imageOptions:{hideBackgroundDots:!0,imageSize:.4,crossOrigin:"anonymous",margin:0},dotsOptions:{type:"square",color:"#000"},backgroundOptions:{color:"#fff"}};var G=function(){return(G=Object.assign||function(t){for(var e,r=1,n=arguments.length;rMath.min(e.width,e.height)&&(e.margin=Math.min(e.width,e.height)),e.dotsOptions=G({},e.dotsOptions),e.dotsOptions.gradient&&(e.dotsOptions.gradient=U(e.dotsOptions.gradient)),e.cornersSquareOptions&&(e.cornersSquareOptions=G({},e.cornersSquareOptions),e.cornersSquareOptions.gradient&&(e.cornersSquareOptions.gradient=U(e.cornersSquareOptions.gradient))),e.cornersDotOptions&&(e.cornersDotOptions=G({},e.cornersDotOptions),e.cornersDotOptions.gradient&&(e.cornersDotOptions.gradient=U(e.cornersDotOptions.gradient))),e.backgroundOptions&&(e.backgroundOptions=G({},e.backgroundOptions),e.backgroundOptions.gradient&&(e.backgroundOptions.gradient=U(e.backgroundOptions.gradient))),e}var Y=r(192),$=r.n(Y),W=function(t,e,r,n){return new(r||(r=Promise))((function(o,i){function a(t){try{u(n.next(t))}catch(t){i(t)}}function s(t){try{u(n.throw(t))}catch(t){i(t)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof r?e:new r((function(t){t(e)}))).then(a,s)}u((n=n.apply(t,e||[])).next())}))},Z=function(t,e){var r,n,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(i){return function(s){return function(i){if(r)throw new TypeError("Generator is already executing.");for(;a;)try{if(r=1,n&&(o=2&i[0]?n.return:i[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,i[1])).done)return o;switch(n=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,n=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!((o=(o=a.trys).length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]\r\n'+n],{type:"image/svg+xml"})]):[2,new Promise((function(r){return e.getCanvas().toBlob(r,"image/"+t,1)}))]}}))}))},t.prototype.download=function(t){return W(this,void 0,void 0,(function(){var e,r,n,o,i;return Z(this,(function(a){switch(a.label){case 0:if(!this._qr)throw"QR code is empty";return e="png",r="qr","string"==typeof t?(e=t,console.warn("Extension is deprecated as argument for 'download' method, please pass object { name: '...', extension: '...' } as argument")):"object"==typeof t&&null!==t&&(t.name&&(r=t.name),t.extension&&(e=t.extension)),[4,this._getQRStylingElement(e)];case 1:return n=a.sent(),"svg"===e.toLowerCase()?(o=new XMLSerializer,i='\r\n'+(i=o.serializeToString(n.getElement())),s("data:image/svg+xml;charset=utf-8,"+encodeURIComponent(i),r+".svg")):s(n.getCanvas().toDataURL("image/"+e),r+"."+e),[2]}}))}))},t}()}},e={};function r(n){if(e[n])return e[n].exports;var o=e[n]={exports:{}};return t[n](o,o.exports,r),o.exports}return r.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return r.d(e,{a:e}),e},r.d=(t,e)=>{for(var n in e)r.o(e,n)&&!r.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},r.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r(796)})().default})); //# sourceMappingURL=qr-code-styling.js.map \ No newline at end of file diff --git a/lib/qr-code-styling.js.map b/lib/qr-code-styling.js.map index d6aa0a8a..72b35e74 100644 --- a/lib/qr-code-styling.js.map +++ b/lib/qr-code-styling.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://QRCodeStyling/webpack/universalModuleDefinition","webpack://QRCodeStyling/./node_modules/qrcode-generator/qrcode.js","webpack://QRCodeStyling/./src/tools/merge.ts","webpack://QRCodeStyling/./src/tools/downloadURI.ts","webpack://QRCodeStyling/./src/tools/calculateImageSize.ts","webpack://QRCodeStyling/./src/constants/errorCorrectionPercents.ts","webpack://QRCodeStyling/./src/constants/dotTypes.ts","webpack://QRCodeStyling/./src/figures/dot/canvas/QRDot.ts","webpack://QRCodeStyling/./src/constants/cornerSquareTypes.ts","webpack://QRCodeStyling/./src/figures/cornerSquare/canvas/QRCornerSquare.ts","webpack://QRCodeStyling/./src/constants/cornerDotTypes.ts","webpack://QRCodeStyling/./src/figures/cornerDot/canvas/QRCornerDot.ts","webpack://QRCodeStyling/./src/constants/gradientTypes.ts","webpack://QRCodeStyling/./src/core/QRCanvas.ts","webpack://QRCodeStyling/./src/figures/dot/svg/QRDot.ts","webpack://QRCodeStyling/./src/figures/cornerSquare/svg/QRCornerSquare.ts","webpack://QRCodeStyling/./src/figures/cornerDot/svg/QRCornerDot.ts","webpack://QRCodeStyling/./src/core/QRSVG.ts","webpack://QRCodeStyling/./src/constants/drawTypes.ts","webpack://QRCodeStyling/./src/constants/qrTypes.ts","webpack://QRCodeStyling/./src/core/QROptions.ts","webpack://QRCodeStyling/./src/constants/errorCorrectionLevels.ts","webpack://QRCodeStyling/./src/tools/sanitizeOptions.ts","webpack://QRCodeStyling/./src/index.ts","webpack://QRCodeStyling/./src/core/QRCodeStyling.ts","webpack://QRCodeStyling/./src/tools/getMode.ts","webpack://QRCodeStyling/./src/constants/modes.ts","webpack://QRCodeStyling/webpack/bootstrap","webpack://QRCodeStyling/webpack/startup","webpack://QRCodeStyling/webpack/runtime/compat get default export","webpack://QRCodeStyling/webpack/runtime/define property getters","webpack://QRCodeStyling/webpack/runtime/hasOwnProperty shorthand"],"names":["root","factory","exports","module","define","amd","self","qrcode","typeNumber","errorCorrectionLevel","_typeNumber","_errorCorrectionLevel","QRErrorCorrectionLevel","_modules","_moduleCount","_dataCache","_dataList","_this","makeImpl","test","maskPattern","moduleCount","modules","Array","row","col","setupPositionProbePattern","setupPositionAdjustPattern","setupTimingPattern","setupTypeInfo","setupTypeNumber","createData","mapData","r","c","pos","QRUtil","getPatternPosition","i","length","j","bits","getBCHTypeNumber","mod","Math","floor","data","getBCHTypeInfo","inc","bitIndex","byteIndex","maskFunc","getMaskFunction","dark","dataList","rsBlocks","QRRSBlock","getRSBlocks","buffer","qrBitBuffer","put","getMode","getLength","getLengthInBits","write","totalDataCount","dataCount","putBit","offset","maxDcCount","maxEcCount","dcdata","ecdata","dcCount","ecCount","totalCount","max","getBuffer","rsPoly","getErrorCorrectPolynomial","modPoly","qrPolynomial","modIndex","getAt","totalCodeCount","index","createBytes","addData","mode","newData","qrNumber","qrAlphaNum","qr8BitByte","qrKanji","push","isDark","getModuleCount","make","minLostPoint","pattern","lostPoint","getLostPoint","getBestMaskPattern","createTableTag","cellSize","margin","qrHtml","createSvgTag","alt","title","opts","arguments","text","id","mr","rect","size","qrSvg","scalable","escapeXml","join","trim","createDataURL","min","x","y","createImgTag","img","s","escaped","charAt","createASCII","r1","r2","p","blocks","blocksLastLineNoMargin","ascii","substring","_createHalfASCII","white","black","line","renderTo2dContext","context","fillStyle","fillRect","stringToBytes","stringToBytesFuncs","bytes","charCodeAt","createStringToBytes","unicodeData","numChars","unicodeMap","bin","base64DecodeInputStream","read","b","count","b0","b1","v","String","fromCharCode","unknownChar","PATTERN_POSITION_TABLE","G15","G18","getBCHDigit","L","M","Q","H","digit","d","errorCorrectLength","a","multiply","QRMath","gexp","type","sameCount","darkCount","abs","EXP_TABLE","LOG_TABLE","n","num","shift","_num","e","glog","ratio","RS_BLOCK_TABLE","qrRSBlock","rsBlock","getRsBlockTable","list","_buffer","_length","bufIndex","bit","_data","strToNum","chatToNum","getCode","_bytes","code","byteArrayOutputStream","writeByte","off","len","str","_str","_pos","_buflen","match","decode","width","height","getPixel","gif","_width","_height","pixel","out","writeString","writeShort","raster","getLZWRaster","writeBytes","lzwMinCodeSize","clearCode","endCode","bitLength","table","lzwTable","add","_out","_bitLength","_bitBuffer","byteOut","bitOut","dataIndex","contains","indexOf","flush","toByteArray","_map","_size","key","gifImage","setPixel","base64","_base64","writeEncoded","encode","padlen","toString","base64EncodeOutputStream","utf8","charcode","toUTF8Array","isObject","obj","isArray","mergeDeep","target","sources","source","undefined","Object","keys","forEach","targetValue","sourceValue","assign","downloadURI","uri","name","link","document","createElement","download","href","body","appendChild","click","removeChild","calculateImageSize","originalHeight","originalWidth","maxHiddenDots","maxHiddenAxisDots","dotSize","hideDots","imageSize","hideYDots","hideXDots","k","sqrt","ceil","round","this","_context","_type","draw","getNeighbor","drawFunction","dotTypes","_drawDot","_drawClassy","_drawClassyRounded","_drawRounded","_drawExtraRounded","_drawSquare","call","_rotateFigure","rotation","cx","cy","translate","rotate","closePath","_basicDot","args","arc","PI","_basicSquare","_basicSideRounded","lineTo","_basicCornerRounded","_basicCornerExtraRounded","_basicCornersRounded","_basicCornersExtraRounded","leftNeighbor","rightNeighbor","topNeighbor","bottomNeighbor","neighborsCount","cornerSquareTypes","_basicExtraRounded","cornerDotTypes","squareMask","dotMask","options","_canvas","_options","getContext","getCanvas","clear","canvasContext","clearRect","drawQR","qr","minSize","drawImageSize","_qr","image","loadImage","_image","imageOptions","qrOptions","coverLevel","errorCorrectionPercents","drawBackground","drawDots","hideBackgroundDots","drawCorners","drawImage","backgroundOptions","gradient","gradientOptions","_createGradient","additionalRotation","colorStops","color","addColorStop","filter","xBeginning","yBeginning","dot","dotsOptions","beginPath","xOffset","yOffset","strokeStyle","fill","cornersSquareSize","cornersDotSize","column","cornersSquareOptions","cornersSquare","cornersDotOptions","cornersDot","Promise","resolve","reject","Image","crossOrigin","onload","src","dx","dy","dw","dh","gradientTypes","createRadialGradient","positiveRotation","x0","y0","x1","y1","tan","createLinearGradient","svg","_svg","_element","setAttribute","createElementNS","_defs","_style","getElement","oldElement","cloneNode","parentNode","replaceChild","element","_createColor","_createStyle","_dotsClipPath","_dots","cornersSquareClipPath","cornersDotClipPath","_cornersSquareClipPath","_cornersDotClipPath","_cornerSquares","_cornerDots","stop","innerHTML","qrTypes","drawTypes","sanitizeGradient","newGradient","Number","map","colorStop","sanitizeOptions","newOptions","Boolean","update","_clearContainer","container","_getQRStylingElement","extension","toLowerCase","promise","_svgDrawingPromise","canvas","_canvasDrawingPromise","QRCodeStyling","_container","append","getRawData","serializer","XMLSerializer","serializeToString","Blob","toBlob","downloadOptions","console","warn","encodeURIComponent","toDataURL","__webpack_module_cache__","__webpack_require__","moduleId","__webpack_modules__","getter","__esModule","definition","o","defineProperty","enumerable","get","prop","prototype","hasOwnProperty"],"mappings":"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","file":"qr-code-styling.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"QRCodeStyling\"] = factory();\n\telse\n\t\troot[\"QRCodeStyling\"] = factory();\n})(self, function() {\nreturn ","//---------------------------------------------------------------------\n//\n// QR Code Generator for JavaScript\n//\n// Copyright (c) 2009 Kazuhiko Arase\n//\n// URL: http://www.d-project.com/\n//\n// Licensed under the MIT license:\n// http://www.opensource.org/licenses/mit-license.php\n//\n// The word 'QR Code' is registered trademark of\n// DENSO WAVE INCORPORATED\n// http://www.denso-wave.com/qrcode/faqpatent-e.html\n//\n//---------------------------------------------------------------------\n\nvar qrcode = function() {\n\n //---------------------------------------------------------------------\n // qrcode\n //---------------------------------------------------------------------\n\n /**\n * qrcode\n * @param typeNumber 1 to 40\n * @param errorCorrectionLevel 'L','M','Q','H'\n */\n var qrcode = function(typeNumber, errorCorrectionLevel) {\n\n var PAD0 = 0xEC;\n var PAD1 = 0x11;\n\n var _typeNumber = typeNumber;\n var _errorCorrectionLevel = QRErrorCorrectionLevel[errorCorrectionLevel];\n var _modules = null;\n var _moduleCount = 0;\n var _dataCache = null;\n var _dataList = [];\n\n var _this = {};\n\n var makeImpl = function(test, maskPattern) {\n\n _moduleCount = _typeNumber * 4 + 17;\n _modules = function(moduleCount) {\n var modules = new Array(moduleCount);\n for (var row = 0; row < moduleCount; row += 1) {\n modules[row] = new Array(moduleCount);\n for (var col = 0; col < moduleCount; col += 1) {\n modules[row][col] = null;\n }\n }\n return modules;\n }(_moduleCount);\n\n setupPositionProbePattern(0, 0);\n setupPositionProbePattern(_moduleCount - 7, 0);\n setupPositionProbePattern(0, _moduleCount - 7);\n setupPositionAdjustPattern();\n setupTimingPattern();\n setupTypeInfo(test, maskPattern);\n\n if (_typeNumber >= 7) {\n setupTypeNumber(test);\n }\n\n if (_dataCache == null) {\n _dataCache = createData(_typeNumber, _errorCorrectionLevel, _dataList);\n }\n\n mapData(_dataCache, maskPattern);\n };\n\n var setupPositionProbePattern = function(row, col) {\n\n for (var r = -1; r <= 7; r += 1) {\n\n if (row + r <= -1 || _moduleCount <= row + r) continue;\n\n for (var c = -1; c <= 7; c += 1) {\n\n if (col + c <= -1 || _moduleCount <= col + c) continue;\n\n if ( (0 <= r && r <= 6 && (c == 0 || c == 6) )\n || (0 <= c && c <= 6 && (r == 0 || r == 6) )\n || (2 <= r && r <= 4 && 2 <= c && c <= 4) ) {\n _modules[row + r][col + c] = true;\n } else {\n _modules[row + r][col + c] = false;\n }\n }\n }\n };\n\n var getBestMaskPattern = function() {\n\n var minLostPoint = 0;\n var pattern = 0;\n\n for (var i = 0; i < 8; i += 1) {\n\n makeImpl(true, i);\n\n var lostPoint = QRUtil.getLostPoint(_this);\n\n if (i == 0 || minLostPoint > lostPoint) {\n minLostPoint = lostPoint;\n pattern = i;\n }\n }\n\n return pattern;\n };\n\n var setupTimingPattern = function() {\n\n for (var r = 8; r < _moduleCount - 8; r += 1) {\n if (_modules[r][6] != null) {\n continue;\n }\n _modules[r][6] = (r % 2 == 0);\n }\n\n for (var c = 8; c < _moduleCount - 8; c += 1) {\n if (_modules[6][c] != null) {\n continue;\n }\n _modules[6][c] = (c % 2 == 0);\n }\n };\n\n var setupPositionAdjustPattern = function() {\n\n var pos = QRUtil.getPatternPosition(_typeNumber);\n\n for (var i = 0; i < pos.length; i += 1) {\n\n for (var j = 0; j < pos.length; j += 1) {\n\n var row = pos[i];\n var col = pos[j];\n\n if (_modules[row][col] != null) {\n continue;\n }\n\n for (var r = -2; r <= 2; r += 1) {\n\n for (var c = -2; c <= 2; c += 1) {\n\n if (r == -2 || r == 2 || c == -2 || c == 2\n || (r == 0 && c == 0) ) {\n _modules[row + r][col + c] = true;\n } else {\n _modules[row + r][col + c] = false;\n }\n }\n }\n }\n }\n };\n\n var setupTypeNumber = function(test) {\n\n var bits = QRUtil.getBCHTypeNumber(_typeNumber);\n\n for (var i = 0; i < 18; i += 1) {\n var mod = (!test && ( (bits >> i) & 1) == 1);\n _modules[Math.floor(i / 3)][i % 3 + _moduleCount - 8 - 3] = mod;\n }\n\n for (var i = 0; i < 18; i += 1) {\n var mod = (!test && ( (bits >> i) & 1) == 1);\n _modules[i % 3 + _moduleCount - 8 - 3][Math.floor(i / 3)] = mod;\n }\n };\n\n var setupTypeInfo = function(test, maskPattern) {\n\n var data = (_errorCorrectionLevel << 3) | maskPattern;\n var bits = QRUtil.getBCHTypeInfo(data);\n\n // vertical\n for (var i = 0; i < 15; i += 1) {\n\n var mod = (!test && ( (bits >> i) & 1) == 1);\n\n if (i < 6) {\n _modules[i][8] = mod;\n } else if (i < 8) {\n _modules[i + 1][8] = mod;\n } else {\n _modules[_moduleCount - 15 + i][8] = mod;\n }\n }\n\n // horizontal\n for (var i = 0; i < 15; i += 1) {\n\n var mod = (!test && ( (bits >> i) & 1) == 1);\n\n if (i < 8) {\n _modules[8][_moduleCount - i - 1] = mod;\n } else if (i < 9) {\n _modules[8][15 - i - 1 + 1] = mod;\n } else {\n _modules[8][15 - i - 1] = mod;\n }\n }\n\n // fixed module\n _modules[_moduleCount - 8][8] = (!test);\n };\n\n var mapData = function(data, maskPattern) {\n\n var inc = -1;\n var row = _moduleCount - 1;\n var bitIndex = 7;\n var byteIndex = 0;\n var maskFunc = QRUtil.getMaskFunction(maskPattern);\n\n for (var col = _moduleCount - 1; col > 0; col -= 2) {\n\n if (col == 6) col -= 1;\n\n while (true) {\n\n for (var c = 0; c < 2; c += 1) {\n\n if (_modules[row][col - c] == null) {\n\n var dark = false;\n\n if (byteIndex < data.length) {\n dark = ( ( (data[byteIndex] >>> bitIndex) & 1) == 1);\n }\n\n var mask = maskFunc(row, col - c);\n\n if (mask) {\n dark = !dark;\n }\n\n _modules[row][col - c] = dark;\n bitIndex -= 1;\n\n if (bitIndex == -1) {\n byteIndex += 1;\n bitIndex = 7;\n }\n }\n }\n\n row += inc;\n\n if (row < 0 || _moduleCount <= row) {\n row -= inc;\n inc = -inc;\n break;\n }\n }\n }\n };\n\n var createBytes = function(buffer, rsBlocks) {\n\n var offset = 0;\n\n var maxDcCount = 0;\n var maxEcCount = 0;\n\n var dcdata = new Array(rsBlocks.length);\n var ecdata = new Array(rsBlocks.length);\n\n for (var r = 0; r < rsBlocks.length; r += 1) {\n\n var dcCount = rsBlocks[r].dataCount;\n var ecCount = rsBlocks[r].totalCount - dcCount;\n\n maxDcCount = Math.max(maxDcCount, dcCount);\n maxEcCount = Math.max(maxEcCount, ecCount);\n\n dcdata[r] = new Array(dcCount);\n\n for (var i = 0; i < dcdata[r].length; i += 1) {\n dcdata[r][i] = 0xff & buffer.getBuffer()[i + offset];\n }\n offset += dcCount;\n\n var rsPoly = QRUtil.getErrorCorrectPolynomial(ecCount);\n var rawPoly = qrPolynomial(dcdata[r], rsPoly.getLength() - 1);\n\n var modPoly = rawPoly.mod(rsPoly);\n ecdata[r] = new Array(rsPoly.getLength() - 1);\n for (var i = 0; i < ecdata[r].length; i += 1) {\n var modIndex = i + modPoly.getLength() - ecdata[r].length;\n ecdata[r][i] = (modIndex >= 0)? modPoly.getAt(modIndex) : 0;\n }\n }\n\n var totalCodeCount = 0;\n for (var i = 0; i < rsBlocks.length; i += 1) {\n totalCodeCount += rsBlocks[i].totalCount;\n }\n\n var data = new Array(totalCodeCount);\n var index = 0;\n\n for (var i = 0; i < maxDcCount; i += 1) {\n for (var r = 0; r < rsBlocks.length; r += 1) {\n if (i < dcdata[r].length) {\n data[index] = dcdata[r][i];\n index += 1;\n }\n }\n }\n\n for (var i = 0; i < maxEcCount; i += 1) {\n for (var r = 0; r < rsBlocks.length; r += 1) {\n if (i < ecdata[r].length) {\n data[index] = ecdata[r][i];\n index += 1;\n }\n }\n }\n\n return data;\n };\n\n var createData = function(typeNumber, errorCorrectionLevel, dataList) {\n\n var rsBlocks = QRRSBlock.getRSBlocks(typeNumber, errorCorrectionLevel);\n\n var buffer = qrBitBuffer();\n\n for (var i = 0; i < dataList.length; i += 1) {\n var data = dataList[i];\n buffer.put(data.getMode(), 4);\n buffer.put(data.getLength(), QRUtil.getLengthInBits(data.getMode(), typeNumber) );\n data.write(buffer);\n }\n\n // calc num max data.\n var totalDataCount = 0;\n for (var i = 0; i < rsBlocks.length; i += 1) {\n totalDataCount += rsBlocks[i].dataCount;\n }\n\n if (buffer.getLengthInBits() > totalDataCount * 8) {\n throw 'code length overflow. ('\n + buffer.getLengthInBits()\n + '>'\n + totalDataCount * 8\n + ')';\n }\n\n // end code\n if (buffer.getLengthInBits() + 4 <= totalDataCount * 8) {\n buffer.put(0, 4);\n }\n\n // padding\n while (buffer.getLengthInBits() % 8 != 0) {\n buffer.putBit(false);\n }\n\n // padding\n while (true) {\n\n if (buffer.getLengthInBits() >= totalDataCount * 8) {\n break;\n }\n buffer.put(PAD0, 8);\n\n if (buffer.getLengthInBits() >= totalDataCount * 8) {\n break;\n }\n buffer.put(PAD1, 8);\n }\n\n return createBytes(buffer, rsBlocks);\n };\n\n _this.addData = function(data, mode) {\n\n mode = mode || 'Byte';\n\n var newData = null;\n\n switch(mode) {\n case 'Numeric' :\n newData = qrNumber(data);\n break;\n case 'Alphanumeric' :\n newData = qrAlphaNum(data);\n break;\n case 'Byte' :\n newData = qr8BitByte(data);\n break;\n case 'Kanji' :\n newData = qrKanji(data);\n break;\n default :\n throw 'mode:' + mode;\n }\n\n _dataList.push(newData);\n _dataCache = null;\n };\n\n _this.isDark = function(row, col) {\n if (row < 0 || _moduleCount <= row || col < 0 || _moduleCount <= col) {\n throw row + ',' + col;\n }\n return _modules[row][col];\n };\n\n _this.getModuleCount = function() {\n return _moduleCount;\n };\n\n _this.make = function() {\n if (_typeNumber < 1) {\n var typeNumber = 1;\n\n for (; typeNumber < 40; typeNumber++) {\n var rsBlocks = QRRSBlock.getRSBlocks(typeNumber, _errorCorrectionLevel);\n var buffer = qrBitBuffer();\n\n for (var i = 0; i < _dataList.length; i++) {\n var data = _dataList[i];\n buffer.put(data.getMode(), 4);\n buffer.put(data.getLength(), QRUtil.getLengthInBits(data.getMode(), typeNumber) );\n data.write(buffer);\n }\n\n var totalDataCount = 0;\n for (var i = 0; i < rsBlocks.length; i++) {\n totalDataCount += rsBlocks[i].dataCount;\n }\n\n if (buffer.getLengthInBits() <= totalDataCount * 8) {\n break;\n }\n }\n\n _typeNumber = typeNumber;\n }\n\n makeImpl(false, getBestMaskPattern() );\n };\n\n _this.createTableTag = function(cellSize, margin) {\n\n cellSize = cellSize || 2;\n margin = (typeof margin == 'undefined')? cellSize * 4 : margin;\n\n var qrHtml = '';\n\n qrHtml += '' +\n escapeXml(title.text) + '' : '';\n qrSvg += (alt.text) ? '' +\n escapeXml(alt.text) + '' : '';\n qrSvg += '';\n qrSvg += '': escaped += '>'; break;\n case '&': escaped += '&'; break;\n case '\"': escaped += '"'; break;\n default : escaped += c; break;\n }\n }\n return escaped;\n };\n\n var _createHalfASCII = function(margin) {\n var cellSize = 1;\n margin = (typeof margin == 'undefined')? cellSize * 2 : margin;\n\n var size = _this.getModuleCount() * cellSize + margin * 2;\n var min = margin;\n var max = size - margin;\n\n var y, x, r1, r2, p;\n\n var blocks = {\n '██': '█',\n '█ ': '▀',\n ' █': '▄',\n ' ': ' '\n };\n\n var blocksLastLineNoMargin = {\n '██': '▀',\n '█ ': '▀',\n ' █': ' ',\n ' ': ' '\n };\n\n var ascii = '';\n for (y = 0; y < size; y += 2) {\n r1 = Math.floor((y - min) / cellSize);\n r2 = Math.floor((y + 1 - min) / cellSize);\n for (x = 0; x < size; x += 1) {\n p = '█';\n\n if (min <= x && x < max && min <= y && y < max && _this.isDark(r1, Math.floor((x - min) / cellSize))) {\n p = ' ';\n }\n\n if (min <= x && x < max && min <= y+1 && y+1 < max && _this.isDark(r2, Math.floor((x - min) / cellSize))) {\n p += ' ';\n }\n else {\n p += '█';\n }\n\n // Output 2 characters per pixel, to create full square. 1 character per pixels gives only half width of square.\n ascii += (margin < 1 && y+1 >= max) ? blocksLastLineNoMargin[p] : blocks[p];\n }\n\n ascii += '\\n';\n }\n\n if (size % 2 && margin > 0) {\n return ascii.substring(0, ascii.length - size - 1) + Array(size+1).join('▀');\n }\n\n return ascii.substring(0, ascii.length-1);\n };\n\n _this.createASCII = function(cellSize, margin) {\n cellSize = cellSize || 1;\n\n if (cellSize < 2) {\n return _createHalfASCII(margin);\n }\n\n cellSize -= 1;\n margin = (typeof margin == 'undefined')? cellSize * 2 : margin;\n\n var size = _this.getModuleCount() * cellSize + margin * 2;\n var min = margin;\n var max = size - margin;\n\n var y, x, r, p;\n\n var white = Array(cellSize+1).join('██');\n var black = Array(cellSize+1).join(' ');\n\n var ascii = '';\n var line = '';\n for (y = 0; y < size; y += 1) {\n r = Math.floor( (y - min) / cellSize);\n line = '';\n for (x = 0; x < size; x += 1) {\n p = 1;\n\n if (min <= x && x < max && min <= y && y < max && _this.isDark(r, Math.floor((x - min) / cellSize))) {\n p = 0;\n }\n\n // Output 2 characters per pixel, to create full square. 1 character per pixels gives only half width of square.\n line += p ? white : black;\n }\n\n for (r = 0; r < cellSize; r += 1) {\n ascii += line + '\\n';\n }\n }\n\n return ascii.substring(0, ascii.length-1);\n };\n\n _this.renderTo2dContext = function(context, cellSize) {\n cellSize = cellSize || 2;\n var length = _this.getModuleCount();\n for (var row = 0; row < length; row++) {\n for (var col = 0; col < length; col++) {\n context.fillStyle = _this.isDark(row, col) ? 'black' : 'white';\n context.fillRect(row * cellSize, col * cellSize, cellSize, cellSize);\n }\n }\n }\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qrcode.stringToBytes\n //---------------------------------------------------------------------\n\n qrcode.stringToBytesFuncs = {\n 'default' : function(s) {\n var bytes = [];\n for (var i = 0; i < s.length; i += 1) {\n var c = s.charCodeAt(i);\n bytes.push(c & 0xff);\n }\n return bytes;\n }\n };\n\n qrcode.stringToBytes = qrcode.stringToBytesFuncs['default'];\n\n //---------------------------------------------------------------------\n // qrcode.createStringToBytes\n //---------------------------------------------------------------------\n\n /**\n * @param unicodeData base64 string of byte array.\n * [16bit Unicode],[16bit Bytes], ...\n * @param numChars\n */\n qrcode.createStringToBytes = function(unicodeData, numChars) {\n\n // create conversion map.\n\n var unicodeMap = function() {\n\n var bin = base64DecodeInputStream(unicodeData);\n var read = function() {\n var b = bin.read();\n if (b == -1) throw 'eof';\n return b;\n };\n\n var count = 0;\n var unicodeMap = {};\n while (true) {\n var b0 = bin.read();\n if (b0 == -1) break;\n var b1 = read();\n var b2 = read();\n var b3 = read();\n var k = String.fromCharCode( (b0 << 8) | b1);\n var v = (b2 << 8) | b3;\n unicodeMap[k] = v;\n count += 1;\n }\n if (count != numChars) {\n throw count + ' != ' + numChars;\n }\n\n return unicodeMap;\n }();\n\n var unknownChar = '?'.charCodeAt(0);\n\n return function(s) {\n var bytes = [];\n for (var i = 0; i < s.length; i += 1) {\n var c = s.charCodeAt(i);\n if (c < 128) {\n bytes.push(c);\n } else {\n var b = unicodeMap[s.charAt(i)];\n if (typeof b == 'number') {\n if ( (b & 0xff) == b) {\n // 1byte\n bytes.push(b);\n } else {\n // 2bytes\n bytes.push(b >>> 8);\n bytes.push(b & 0xff);\n }\n } else {\n bytes.push(unknownChar);\n }\n }\n }\n return bytes;\n };\n };\n\n //---------------------------------------------------------------------\n // QRMode\n //---------------------------------------------------------------------\n\n var QRMode = {\n MODE_NUMBER : 1 << 0,\n MODE_ALPHA_NUM : 1 << 1,\n MODE_8BIT_BYTE : 1 << 2,\n MODE_KANJI : 1 << 3\n };\n\n //---------------------------------------------------------------------\n // QRErrorCorrectionLevel\n //---------------------------------------------------------------------\n\n var QRErrorCorrectionLevel = {\n L : 1,\n M : 0,\n Q : 3,\n H : 2\n };\n\n //---------------------------------------------------------------------\n // QRMaskPattern\n //---------------------------------------------------------------------\n\n var QRMaskPattern = {\n PATTERN000 : 0,\n PATTERN001 : 1,\n PATTERN010 : 2,\n PATTERN011 : 3,\n PATTERN100 : 4,\n PATTERN101 : 5,\n PATTERN110 : 6,\n PATTERN111 : 7\n };\n\n //---------------------------------------------------------------------\n // QRUtil\n //---------------------------------------------------------------------\n\n var QRUtil = function() {\n\n var PATTERN_POSITION_TABLE = [\n [],\n [6, 18],\n [6, 22],\n [6, 26],\n [6, 30],\n [6, 34],\n [6, 22, 38],\n [6, 24, 42],\n [6, 26, 46],\n [6, 28, 50],\n [6, 30, 54],\n [6, 32, 58],\n [6, 34, 62],\n [6, 26, 46, 66],\n [6, 26, 48, 70],\n [6, 26, 50, 74],\n [6, 30, 54, 78],\n [6, 30, 56, 82],\n [6, 30, 58, 86],\n [6, 34, 62, 90],\n [6, 28, 50, 72, 94],\n [6, 26, 50, 74, 98],\n [6, 30, 54, 78, 102],\n [6, 28, 54, 80, 106],\n [6, 32, 58, 84, 110],\n [6, 30, 58, 86, 114],\n [6, 34, 62, 90, 118],\n [6, 26, 50, 74, 98, 122],\n [6, 30, 54, 78, 102, 126],\n [6, 26, 52, 78, 104, 130],\n [6, 30, 56, 82, 108, 134],\n [6, 34, 60, 86, 112, 138],\n [6, 30, 58, 86, 114, 142],\n [6, 34, 62, 90, 118, 146],\n [6, 30, 54, 78, 102, 126, 150],\n [6, 24, 50, 76, 102, 128, 154],\n [6, 28, 54, 80, 106, 132, 158],\n [6, 32, 58, 84, 110, 136, 162],\n [6, 26, 54, 82, 110, 138, 166],\n [6, 30, 58, 86, 114, 142, 170]\n ];\n var G15 = (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0);\n var G18 = (1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | (1 << 2) | (1 << 0);\n var G15_MASK = (1 << 14) | (1 << 12) | (1 << 10) | (1 << 4) | (1 << 1);\n\n var _this = {};\n\n var getBCHDigit = function(data) {\n var digit = 0;\n while (data != 0) {\n digit += 1;\n data >>>= 1;\n }\n return digit;\n };\n\n _this.getBCHTypeInfo = function(data) {\n var d = data << 10;\n while (getBCHDigit(d) - getBCHDigit(G15) >= 0) {\n d ^= (G15 << (getBCHDigit(d) - getBCHDigit(G15) ) );\n }\n return ( (data << 10) | d) ^ G15_MASK;\n };\n\n _this.getBCHTypeNumber = function(data) {\n var d = data << 12;\n while (getBCHDigit(d) - getBCHDigit(G18) >= 0) {\n d ^= (G18 << (getBCHDigit(d) - getBCHDigit(G18) ) );\n }\n return (data << 12) | d;\n };\n\n _this.getPatternPosition = function(typeNumber) {\n return PATTERN_POSITION_TABLE[typeNumber - 1];\n };\n\n _this.getMaskFunction = function(maskPattern) {\n\n switch (maskPattern) {\n\n case QRMaskPattern.PATTERN000 :\n return function(i, j) { return (i + j) % 2 == 0; };\n case QRMaskPattern.PATTERN001 :\n return function(i, j) { return i % 2 == 0; };\n case QRMaskPattern.PATTERN010 :\n return function(i, j) { return j % 3 == 0; };\n case QRMaskPattern.PATTERN011 :\n return function(i, j) { return (i + j) % 3 == 0; };\n case QRMaskPattern.PATTERN100 :\n return function(i, j) { return (Math.floor(i / 2) + Math.floor(j / 3) ) % 2 == 0; };\n case QRMaskPattern.PATTERN101 :\n return function(i, j) { return (i * j) % 2 + (i * j) % 3 == 0; };\n case QRMaskPattern.PATTERN110 :\n return function(i, j) { return ( (i * j) % 2 + (i * j) % 3) % 2 == 0; };\n case QRMaskPattern.PATTERN111 :\n return function(i, j) { return ( (i * j) % 3 + (i + j) % 2) % 2 == 0; };\n\n default :\n throw 'bad maskPattern:' + maskPattern;\n }\n };\n\n _this.getErrorCorrectPolynomial = function(errorCorrectLength) {\n var a = qrPolynomial([1], 0);\n for (var i = 0; i < errorCorrectLength; i += 1) {\n a = a.multiply(qrPolynomial([1, QRMath.gexp(i)], 0) );\n }\n return a;\n };\n\n _this.getLengthInBits = function(mode, type) {\n\n if (1 <= type && type < 10) {\n\n // 1 - 9\n\n switch(mode) {\n case QRMode.MODE_NUMBER : return 10;\n case QRMode.MODE_ALPHA_NUM : return 9;\n case QRMode.MODE_8BIT_BYTE : return 8;\n case QRMode.MODE_KANJI : return 8;\n default :\n throw 'mode:' + mode;\n }\n\n } else if (type < 27) {\n\n // 10 - 26\n\n switch(mode) {\n case QRMode.MODE_NUMBER : return 12;\n case QRMode.MODE_ALPHA_NUM : return 11;\n case QRMode.MODE_8BIT_BYTE : return 16;\n case QRMode.MODE_KANJI : return 10;\n default :\n throw 'mode:' + mode;\n }\n\n } else if (type < 41) {\n\n // 27 - 40\n\n switch(mode) {\n case QRMode.MODE_NUMBER : return 14;\n case QRMode.MODE_ALPHA_NUM : return 13;\n case QRMode.MODE_8BIT_BYTE : return 16;\n case QRMode.MODE_KANJI : return 12;\n default :\n throw 'mode:' + mode;\n }\n\n } else {\n throw 'type:' + type;\n }\n };\n\n _this.getLostPoint = function(qrcode) {\n\n var moduleCount = qrcode.getModuleCount();\n\n var lostPoint = 0;\n\n // LEVEL1\n\n for (var row = 0; row < moduleCount; row += 1) {\n for (var col = 0; col < moduleCount; col += 1) {\n\n var sameCount = 0;\n var dark = qrcode.isDark(row, col);\n\n for (var r = -1; r <= 1; r += 1) {\n\n if (row + r < 0 || moduleCount <= row + r) {\n continue;\n }\n\n for (var c = -1; c <= 1; c += 1) {\n\n if (col + c < 0 || moduleCount <= col + c) {\n continue;\n }\n\n if (r == 0 && c == 0) {\n continue;\n }\n\n if (dark == qrcode.isDark(row + r, col + c) ) {\n sameCount += 1;\n }\n }\n }\n\n if (sameCount > 5) {\n lostPoint += (3 + sameCount - 5);\n }\n }\n };\n\n // LEVEL2\n\n for (var row = 0; row < moduleCount - 1; row += 1) {\n for (var col = 0; col < moduleCount - 1; col += 1) {\n var count = 0;\n if (qrcode.isDark(row, col) ) count += 1;\n if (qrcode.isDark(row + 1, col) ) count += 1;\n if (qrcode.isDark(row, col + 1) ) count += 1;\n if (qrcode.isDark(row + 1, col + 1) ) count += 1;\n if (count == 0 || count == 4) {\n lostPoint += 3;\n }\n }\n }\n\n // LEVEL3\n\n for (var row = 0; row < moduleCount; row += 1) {\n for (var col = 0; col < moduleCount - 6; col += 1) {\n if (qrcode.isDark(row, col)\n && !qrcode.isDark(row, col + 1)\n && qrcode.isDark(row, col + 2)\n && qrcode.isDark(row, col + 3)\n && qrcode.isDark(row, col + 4)\n && !qrcode.isDark(row, col + 5)\n && qrcode.isDark(row, col + 6) ) {\n lostPoint += 40;\n }\n }\n }\n\n for (var col = 0; col < moduleCount; col += 1) {\n for (var row = 0; row < moduleCount - 6; row += 1) {\n if (qrcode.isDark(row, col)\n && !qrcode.isDark(row + 1, col)\n && qrcode.isDark(row + 2, col)\n && qrcode.isDark(row + 3, col)\n && qrcode.isDark(row + 4, col)\n && !qrcode.isDark(row + 5, col)\n && qrcode.isDark(row + 6, col) ) {\n lostPoint += 40;\n }\n }\n }\n\n // LEVEL4\n\n var darkCount = 0;\n\n for (var col = 0; col < moduleCount; col += 1) {\n for (var row = 0; row < moduleCount; row += 1) {\n if (qrcode.isDark(row, col) ) {\n darkCount += 1;\n }\n }\n }\n\n var ratio = Math.abs(100 * darkCount / moduleCount / moduleCount - 50) / 5;\n lostPoint += ratio * 10;\n\n return lostPoint;\n };\n\n return _this;\n }();\n\n //---------------------------------------------------------------------\n // QRMath\n //---------------------------------------------------------------------\n\n var QRMath = function() {\n\n var EXP_TABLE = new Array(256);\n var LOG_TABLE = new Array(256);\n\n // initialize tables\n for (var i = 0; i < 8; i += 1) {\n EXP_TABLE[i] = 1 << i;\n }\n for (var i = 8; i < 256; i += 1) {\n EXP_TABLE[i] = EXP_TABLE[i - 4]\n ^ EXP_TABLE[i - 5]\n ^ EXP_TABLE[i - 6]\n ^ EXP_TABLE[i - 8];\n }\n for (var i = 0; i < 255; i += 1) {\n LOG_TABLE[EXP_TABLE[i] ] = i;\n }\n\n var _this = {};\n\n _this.glog = function(n) {\n\n if (n < 1) {\n throw 'glog(' + n + ')';\n }\n\n return LOG_TABLE[n];\n };\n\n _this.gexp = function(n) {\n\n while (n < 0) {\n n += 255;\n }\n\n while (n >= 256) {\n n -= 255;\n }\n\n return EXP_TABLE[n];\n };\n\n return _this;\n }();\n\n //---------------------------------------------------------------------\n // qrPolynomial\n //---------------------------------------------------------------------\n\n function qrPolynomial(num, shift) {\n\n if (typeof num.length == 'undefined') {\n throw num.length + '/' + shift;\n }\n\n var _num = function() {\n var offset = 0;\n while (offset < num.length && num[offset] == 0) {\n offset += 1;\n }\n var _num = new Array(num.length - offset + shift);\n for (var i = 0; i < num.length - offset; i += 1) {\n _num[i] = num[i + offset];\n }\n return _num;\n }();\n\n var _this = {};\n\n _this.getAt = function(index) {\n return _num[index];\n };\n\n _this.getLength = function() {\n return _num.length;\n };\n\n _this.multiply = function(e) {\n\n var num = new Array(_this.getLength() + e.getLength() - 1);\n\n for (var i = 0; i < _this.getLength(); i += 1) {\n for (var j = 0; j < e.getLength(); j += 1) {\n num[i + j] ^= QRMath.gexp(QRMath.glog(_this.getAt(i) ) + QRMath.glog(e.getAt(j) ) );\n }\n }\n\n return qrPolynomial(num, 0);\n };\n\n _this.mod = function(e) {\n\n if (_this.getLength() - e.getLength() < 0) {\n return _this;\n }\n\n var ratio = QRMath.glog(_this.getAt(0) ) - QRMath.glog(e.getAt(0) );\n\n var num = new Array(_this.getLength() );\n for (var i = 0; i < _this.getLength(); i += 1) {\n num[i] = _this.getAt(i);\n }\n\n for (var i = 0; i < e.getLength(); i += 1) {\n num[i] ^= QRMath.gexp(QRMath.glog(e.getAt(i) ) + ratio);\n }\n\n // recursive call\n return qrPolynomial(num, 0).mod(e);\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // QRRSBlock\n //---------------------------------------------------------------------\n\n var QRRSBlock = function() {\n\n var RS_BLOCK_TABLE = [\n\n // L\n // M\n // Q\n // H\n\n // 1\n [1, 26, 19],\n [1, 26, 16],\n [1, 26, 13],\n [1, 26, 9],\n\n // 2\n [1, 44, 34],\n [1, 44, 28],\n [1, 44, 22],\n [1, 44, 16],\n\n // 3\n [1, 70, 55],\n [1, 70, 44],\n [2, 35, 17],\n [2, 35, 13],\n\n // 4\n [1, 100, 80],\n [2, 50, 32],\n [2, 50, 24],\n [4, 25, 9],\n\n // 5\n [1, 134, 108],\n [2, 67, 43],\n [2, 33, 15, 2, 34, 16],\n [2, 33, 11, 2, 34, 12],\n\n // 6\n [2, 86, 68],\n [4, 43, 27],\n [4, 43, 19],\n [4, 43, 15],\n\n // 7\n [2, 98, 78],\n [4, 49, 31],\n [2, 32, 14, 4, 33, 15],\n [4, 39, 13, 1, 40, 14],\n\n // 8\n [2, 121, 97],\n [2, 60, 38, 2, 61, 39],\n [4, 40, 18, 2, 41, 19],\n [4, 40, 14, 2, 41, 15],\n\n // 9\n [2, 146, 116],\n [3, 58, 36, 2, 59, 37],\n [4, 36, 16, 4, 37, 17],\n [4, 36, 12, 4, 37, 13],\n\n // 10\n [2, 86, 68, 2, 87, 69],\n [4, 69, 43, 1, 70, 44],\n [6, 43, 19, 2, 44, 20],\n [6, 43, 15, 2, 44, 16],\n\n // 11\n [4, 101, 81],\n [1, 80, 50, 4, 81, 51],\n [4, 50, 22, 4, 51, 23],\n [3, 36, 12, 8, 37, 13],\n\n // 12\n [2, 116, 92, 2, 117, 93],\n [6, 58, 36, 2, 59, 37],\n [4, 46, 20, 6, 47, 21],\n [7, 42, 14, 4, 43, 15],\n\n // 13\n [4, 133, 107],\n [8, 59, 37, 1, 60, 38],\n [8, 44, 20, 4, 45, 21],\n [12, 33, 11, 4, 34, 12],\n\n // 14\n [3, 145, 115, 1, 146, 116],\n [4, 64, 40, 5, 65, 41],\n [11, 36, 16, 5, 37, 17],\n [11, 36, 12, 5, 37, 13],\n\n // 15\n [5, 109, 87, 1, 110, 88],\n [5, 65, 41, 5, 66, 42],\n [5, 54, 24, 7, 55, 25],\n [11, 36, 12, 7, 37, 13],\n\n // 16\n [5, 122, 98, 1, 123, 99],\n [7, 73, 45, 3, 74, 46],\n [15, 43, 19, 2, 44, 20],\n [3, 45, 15, 13, 46, 16],\n\n // 17\n [1, 135, 107, 5, 136, 108],\n [10, 74, 46, 1, 75, 47],\n [1, 50, 22, 15, 51, 23],\n [2, 42, 14, 17, 43, 15],\n\n // 18\n [5, 150, 120, 1, 151, 121],\n [9, 69, 43, 4, 70, 44],\n [17, 50, 22, 1, 51, 23],\n [2, 42, 14, 19, 43, 15],\n\n // 19\n [3, 141, 113, 4, 142, 114],\n [3, 70, 44, 11, 71, 45],\n [17, 47, 21, 4, 48, 22],\n [9, 39, 13, 16, 40, 14],\n\n // 20\n [3, 135, 107, 5, 136, 108],\n [3, 67, 41, 13, 68, 42],\n [15, 54, 24, 5, 55, 25],\n [15, 43, 15, 10, 44, 16],\n\n // 21\n [4, 144, 116, 4, 145, 117],\n [17, 68, 42],\n [17, 50, 22, 6, 51, 23],\n [19, 46, 16, 6, 47, 17],\n\n // 22\n [2, 139, 111, 7, 140, 112],\n [17, 74, 46],\n [7, 54, 24, 16, 55, 25],\n [34, 37, 13],\n\n // 23\n [4, 151, 121, 5, 152, 122],\n [4, 75, 47, 14, 76, 48],\n [11, 54, 24, 14, 55, 25],\n [16, 45, 15, 14, 46, 16],\n\n // 24\n [6, 147, 117, 4, 148, 118],\n [6, 73, 45, 14, 74, 46],\n [11, 54, 24, 16, 55, 25],\n [30, 46, 16, 2, 47, 17],\n\n // 25\n [8, 132, 106, 4, 133, 107],\n [8, 75, 47, 13, 76, 48],\n [7, 54, 24, 22, 55, 25],\n [22, 45, 15, 13, 46, 16],\n\n // 26\n [10, 142, 114, 2, 143, 115],\n [19, 74, 46, 4, 75, 47],\n [28, 50, 22, 6, 51, 23],\n [33, 46, 16, 4, 47, 17],\n\n // 27\n [8, 152, 122, 4, 153, 123],\n [22, 73, 45, 3, 74, 46],\n [8, 53, 23, 26, 54, 24],\n [12, 45, 15, 28, 46, 16],\n\n // 28\n [3, 147, 117, 10, 148, 118],\n [3, 73, 45, 23, 74, 46],\n [4, 54, 24, 31, 55, 25],\n [11, 45, 15, 31, 46, 16],\n\n // 29\n [7, 146, 116, 7, 147, 117],\n [21, 73, 45, 7, 74, 46],\n [1, 53, 23, 37, 54, 24],\n [19, 45, 15, 26, 46, 16],\n\n // 30\n [5, 145, 115, 10, 146, 116],\n [19, 75, 47, 10, 76, 48],\n [15, 54, 24, 25, 55, 25],\n [23, 45, 15, 25, 46, 16],\n\n // 31\n [13, 145, 115, 3, 146, 116],\n [2, 74, 46, 29, 75, 47],\n [42, 54, 24, 1, 55, 25],\n [23, 45, 15, 28, 46, 16],\n\n // 32\n [17, 145, 115],\n [10, 74, 46, 23, 75, 47],\n [10, 54, 24, 35, 55, 25],\n [19, 45, 15, 35, 46, 16],\n\n // 33\n [17, 145, 115, 1, 146, 116],\n [14, 74, 46, 21, 75, 47],\n [29, 54, 24, 19, 55, 25],\n [11, 45, 15, 46, 46, 16],\n\n // 34\n [13, 145, 115, 6, 146, 116],\n [14, 74, 46, 23, 75, 47],\n [44, 54, 24, 7, 55, 25],\n [59, 46, 16, 1, 47, 17],\n\n // 35\n [12, 151, 121, 7, 152, 122],\n [12, 75, 47, 26, 76, 48],\n [39, 54, 24, 14, 55, 25],\n [22, 45, 15, 41, 46, 16],\n\n // 36\n [6, 151, 121, 14, 152, 122],\n [6, 75, 47, 34, 76, 48],\n [46, 54, 24, 10, 55, 25],\n [2, 45, 15, 64, 46, 16],\n\n // 37\n [17, 152, 122, 4, 153, 123],\n [29, 74, 46, 14, 75, 47],\n [49, 54, 24, 10, 55, 25],\n [24, 45, 15, 46, 46, 16],\n\n // 38\n [4, 152, 122, 18, 153, 123],\n [13, 74, 46, 32, 75, 47],\n [48, 54, 24, 14, 55, 25],\n [42, 45, 15, 32, 46, 16],\n\n // 39\n [20, 147, 117, 4, 148, 118],\n [40, 75, 47, 7, 76, 48],\n [43, 54, 24, 22, 55, 25],\n [10, 45, 15, 67, 46, 16],\n\n // 40\n [19, 148, 118, 6, 149, 119],\n [18, 75, 47, 31, 76, 48],\n [34, 54, 24, 34, 55, 25],\n [20, 45, 15, 61, 46, 16]\n ];\n\n var qrRSBlock = function(totalCount, dataCount) {\n var _this = {};\n _this.totalCount = totalCount;\n _this.dataCount = dataCount;\n return _this;\n };\n\n var _this = {};\n\n var getRsBlockTable = function(typeNumber, errorCorrectionLevel) {\n\n switch(errorCorrectionLevel) {\n case QRErrorCorrectionLevel.L :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 0];\n case QRErrorCorrectionLevel.M :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 1];\n case QRErrorCorrectionLevel.Q :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 2];\n case QRErrorCorrectionLevel.H :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 3];\n default :\n return undefined;\n }\n };\n\n _this.getRSBlocks = function(typeNumber, errorCorrectionLevel) {\n\n var rsBlock = getRsBlockTable(typeNumber, errorCorrectionLevel);\n\n if (typeof rsBlock == 'undefined') {\n throw 'bad rs block @ typeNumber:' + typeNumber +\n '/errorCorrectionLevel:' + errorCorrectionLevel;\n }\n\n var length = rsBlock.length / 3;\n\n var list = [];\n\n for (var i = 0; i < length; i += 1) {\n\n var count = rsBlock[i * 3 + 0];\n var totalCount = rsBlock[i * 3 + 1];\n var dataCount = rsBlock[i * 3 + 2];\n\n for (var j = 0; j < count; j += 1) {\n list.push(qrRSBlock(totalCount, dataCount) );\n }\n }\n\n return list;\n };\n\n return _this;\n }();\n\n //---------------------------------------------------------------------\n // qrBitBuffer\n //---------------------------------------------------------------------\n\n var qrBitBuffer = function() {\n\n var _buffer = [];\n var _length = 0;\n\n var _this = {};\n\n _this.getBuffer = function() {\n return _buffer;\n };\n\n _this.getAt = function(index) {\n var bufIndex = Math.floor(index / 8);\n return ( (_buffer[bufIndex] >>> (7 - index % 8) ) & 1) == 1;\n };\n\n _this.put = function(num, length) {\n for (var i = 0; i < length; i += 1) {\n _this.putBit( ( (num >>> (length - i - 1) ) & 1) == 1);\n }\n };\n\n _this.getLengthInBits = function() {\n return _length;\n };\n\n _this.putBit = function(bit) {\n\n var bufIndex = Math.floor(_length / 8);\n if (_buffer.length <= bufIndex) {\n _buffer.push(0);\n }\n\n if (bit) {\n _buffer[bufIndex] |= (0x80 >>> (_length % 8) );\n }\n\n _length += 1;\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qrNumber\n //---------------------------------------------------------------------\n\n var qrNumber = function(data) {\n\n var _mode = QRMode.MODE_NUMBER;\n var _data = data;\n\n var _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return _data.length;\n };\n\n _this.write = function(buffer) {\n\n var data = _data;\n\n var i = 0;\n\n while (i + 2 < data.length) {\n buffer.put(strToNum(data.substring(i, i + 3) ), 10);\n i += 3;\n }\n\n if (i < data.length) {\n if (data.length - i == 1) {\n buffer.put(strToNum(data.substring(i, i + 1) ), 4);\n } else if (data.length - i == 2) {\n buffer.put(strToNum(data.substring(i, i + 2) ), 7);\n }\n }\n };\n\n var strToNum = function(s) {\n var num = 0;\n for (var i = 0; i < s.length; i += 1) {\n num = num * 10 + chatToNum(s.charAt(i) );\n }\n return num;\n };\n\n var chatToNum = function(c) {\n if ('0' <= c && c <= '9') {\n return c.charCodeAt(0) - '0'.charCodeAt(0);\n }\n throw 'illegal char :' + c;\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qrAlphaNum\n //---------------------------------------------------------------------\n\n var qrAlphaNum = function(data) {\n\n var _mode = QRMode.MODE_ALPHA_NUM;\n var _data = data;\n\n var _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return _data.length;\n };\n\n _this.write = function(buffer) {\n\n var s = _data;\n\n var i = 0;\n\n while (i + 1 < s.length) {\n buffer.put(\n getCode(s.charAt(i) ) * 45 +\n getCode(s.charAt(i + 1) ), 11);\n i += 2;\n }\n\n if (i < s.length) {\n buffer.put(getCode(s.charAt(i) ), 6);\n }\n };\n\n var getCode = function(c) {\n\n if ('0' <= c && c <= '9') {\n return c.charCodeAt(0) - '0'.charCodeAt(0);\n } else if ('A' <= c && c <= 'Z') {\n return c.charCodeAt(0) - 'A'.charCodeAt(0) + 10;\n } else {\n switch (c) {\n case ' ' : return 36;\n case '$' : return 37;\n case '%' : return 38;\n case '*' : return 39;\n case '+' : return 40;\n case '-' : return 41;\n case '.' : return 42;\n case '/' : return 43;\n case ':' : return 44;\n default :\n throw 'illegal char :' + c;\n }\n }\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qr8BitByte\n //---------------------------------------------------------------------\n\n var qr8BitByte = function(data) {\n\n var _mode = QRMode.MODE_8BIT_BYTE;\n var _data = data;\n var _bytes = qrcode.stringToBytes(data);\n\n var _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return _bytes.length;\n };\n\n _this.write = function(buffer) {\n for (var i = 0; i < _bytes.length; i += 1) {\n buffer.put(_bytes[i], 8);\n }\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qrKanji\n //---------------------------------------------------------------------\n\n var qrKanji = function(data) {\n\n var _mode = QRMode.MODE_KANJI;\n var _data = data;\n\n var stringToBytes = qrcode.stringToBytesFuncs['SJIS'];\n if (!stringToBytes) {\n throw 'sjis not supported.';\n }\n !function(c, code) {\n // self test for sjis support.\n var test = stringToBytes(c);\n if (test.length != 2 || ( (test[0] << 8) | test[1]) != code) {\n throw 'sjis not supported.';\n }\n }('\\u53cb', 0x9746);\n\n var _bytes = stringToBytes(data);\n\n var _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return ~~(_bytes.length / 2);\n };\n\n _this.write = function(buffer) {\n\n var data = _bytes;\n\n var i = 0;\n\n while (i + 1 < data.length) {\n\n var c = ( (0xff & data[i]) << 8) | (0xff & data[i + 1]);\n\n if (0x8140 <= c && c <= 0x9FFC) {\n c -= 0x8140;\n } else if (0xE040 <= c && c <= 0xEBBF) {\n c -= 0xC140;\n } else {\n throw 'illegal char at ' + (i + 1) + '/' + c;\n }\n\n c = ( (c >>> 8) & 0xff) * 0xC0 + (c & 0xff);\n\n buffer.put(c, 13);\n\n i += 2;\n }\n\n if (i < data.length) {\n throw 'illegal char at ' + (i + 1);\n }\n };\n\n return _this;\n };\n\n //=====================================================================\n // GIF Support etc.\n //\n\n //---------------------------------------------------------------------\n // byteArrayOutputStream\n //---------------------------------------------------------------------\n\n var byteArrayOutputStream = function() {\n\n var _bytes = [];\n\n var _this = {};\n\n _this.writeByte = function(b) {\n _bytes.push(b & 0xff);\n };\n\n _this.writeShort = function(i) {\n _this.writeByte(i);\n _this.writeByte(i >>> 8);\n };\n\n _this.writeBytes = function(b, off, len) {\n off = off || 0;\n len = len || b.length;\n for (var i = 0; i < len; i += 1) {\n _this.writeByte(b[i + off]);\n }\n };\n\n _this.writeString = function(s) {\n for (var i = 0; i < s.length; i += 1) {\n _this.writeByte(s.charCodeAt(i) );\n }\n };\n\n _this.toByteArray = function() {\n return _bytes;\n };\n\n _this.toString = function() {\n var s = '';\n s += '[';\n for (var i = 0; i < _bytes.length; i += 1) {\n if (i > 0) {\n s += ',';\n }\n s += _bytes[i];\n }\n s += ']';\n return s;\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // base64EncodeOutputStream\n //---------------------------------------------------------------------\n\n var base64EncodeOutputStream = function() {\n\n var _buffer = 0;\n var _buflen = 0;\n var _length = 0;\n var _base64 = '';\n\n var _this = {};\n\n var writeEncoded = function(b) {\n _base64 += String.fromCharCode(encode(b & 0x3f) );\n };\n\n var encode = function(n) {\n if (n < 0) {\n // error.\n } else if (n < 26) {\n return 0x41 + n;\n } else if (n < 52) {\n return 0x61 + (n - 26);\n } else if (n < 62) {\n return 0x30 + (n - 52);\n } else if (n == 62) {\n return 0x2b;\n } else if (n == 63) {\n return 0x2f;\n }\n throw 'n:' + n;\n };\n\n _this.writeByte = function(n) {\n\n _buffer = (_buffer << 8) | (n & 0xff);\n _buflen += 8;\n _length += 1;\n\n while (_buflen >= 6) {\n writeEncoded(_buffer >>> (_buflen - 6) );\n _buflen -= 6;\n }\n };\n\n _this.flush = function() {\n\n if (_buflen > 0) {\n writeEncoded(_buffer << (6 - _buflen) );\n _buffer = 0;\n _buflen = 0;\n }\n\n if (_length % 3 != 0) {\n // padding\n var padlen = 3 - _length % 3;\n for (var i = 0; i < padlen; i += 1) {\n _base64 += '=';\n }\n }\n };\n\n _this.toString = function() {\n return _base64;\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // base64DecodeInputStream\n //---------------------------------------------------------------------\n\n var base64DecodeInputStream = function(str) {\n\n var _str = str;\n var _pos = 0;\n var _buffer = 0;\n var _buflen = 0;\n\n var _this = {};\n\n _this.read = function() {\n\n while (_buflen < 8) {\n\n if (_pos >= _str.length) {\n if (_buflen == 0) {\n return -1;\n }\n throw 'unexpected end of file./' + _buflen;\n }\n\n var c = _str.charAt(_pos);\n _pos += 1;\n\n if (c == '=') {\n _buflen = 0;\n return -1;\n } else if (c.match(/^\\s$/) ) {\n // ignore if whitespace.\n continue;\n }\n\n _buffer = (_buffer << 6) | decode(c.charCodeAt(0) );\n _buflen += 6;\n }\n\n var n = (_buffer >>> (_buflen - 8) ) & 0xff;\n _buflen -= 8;\n return n;\n };\n\n var decode = function(c) {\n if (0x41 <= c && c <= 0x5a) {\n return c - 0x41;\n } else if (0x61 <= c && c <= 0x7a) {\n return c - 0x61 + 26;\n } else if (0x30 <= c && c <= 0x39) {\n return c - 0x30 + 52;\n } else if (c == 0x2b) {\n return 62;\n } else if (c == 0x2f) {\n return 63;\n } else {\n throw 'c:' + c;\n }\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // gifImage (B/W)\n //---------------------------------------------------------------------\n\n var gifImage = function(width, height) {\n\n var _width = width;\n var _height = height;\n var _data = new Array(width * height);\n\n var _this = {};\n\n _this.setPixel = function(x, y, pixel) {\n _data[y * _width + x] = pixel;\n };\n\n _this.write = function(out) {\n\n //---------------------------------\n // GIF Signature\n\n out.writeString('GIF87a');\n\n //---------------------------------\n // Screen Descriptor\n\n out.writeShort(_width);\n out.writeShort(_height);\n\n out.writeByte(0x80); // 2bit\n out.writeByte(0);\n out.writeByte(0);\n\n //---------------------------------\n // Global Color Map\n\n // black\n out.writeByte(0x00);\n out.writeByte(0x00);\n out.writeByte(0x00);\n\n // white\n out.writeByte(0xff);\n out.writeByte(0xff);\n out.writeByte(0xff);\n\n //---------------------------------\n // Image Descriptor\n\n out.writeString(',');\n out.writeShort(0);\n out.writeShort(0);\n out.writeShort(_width);\n out.writeShort(_height);\n out.writeByte(0);\n\n //---------------------------------\n // Local Color Map\n\n //---------------------------------\n // Raster Data\n\n var lzwMinCodeSize = 2;\n var raster = getLZWRaster(lzwMinCodeSize);\n\n out.writeByte(lzwMinCodeSize);\n\n var offset = 0;\n\n while (raster.length - offset > 255) {\n out.writeByte(255);\n out.writeBytes(raster, offset, 255);\n offset += 255;\n }\n\n out.writeByte(raster.length - offset);\n out.writeBytes(raster, offset, raster.length - offset);\n out.writeByte(0x00);\n\n //---------------------------------\n // GIF Terminator\n out.writeString(';');\n };\n\n var bitOutputStream = function(out) {\n\n var _out = out;\n var _bitLength = 0;\n var _bitBuffer = 0;\n\n var _this = {};\n\n _this.write = function(data, length) {\n\n if ( (data >>> length) != 0) {\n throw 'length over';\n }\n\n while (_bitLength + length >= 8) {\n _out.writeByte(0xff & ( (data << _bitLength) | _bitBuffer) );\n length -= (8 - _bitLength);\n data >>>= (8 - _bitLength);\n _bitBuffer = 0;\n _bitLength = 0;\n }\n\n _bitBuffer = (data << _bitLength) | _bitBuffer;\n _bitLength = _bitLength + length;\n };\n\n _this.flush = function() {\n if (_bitLength > 0) {\n _out.writeByte(_bitBuffer);\n }\n };\n\n return _this;\n };\n\n var getLZWRaster = function(lzwMinCodeSize) {\n\n var clearCode = 1 << lzwMinCodeSize;\n var endCode = (1 << lzwMinCodeSize) + 1;\n var bitLength = lzwMinCodeSize + 1;\n\n // Setup LZWTable\n var table = lzwTable();\n\n for (var i = 0; i < clearCode; i += 1) {\n table.add(String.fromCharCode(i) );\n }\n table.add(String.fromCharCode(clearCode) );\n table.add(String.fromCharCode(endCode) );\n\n var byteOut = byteArrayOutputStream();\n var bitOut = bitOutputStream(byteOut);\n\n // clear code\n bitOut.write(clearCode, bitLength);\n\n var dataIndex = 0;\n\n var s = String.fromCharCode(_data[dataIndex]);\n dataIndex += 1;\n\n while (dataIndex < _data.length) {\n\n var c = String.fromCharCode(_data[dataIndex]);\n dataIndex += 1;\n\n if (table.contains(s + c) ) {\n\n s = s + c;\n\n } else {\n\n bitOut.write(table.indexOf(s), bitLength);\n\n if (table.size() < 0xfff) {\n\n if (table.size() == (1 << bitLength) ) {\n bitLength += 1;\n }\n\n table.add(s + c);\n }\n\n s = c;\n }\n }\n\n bitOut.write(table.indexOf(s), bitLength);\n\n // end code\n bitOut.write(endCode, bitLength);\n\n bitOut.flush();\n\n return byteOut.toByteArray();\n };\n\n var lzwTable = function() {\n\n var _map = {};\n var _size = 0;\n\n var _this = {};\n\n _this.add = function(key) {\n if (_this.contains(key) ) {\n throw 'dup key:' + key;\n }\n _map[key] = _size;\n _size += 1;\n };\n\n _this.size = function() {\n return _size;\n };\n\n _this.indexOf = function(key) {\n return _map[key];\n };\n\n _this.contains = function(key) {\n return typeof _map[key] != 'undefined';\n };\n\n return _this;\n };\n\n return _this;\n };\n\n var createDataURL = function(width, height, getPixel) {\n var gif = gifImage(width, height);\n for (var y = 0; y < height; y += 1) {\n for (var x = 0; x < width; x += 1) {\n gif.setPixel(x, y, getPixel(x, y) );\n }\n }\n\n var b = byteArrayOutputStream();\n gif.write(b);\n\n var base64 = base64EncodeOutputStream();\n var bytes = b.toByteArray();\n for (var i = 0; i < bytes.length; i += 1) {\n base64.writeByte(bytes[i]);\n }\n base64.flush();\n\n return 'data:image/gif;base64,' + base64;\n };\n\n //---------------------------------------------------------------------\n // returns qrcode function.\n\n return qrcode;\n}();\n\n// multibyte support\n!function() {\n\n qrcode.stringToBytesFuncs['UTF-8'] = function(s) {\n // http://stackoverflow.com/questions/18729405/how-to-convert-utf8-string-to-byte-array\n function toUTF8Array(str) {\n var utf8 = [];\n for (var i=0; i < str.length; i++) {\n var charcode = str.charCodeAt(i);\n if (charcode < 0x80) utf8.push(charcode);\n else if (charcode < 0x800) {\n utf8.push(0xc0 | (charcode >> 6),\n 0x80 | (charcode & 0x3f));\n }\n else if (charcode < 0xd800 || charcode >= 0xe000) {\n utf8.push(0xe0 | (charcode >> 12),\n 0x80 | ((charcode>>6) & 0x3f),\n 0x80 | (charcode & 0x3f));\n }\n // surrogate pair\n else {\n i++;\n // UTF-16 encodes 0x10000-0x10FFFF by\n // subtracting 0x10000 and splitting the\n // 20 bits of 0x0-0xFFFFF into two halves\n charcode = 0x10000 + (((charcode & 0x3ff)<<10)\n | (str.charCodeAt(i) & 0x3ff));\n utf8.push(0xf0 | (charcode >>18),\n 0x80 | ((charcode>>12) & 0x3f),\n 0x80 | ((charcode>>6) & 0x3f),\n 0x80 | (charcode & 0x3f));\n }\n }\n return utf8;\n }\n return toUTF8Array(s);\n };\n\n}();\n\n(function (factory) {\n if (typeof define === 'function' && define.amd) {\n define([], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory();\n }\n}(function () {\n return qrcode;\n}));\n","import { UnknownObject } from \"../types\";\n\nconst isObject = (obj: Record): boolean => !!obj && typeof obj === \"object\" && !Array.isArray(obj);\n\nexport default function mergeDeep(target: UnknownObject, ...sources: UnknownObject[]): UnknownObject {\n if (!sources.length) return target;\n const source = sources.shift();\n if (source === undefined || !isObject(target) || !isObject(source)) return target;\n target = { ...target };\n Object.keys(source).forEach((key: string): void => {\n const targetValue = target[key];\n const sourceValue = source[key];\n\n if (Array.isArray(targetValue) && Array.isArray(sourceValue)) {\n target[key] = sourceValue;\n } else if (isObject(targetValue) && isObject(sourceValue)) {\n target[key] = mergeDeep(Object.assign({}, targetValue), sourceValue);\n } else {\n target[key] = sourceValue;\n }\n });\n\n return mergeDeep(target, ...sources);\n}\n","export default function downloadURI(uri: string, name: string): void {\n const link = document.createElement(\"a\");\n link.download = name;\n link.href = uri;\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n}\n","interface ImageSizeOptions {\n originalHeight: number;\n originalWidth: number;\n maxHiddenDots: number;\n maxHiddenAxisDots?: number;\n dotSize: number;\n}\n\ninterface ImageSizeResult {\n height: number;\n width: number;\n hideYDots: number;\n hideXDots: number;\n}\n\nexport default function calculateImageSize({\n originalHeight,\n originalWidth,\n maxHiddenDots,\n maxHiddenAxisDots,\n dotSize\n}: ImageSizeOptions): ImageSizeResult {\n const hideDots = { x: 0, y: 0 };\n const imageSize = { x: 0, y: 0 };\n\n if (originalHeight <= 0 || originalWidth <= 0 || maxHiddenDots <= 0 || dotSize <= 0) {\n return {\n height: 0,\n width: 0,\n hideYDots: 0,\n hideXDots: 0\n };\n }\n\n const k = originalHeight / originalWidth;\n\n //Getting the maximum possible axis hidden dots\n hideDots.x = Math.floor(Math.sqrt(maxHiddenDots / k));\n //The count of hidden dot's can't be less than 1\n if (hideDots.x <= 0) hideDots.x = 1;\n //Check the limit of the maximum allowed axis hidden dots\n if (maxHiddenAxisDots && maxHiddenAxisDots < hideDots.x) hideDots.x = maxHiddenAxisDots;\n //The count of dots should be odd\n if (hideDots.x % 2 === 0) hideDots.x--;\n imageSize.x = hideDots.x * dotSize;\n //Calculate opposite axis hidden dots based on axis value.\n //The value will be odd.\n //We use ceil to prevent dots covering by the image.\n hideDots.y = 1 + 2 * Math.ceil((hideDots.x * k - 1) / 2);\n imageSize.y = Math.round(imageSize.x * k);\n //If the result dots count is bigger than max - then decrease size and calculate again\n if (hideDots.y * hideDots.x > maxHiddenDots || (maxHiddenAxisDots && maxHiddenAxisDots < hideDots.y)) {\n if (maxHiddenAxisDots && maxHiddenAxisDots < hideDots.y) {\n hideDots.y = maxHiddenAxisDots;\n if (hideDots.y % 2 === 0) hideDots.x--;\n } else {\n hideDots.y -= 2;\n }\n imageSize.y = hideDots.y * dotSize;\n hideDots.x = 1 + 2 * Math.ceil((hideDots.y / k - 1) / 2);\n imageSize.x = Math.round(imageSize.y / k);\n }\n\n return {\n height: imageSize.y,\n width: imageSize.x,\n hideYDots: hideDots.x,\n hideXDots: hideDots.y\n };\n}\n","interface ErrorCorrectionPercents {\n [key: string]: number;\n}\n\nexport default {\n L: 0.07,\n M: 0.15,\n Q: 0.25,\n H: 0.3\n} as ErrorCorrectionPercents;\n","import { DotTypes } from \"../types\";\n\nexport default {\n dots: \"dots\",\n rounded: \"rounded\",\n classy: \"classy\",\n classyRounded: \"classy-rounded\",\n square: \"square\",\n extraRounded: \"extra-rounded\"\n} as DotTypes;\n","import dotTypes from \"../../../constants/dotTypes\";\nimport {\n DotType,\n GetNeighbor,\n RotateFigureArgsCanvas,\n BasicFigureDrawArgsCanvas,\n DrawArgsCanvas\n} from \"../../../types\";\n\nexport default class QRDot {\n _context: CanvasRenderingContext2D;\n _type: DotType;\n\n constructor({ context, type }: { context: CanvasRenderingContext2D; type: DotType }) {\n this._context = context;\n this._type = type;\n }\n\n draw(x: number, y: number, size: number, getNeighbor: GetNeighbor): void {\n const context = this._context;\n const type = this._type;\n let drawFunction;\n\n switch (type) {\n case dotTypes.dots:\n drawFunction = this._drawDot;\n break;\n case dotTypes.classy:\n drawFunction = this._drawClassy;\n break;\n case dotTypes.classyRounded:\n drawFunction = this._drawClassyRounded;\n break;\n case dotTypes.rounded:\n drawFunction = this._drawRounded;\n break;\n case dotTypes.extraRounded:\n drawFunction = this._drawExtraRounded;\n break;\n case dotTypes.square:\n default:\n drawFunction = this._drawSquare;\n }\n\n drawFunction.call(this, { x, y, size, context, getNeighbor });\n }\n\n _rotateFigure({ x, y, size, context, rotation = 0, draw }: RotateFigureArgsCanvas): void {\n const cx = x + size / 2;\n const cy = y + size / 2;\n\n context.translate(cx, cy);\n rotation && context.rotate(rotation);\n draw();\n context.closePath();\n rotation && context.rotate(-rotation);\n context.translate(-cx, -cy);\n }\n\n _basicDot(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.arc(0, 0, size / 2, 0, Math.PI * 2);\n }\n });\n }\n\n _basicSquare(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.rect(-size / 2, -size / 2, size, size);\n }\n });\n }\n\n //if rotation === 0 - right side is rounded\n _basicSideRounded(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.arc(0, 0, size / 2, -Math.PI / 2, Math.PI / 2);\n context.lineTo(-size / 2, size / 2);\n context.lineTo(-size / 2, -size / 2);\n context.lineTo(0, -size / 2);\n }\n });\n }\n\n //if rotation === 0 - top right corner is rounded\n _basicCornerRounded(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.arc(0, 0, size / 2, -Math.PI / 2, 0);\n context.lineTo(size / 2, size / 2);\n context.lineTo(-size / 2, size / 2);\n context.lineTo(-size / 2, -size / 2);\n context.lineTo(0, -size / 2);\n }\n });\n }\n\n //if rotation === 0 - top right corner is rounded\n _basicCornerExtraRounded(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.arc(-size / 2, size / 2, size, -Math.PI / 2, 0);\n context.lineTo(-size / 2, size / 2);\n context.lineTo(-size / 2, -size / 2);\n }\n });\n }\n\n _basicCornersRounded(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.arc(0, 0, size / 2, -Math.PI / 2, 0);\n context.lineTo(size / 2, size / 2);\n context.lineTo(0, size / 2);\n context.arc(0, 0, size / 2, Math.PI / 2, Math.PI);\n context.lineTo(-size / 2, -size / 2);\n context.lineTo(0, -size / 2);\n }\n });\n }\n\n _basicCornersExtraRounded(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.arc(-size / 2, size / 2, size, -Math.PI / 2, 0);\n context.arc(size / 2, -size / 2, size, Math.PI / 2, Math.PI);\n }\n });\n }\n\n _drawDot({ x, y, size, context }: DrawArgsCanvas): void {\n this._basicDot({ x, y, size, context, rotation: 0 });\n }\n\n _drawSquare({ x, y, size, context }: DrawArgsCanvas): void {\n this._basicSquare({ x, y, size, context, rotation: 0 });\n }\n\n _drawRounded({ x, y, size, context, getNeighbor }: DrawArgsCanvas): void {\n const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\n const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\n const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\n const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\n\n const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\n\n if (neighborsCount === 0) {\n this._basicDot({ x, y, size, context, rotation: 0 });\n return;\n }\n\n if (neighborsCount > 2 || (leftNeighbor && rightNeighbor) || (topNeighbor && bottomNeighbor)) {\n this._basicSquare({ x, y, size, context, rotation: 0 });\n return;\n }\n\n if (neighborsCount === 2) {\n let rotation = 0;\n\n if (leftNeighbor && topNeighbor) {\n rotation = Math.PI / 2;\n } else if (topNeighbor && rightNeighbor) {\n rotation = Math.PI;\n } else if (rightNeighbor && bottomNeighbor) {\n rotation = -Math.PI / 2;\n }\n\n this._basicCornerRounded({ x, y, size, context, rotation });\n return;\n }\n\n if (neighborsCount === 1) {\n let rotation = 0;\n\n if (topNeighbor) {\n rotation = Math.PI / 2;\n } else if (rightNeighbor) {\n rotation = Math.PI;\n } else if (bottomNeighbor) {\n rotation = -Math.PI / 2;\n }\n\n this._basicSideRounded({ x, y, size, context, rotation });\n return;\n }\n }\n\n _drawExtraRounded({ x, y, size, context, getNeighbor }: DrawArgsCanvas): void {\n const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\n const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\n const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\n const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\n\n const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\n\n if (neighborsCount === 0) {\n this._basicDot({ x, y, size, context, rotation: 0 });\n return;\n }\n\n if (neighborsCount > 2 || (leftNeighbor && rightNeighbor) || (topNeighbor && bottomNeighbor)) {\n this._basicSquare({ x, y, size, context, rotation: 0 });\n return;\n }\n\n if (neighborsCount === 2) {\n let rotation = 0;\n\n if (leftNeighbor && topNeighbor) {\n rotation = Math.PI / 2;\n } else if (topNeighbor && rightNeighbor) {\n rotation = Math.PI;\n } else if (rightNeighbor && bottomNeighbor) {\n rotation = -Math.PI / 2;\n }\n\n this._basicCornerExtraRounded({ x, y, size, context, rotation });\n return;\n }\n\n if (neighborsCount === 1) {\n let rotation = 0;\n\n if (topNeighbor) {\n rotation = Math.PI / 2;\n } else if (rightNeighbor) {\n rotation = Math.PI;\n } else if (bottomNeighbor) {\n rotation = -Math.PI / 2;\n }\n\n this._basicSideRounded({ x, y, size, context, rotation });\n return;\n }\n }\n\n _drawClassy({ x, y, size, context, getNeighbor }: DrawArgsCanvas): void {\n const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\n const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\n const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\n const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\n\n const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\n\n if (neighborsCount === 0) {\n this._basicCornersRounded({ x, y, size, context, rotation: Math.PI / 2 });\n return;\n }\n\n if (!leftNeighbor && !topNeighbor) {\n this._basicCornerRounded({ x, y, size, context, rotation: -Math.PI / 2 });\n return;\n }\n\n if (!rightNeighbor && !bottomNeighbor) {\n this._basicCornerRounded({ x, y, size, context, rotation: Math.PI / 2 });\n return;\n }\n\n this._basicSquare({ x, y, size, context, rotation: 0 });\n }\n\n _drawClassyRounded({ x, y, size, context, getNeighbor }: DrawArgsCanvas): void {\n const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\n const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\n const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\n const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\n\n const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\n\n if (neighborsCount === 0) {\n this._basicCornersRounded({ x, y, size, context, rotation: Math.PI / 2 });\n return;\n }\n\n if (!leftNeighbor && !topNeighbor) {\n this._basicCornerExtraRounded({ x, y, size, context, rotation: -Math.PI / 2 });\n return;\n }\n\n if (!rightNeighbor && !bottomNeighbor) {\n this._basicCornerExtraRounded({ x, y, size, context, rotation: Math.PI / 2 });\n return;\n }\n\n this._basicSquare({ x, y, size, context, rotation: 0 });\n }\n}\n","import { CornerSquareTypes } from \"../types\";\n\nexport default {\n dot: \"dot\",\n square: \"square\",\n extraRounded: \"extra-rounded\"\n} as CornerSquareTypes;\n","import cornerSquareTypes from \"../../../constants/cornerSquareTypes\";\nimport { CornerSquareType, RotateFigureArgsCanvas, BasicFigureDrawArgsCanvas, DrawArgsCanvas } from \"../../../types\";\n\nexport default class QRCornerSquare {\n _context: CanvasRenderingContext2D;\n _type: CornerSquareType;\n\n constructor({ context, type }: { context: CanvasRenderingContext2D; type: CornerSquareType }) {\n this._context = context;\n this._type = type;\n }\n\n draw(x: number, y: number, size: number, rotation: number): void {\n const context = this._context;\n const type = this._type;\n let drawFunction;\n\n switch (type) {\n case cornerSquareTypes.square:\n drawFunction = this._drawSquare;\n break;\n case cornerSquareTypes.extraRounded:\n drawFunction = this._drawExtraRounded;\n break;\n case cornerSquareTypes.dot:\n default:\n drawFunction = this._drawDot;\n }\n\n drawFunction.call(this, { x, y, size, context, rotation });\n }\n\n _rotateFigure({ x, y, size, context, rotation = 0, draw }: RotateFigureArgsCanvas): void {\n const cx = x + size / 2;\n const cy = y + size / 2;\n\n context.translate(cx, cy);\n rotation && context.rotate(rotation);\n draw();\n context.closePath();\n rotation && context.rotate(-rotation);\n context.translate(-cx, -cy);\n }\n\n _basicDot(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n const dotSize = size / 7;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.arc(0, 0, size / 2, 0, Math.PI * 2);\n context.arc(0, 0, size / 2 - dotSize, 0, Math.PI * 2);\n }\n });\n }\n\n _basicSquare(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n const dotSize = size / 7;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.rect(-size / 2, -size / 2, size, size);\n context.rect(-size / 2 + dotSize, -size / 2 + dotSize, size - 2 * dotSize, size - 2 * dotSize);\n }\n });\n }\n\n _basicExtraRounded(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n const dotSize = size / 7;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.arc(-dotSize, -dotSize, 2.5 * dotSize, Math.PI, -Math.PI / 2);\n context.lineTo(dotSize, -3.5 * dotSize);\n context.arc(dotSize, -dotSize, 2.5 * dotSize, -Math.PI / 2, 0);\n context.lineTo(3.5 * dotSize, -dotSize);\n context.arc(dotSize, dotSize, 2.5 * dotSize, 0, Math.PI / 2);\n context.lineTo(-dotSize, 3.5 * dotSize);\n context.arc(-dotSize, dotSize, 2.5 * dotSize, Math.PI / 2, Math.PI);\n context.lineTo(-3.5 * dotSize, -dotSize);\n\n context.arc(-dotSize, -dotSize, 1.5 * dotSize, Math.PI, -Math.PI / 2);\n context.lineTo(dotSize, -2.5 * dotSize);\n context.arc(dotSize, -dotSize, 1.5 * dotSize, -Math.PI / 2, 0);\n context.lineTo(2.5 * dotSize, -dotSize);\n context.arc(dotSize, dotSize, 1.5 * dotSize, 0, Math.PI / 2);\n context.lineTo(-dotSize, 2.5 * dotSize);\n context.arc(-dotSize, dotSize, 1.5 * dotSize, Math.PI / 2, Math.PI);\n context.lineTo(-2.5 * dotSize, -dotSize);\n }\n });\n }\n\n _drawDot({ x, y, size, context, rotation }: DrawArgsCanvas): void {\n this._basicDot({ x, y, size, context, rotation });\n }\n\n _drawSquare({ x, y, size, context, rotation }: DrawArgsCanvas): void {\n this._basicSquare({ x, y, size, context, rotation });\n }\n\n _drawExtraRounded({ x, y, size, context, rotation }: DrawArgsCanvas): void {\n this._basicExtraRounded({ x, y, size, context, rotation });\n }\n}\n","import { CornerDotTypes } from \"../types\";\n\nexport default {\n dot: \"dot\",\n square: \"square\"\n} as CornerDotTypes;\n","import cornerDotTypes from \"../../../constants/cornerDotTypes\";\nimport { CornerDotType, RotateFigureArgsCanvas, BasicFigureDrawArgsCanvas, DrawArgsCanvas } from \"../../../types\";\n\nexport default class QRCornerDot {\n _context: CanvasRenderingContext2D;\n _type: CornerDotType;\n\n constructor({ context, type }: { context: CanvasRenderingContext2D; type: CornerDotType }) {\n this._context = context;\n this._type = type;\n }\n\n draw(x: number, y: number, size: number, rotation: number): void {\n const context = this._context;\n const type = this._type;\n let drawFunction;\n\n switch (type) {\n case cornerDotTypes.square:\n drawFunction = this._drawSquare;\n break;\n case cornerDotTypes.dot:\n default:\n drawFunction = this._drawDot;\n }\n\n drawFunction.call(this, { x, y, size, context, rotation });\n }\n\n _rotateFigure({ x, y, size, context, rotation = 0, draw }: RotateFigureArgsCanvas): void {\n const cx = x + size / 2;\n const cy = y + size / 2;\n\n context.translate(cx, cy);\n rotation && context.rotate(rotation);\n draw();\n context.closePath();\n rotation && context.rotate(-rotation);\n context.translate(-cx, -cy);\n }\n\n _basicDot(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.arc(0, 0, size / 2, 0, Math.PI * 2);\n }\n });\n }\n\n _basicSquare(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.rect(-size / 2, -size / 2, size, size);\n }\n });\n }\n\n _drawDot({ x, y, size, context, rotation }: DrawArgsCanvas): void {\n this._basicDot({ x, y, size, context, rotation });\n }\n\n _drawSquare({ x, y, size, context, rotation }: DrawArgsCanvas): void {\n this._basicSquare({ x, y, size, context, rotation });\n }\n}\n","import { GradientTypes } from \"../types\";\n\nexport default {\n radial: \"radial\",\n linear: \"linear\"\n} as GradientTypes;\n","import calculateImageSize from \"../tools/calculateImageSize\";\nimport errorCorrectionPercents from \"../constants/errorCorrectionPercents\";\nimport QRDot from \"../figures/dot/canvas/QRDot\";\nimport QRCornerSquare from \"../figures/cornerSquare/canvas/QRCornerSquare\";\nimport QRCornerDot from \"../figures/cornerDot/canvas/QRCornerDot\";\nimport { RequiredOptions } from \"./QROptions\";\nimport gradientTypes from \"../constants/gradientTypes\";\nimport { QRCode, Gradient, FilterFunction } from \"../types\";\n\nconst squareMask = [\n [1, 1, 1, 1, 1, 1, 1],\n [1, 0, 0, 0, 0, 0, 1],\n [1, 0, 0, 0, 0, 0, 1],\n [1, 0, 0, 0, 0, 0, 1],\n [1, 0, 0, 0, 0, 0, 1],\n [1, 0, 0, 0, 0, 0, 1],\n [1, 1, 1, 1, 1, 1, 1]\n];\n\nconst dotMask = [\n [0, 0, 0, 0, 0, 0, 0],\n [0, 0, 0, 0, 0, 0, 0],\n [0, 0, 1, 1, 1, 0, 0],\n [0, 0, 1, 1, 1, 0, 0],\n [0, 0, 1, 1, 1, 0, 0],\n [0, 0, 0, 0, 0, 0, 0],\n [0, 0, 0, 0, 0, 0, 0]\n];\n\nexport default class QRCanvas {\n _canvas: HTMLCanvasElement;\n _options: RequiredOptions;\n _qr?: QRCode;\n _image?: HTMLImageElement;\n\n //TODO don't pass all options to this class\n constructor(options: RequiredOptions) {\n this._canvas = document.createElement(\"canvas\");\n this._canvas.width = options.width;\n this._canvas.height = options.height;\n this._options = options;\n }\n\n get context(): CanvasRenderingContext2D | null {\n return this._canvas.getContext(\"2d\");\n }\n\n get width(): number {\n return this._canvas.width;\n }\n\n get height(): number {\n return this._canvas.height;\n }\n\n getCanvas(): HTMLCanvasElement {\n return this._canvas;\n }\n\n clear(): void {\n const canvasContext = this.context;\n\n if (canvasContext) {\n canvasContext.clearRect(0, 0, this._canvas.width, this._canvas.height);\n }\n }\n\n async drawQR(qr: QRCode): Promise {\n const count = qr.getModuleCount();\n const minSize = Math.min(this._options.width, this._options.height) - this._options.margin * 2;\n const dotSize = Math.floor(minSize / count);\n let drawImageSize = {\n hideXDots: 0,\n hideYDots: 0,\n width: 0,\n height: 0\n };\n\n this._qr = qr;\n\n if (this._options.image) {\n await this.loadImage();\n if (!this._image) return;\n const { imageOptions, qrOptions } = this._options;\n const coverLevel = imageOptions.imageSize * errorCorrectionPercents[qrOptions.errorCorrectionLevel];\n const maxHiddenDots = Math.floor(coverLevel * count * count);\n\n drawImageSize = calculateImageSize({\n originalWidth: this._image.width,\n originalHeight: this._image.height,\n maxHiddenDots,\n maxHiddenAxisDots: count - 14,\n dotSize\n });\n }\n\n this.clear();\n this.drawBackground();\n this.drawDots((i: number, j: number): boolean => {\n if (this._options.imageOptions.hideBackgroundDots) {\n if (\n i >= (count - drawImageSize.hideXDots) / 2 &&\n i < (count + drawImageSize.hideXDots) / 2 &&\n j >= (count - drawImageSize.hideYDots) / 2 &&\n j < (count + drawImageSize.hideYDots) / 2\n ) {\n return false;\n }\n }\n\n if (squareMask[i]?.[j] || squareMask[i - count + 7]?.[j] || squareMask[i]?.[j - count + 7]) {\n return false;\n }\n\n if (dotMask[i]?.[j] || dotMask[i - count + 7]?.[j] || dotMask[i]?.[j - count + 7]) {\n return false;\n }\n\n return true;\n });\n this.drawCorners();\n\n if (this._options.image) {\n this.drawImage({ width: drawImageSize.width, height: drawImageSize.height, count, dotSize });\n }\n }\n\n drawBackground(): void {\n const canvasContext = this.context;\n const options = this._options;\n\n if (canvasContext) {\n if (options.backgroundOptions.gradient) {\n const gradientOptions = options.backgroundOptions.gradient;\n const gradient = this._createGradient({\n context: canvasContext,\n options: gradientOptions,\n additionalRotation: 0,\n x: 0,\n y: 0,\n size: this._canvas.width > this._canvas.height ? this._canvas.width : this._canvas.height\n });\n\n gradientOptions.colorStops.forEach(({ offset, color }: { offset: number; color: string }) => {\n gradient.addColorStop(offset, color);\n });\n\n canvasContext.fillStyle = gradient;\n } else if (options.backgroundOptions.color) {\n canvasContext.fillStyle = options.backgroundOptions.color;\n }\n canvasContext.fillRect(0, 0, this._canvas.width, this._canvas.height);\n }\n }\n\n drawDots(filter?: FilterFunction): void {\n if (!this._qr) {\n throw \"QR code is not defined\";\n }\n\n const canvasContext = this.context;\n\n if (!canvasContext) {\n throw \"QR code is not defined\";\n }\n\n const options = this._options;\n const count = this._qr.getModuleCount();\n\n if (count > options.width || count > options.height) {\n throw \"The canvas is too small.\";\n }\n\n const minSize = Math.min(options.width, options.height) - options.margin * 2;\n const dotSize = Math.floor(minSize / count);\n const xBeginning = Math.floor((options.width - count * dotSize) / 2);\n const yBeginning = Math.floor((options.height - count * dotSize) / 2);\n const dot = new QRDot({ context: canvasContext, type: options.dotsOptions.type });\n\n canvasContext.beginPath();\n\n for (let i = 0; i < count; i++) {\n for (let j = 0; j < count; j++) {\n if (filter && !filter(i, j)) {\n continue;\n }\n if (!this._qr.isDark(i, j)) {\n continue;\n }\n dot.draw(\n yBeginning + j * dotSize,\n xBeginning + i * dotSize,\n dotSize,\n (xOffset: number, yOffset: number): boolean => {\n if (i + xOffset < 0 || j + yOffset < 0 || i + xOffset >= count || j + yOffset >= count) return false;\n if (filter && !filter(i + xOffset, j + yOffset)) return false;\n return !!this._qr && this._qr.isDark(i + xOffset, j + yOffset);\n }\n );\n }\n }\n\n if (options.dotsOptions.gradient) {\n const gradientOptions = options.dotsOptions.gradient;\n const gradient = this._createGradient({\n context: canvasContext,\n options: gradientOptions,\n additionalRotation: 0,\n x: xBeginning,\n y: yBeginning,\n size: count * dotSize\n });\n\n gradientOptions.colorStops.forEach(({ offset, color }: { offset: number; color: string }) => {\n gradient.addColorStop(offset, color);\n });\n\n canvasContext.fillStyle = canvasContext.strokeStyle = gradient;\n } else if (options.dotsOptions.color) {\n canvasContext.fillStyle = canvasContext.strokeStyle = options.dotsOptions.color;\n }\n\n canvasContext.fill(\"evenodd\");\n }\n\n drawCorners(filter?: FilterFunction): void {\n if (!this._qr) {\n throw \"QR code is not defined\";\n }\n\n const canvasContext = this.context;\n\n if (!canvasContext) {\n throw \"QR code is not defined\";\n }\n\n const options = this._options;\n\n const count = this._qr.getModuleCount();\n const minSize = Math.min(options.width, options.height) - options.margin * 2;\n const dotSize = Math.floor(minSize / count);\n const cornersSquareSize = dotSize * 7;\n const cornersDotSize = dotSize * 3;\n const xBeginning = Math.floor((options.width - count * dotSize) / 2);\n const yBeginning = Math.floor((options.height - count * dotSize) / 2);\n\n [\n [0, 0, 0],\n [1, 0, Math.PI / 2],\n [0, 1, -Math.PI / 2]\n ].forEach(([column, row, rotation]) => {\n if (filter && !filter(column, row)) {\n return;\n }\n\n const x = xBeginning + column * dotSize * (count - 7);\n const y = yBeginning + row * dotSize * (count - 7);\n\n if (options.cornersSquareOptions?.type) {\n const cornersSquare = new QRCornerSquare({ context: canvasContext, type: options.cornersSquareOptions?.type });\n\n canvasContext.beginPath();\n cornersSquare.draw(x, y, cornersSquareSize, rotation);\n } else {\n const dot = new QRDot({ context: canvasContext, type: options.dotsOptions.type });\n\n canvasContext.beginPath();\n\n for (let i = 0; i < squareMask.length; i++) {\n for (let j = 0; j < squareMask[i].length; j++) {\n if (!squareMask[i]?.[j]) {\n continue;\n }\n\n dot.draw(\n x + i * dotSize,\n y + j * dotSize,\n dotSize,\n (xOffset: number, yOffset: number): boolean => !!squareMask[i + xOffset]?.[j + yOffset]\n );\n }\n }\n }\n\n if (options.cornersSquareOptions?.gradient) {\n const gradientOptions = options.cornersSquareOptions.gradient;\n const gradient = this._createGradient({\n context: canvasContext,\n options: gradientOptions,\n additionalRotation: rotation,\n x,\n y,\n size: cornersSquareSize\n });\n\n gradientOptions.colorStops.forEach(({ offset, color }: { offset: number; color: string }) => {\n gradient.addColorStop(offset, color);\n });\n\n canvasContext.fillStyle = canvasContext.strokeStyle = gradient;\n } else if (options.cornersSquareOptions?.color) {\n canvasContext.fillStyle = canvasContext.strokeStyle = options.cornersSquareOptions.color;\n }\n\n canvasContext.fill(\"evenodd\");\n\n if (options.cornersDotOptions?.type) {\n const cornersDot = new QRCornerDot({ context: canvasContext, type: options.cornersDotOptions?.type });\n\n canvasContext.beginPath();\n cornersDot.draw(x + dotSize * 2, y + dotSize * 2, cornersDotSize, rotation);\n } else {\n const dot = new QRDot({ context: canvasContext, type: options.dotsOptions.type });\n\n canvasContext.beginPath();\n\n for (let i = 0; i < dotMask.length; i++) {\n for (let j = 0; j < dotMask[i].length; j++) {\n if (!dotMask[i]?.[j]) {\n continue;\n }\n\n dot.draw(\n x + i * dotSize,\n y + j * dotSize,\n dotSize,\n (xOffset: number, yOffset: number): boolean => !!dotMask[i + xOffset]?.[j + yOffset]\n );\n }\n }\n }\n\n if (options.cornersDotOptions?.gradient) {\n const gradientOptions = options.cornersDotOptions.gradient;\n const gradient = this._createGradient({\n context: canvasContext,\n options: gradientOptions,\n additionalRotation: rotation,\n x: x + dotSize * 2,\n y: y + dotSize * 2,\n size: cornersDotSize\n });\n\n gradientOptions.colorStops.forEach(({ offset, color }: { offset: number; color: string }) => {\n gradient.addColorStop(offset, color);\n });\n\n canvasContext.fillStyle = canvasContext.strokeStyle = gradient;\n } else if (options.cornersDotOptions?.color) {\n canvasContext.fillStyle = canvasContext.strokeStyle = options.cornersDotOptions.color;\n }\n\n canvasContext.fill(\"evenodd\");\n });\n }\n\n loadImage(): Promise {\n return new Promise((resolve, reject) => {\n const options = this._options;\n const image = new Image();\n\n if (!options.image) {\n return reject(\"Image is not defined\");\n }\n\n if (typeof options.imageOptions.crossOrigin === \"string\") {\n image.crossOrigin = options.imageOptions.crossOrigin;\n }\n\n this._image = image;\n image.onload = (): void => {\n resolve();\n };\n image.src = options.image;\n });\n }\n\n drawImage({\n width,\n height,\n count,\n dotSize\n }: {\n width: number;\n height: number;\n count: number;\n dotSize: number;\n }): void {\n const canvasContext = this.context;\n\n if (!canvasContext) {\n throw \"canvasContext is not defined\";\n }\n\n if (!this._image) {\n throw \"image is not defined\";\n }\n\n const options = this._options;\n const xBeginning = Math.floor((options.width - count * dotSize) / 2);\n const yBeginning = Math.floor((options.height - count * dotSize) / 2);\n const dx = xBeginning + options.imageOptions.margin + (count * dotSize - width) / 2;\n const dy = yBeginning + options.imageOptions.margin + (count * dotSize - height) / 2;\n const dw = width - options.imageOptions.margin * 2;\n const dh = height - options.imageOptions.margin * 2;\n\n canvasContext.drawImage(this._image, dx, dy, dw < 0 ? 0 : dw, dh < 0 ? 0 : dh);\n }\n\n _createGradient({\n context,\n options,\n additionalRotation,\n x,\n y,\n size\n }: {\n context: CanvasRenderingContext2D;\n options: Gradient;\n additionalRotation: number;\n x: number;\n y: number;\n size: number;\n }): CanvasGradient {\n let gradient;\n\n if (options.type === gradientTypes.radial) {\n gradient = context.createRadialGradient(x + size / 2, y + size / 2, 0, x + size / 2, y + size / 2, size / 2);\n } else {\n const rotation = ((options.rotation || 0) + additionalRotation) % (2 * Math.PI);\n const positiveRotation = (rotation + 2 * Math.PI) % (2 * Math.PI);\n let x0 = x + size / 2;\n let y0 = y + size / 2;\n let x1 = x + size / 2;\n let y1 = y + size / 2;\n\n if (\n (positiveRotation >= 0 && positiveRotation <= 0.25 * Math.PI) ||\n (positiveRotation > 1.75 * Math.PI && positiveRotation <= 2 * Math.PI)\n ) {\n x0 = x0 - size / 2;\n y0 = y0 - (size / 2) * Math.tan(rotation);\n x1 = x1 + size / 2;\n y1 = y1 + (size / 2) * Math.tan(rotation);\n } else if (positiveRotation > 0.25 * Math.PI && positiveRotation <= 0.75 * Math.PI) {\n y0 = y0 - size / 2;\n x0 = x0 - size / 2 / Math.tan(rotation);\n y1 = y1 + size / 2;\n x1 = x1 + size / 2 / Math.tan(rotation);\n } else if (positiveRotation > 0.75 * Math.PI && positiveRotation <= 1.25 * Math.PI) {\n x0 = x0 + size / 2;\n y0 = y0 + (size / 2) * Math.tan(rotation);\n x1 = x1 - size / 2;\n y1 = y1 - (size / 2) * Math.tan(rotation);\n } else if (positiveRotation > 1.25 * Math.PI && positiveRotation <= 1.75 * Math.PI) {\n y0 = y0 + size / 2;\n x0 = x0 + size / 2 / Math.tan(rotation);\n y1 = y1 - size / 2;\n x1 = x1 - size / 2 / Math.tan(rotation);\n }\n\n gradient = context.createLinearGradient(Math.round(x0), Math.round(y0), Math.round(x1), Math.round(y1));\n }\n\n return gradient;\n }\n}\n","import dotTypes from \"../../../constants/dotTypes\";\nimport { DotType, GetNeighbor, DrawArgs, BasicFigureDrawArgs, RotateFigureArgs } from \"../../../types\";\n\nexport default class QRDot {\n _element?: SVGElement;\n _svg: SVGElement;\n _type: DotType;\n\n constructor({ svg, type }: { svg: SVGElement; type: DotType }) {\n this._svg = svg;\n this._type = type;\n }\n\n draw(x: number, y: number, size: number, getNeighbor: GetNeighbor): void {\n const type = this._type;\n let drawFunction;\n\n switch (type) {\n case dotTypes.dots:\n drawFunction = this._drawDot;\n break;\n case dotTypes.classy:\n drawFunction = this._drawClassy;\n break;\n case dotTypes.classyRounded:\n drawFunction = this._drawClassyRounded;\n break;\n case dotTypes.rounded:\n drawFunction = this._drawRounded;\n break;\n case dotTypes.extraRounded:\n drawFunction = this._drawExtraRounded;\n break;\n case dotTypes.square:\n default:\n drawFunction = this._drawSquare;\n }\n\n drawFunction.call(this, { x, y, size, getNeighbor });\n }\n\n _rotateFigure({ x, y, size, rotation = 0, draw }: RotateFigureArgs): void {\n const cx = x + size / 2;\n const cy = y + size / 2;\n\n draw();\n this._element?.setAttribute(\"transform\", `rotate(${(180 * rotation) / Math.PI},${cx},${cy})`);\n }\n\n _basicDot(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"circle\");\n this._element.setAttribute(\"cx\", String(x + size / 2));\n this._element.setAttribute(\"cy\", String(y + size / 2));\n this._element.setAttribute(\"r\", String(size / 2));\n }\n });\n }\n\n _basicSquare(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"rect\");\n this._element.setAttribute(\"x\", String(x));\n this._element.setAttribute(\"y\", String(y));\n this._element.setAttribute(\"width\", String(size));\n this._element.setAttribute(\"height\", String(size));\n }\n });\n }\n\n //if rotation === 0 - right side is rounded\n _basicSideRounded(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n this._element.setAttribute(\n \"d\",\n `M ${x} ${y}` + //go to top left position\n `v ${size}` + //draw line to left bottom corner\n `h ${size / 2}` + //draw line to left bottom corner + half of size right\n `a ${size / 2} ${size / 2}, 0, 0, 0, 0 ${-size}` // draw rounded corner\n );\n }\n });\n }\n\n //if rotation === 0 - top right corner is rounded\n _basicCornerRounded(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n this._element.setAttribute(\n \"d\",\n `M ${x} ${y}` + //go to top left position\n `v ${size}` + //draw line to left bottom corner\n `h ${size}` + //draw line to right bottom corner\n `v ${-size / 2}` + //draw line to right bottom corner + half of size top\n `a ${size / 2} ${size / 2}, 0, 0, 0, ${-size / 2} ${-size / 2}` // draw rounded corner\n );\n }\n });\n }\n\n //if rotation === 0 - top right corner is rounded\n _basicCornerExtraRounded(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n this._element.setAttribute(\n \"d\",\n `M ${x} ${y}` + //go to top left position\n `v ${size}` + //draw line to left bottom corner\n `h ${size}` + //draw line to right bottom corner\n `a ${size} ${size}, 0, 0, 0, ${-size} ${-size}` // draw rounded top right corner\n );\n }\n });\n }\n\n //if rotation === 0 - left bottom and right top corners are rounded\n _basicCornersRounded(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n this._element.setAttribute(\n \"d\",\n `M ${x} ${y}` + //go to left top position\n `v ${size / 2}` + //draw line to left top corner + half of size bottom\n `a ${size / 2} ${size / 2}, 0, 0, 0, ${size / 2} ${size / 2}` + // draw rounded left bottom corner\n `h ${size / 2}` + //draw line to right bottom corner\n `v ${-size / 2}` + //draw line to right bottom corner + half of size top\n `a ${size / 2} ${size / 2}, 0, 0, 0, ${-size / 2} ${-size / 2}` // draw rounded right top corner\n );\n }\n });\n }\n\n _drawDot({ x, y, size }: DrawArgs): void {\n this._basicDot({ x, y, size, rotation: 0 });\n }\n\n _drawSquare({ x, y, size }: DrawArgs): void {\n this._basicSquare({ x, y, size, rotation: 0 });\n }\n\n _drawRounded({ x, y, size, getNeighbor }: DrawArgs): void {\n const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\n const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\n const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\n const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\n\n const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\n\n if (neighborsCount === 0) {\n this._basicDot({ x, y, size, rotation: 0 });\n return;\n }\n\n if (neighborsCount > 2 || (leftNeighbor && rightNeighbor) || (topNeighbor && bottomNeighbor)) {\n this._basicSquare({ x, y, size, rotation: 0 });\n return;\n }\n\n if (neighborsCount === 2) {\n let rotation = 0;\n\n if (leftNeighbor && topNeighbor) {\n rotation = Math.PI / 2;\n } else if (topNeighbor && rightNeighbor) {\n rotation = Math.PI;\n } else if (rightNeighbor && bottomNeighbor) {\n rotation = -Math.PI / 2;\n }\n\n this._basicCornerRounded({ x, y, size, rotation });\n return;\n }\n\n if (neighborsCount === 1) {\n let rotation = 0;\n\n if (topNeighbor) {\n rotation = Math.PI / 2;\n } else if (rightNeighbor) {\n rotation = Math.PI;\n } else if (bottomNeighbor) {\n rotation = -Math.PI / 2;\n }\n\n this._basicSideRounded({ x, y, size, rotation });\n return;\n }\n }\n\n _drawExtraRounded({ x, y, size, getNeighbor }: DrawArgs): void {\n const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\n const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\n const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\n const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\n\n const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\n\n if (neighborsCount === 0) {\n this._basicDot({ x, y, size, rotation: 0 });\n return;\n }\n\n if (neighborsCount > 2 || (leftNeighbor && rightNeighbor) || (topNeighbor && bottomNeighbor)) {\n this._basicSquare({ x, y, size, rotation: 0 });\n return;\n }\n\n if (neighborsCount === 2) {\n let rotation = 0;\n\n if (leftNeighbor && topNeighbor) {\n rotation = Math.PI / 2;\n } else if (topNeighbor && rightNeighbor) {\n rotation = Math.PI;\n } else if (rightNeighbor && bottomNeighbor) {\n rotation = -Math.PI / 2;\n }\n\n this._basicCornerExtraRounded({ x, y, size, rotation });\n return;\n }\n\n if (neighborsCount === 1) {\n let rotation = 0;\n\n if (topNeighbor) {\n rotation = Math.PI / 2;\n } else if (rightNeighbor) {\n rotation = Math.PI;\n } else if (bottomNeighbor) {\n rotation = -Math.PI / 2;\n }\n\n this._basicSideRounded({ x, y, size, rotation });\n return;\n }\n }\n\n _drawClassy({ x, y, size, getNeighbor }: DrawArgs): void {\n const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\n const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\n const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\n const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\n\n const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\n\n if (neighborsCount === 0) {\n this._basicCornersRounded({ x, y, size, rotation: Math.PI / 2 });\n return;\n }\n\n if (!leftNeighbor && !topNeighbor) {\n this._basicCornerRounded({ x, y, size, rotation: -Math.PI / 2 });\n return;\n }\n\n if (!rightNeighbor && !bottomNeighbor) {\n this._basicCornerRounded({ x, y, size, rotation: Math.PI / 2 });\n return;\n }\n\n this._basicSquare({ x, y, size, rotation: 0 });\n }\n\n _drawClassyRounded({ x, y, size, getNeighbor }: DrawArgs): void {\n const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\n const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\n const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\n const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\n\n const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\n\n if (neighborsCount === 0) {\n this._basicCornersRounded({ x, y, size, rotation: Math.PI / 2 });\n return;\n }\n\n if (!leftNeighbor && !topNeighbor) {\n this._basicCornerExtraRounded({ x, y, size, rotation: -Math.PI / 2 });\n return;\n }\n\n if (!rightNeighbor && !bottomNeighbor) {\n this._basicCornerExtraRounded({ x, y, size, rotation: Math.PI / 2 });\n return;\n }\n\n this._basicSquare({ x, y, size, rotation: 0 });\n }\n}\n","import cornerSquareTypes from \"../../../constants/cornerSquareTypes\";\nimport { CornerSquareType, DrawArgs, BasicFigureDrawArgs, RotateFigureArgs } from \"../../../types\";\n\nexport default class QRCornerSquare {\n _element?: SVGElement;\n _svg: SVGElement;\n _type: CornerSquareType;\n\n constructor({ svg, type }: { svg: SVGElement; type: CornerSquareType }) {\n this._svg = svg;\n this._type = type;\n }\n\n draw(x: number, y: number, size: number, rotation: number): void {\n const type = this._type;\n let drawFunction;\n\n switch (type) {\n case cornerSquareTypes.square:\n drawFunction = this._drawSquare;\n break;\n case cornerSquareTypes.extraRounded:\n drawFunction = this._drawExtraRounded;\n break;\n case cornerSquareTypes.dot:\n default:\n drawFunction = this._drawDot;\n }\n\n drawFunction.call(this, { x, y, size, rotation });\n }\n\n _rotateFigure({ x, y, size, rotation = 0, draw }: RotateFigureArgs): void {\n const cx = x + size / 2;\n const cy = y + size / 2;\n\n draw();\n this._element?.setAttribute(\"transform\", `rotate(${(180 * rotation) / Math.PI},${cx},${cy})`);\n }\n\n _basicDot(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n const dotSize = size / 7;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n this._element.setAttribute(\"clip-rule\", \"evenodd\");\n this._element.setAttribute(\n \"d\",\n `M ${x + size / 2} ${y}` + // M cx, y // Move to top of ring\n `a ${size / 2} ${size / 2} 0 1 0 0.1 0` + // a outerRadius, outerRadius, 0, 1, 0, 1, 0 // Draw outer arc, but don't close it\n `z` + // Z // Close the outer shape\n `m 0 ${dotSize}` + // m -1 outerRadius-innerRadius // Move to top point of inner radius\n `a ${size / 2 - dotSize} ${size / 2 - dotSize} 0 1 1 -0.1 0` + // a innerRadius, innerRadius, 0, 1, 1, -1, 0 // Draw inner arc, but don't close it\n `Z` // Z // Close the inner ring. Actually will still work without, but inner ring will have one unit missing in stroke\n );\n }\n });\n }\n\n _basicSquare(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n const dotSize = size / 7;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n this._element.setAttribute(\"clip-rule\", \"evenodd\");\n this._element.setAttribute(\n \"d\",\n `M ${x} ${y}` +\n `v ${size}` +\n `h ${size}` +\n `v ${-size}` +\n `z` +\n `M ${x + dotSize} ${y + dotSize}` +\n `h ${size - 2 * dotSize}` +\n `v ${size - 2 * dotSize}` +\n `h ${-size + 2 * dotSize}` +\n `z`\n );\n }\n });\n }\n\n _basicExtraRounded(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n const dotSize = size / 7;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n this._element.setAttribute(\"clip-rule\", \"evenodd\");\n this._element.setAttribute(\n \"d\",\n `M ${x} ${y + 2.5 * dotSize}` +\n `v ${2 * dotSize}` +\n `a ${2.5 * dotSize} ${2.5 * dotSize}, 0, 0, 0, ${dotSize * 2.5} ${dotSize * 2.5}` +\n `h ${2 * dotSize}` +\n `a ${2.5 * dotSize} ${2.5 * dotSize}, 0, 0, 0, ${dotSize * 2.5} ${-dotSize * 2.5}` +\n `v ${-2 * dotSize}` +\n `a ${2.5 * dotSize} ${2.5 * dotSize}, 0, 0, 0, ${-dotSize * 2.5} ${-dotSize * 2.5}` +\n `h ${-2 * dotSize}` +\n `a ${2.5 * dotSize} ${2.5 * dotSize}, 0, 0, 0, ${-dotSize * 2.5} ${dotSize * 2.5}` +\n `M ${x + 2.5 * dotSize} ${y + dotSize}` +\n `h ${2 * dotSize}` +\n `a ${1.5 * dotSize} ${1.5 * dotSize}, 0, 0, 1, ${dotSize * 1.5} ${dotSize * 1.5}` +\n `v ${2 * dotSize}` +\n `a ${1.5 * dotSize} ${1.5 * dotSize}, 0, 0, 1, ${-dotSize * 1.5} ${dotSize * 1.5}` +\n `h ${-2 * dotSize}` +\n `a ${1.5 * dotSize} ${1.5 * dotSize}, 0, 0, 1, ${-dotSize * 1.5} ${-dotSize * 1.5}` +\n `v ${-2 * dotSize}` +\n `a ${1.5 * dotSize} ${1.5 * dotSize}, 0, 0, 1, ${dotSize * 1.5} ${-dotSize * 1.5}`\n );\n }\n });\n }\n\n _drawDot({ x, y, size, rotation }: DrawArgs): void {\n this._basicDot({ x, y, size, rotation });\n }\n\n _drawSquare({ x, y, size, rotation }: DrawArgs): void {\n this._basicSquare({ x, y, size, rotation });\n }\n\n _drawExtraRounded({ x, y, size, rotation }: DrawArgs): void {\n this._basicExtraRounded({ x, y, size, rotation });\n }\n}\n","import cornerDotTypes from \"../../../constants/cornerDotTypes\";\nimport { CornerDotType, RotateFigureArgs, BasicFigureDrawArgs, DrawArgs } from \"../../../types\";\n\nexport default class QRCornerDot {\n _element?: SVGElement;\n _svg: SVGElement;\n _type: CornerDotType;\n\n constructor({ svg, type }: { svg: SVGElement; type: CornerDotType }) {\n this._svg = svg;\n this._type = type;\n }\n\n draw(x: number, y: number, size: number, rotation: number): void {\n const type = this._type;\n let drawFunction;\n\n switch (type) {\n case cornerDotTypes.square:\n drawFunction = this._drawSquare;\n break;\n case cornerDotTypes.dot:\n default:\n drawFunction = this._drawDot;\n }\n\n drawFunction.call(this, { x, y, size, rotation });\n }\n\n _rotateFigure({ x, y, size, rotation = 0, draw }: RotateFigureArgs): void {\n const cx = x + size / 2;\n const cy = y + size / 2;\n\n draw();\n this._element?.setAttribute(\"transform\", `rotate(${(180 * rotation) / Math.PI},${cx},${cy})`);\n }\n\n _basicDot(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"circle\");\n this._element.setAttribute(\"cx\", String(x + size / 2));\n this._element.setAttribute(\"cy\", String(y + size / 2));\n this._element.setAttribute(\"r\", String(size / 2));\n }\n });\n }\n\n _basicSquare(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"rect\");\n this._element.setAttribute(\"x\", String(x));\n this._element.setAttribute(\"y\", String(y));\n this._element.setAttribute(\"width\", String(size));\n this._element.setAttribute(\"height\", String(size));\n }\n });\n }\n\n _drawDot({ x, y, size, rotation }: DrawArgs): void {\n this._basicDot({ x, y, size, rotation });\n }\n\n _drawSquare({ x, y, size, rotation }: DrawArgs): void {\n this._basicSquare({ x, y, size, rotation });\n }\n}\n","import calculateImageSize from \"../tools/calculateImageSize\";\nimport errorCorrectionPercents from \"../constants/errorCorrectionPercents\";\nimport QRDot from \"../figures/dot/svg/QRDot\";\nimport QRCornerSquare from \"../figures/cornerSquare/svg/QRCornerSquare\";\nimport QRCornerDot from \"../figures/cornerDot/svg/QRCornerDot\";\nimport { RequiredOptions } from \"./QROptions\";\nimport gradientTypes from \"../constants/gradientTypes\";\nimport { QRCode, FilterFunction, Gradient } from \"../types\";\n\nconst squareMask = [\n [1, 1, 1, 1, 1, 1, 1],\n [1, 0, 0, 0, 0, 0, 1],\n [1, 0, 0, 0, 0, 0, 1],\n [1, 0, 0, 0, 0, 0, 1],\n [1, 0, 0, 0, 0, 0, 1],\n [1, 0, 0, 0, 0, 0, 1],\n [1, 1, 1, 1, 1, 1, 1]\n];\n\nconst dotMask = [\n [0, 0, 0, 0, 0, 0, 0],\n [0, 0, 0, 0, 0, 0, 0],\n [0, 0, 1, 1, 1, 0, 0],\n [0, 0, 1, 1, 1, 0, 0],\n [0, 0, 1, 1, 1, 0, 0],\n [0, 0, 0, 0, 0, 0, 0],\n [0, 0, 0, 0, 0, 0, 0]\n];\n\nexport default class QRSVG {\n _element: SVGElement;\n _style: SVGStyleElement;\n _defs: SVGElement;\n _dotsClipPath?: SVGElement;\n _cornersSquareClipPath?: SVGElement;\n _cornersDotClipPath?: SVGElement;\n _dots?: SVGElement;\n _cornerSquares?: SVGElement;\n _corners?: SVGElement;\n _cornerDots?: SVGElement;\n _options: RequiredOptions;\n _qr?: QRCode;\n _image?: HTMLImageElement;\n\n //TODO don't pass all options to this class\n constructor(options: RequiredOptions) {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\");\n this._element.setAttribute(\"width\", String(options.width));\n this._element.setAttribute(\"height\", String(options.height));\n this._defs = document.createElementNS(\"http://www.w3.org/2000/svg\", \"defs\");\n this._style = document.createElementNS(\"http://www.w3.org/2000/svg\", \"style\");\n\n this._options = options;\n }\n\n get width(): number {\n return this._options.width;\n }\n\n get height(): number {\n return this._options.height;\n }\n\n getElement(): SVGElement {\n return this._element;\n }\n\n clear(): void {\n const oldElement = this._element;\n this._element = oldElement.cloneNode(false) as SVGElement;\n oldElement?.parentNode?.replaceChild(this._element, oldElement);\n this._defs = document.createElementNS(\"http://www.w3.org/2000/svg\", \"defs\");\n this._style = document.createElementNS(\"http://www.w3.org/2000/svg\", \"style\");\n this._element.appendChild(this._style);\n this._element.appendChild(this._defs);\n }\n\n async drawQR(qr: QRCode): Promise {\n const count = qr.getModuleCount();\n const minSize = Math.min(this._options.width, this._options.height) - this._options.margin * 2;\n const dotSize = Math.floor(minSize / count);\n let drawImageSize = {\n hideXDots: 0,\n hideYDots: 0,\n width: 0,\n height: 0\n };\n\n this._qr = qr;\n\n if (this._options.image) {\n //We need it to get image size\n await this.loadImage();\n if (!this._image) return;\n const { imageOptions, qrOptions } = this._options;\n const coverLevel = imageOptions.imageSize * errorCorrectionPercents[qrOptions.errorCorrectionLevel];\n const maxHiddenDots = Math.floor(coverLevel * count * count);\n\n drawImageSize = calculateImageSize({\n originalWidth: this._image.width,\n originalHeight: this._image.height,\n maxHiddenDots,\n maxHiddenAxisDots: count - 14,\n dotSize\n });\n }\n\n this._element.appendChild(this._style);\n this._element.appendChild(this._defs);\n\n this.clear();\n this.drawBackground();\n this.drawDots((i: number, j: number): boolean => {\n if (this._options.imageOptions.hideBackgroundDots) {\n if (\n i >= (count - drawImageSize.hideXDots) / 2 &&\n i < (count + drawImageSize.hideXDots) / 2 &&\n j >= (count - drawImageSize.hideYDots) / 2 &&\n j < (count + drawImageSize.hideYDots) / 2\n ) {\n return false;\n }\n }\n\n if (squareMask[i]?.[j] || squareMask[i - count + 7]?.[j] || squareMask[i]?.[j - count + 7]) {\n return false;\n }\n\n if (dotMask[i]?.[j] || dotMask[i - count + 7]?.[j] || dotMask[i]?.[j - count + 7]) {\n return false;\n }\n\n return true;\n });\n this.drawCorners();\n\n if (this._options.image) {\n this.drawImage({ width: drawImageSize.width, height: drawImageSize.height, count, dotSize });\n }\n }\n\n drawBackground(): void {\n const element = this._element;\n const options = this._options;\n\n if (element) {\n const gradientOptions = options.backgroundOptions?.gradient;\n const color = options.backgroundOptions?.color;\n\n if (gradientOptions) {\n this._createColor({\n options: gradientOptions,\n color: color,\n additionalRotation: 0,\n x: 0,\n y: 0,\n height: options.height,\n width: options.width,\n name: \"background-color\"\n });\n } else if (options.backgroundOptions?.color) {\n this._createStyle({\n color: color,\n name: \"background-color\"\n });\n }\n }\n }\n\n drawDots(filter?: FilterFunction): void {\n if (!this._qr) {\n throw \"QR code is not defined\";\n }\n\n const options = this._options;\n const count = this._qr.getModuleCount();\n\n if (count > options.width || count > options.height) {\n throw \"The canvas is too small.\";\n }\n\n const minSize = Math.min(options.width, options.height) - options.margin * 2;\n const dotSize = Math.floor(minSize / count);\n const xBeginning = Math.floor((options.width - count * dotSize) / 2);\n const yBeginning = Math.floor((options.height - count * dotSize) / 2);\n const dot = new QRDot({ svg: this._element, type: options.dotsOptions.type });\n\n if (options.dotsOptions?.gradient) {\n this._dotsClipPath = document.createElementNS(\"http://www.w3.org/2000/svg\", \"clipPath\");\n this._dotsClipPath.setAttribute(\"id\", \"clip-path-dot-color\");\n this._defs.appendChild(this._dotsClipPath);\n this._createColor({\n options: options.dotsOptions?.gradient,\n color: options.dotsOptions.color,\n additionalRotation: 0,\n x: xBeginning,\n y: yBeginning,\n height: count * dotSize,\n width: count * dotSize,\n name: \"dot-color\"\n });\n } else if (options.dotsOptions.color) {\n this._dots = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n this._dots.setAttribute(\"class\", \"dot-color\");\n this._element.appendChild(this._dots);\n this._createStyle({\n color: options.dotsOptions.color,\n name: \"dot-color\"\n });\n }\n\n for (let i = 0; i < count; i++) {\n for (let j = 0; j < count; j++) {\n if (filter && !filter(i, j)) {\n continue;\n }\n if (!this._qr?.isDark(i, j)) {\n continue;\n }\n\n dot.draw(\n yBeginning + j * dotSize,\n xBeginning + i * dotSize,\n dotSize,\n (xOffset: number, yOffset: number): boolean => {\n if (i + xOffset < 0 || j + yOffset < 0 || i + xOffset >= count || j + yOffset >= count) return false;\n if (filter && !filter(i + xOffset, j + yOffset)) return false;\n return !!this._qr && this._qr.isDark(i + xOffset, j + yOffset);\n }\n );\n\n if (dot._element && this._dotsClipPath) {\n this._dotsClipPath.appendChild(dot._element);\n } else if (dot._element && this._dots) {\n this._dots.appendChild(dot._element);\n }\n }\n }\n }\n\n drawCorners(): void {\n if (!this._qr) {\n throw \"QR code is not defined\";\n }\n\n const element = this._element;\n const options = this._options;\n\n if (!element) {\n throw \"Element code is not defined\";\n }\n\n const count = this._qr.getModuleCount();\n const minSize = Math.min(options.width, options.height) - options.margin * 2;\n const dotSize = Math.floor(minSize / count);\n const cornersSquareSize = dotSize * 7;\n const cornersDotSize = dotSize * 3;\n const xBeginning = Math.floor((options.width - count * dotSize) / 2);\n const yBeginning = Math.floor((options.height - count * dotSize) / 2);\n\n [\n [0, 0, 0],\n [1, 0, Math.PI / 2],\n [0, 1, -Math.PI / 2]\n ].forEach(([column, row, rotation]) => {\n const x = xBeginning + column * dotSize * (count - 7);\n const y = yBeginning + row * dotSize * (count - 7);\n let cornersSquareClipPath = this._dotsClipPath;\n let cornersDotClipPath = this._dotsClipPath;\n\n if (options.cornersSquareOptions?.gradient) {\n cornersSquareClipPath = document.createElementNS(\"http://www.w3.org/2000/svg\", \"clipPath\");\n cornersSquareClipPath.setAttribute(\"id\", `clip-path-corners-square-color-${column}-${row}`);\n this._defs.appendChild(cornersSquareClipPath);\n this._cornersSquareClipPath = this._cornersDotClipPath = cornersDotClipPath = cornersSquareClipPath;\n\n this._createColor({\n options: options.cornersSquareOptions?.gradient,\n color: options.cornersSquareOptions?.color,\n additionalRotation: rotation,\n x,\n y,\n height: cornersSquareSize,\n width: cornersSquareSize,\n name: `corners-square-color-${column}-${row}`\n });\n } else {\n this._cornerSquares = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n this._cornerSquares.setAttribute(\"class\", `corners-square-color-${column}-${row}`);\n this._element.appendChild(this._cornerSquares);\n this._createStyle({\n color: options.cornersSquareOptions?.color,\n name: `corners-square-color-${column}-${row}`\n });\n }\n\n if (options.cornersSquareOptions?.type) {\n const cornersSquare = new QRCornerSquare({ svg: this._element, type: options.cornersSquareOptions.type });\n\n cornersSquare.draw(x, y, cornersSquareSize, rotation);\n\n if (options.cornersSquareOptions?.gradient && cornersSquare._element && cornersSquareClipPath) {\n cornersSquareClipPath.appendChild(cornersSquare._element);\n } else if (cornersSquare._element && this._cornerSquares) {\n this._cornerSquares.appendChild(cornersSquare._element);\n }\n } else {\n const dot = new QRDot({ svg: this._element, type: options.dotsOptions.type });\n\n for (let i = 0; i < squareMask.length; i++) {\n for (let j = 0; j < squareMask[i].length; j++) {\n if (!squareMask[i]?.[j]) {\n continue;\n }\n\n dot.draw(\n x + i * dotSize,\n y + j * dotSize,\n dotSize,\n (xOffset: number, yOffset: number): boolean => !!squareMask[i + xOffset]?.[j + yOffset]\n );\n\n if (dot._element && this._cornersSquareClipPath) {\n this._cornersSquareClipPath.appendChild(dot._element);\n } else if (dot._element && this._cornerSquares) {\n this._cornerSquares.appendChild(dot._element);\n }\n }\n }\n }\n\n if (options.cornersDotOptions?.gradient) {\n cornersDotClipPath = document.createElementNS(\"http://www.w3.org/2000/svg\", \"clipPath\");\n cornersDotClipPath.setAttribute(\"id\", `clip-path-corners-dot-color-${column}-${row}`);\n this._defs.appendChild(cornersDotClipPath);\n this._cornersDotClipPath = cornersDotClipPath;\n\n this._createColor({\n options: options.cornersDotOptions?.gradient,\n color: options.cornersDotOptions?.color,\n additionalRotation: rotation,\n x: x + dotSize * 2,\n y: y + dotSize * 2,\n height: cornersDotSize,\n width: cornersDotSize,\n name: `corners-dot-color-${column}-${row}`\n });\n } else {\n this._cornerDots = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n this._cornerDots.setAttribute(\"class\", `corners-dot-color-${column}-${row}`);\n this._element.appendChild(this._cornerDots);\n this._createStyle({\n color: options.cornersDotOptions?.color,\n name: `corners-dot-color-${column}-${row}`\n });\n }\n\n if (options.cornersDotOptions?.type) {\n const cornersDot = new QRCornerDot({ svg: this._element, type: options.cornersDotOptions.type });\n\n cornersDot.draw(x + dotSize * 2, y + dotSize * 2, cornersDotSize, rotation);\n\n if (options.cornersDotOptions?.gradient && cornersDot._element && cornersDotClipPath) {\n cornersDotClipPath.appendChild(cornersDot._element);\n } else if (cornersDot._element && this._cornerDots) {\n this._cornerDots.appendChild(cornersDot._element);\n }\n } else {\n const dot = new QRDot({ svg: this._element, type: options.dotsOptions.type });\n\n for (let i = 0; i < dotMask.length; i++) {\n for (let j = 0; j < dotMask[i].length; j++) {\n if (!dotMask[i]?.[j]) {\n continue;\n }\n\n dot.draw(\n x + i * dotSize,\n y + j * dotSize,\n dotSize,\n (xOffset: number, yOffset: number): boolean => !!dotMask[i + xOffset]?.[j + yOffset]\n );\n\n if (dot._element && this._cornersDotClipPath) {\n this._cornersDotClipPath.appendChild(dot._element);\n } else if (dot._element && this._cornerDots) {\n this._cornerDots.appendChild(dot._element);\n }\n }\n }\n }\n });\n }\n\n loadImage(): Promise {\n return new Promise((resolve, reject) => {\n const options = this._options;\n const image = new Image();\n\n if (!options.image) {\n return reject(\"Image is not defined\");\n }\n\n if (typeof options.imageOptions.crossOrigin === \"string\") {\n image.crossOrigin = options.imageOptions.crossOrigin;\n }\n\n this._image = image;\n image.onload = (): void => {\n resolve();\n };\n image.src = options.image;\n });\n }\n\n drawImage({\n width,\n height,\n count,\n dotSize\n }: {\n width: number;\n height: number;\n count: number;\n dotSize: number;\n }): void {\n const options = this._options;\n const xBeginning = Math.floor((options.width - count * dotSize) / 2);\n const yBeginning = Math.floor((options.height - count * dotSize) / 2);\n const dx = xBeginning + options.imageOptions.margin + (count * dotSize - width) / 2;\n const dy = yBeginning + options.imageOptions.margin + (count * dotSize - height) / 2;\n const dw = width - options.imageOptions.margin * 2;\n const dh = height - options.imageOptions.margin * 2;\n\n const image = document.createElementNS(\"http://www.w3.org/2000/svg\", \"image\");\n image.setAttribute(\"href\", options.image || \"\");\n image.setAttribute(\"x\", String(dx));\n image.setAttribute(\"y\", String(dy));\n image.setAttribute(\"width\", `${dw}px`);\n image.setAttribute(\"height\", `${dh}px`);\n\n this._element.appendChild(image);\n }\n\n _createColor({\n options,\n color,\n additionalRotation,\n x,\n y,\n height,\n width,\n name\n }: {\n options?: Gradient;\n color?: string;\n additionalRotation: number;\n x: number;\n y: number;\n height: number;\n width: number;\n name: string;\n }): void {\n const size = width > height ? width : height;\n const rect = document.createElementNS(\"http://www.w3.org/2000/svg\", \"rect\");\n rect.setAttribute(\"x\", String(x));\n rect.setAttribute(\"y\", String(y));\n rect.setAttribute(\"height\", String(height));\n rect.setAttribute(\"width\", String(width));\n rect.setAttribute(\"clip-path\", `url('#clip-path-${name}')`);\n\n if (options) {\n let gradient: SVGElement;\n if (options.type === gradientTypes.radial) {\n gradient = document.createElementNS(\"http://www.w3.org/2000/svg\", \"radialGradient\");\n gradient.setAttribute(\"id\", name);\n gradient.setAttribute(\"gradientUnits\", \"userSpaceOnUse\");\n gradient.setAttribute(\"fx\", String(x + width / 2));\n gradient.setAttribute(\"fy\", String(y + height / 2));\n gradient.setAttribute(\"cx\", String(x + width / 2));\n gradient.setAttribute(\"cy\", String(y + height / 2));\n gradient.setAttribute(\"r\", String(size / 2));\n } else {\n const rotation = ((options.rotation || 0) + additionalRotation) % (2 * Math.PI);\n const positiveRotation = (rotation + 2 * Math.PI) % (2 * Math.PI);\n let x0 = x + width / 2;\n let y0 = y + height / 2;\n let x1 = x + width / 2;\n let y1 = y + height / 2;\n\n if (\n (positiveRotation >= 0 && positiveRotation <= 0.25 * Math.PI) ||\n (positiveRotation > 1.75 * Math.PI && positiveRotation <= 2 * Math.PI)\n ) {\n x0 = x0 - width / 2;\n y0 = y0 - (height / 2) * Math.tan(rotation);\n x1 = x1 + width / 2;\n y1 = y1 + (height / 2) * Math.tan(rotation);\n } else if (positiveRotation > 0.25 * Math.PI && positiveRotation <= 0.75 * Math.PI) {\n y0 = y0 - height / 2;\n x0 = x0 - width / 2 / Math.tan(rotation);\n y1 = y1 + height / 2;\n x1 = x1 + width / 2 / Math.tan(rotation);\n } else if (positiveRotation > 0.75 * Math.PI && positiveRotation <= 1.25 * Math.PI) {\n x0 = x0 + width / 2;\n y0 = y0 + (height / 2) * Math.tan(rotation);\n x1 = x1 - width / 2;\n y1 = y1 - (height / 2) * Math.tan(rotation);\n } else if (positiveRotation > 1.25 * Math.PI && positiveRotation <= 1.75 * Math.PI) {\n y0 = y0 + height / 2;\n x0 = x0 + width / 2 / Math.tan(rotation);\n y1 = y1 - height / 2;\n x1 = x1 - width / 2 / Math.tan(rotation);\n }\n\n gradient = document.createElementNS(\"http://www.w3.org/2000/svg\", \"linearGradient\");\n gradient.setAttribute(\"id\", name);\n gradient.setAttribute(\"gradientUnits\", \"userSpaceOnUse\");\n gradient.setAttribute(\"x1\", String(Math.round(x0)));\n gradient.setAttribute(\"y1\", String(Math.round(y0)));\n gradient.setAttribute(\"x2\", String(Math.round(x1)));\n gradient.setAttribute(\"y2\", String(Math.round(y1)));\n }\n\n options.colorStops.forEach(({ offset, color }: { offset: number; color: string }) => {\n const stop = document.createElementNS(\"http://www.w3.org/2000/svg\", \"stop\");\n stop.setAttribute(\"offset\", `${100 * offset}%`);\n stop.setAttribute(\"stop-color\", color);\n gradient.appendChild(stop);\n });\n\n rect.setAttribute(\"fill\", `url('#${name}')`);\n this._defs.appendChild(gradient);\n } else if (color) {\n rect.setAttribute(\"fill\", color);\n }\n\n this._element.appendChild(rect);\n }\n\n _createStyle({ color, name }: { color?: string; name: string }): void {\n this._style.innerHTML += `.${name}{ fill: ${color}; }`;\n }\n}\n","import { DrawTypes } from \"../types\";\n\nexport default {\n canvas: \"canvas\",\n svg: \"svg\"\n} as DrawTypes;\n","import { TypeNumber } from \"../types\";\n\ninterface TypesMap {\n [key: number]: TypeNumber;\n}\n\nconst qrTypes: TypesMap = {};\n\nfor (let type = 0; type <= 40; type++) {\n qrTypes[type] = type as TypeNumber;\n}\n\n// 0 types is autodetect\n\n// types = {\n// 0: 0,\n// 1: 1,\n// ...\n// 40: 40\n// }\n\nexport default qrTypes;\n","import qrTypes from \"../constants/qrTypes\";\nimport drawTypes from \"../constants/drawTypes\";\nimport errorCorrectionLevels from \"../constants/errorCorrectionLevels\";\nimport { DotType, Options, TypeNumber, ErrorCorrectionLevel, Mode, DrawType, Gradient } from \"../types\";\n\nexport interface RequiredOptions extends Options {\n type: DrawType;\n width: number;\n height: number;\n margin: number;\n data: string;\n qrOptions: {\n typeNumber: TypeNumber;\n mode?: Mode;\n errorCorrectionLevel: ErrorCorrectionLevel;\n };\n imageOptions: {\n hideBackgroundDots: boolean;\n imageSize: number;\n crossOrigin?: string;\n margin: number;\n };\n dotsOptions: {\n type: DotType;\n color: string;\n gradient?: Gradient;\n };\n backgroundOptions: {\n color: string;\n gradient?: Gradient;\n };\n}\n\nconst defaultOptions: RequiredOptions = {\n type: drawTypes.canvas,\n width: 300,\n height: 300,\n data: \"\",\n margin: 0,\n qrOptions: {\n typeNumber: qrTypes[0],\n mode: undefined,\n errorCorrectionLevel: errorCorrectionLevels.Q\n },\n imageOptions: {\n hideBackgroundDots: true,\n imageSize: 0.4,\n crossOrigin: undefined,\n margin: 0\n },\n dotsOptions: {\n type: \"square\",\n color: \"#000\"\n },\n backgroundOptions: {\n color: \"#fff\"\n }\n};\n\nexport default defaultOptions;\n","import { ErrorCorrectionLevel } from \"../types\";\n\ninterface ErrorCorrectionLevels {\n [key: string]: ErrorCorrectionLevel;\n}\n\nexport default {\n L: \"L\",\n M: \"M\",\n Q: \"Q\",\n H: \"H\"\n} as ErrorCorrectionLevels;\n","import { RequiredOptions } from \"../core/QROptions\";\nimport { Gradient } from \"../types\";\n\nfunction sanitizeGradient(gradient: Gradient): Gradient {\n const newGradient = { ...gradient };\n\n if (!newGradient.colorStops || !newGradient.colorStops.length) {\n throw \"Field 'colorStops' is required in gradient\";\n }\n\n if (newGradient.rotation) {\n newGradient.rotation = Number(newGradient.rotation);\n } else {\n newGradient.rotation = 0;\n }\n\n newGradient.colorStops = newGradient.colorStops.map((colorStop: { offset: number; color: string }) => ({\n ...colorStop,\n offset: Number(colorStop.offset)\n }));\n\n return newGradient;\n}\n\nexport default function sanitizeOptions(options: RequiredOptions): RequiredOptions {\n const newOptions = { ...options };\n\n newOptions.width = Number(newOptions.width);\n newOptions.height = Number(newOptions.height);\n newOptions.margin = Number(newOptions.margin);\n newOptions.imageOptions = {\n ...newOptions.imageOptions,\n hideBackgroundDots: Boolean(newOptions.imageOptions.hideBackgroundDots),\n imageSize: Number(newOptions.imageOptions.imageSize),\n margin: Number(newOptions.imageOptions.margin)\n };\n\n if (newOptions.margin > Math.min(newOptions.width, newOptions.height)) {\n newOptions.margin = Math.min(newOptions.width, newOptions.height);\n }\n\n newOptions.dotsOptions = {\n ...newOptions.dotsOptions\n };\n if (newOptions.dotsOptions.gradient) {\n newOptions.dotsOptions.gradient = sanitizeGradient(newOptions.dotsOptions.gradient);\n }\n\n if (newOptions.cornersSquareOptions) {\n newOptions.cornersSquareOptions = {\n ...newOptions.cornersSquareOptions\n };\n if (newOptions.cornersSquareOptions.gradient) {\n newOptions.cornersSquareOptions.gradient = sanitizeGradient(newOptions.cornersSquareOptions.gradient);\n }\n }\n\n if (newOptions.cornersDotOptions) {\n newOptions.cornersDotOptions = {\n ...newOptions.cornersDotOptions\n };\n if (newOptions.cornersDotOptions.gradient) {\n newOptions.cornersDotOptions.gradient = sanitizeGradient(newOptions.cornersDotOptions.gradient);\n }\n }\n\n if (newOptions.backgroundOptions) {\n newOptions.backgroundOptions = {\n ...newOptions.backgroundOptions\n };\n if (newOptions.backgroundOptions.gradient) {\n newOptions.backgroundOptions.gradient = sanitizeGradient(newOptions.backgroundOptions.gradient);\n }\n }\n\n return newOptions;\n}\n","import QRCodeStyling from \"./core/QRCodeStyling\";\nimport dotTypes from \"./constants/dotTypes\";\nimport cornerDotTypes from \"./constants/cornerDotTypes\";\nimport cornerSquareTypes from \"./constants/cornerSquareTypes\";\nimport errorCorrectionLevels from \"./constants/errorCorrectionLevels\";\nimport errorCorrectionPercents from \"./constants/errorCorrectionPercents\";\nimport modes from \"./constants/modes\";\nimport qrTypes from \"./constants/qrTypes\";\nimport drawTypes from \"./constants/drawTypes\";\n\nexport * from \"./types\";\n\nexport {\n dotTypes,\n cornerDotTypes,\n cornerSquareTypes,\n errorCorrectionLevels,\n errorCorrectionPercents,\n modes,\n qrTypes,\n drawTypes\n};\n\nexport default QRCodeStyling;\n","import getMode from \"../tools/getMode\";\nimport mergeDeep from \"../tools/merge\";\nimport downloadURI from \"../tools/downloadURI\";\nimport QRCanvas from \"./QRCanvas\";\nimport QRSVG from \"./QRSVG\";\nimport drawTypes from \"../constants/drawTypes\";\n\nimport defaultOptions, { RequiredOptions } from \"./QROptions\";\nimport sanitizeOptions from \"../tools/sanitizeOptions\";\nimport { Extension, QRCode, Options, DownloadOptions } from \"../types\";\nimport qrcode from \"qrcode-generator\";\n\nexport default class QRCodeStyling {\n _options: RequiredOptions;\n _container?: HTMLElement;\n _canvas?: QRCanvas;\n _svg?: QRSVG;\n _qr?: QRCode;\n _canvasDrawingPromise?: Promise;\n _svgDrawingPromise?: Promise;\n\n constructor(options?: Partial) {\n this._options = options ? sanitizeOptions(mergeDeep(defaultOptions, options) as RequiredOptions) : defaultOptions;\n this.update();\n }\n\n static _clearContainer(container?: HTMLElement): void {\n if (container) {\n container.innerHTML = \"\";\n }\n }\n\n async _getQRStylingElement(extension: Extension = \"png\"): Promise {\n if (!this._qr) throw \"QR code is empty\";\n\n if (extension.toLowerCase() === \"svg\") {\n let promise, svg: QRSVG;\n\n if (this._svg && this._svgDrawingPromise) {\n svg = this._svg;\n promise = this._svgDrawingPromise;\n } else {\n svg = new QRSVG(this._options);\n promise = svg.drawQR(this._qr);\n }\n\n await promise;\n\n return svg;\n } else {\n let promise, canvas: QRCanvas;\n\n if (this._canvas && this._canvasDrawingPromise) {\n canvas = this._canvas;\n promise = this._canvasDrawingPromise;\n } else {\n canvas = new QRCanvas(this._options);\n promise = canvas.drawQR(this._qr);\n }\n\n await promise;\n\n return canvas;\n }\n }\n\n update(options?: Partial): void {\n QRCodeStyling._clearContainer(this._container);\n this._options = options ? sanitizeOptions(mergeDeep(this._options, options) as RequiredOptions) : this._options;\n\n if (!this._options.data) {\n return;\n }\n\n this._qr = qrcode(this._options.qrOptions.typeNumber, this._options.qrOptions.errorCorrectionLevel);\n this._qr.addData(this._options.data, this._options.qrOptions.mode || getMode(this._options.data));\n this._qr.make();\n\n if (this._options.type === drawTypes.canvas) {\n this._canvas = new QRCanvas(this._options);\n this._canvasDrawingPromise = this._canvas.drawQR(this._qr);\n this._svgDrawingPromise = undefined;\n this._svg = undefined;\n } else {\n this._svg = new QRSVG(this._options);\n this._svgDrawingPromise = this._svg.drawQR(this._qr);\n this._canvasDrawingPromise = undefined;\n this._canvas = undefined;\n }\n\n this.append(this._container);\n }\n\n append(container?: HTMLElement): void {\n if (!container) {\n return;\n }\n\n if (typeof container.appendChild !== \"function\") {\n throw \"Container should be a single DOM node\";\n }\n\n if (this._options.type === drawTypes.canvas) {\n if (this._canvas) {\n container.appendChild(this._canvas.getCanvas());\n }\n } else {\n if (this._svg) {\n container.appendChild(this._svg.getElement());\n }\n }\n\n this._container = container;\n }\n\n async getRawData(extension: Extension = \"png\"): Promise {\n if (!this._qr) throw \"QR code is empty\";\n const element = await this._getQRStylingElement(extension);\n\n if (extension.toLowerCase() === \"svg\") {\n const serializer = new XMLSerializer();\n const source = serializer.serializeToString(((element as unknown) as QRSVG).getElement());\n\n return new Blob(['\\r\\n' + source], { type: \"image/svg+xml\" });\n } else {\n return new Promise((resolve) =>\n ((element as unknown) as QRCanvas).getCanvas().toBlob(resolve, `image/${extension}`, 1)\n );\n }\n }\n\n async download(downloadOptions?: Partial | string): Promise {\n if (!this._qr) throw \"QR code is empty\";\n let extension = \"png\" as Extension;\n let name = \"qr\";\n\n //TODO remove deprecated code in the v2\n if (typeof downloadOptions === \"string\") {\n extension = downloadOptions as Extension;\n console.warn(\n \"Extension is deprecated as argument for 'download' method, please pass object { name: '...', extension: '...' } as argument\"\n );\n } else if (typeof downloadOptions === \"object\" && downloadOptions !== null) {\n if (downloadOptions.name) {\n name = downloadOptions.name;\n }\n if (downloadOptions.extension) {\n extension = downloadOptions.extension;\n }\n }\n\n const element = await this._getQRStylingElement(extension);\n\n if (extension.toLowerCase() === \"svg\") {\n const serializer = new XMLSerializer();\n let source = serializer.serializeToString(((element as unknown) as QRSVG).getElement());\n\n source = '\\r\\n' + source;\n const url = \"data:image/svg+xml;charset=utf-8,\" + encodeURIComponent(source);\n downloadURI(url, `${name}.svg`);\n } else {\n const url = ((element as unknown) as QRCanvas).getCanvas().toDataURL(`image/${extension}`);\n downloadURI(url, `${name}.${extension}`);\n }\n }\n}\n","import modes from \"../constants/modes\";\nimport { Mode } from \"../types\";\n\nexport default function getMode(data: string): Mode {\n switch (true) {\n case /^[0-9]*$/.test(data):\n return modes.numeric;\n case /^[0-9A-Z $%*+\\-./:]*$/.test(data):\n return modes.alphanumeric;\n default:\n return modes.byte;\n }\n}\n","import { Mode } from \"../types\";\n\ninterface Modes {\n [key: string]: Mode;\n}\n\nexport default {\n numeric: \"Numeric\",\n alphanumeric: \"Alphanumeric\",\n byte: \"Byte\",\n kanji: \"Kanji\"\n} as Modes;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tif(__webpack_module_cache__[moduleId]) {\n\t\treturn __webpack_module_cache__[moduleId].exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// module exports must be returned from runtime so entry inlining is disabled\n// startup\n// Load entry module and return exports\nreturn __webpack_require__(796);\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => module['default'] :\n\t\t() => module;\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop)"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://QRCodeStyling/webpack/universalModuleDefinition","webpack://QRCodeStyling/./node_modules/qrcode-generator/qrcode.js","webpack://QRCodeStyling/./src/tools/merge.ts","webpack://QRCodeStyling/./src/tools/downloadURI.ts","webpack://QRCodeStyling/./src/tools/calculateImageSize.ts","webpack://QRCodeStyling/./src/constants/errorCorrectionPercents.ts","webpack://QRCodeStyling/./src/constants/dotTypes.ts","webpack://QRCodeStyling/./src/figures/dot/canvas/QRDot.ts","webpack://QRCodeStyling/./src/constants/cornerSquareTypes.ts","webpack://QRCodeStyling/./src/figures/cornerSquare/canvas/QRCornerSquare.ts","webpack://QRCodeStyling/./src/constants/cornerDotTypes.ts","webpack://QRCodeStyling/./src/figures/cornerDot/canvas/QRCornerDot.ts","webpack://QRCodeStyling/./src/constants/gradientTypes.ts","webpack://QRCodeStyling/./src/core/QRCanvas.ts","webpack://QRCodeStyling/./src/figures/dot/svg/QRDot.ts","webpack://QRCodeStyling/./src/figures/cornerSquare/svg/QRCornerSquare.ts","webpack://QRCodeStyling/./src/figures/cornerDot/svg/QRCornerDot.ts","webpack://QRCodeStyling/./src/core/QRSVG.ts","webpack://QRCodeStyling/./src/constants/drawTypes.ts","webpack://QRCodeStyling/./src/constants/qrTypes.ts","webpack://QRCodeStyling/./src/core/QROptions.ts","webpack://QRCodeStyling/./src/constants/errorCorrectionLevels.ts","webpack://QRCodeStyling/./src/tools/sanitizeOptions.ts","webpack://QRCodeStyling/./src/index.ts","webpack://QRCodeStyling/./src/core/QRCodeStyling.ts","webpack://QRCodeStyling/./src/tools/getMode.ts","webpack://QRCodeStyling/./src/constants/modes.ts","webpack://QRCodeStyling/webpack/bootstrap","webpack://QRCodeStyling/webpack/startup","webpack://QRCodeStyling/webpack/runtime/compat get default export","webpack://QRCodeStyling/webpack/runtime/define property getters","webpack://QRCodeStyling/webpack/runtime/hasOwnProperty shorthand"],"names":["root","factory","exports","module","define","amd","self","qrcode","typeNumber","errorCorrectionLevel","_typeNumber","_errorCorrectionLevel","QRErrorCorrectionLevel","_modules","_moduleCount","_dataCache","_dataList","_this","makeImpl","test","maskPattern","moduleCount","modules","Array","row","col","setupPositionProbePattern","setupPositionAdjustPattern","setupTimingPattern","setupTypeInfo","setupTypeNumber","createData","mapData","r","c","pos","QRUtil","getPatternPosition","i","length","j","bits","getBCHTypeNumber","mod","Math","floor","data","getBCHTypeInfo","inc","bitIndex","byteIndex","maskFunc","getMaskFunction","dark","dataList","rsBlocks","QRRSBlock","getRSBlocks","buffer","qrBitBuffer","put","getMode","getLength","getLengthInBits","write","totalDataCount","dataCount","putBit","offset","maxDcCount","maxEcCount","dcdata","ecdata","dcCount","ecCount","totalCount","max","getBuffer","rsPoly","getErrorCorrectPolynomial","modPoly","qrPolynomial","modIndex","getAt","totalCodeCount","index","createBytes","addData","mode","newData","qrNumber","qrAlphaNum","qr8BitByte","qrKanji","push","isDark","getModuleCount","make","minLostPoint","pattern","lostPoint","getLostPoint","getBestMaskPattern","createTableTag","cellSize","margin","qrHtml","createSvgTag","alt","title","opts","arguments","text","id","mr","rect","size","qrSvg","scalable","escapeXml","join","trim","createDataURL","min","x","y","createImgTag","img","s","escaped","charAt","createASCII","r1","r2","p","blocks","blocksLastLineNoMargin","ascii","substring","_createHalfASCII","white","black","line","renderTo2dContext","context","fillStyle","fillRect","stringToBytes","stringToBytesFuncs","bytes","charCodeAt","createStringToBytes","unicodeData","numChars","unicodeMap","bin","base64DecodeInputStream","read","b","count","b0","b1","v","String","fromCharCode","unknownChar","PATTERN_POSITION_TABLE","G15","G18","getBCHDigit","L","M","Q","H","digit","d","errorCorrectLength","a","multiply","QRMath","gexp","type","sameCount","darkCount","abs","EXP_TABLE","LOG_TABLE","n","num","shift","_num","e","glog","ratio","RS_BLOCK_TABLE","qrRSBlock","rsBlock","getRsBlockTable","list","_buffer","_length","bufIndex","bit","_data","strToNum","chatToNum","getCode","_bytes","code","byteArrayOutputStream","writeByte","off","len","str","_str","_pos","_buflen","match","decode","width","height","getPixel","gif","_width","_height","pixel","out","writeString","writeShort","raster","getLZWRaster","writeBytes","lzwMinCodeSize","clearCode","endCode","bitLength","table","lzwTable","add","_out","_bitLength","_bitBuffer","byteOut","bitOut","dataIndex","contains","indexOf","flush","toByteArray","_map","_size","key","gifImage","setPixel","base64","_base64","writeEncoded","encode","padlen","toString","base64EncodeOutputStream","utf8","charcode","toUTF8Array","isObject","obj","isArray","mergeDeep","target","sources","source","undefined","Object","keys","forEach","targetValue","sourceValue","assign","downloadURI","uri","name","link","document","createElement","download","href","body","appendChild","click","removeChild","calculateImageSize","originalHeight","originalWidth","maxHiddenDots","maxHiddenAxisDots","dotSize","hideDots","imageSize","hideYDots","hideXDots","k","sqrt","ceil","round","this","_context","_type","draw","getNeighbor","drawFunction","dotTypes","_drawDot","_drawClassy","_drawClassyRounded","_drawRounded","_drawExtraRounded","_drawSquare","call","_rotateFigure","rotation","cx","cy","translate","rotate","closePath","_basicDot","args","arc","PI","_basicSquare","_basicSideRounded","lineTo","_basicCornerRounded","_basicCornerExtraRounded","_basicCornersRounded","_basicCornersExtraRounded","leftNeighbor","rightNeighbor","topNeighbor","bottomNeighbor","neighborsCount","cornerSquareTypes","_basicExtraRounded","cornerDotTypes","squareMask","dotMask","options","_canvas","_options","getContext","getCanvas","clear","canvasContext","clearRect","drawQR","qr","minSize","drawImageSize","_qr","image","loadImage","_image","imageOptions","qrOptions","coverLevel","errorCorrectionPercents","drawBackground","drawDots","hideBackgroundDots","drawCorners","drawImage","backgroundOptions","gradient","gradientOptions","_createGradient","additionalRotation","colorStops","color","addColorStop","filter","xBeginning","yBeginning","dot","dotsOptions","beginPath","xOffset","yOffset","strokeStyle","fill","cornersSquareSize","cornersDotSize","column","cornersSquareOptions","cornersSquare","cornersDotOptions","cornersDot","Promise","resolve","reject","Image","crossOrigin","onload","src","dx","dy","dw","dh","gradientTypes","createRadialGradient","positiveRotation","x0","y0","x1","y1","tan","createLinearGradient","svg","_svg","_element","setAttribute","createElementNS","_defs","_style","getElement","oldElement","cloneNode","parentNode","replaceChild","element","_createColor","_createStyle","_dotsClipPath","_dots","cornersSquareClipPath","cornersDotClipPath","_cornersSquareClipPath","_cornersDotClipPath","_cornerSquares","_cornerDots","base64Image","_getImageBlob","url","fetch","blob","_blobToBase64","reader","FileReader","dataUrl","result","readAsDataURL","_getBase64Image","stop","innerHTML","qrTypes","drawTypes","sanitizeGradient","newGradient","Number","map","colorStop","sanitizeOptions","newOptions","Boolean","update","_clearContainer","container","_getQRStylingElement","extension","toLowerCase","promise","_svgDrawingPromise","canvas","_canvasDrawingPromise","QRCodeStyling","_container","append","getRawData","serializer","XMLSerializer","serializeToString","Blob","toBlob","downloadOptions","console","warn","encodeURIComponent","toDataURL","__webpack_module_cache__","__webpack_require__","moduleId","__webpack_modules__","getter","__esModule","definition","o","defineProperty","enumerable","get","prop","prototype","hasOwnProperty"],"mappings":"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","file":"qr-code-styling.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"QRCodeStyling\"] = factory();\n\telse\n\t\troot[\"QRCodeStyling\"] = factory();\n})(self, function() {\nreturn ","//---------------------------------------------------------------------\n//\n// QR Code Generator for JavaScript\n//\n// Copyright (c) 2009 Kazuhiko Arase\n//\n// URL: http://www.d-project.com/\n//\n// Licensed under the MIT license:\n// http://www.opensource.org/licenses/mit-license.php\n//\n// The word 'QR Code' is registered trademark of\n// DENSO WAVE INCORPORATED\n// http://www.denso-wave.com/qrcode/faqpatent-e.html\n//\n//---------------------------------------------------------------------\n\nvar qrcode = function() {\n\n //---------------------------------------------------------------------\n // qrcode\n //---------------------------------------------------------------------\n\n /**\n * qrcode\n * @param typeNumber 1 to 40\n * @param errorCorrectionLevel 'L','M','Q','H'\n */\n var qrcode = function(typeNumber, errorCorrectionLevel) {\n\n var PAD0 = 0xEC;\n var PAD1 = 0x11;\n\n var _typeNumber = typeNumber;\n var _errorCorrectionLevel = QRErrorCorrectionLevel[errorCorrectionLevel];\n var _modules = null;\n var _moduleCount = 0;\n var _dataCache = null;\n var _dataList = [];\n\n var _this = {};\n\n var makeImpl = function(test, maskPattern) {\n\n _moduleCount = _typeNumber * 4 + 17;\n _modules = function(moduleCount) {\n var modules = new Array(moduleCount);\n for (var row = 0; row < moduleCount; row += 1) {\n modules[row] = new Array(moduleCount);\n for (var col = 0; col < moduleCount; col += 1) {\n modules[row][col] = null;\n }\n }\n return modules;\n }(_moduleCount);\n\n setupPositionProbePattern(0, 0);\n setupPositionProbePattern(_moduleCount - 7, 0);\n setupPositionProbePattern(0, _moduleCount - 7);\n setupPositionAdjustPattern();\n setupTimingPattern();\n setupTypeInfo(test, maskPattern);\n\n if (_typeNumber >= 7) {\n setupTypeNumber(test);\n }\n\n if (_dataCache == null) {\n _dataCache = createData(_typeNumber, _errorCorrectionLevel, _dataList);\n }\n\n mapData(_dataCache, maskPattern);\n };\n\n var setupPositionProbePattern = function(row, col) {\n\n for (var r = -1; r <= 7; r += 1) {\n\n if (row + r <= -1 || _moduleCount <= row + r) continue;\n\n for (var c = -1; c <= 7; c += 1) {\n\n if (col + c <= -1 || _moduleCount <= col + c) continue;\n\n if ( (0 <= r && r <= 6 && (c == 0 || c == 6) )\n || (0 <= c && c <= 6 && (r == 0 || r == 6) )\n || (2 <= r && r <= 4 && 2 <= c && c <= 4) ) {\n _modules[row + r][col + c] = true;\n } else {\n _modules[row + r][col + c] = false;\n }\n }\n }\n };\n\n var getBestMaskPattern = function() {\n\n var minLostPoint = 0;\n var pattern = 0;\n\n for (var i = 0; i < 8; i += 1) {\n\n makeImpl(true, i);\n\n var lostPoint = QRUtil.getLostPoint(_this);\n\n if (i == 0 || minLostPoint > lostPoint) {\n minLostPoint = lostPoint;\n pattern = i;\n }\n }\n\n return pattern;\n };\n\n var setupTimingPattern = function() {\n\n for (var r = 8; r < _moduleCount - 8; r += 1) {\n if (_modules[r][6] != null) {\n continue;\n }\n _modules[r][6] = (r % 2 == 0);\n }\n\n for (var c = 8; c < _moduleCount - 8; c += 1) {\n if (_modules[6][c] != null) {\n continue;\n }\n _modules[6][c] = (c % 2 == 0);\n }\n };\n\n var setupPositionAdjustPattern = function() {\n\n var pos = QRUtil.getPatternPosition(_typeNumber);\n\n for (var i = 0; i < pos.length; i += 1) {\n\n for (var j = 0; j < pos.length; j += 1) {\n\n var row = pos[i];\n var col = pos[j];\n\n if (_modules[row][col] != null) {\n continue;\n }\n\n for (var r = -2; r <= 2; r += 1) {\n\n for (var c = -2; c <= 2; c += 1) {\n\n if (r == -2 || r == 2 || c == -2 || c == 2\n || (r == 0 && c == 0) ) {\n _modules[row + r][col + c] = true;\n } else {\n _modules[row + r][col + c] = false;\n }\n }\n }\n }\n }\n };\n\n var setupTypeNumber = function(test) {\n\n var bits = QRUtil.getBCHTypeNumber(_typeNumber);\n\n for (var i = 0; i < 18; i += 1) {\n var mod = (!test && ( (bits >> i) & 1) == 1);\n _modules[Math.floor(i / 3)][i % 3 + _moduleCount - 8 - 3] = mod;\n }\n\n for (var i = 0; i < 18; i += 1) {\n var mod = (!test && ( (bits >> i) & 1) == 1);\n _modules[i % 3 + _moduleCount - 8 - 3][Math.floor(i / 3)] = mod;\n }\n };\n\n var setupTypeInfo = function(test, maskPattern) {\n\n var data = (_errorCorrectionLevel << 3) | maskPattern;\n var bits = QRUtil.getBCHTypeInfo(data);\n\n // vertical\n for (var i = 0; i < 15; i += 1) {\n\n var mod = (!test && ( (bits >> i) & 1) == 1);\n\n if (i < 6) {\n _modules[i][8] = mod;\n } else if (i < 8) {\n _modules[i + 1][8] = mod;\n } else {\n _modules[_moduleCount - 15 + i][8] = mod;\n }\n }\n\n // horizontal\n for (var i = 0; i < 15; i += 1) {\n\n var mod = (!test && ( (bits >> i) & 1) == 1);\n\n if (i < 8) {\n _modules[8][_moduleCount - i - 1] = mod;\n } else if (i < 9) {\n _modules[8][15 - i - 1 + 1] = mod;\n } else {\n _modules[8][15 - i - 1] = mod;\n }\n }\n\n // fixed module\n _modules[_moduleCount - 8][8] = (!test);\n };\n\n var mapData = function(data, maskPattern) {\n\n var inc = -1;\n var row = _moduleCount - 1;\n var bitIndex = 7;\n var byteIndex = 0;\n var maskFunc = QRUtil.getMaskFunction(maskPattern);\n\n for (var col = _moduleCount - 1; col > 0; col -= 2) {\n\n if (col == 6) col -= 1;\n\n while (true) {\n\n for (var c = 0; c < 2; c += 1) {\n\n if (_modules[row][col - c] == null) {\n\n var dark = false;\n\n if (byteIndex < data.length) {\n dark = ( ( (data[byteIndex] >>> bitIndex) & 1) == 1);\n }\n\n var mask = maskFunc(row, col - c);\n\n if (mask) {\n dark = !dark;\n }\n\n _modules[row][col - c] = dark;\n bitIndex -= 1;\n\n if (bitIndex == -1) {\n byteIndex += 1;\n bitIndex = 7;\n }\n }\n }\n\n row += inc;\n\n if (row < 0 || _moduleCount <= row) {\n row -= inc;\n inc = -inc;\n break;\n }\n }\n }\n };\n\n var createBytes = function(buffer, rsBlocks) {\n\n var offset = 0;\n\n var maxDcCount = 0;\n var maxEcCount = 0;\n\n var dcdata = new Array(rsBlocks.length);\n var ecdata = new Array(rsBlocks.length);\n\n for (var r = 0; r < rsBlocks.length; r += 1) {\n\n var dcCount = rsBlocks[r].dataCount;\n var ecCount = rsBlocks[r].totalCount - dcCount;\n\n maxDcCount = Math.max(maxDcCount, dcCount);\n maxEcCount = Math.max(maxEcCount, ecCount);\n\n dcdata[r] = new Array(dcCount);\n\n for (var i = 0; i < dcdata[r].length; i += 1) {\n dcdata[r][i] = 0xff & buffer.getBuffer()[i + offset];\n }\n offset += dcCount;\n\n var rsPoly = QRUtil.getErrorCorrectPolynomial(ecCount);\n var rawPoly = qrPolynomial(dcdata[r], rsPoly.getLength() - 1);\n\n var modPoly = rawPoly.mod(rsPoly);\n ecdata[r] = new Array(rsPoly.getLength() - 1);\n for (var i = 0; i < ecdata[r].length; i += 1) {\n var modIndex = i + modPoly.getLength() - ecdata[r].length;\n ecdata[r][i] = (modIndex >= 0)? modPoly.getAt(modIndex) : 0;\n }\n }\n\n var totalCodeCount = 0;\n for (var i = 0; i < rsBlocks.length; i += 1) {\n totalCodeCount += rsBlocks[i].totalCount;\n }\n\n var data = new Array(totalCodeCount);\n var index = 0;\n\n for (var i = 0; i < maxDcCount; i += 1) {\n for (var r = 0; r < rsBlocks.length; r += 1) {\n if (i < dcdata[r].length) {\n data[index] = dcdata[r][i];\n index += 1;\n }\n }\n }\n\n for (var i = 0; i < maxEcCount; i += 1) {\n for (var r = 0; r < rsBlocks.length; r += 1) {\n if (i < ecdata[r].length) {\n data[index] = ecdata[r][i];\n index += 1;\n }\n }\n }\n\n return data;\n };\n\n var createData = function(typeNumber, errorCorrectionLevel, dataList) {\n\n var rsBlocks = QRRSBlock.getRSBlocks(typeNumber, errorCorrectionLevel);\n\n var buffer = qrBitBuffer();\n\n for (var i = 0; i < dataList.length; i += 1) {\n var data = dataList[i];\n buffer.put(data.getMode(), 4);\n buffer.put(data.getLength(), QRUtil.getLengthInBits(data.getMode(), typeNumber) );\n data.write(buffer);\n }\n\n // calc num max data.\n var totalDataCount = 0;\n for (var i = 0; i < rsBlocks.length; i += 1) {\n totalDataCount += rsBlocks[i].dataCount;\n }\n\n if (buffer.getLengthInBits() > totalDataCount * 8) {\n throw 'code length overflow. ('\n + buffer.getLengthInBits()\n + '>'\n + totalDataCount * 8\n + ')';\n }\n\n // end code\n if (buffer.getLengthInBits() + 4 <= totalDataCount * 8) {\n buffer.put(0, 4);\n }\n\n // padding\n while (buffer.getLengthInBits() % 8 != 0) {\n buffer.putBit(false);\n }\n\n // padding\n while (true) {\n\n if (buffer.getLengthInBits() >= totalDataCount * 8) {\n break;\n }\n buffer.put(PAD0, 8);\n\n if (buffer.getLengthInBits() >= totalDataCount * 8) {\n break;\n }\n buffer.put(PAD1, 8);\n }\n\n return createBytes(buffer, rsBlocks);\n };\n\n _this.addData = function(data, mode) {\n\n mode = mode || 'Byte';\n\n var newData = null;\n\n switch(mode) {\n case 'Numeric' :\n newData = qrNumber(data);\n break;\n case 'Alphanumeric' :\n newData = qrAlphaNum(data);\n break;\n case 'Byte' :\n newData = qr8BitByte(data);\n break;\n case 'Kanji' :\n newData = qrKanji(data);\n break;\n default :\n throw 'mode:' + mode;\n }\n\n _dataList.push(newData);\n _dataCache = null;\n };\n\n _this.isDark = function(row, col) {\n if (row < 0 || _moduleCount <= row || col < 0 || _moduleCount <= col) {\n throw row + ',' + col;\n }\n return _modules[row][col];\n };\n\n _this.getModuleCount = function() {\n return _moduleCount;\n };\n\n _this.make = function() {\n if (_typeNumber < 1) {\n var typeNumber = 1;\n\n for (; typeNumber < 40; typeNumber++) {\n var rsBlocks = QRRSBlock.getRSBlocks(typeNumber, _errorCorrectionLevel);\n var buffer = qrBitBuffer();\n\n for (var i = 0; i < _dataList.length; i++) {\n var data = _dataList[i];\n buffer.put(data.getMode(), 4);\n buffer.put(data.getLength(), QRUtil.getLengthInBits(data.getMode(), typeNumber) );\n data.write(buffer);\n }\n\n var totalDataCount = 0;\n for (var i = 0; i < rsBlocks.length; i++) {\n totalDataCount += rsBlocks[i].dataCount;\n }\n\n if (buffer.getLengthInBits() <= totalDataCount * 8) {\n break;\n }\n }\n\n _typeNumber = typeNumber;\n }\n\n makeImpl(false, getBestMaskPattern() );\n };\n\n _this.createTableTag = function(cellSize, margin) {\n\n cellSize = cellSize || 2;\n margin = (typeof margin == 'undefined')? cellSize * 4 : margin;\n\n var qrHtml = '';\n\n qrHtml += '
' +\n escapeXml(title.text) + '' : '';\n qrSvg += (alt.text) ? '' +\n escapeXml(alt.text) + '' : '';\n qrSvg += '';\n qrSvg += '': escaped += '>'; break;\n case '&': escaped += '&'; break;\n case '\"': escaped += '"'; break;\n default : escaped += c; break;\n }\n }\n return escaped;\n };\n\n var _createHalfASCII = function(margin) {\n var cellSize = 1;\n margin = (typeof margin == 'undefined')? cellSize * 2 : margin;\n\n var size = _this.getModuleCount() * cellSize + margin * 2;\n var min = margin;\n var max = size - margin;\n\n var y, x, r1, r2, p;\n\n var blocks = {\n '██': '█',\n '█ ': '▀',\n ' █': '▄',\n ' ': ' '\n };\n\n var blocksLastLineNoMargin = {\n '██': '▀',\n '█ ': '▀',\n ' █': ' ',\n ' ': ' '\n };\n\n var ascii = '';\n for (y = 0; y < size; y += 2) {\n r1 = Math.floor((y - min) / cellSize);\n r2 = Math.floor((y + 1 - min) / cellSize);\n for (x = 0; x < size; x += 1) {\n p = '█';\n\n if (min <= x && x < max && min <= y && y < max && _this.isDark(r1, Math.floor((x - min) / cellSize))) {\n p = ' ';\n }\n\n if (min <= x && x < max && min <= y+1 && y+1 < max && _this.isDark(r2, Math.floor((x - min) / cellSize))) {\n p += ' ';\n }\n else {\n p += '█';\n }\n\n // Output 2 characters per pixel, to create full square. 1 character per pixels gives only half width of square.\n ascii += (margin < 1 && y+1 >= max) ? blocksLastLineNoMargin[p] : blocks[p];\n }\n\n ascii += '\\n';\n }\n\n if (size % 2 && margin > 0) {\n return ascii.substring(0, ascii.length - size - 1) + Array(size+1).join('▀');\n }\n\n return ascii.substring(0, ascii.length-1);\n };\n\n _this.createASCII = function(cellSize, margin) {\n cellSize = cellSize || 1;\n\n if (cellSize < 2) {\n return _createHalfASCII(margin);\n }\n\n cellSize -= 1;\n margin = (typeof margin == 'undefined')? cellSize * 2 : margin;\n\n var size = _this.getModuleCount() * cellSize + margin * 2;\n var min = margin;\n var max = size - margin;\n\n var y, x, r, p;\n\n var white = Array(cellSize+1).join('██');\n var black = Array(cellSize+1).join(' ');\n\n var ascii = '';\n var line = '';\n for (y = 0; y < size; y += 1) {\n r = Math.floor( (y - min) / cellSize);\n line = '';\n for (x = 0; x < size; x += 1) {\n p = 1;\n\n if (min <= x && x < max && min <= y && y < max && _this.isDark(r, Math.floor((x - min) / cellSize))) {\n p = 0;\n }\n\n // Output 2 characters per pixel, to create full square. 1 character per pixels gives only half width of square.\n line += p ? white : black;\n }\n\n for (r = 0; r < cellSize; r += 1) {\n ascii += line + '\\n';\n }\n }\n\n return ascii.substring(0, ascii.length-1);\n };\n\n _this.renderTo2dContext = function(context, cellSize) {\n cellSize = cellSize || 2;\n var length = _this.getModuleCount();\n for (var row = 0; row < length; row++) {\n for (var col = 0; col < length; col++) {\n context.fillStyle = _this.isDark(row, col) ? 'black' : 'white';\n context.fillRect(row * cellSize, col * cellSize, cellSize, cellSize);\n }\n }\n }\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qrcode.stringToBytes\n //---------------------------------------------------------------------\n\n qrcode.stringToBytesFuncs = {\n 'default' : function(s) {\n var bytes = [];\n for (var i = 0; i < s.length; i += 1) {\n var c = s.charCodeAt(i);\n bytes.push(c & 0xff);\n }\n return bytes;\n }\n };\n\n qrcode.stringToBytes = qrcode.stringToBytesFuncs['default'];\n\n //---------------------------------------------------------------------\n // qrcode.createStringToBytes\n //---------------------------------------------------------------------\n\n /**\n * @param unicodeData base64 string of byte array.\n * [16bit Unicode],[16bit Bytes], ...\n * @param numChars\n */\n qrcode.createStringToBytes = function(unicodeData, numChars) {\n\n // create conversion map.\n\n var unicodeMap = function() {\n\n var bin = base64DecodeInputStream(unicodeData);\n var read = function() {\n var b = bin.read();\n if (b == -1) throw 'eof';\n return b;\n };\n\n var count = 0;\n var unicodeMap = {};\n while (true) {\n var b0 = bin.read();\n if (b0 == -1) break;\n var b1 = read();\n var b2 = read();\n var b3 = read();\n var k = String.fromCharCode( (b0 << 8) | b1);\n var v = (b2 << 8) | b3;\n unicodeMap[k] = v;\n count += 1;\n }\n if (count != numChars) {\n throw count + ' != ' + numChars;\n }\n\n return unicodeMap;\n }();\n\n var unknownChar = '?'.charCodeAt(0);\n\n return function(s) {\n var bytes = [];\n for (var i = 0; i < s.length; i += 1) {\n var c = s.charCodeAt(i);\n if (c < 128) {\n bytes.push(c);\n } else {\n var b = unicodeMap[s.charAt(i)];\n if (typeof b == 'number') {\n if ( (b & 0xff) == b) {\n // 1byte\n bytes.push(b);\n } else {\n // 2bytes\n bytes.push(b >>> 8);\n bytes.push(b & 0xff);\n }\n } else {\n bytes.push(unknownChar);\n }\n }\n }\n return bytes;\n };\n };\n\n //---------------------------------------------------------------------\n // QRMode\n //---------------------------------------------------------------------\n\n var QRMode = {\n MODE_NUMBER : 1 << 0,\n MODE_ALPHA_NUM : 1 << 1,\n MODE_8BIT_BYTE : 1 << 2,\n MODE_KANJI : 1 << 3\n };\n\n //---------------------------------------------------------------------\n // QRErrorCorrectionLevel\n //---------------------------------------------------------------------\n\n var QRErrorCorrectionLevel = {\n L : 1,\n M : 0,\n Q : 3,\n H : 2\n };\n\n //---------------------------------------------------------------------\n // QRMaskPattern\n //---------------------------------------------------------------------\n\n var QRMaskPattern = {\n PATTERN000 : 0,\n PATTERN001 : 1,\n PATTERN010 : 2,\n PATTERN011 : 3,\n PATTERN100 : 4,\n PATTERN101 : 5,\n PATTERN110 : 6,\n PATTERN111 : 7\n };\n\n //---------------------------------------------------------------------\n // QRUtil\n //---------------------------------------------------------------------\n\n var QRUtil = function() {\n\n var PATTERN_POSITION_TABLE = [\n [],\n [6, 18],\n [6, 22],\n [6, 26],\n [6, 30],\n [6, 34],\n [6, 22, 38],\n [6, 24, 42],\n [6, 26, 46],\n [6, 28, 50],\n [6, 30, 54],\n [6, 32, 58],\n [6, 34, 62],\n [6, 26, 46, 66],\n [6, 26, 48, 70],\n [6, 26, 50, 74],\n [6, 30, 54, 78],\n [6, 30, 56, 82],\n [6, 30, 58, 86],\n [6, 34, 62, 90],\n [6, 28, 50, 72, 94],\n [6, 26, 50, 74, 98],\n [6, 30, 54, 78, 102],\n [6, 28, 54, 80, 106],\n [6, 32, 58, 84, 110],\n [6, 30, 58, 86, 114],\n [6, 34, 62, 90, 118],\n [6, 26, 50, 74, 98, 122],\n [6, 30, 54, 78, 102, 126],\n [6, 26, 52, 78, 104, 130],\n [6, 30, 56, 82, 108, 134],\n [6, 34, 60, 86, 112, 138],\n [6, 30, 58, 86, 114, 142],\n [6, 34, 62, 90, 118, 146],\n [6, 30, 54, 78, 102, 126, 150],\n [6, 24, 50, 76, 102, 128, 154],\n [6, 28, 54, 80, 106, 132, 158],\n [6, 32, 58, 84, 110, 136, 162],\n [6, 26, 54, 82, 110, 138, 166],\n [6, 30, 58, 86, 114, 142, 170]\n ];\n var G15 = (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0);\n var G18 = (1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | (1 << 2) | (1 << 0);\n var G15_MASK = (1 << 14) | (1 << 12) | (1 << 10) | (1 << 4) | (1 << 1);\n\n var _this = {};\n\n var getBCHDigit = function(data) {\n var digit = 0;\n while (data != 0) {\n digit += 1;\n data >>>= 1;\n }\n return digit;\n };\n\n _this.getBCHTypeInfo = function(data) {\n var d = data << 10;\n while (getBCHDigit(d) - getBCHDigit(G15) >= 0) {\n d ^= (G15 << (getBCHDigit(d) - getBCHDigit(G15) ) );\n }\n return ( (data << 10) | d) ^ G15_MASK;\n };\n\n _this.getBCHTypeNumber = function(data) {\n var d = data << 12;\n while (getBCHDigit(d) - getBCHDigit(G18) >= 0) {\n d ^= (G18 << (getBCHDigit(d) - getBCHDigit(G18) ) );\n }\n return (data << 12) | d;\n };\n\n _this.getPatternPosition = function(typeNumber) {\n return PATTERN_POSITION_TABLE[typeNumber - 1];\n };\n\n _this.getMaskFunction = function(maskPattern) {\n\n switch (maskPattern) {\n\n case QRMaskPattern.PATTERN000 :\n return function(i, j) { return (i + j) % 2 == 0; };\n case QRMaskPattern.PATTERN001 :\n return function(i, j) { return i % 2 == 0; };\n case QRMaskPattern.PATTERN010 :\n return function(i, j) { return j % 3 == 0; };\n case QRMaskPattern.PATTERN011 :\n return function(i, j) { return (i + j) % 3 == 0; };\n case QRMaskPattern.PATTERN100 :\n return function(i, j) { return (Math.floor(i / 2) + Math.floor(j / 3) ) % 2 == 0; };\n case QRMaskPattern.PATTERN101 :\n return function(i, j) { return (i * j) % 2 + (i * j) % 3 == 0; };\n case QRMaskPattern.PATTERN110 :\n return function(i, j) { return ( (i * j) % 2 + (i * j) % 3) % 2 == 0; };\n case QRMaskPattern.PATTERN111 :\n return function(i, j) { return ( (i * j) % 3 + (i + j) % 2) % 2 == 0; };\n\n default :\n throw 'bad maskPattern:' + maskPattern;\n }\n };\n\n _this.getErrorCorrectPolynomial = function(errorCorrectLength) {\n var a = qrPolynomial([1], 0);\n for (var i = 0; i < errorCorrectLength; i += 1) {\n a = a.multiply(qrPolynomial([1, QRMath.gexp(i)], 0) );\n }\n return a;\n };\n\n _this.getLengthInBits = function(mode, type) {\n\n if (1 <= type && type < 10) {\n\n // 1 - 9\n\n switch(mode) {\n case QRMode.MODE_NUMBER : return 10;\n case QRMode.MODE_ALPHA_NUM : return 9;\n case QRMode.MODE_8BIT_BYTE : return 8;\n case QRMode.MODE_KANJI : return 8;\n default :\n throw 'mode:' + mode;\n }\n\n } else if (type < 27) {\n\n // 10 - 26\n\n switch(mode) {\n case QRMode.MODE_NUMBER : return 12;\n case QRMode.MODE_ALPHA_NUM : return 11;\n case QRMode.MODE_8BIT_BYTE : return 16;\n case QRMode.MODE_KANJI : return 10;\n default :\n throw 'mode:' + mode;\n }\n\n } else if (type < 41) {\n\n // 27 - 40\n\n switch(mode) {\n case QRMode.MODE_NUMBER : return 14;\n case QRMode.MODE_ALPHA_NUM : return 13;\n case QRMode.MODE_8BIT_BYTE : return 16;\n case QRMode.MODE_KANJI : return 12;\n default :\n throw 'mode:' + mode;\n }\n\n } else {\n throw 'type:' + type;\n }\n };\n\n _this.getLostPoint = function(qrcode) {\n\n var moduleCount = qrcode.getModuleCount();\n\n var lostPoint = 0;\n\n // LEVEL1\n\n for (var row = 0; row < moduleCount; row += 1) {\n for (var col = 0; col < moduleCount; col += 1) {\n\n var sameCount = 0;\n var dark = qrcode.isDark(row, col);\n\n for (var r = -1; r <= 1; r += 1) {\n\n if (row + r < 0 || moduleCount <= row + r) {\n continue;\n }\n\n for (var c = -1; c <= 1; c += 1) {\n\n if (col + c < 0 || moduleCount <= col + c) {\n continue;\n }\n\n if (r == 0 && c == 0) {\n continue;\n }\n\n if (dark == qrcode.isDark(row + r, col + c) ) {\n sameCount += 1;\n }\n }\n }\n\n if (sameCount > 5) {\n lostPoint += (3 + sameCount - 5);\n }\n }\n };\n\n // LEVEL2\n\n for (var row = 0; row < moduleCount - 1; row += 1) {\n for (var col = 0; col < moduleCount - 1; col += 1) {\n var count = 0;\n if (qrcode.isDark(row, col) ) count += 1;\n if (qrcode.isDark(row + 1, col) ) count += 1;\n if (qrcode.isDark(row, col + 1) ) count += 1;\n if (qrcode.isDark(row + 1, col + 1) ) count += 1;\n if (count == 0 || count == 4) {\n lostPoint += 3;\n }\n }\n }\n\n // LEVEL3\n\n for (var row = 0; row < moduleCount; row += 1) {\n for (var col = 0; col < moduleCount - 6; col += 1) {\n if (qrcode.isDark(row, col)\n && !qrcode.isDark(row, col + 1)\n && qrcode.isDark(row, col + 2)\n && qrcode.isDark(row, col + 3)\n && qrcode.isDark(row, col + 4)\n && !qrcode.isDark(row, col + 5)\n && qrcode.isDark(row, col + 6) ) {\n lostPoint += 40;\n }\n }\n }\n\n for (var col = 0; col < moduleCount; col += 1) {\n for (var row = 0; row < moduleCount - 6; row += 1) {\n if (qrcode.isDark(row, col)\n && !qrcode.isDark(row + 1, col)\n && qrcode.isDark(row + 2, col)\n && qrcode.isDark(row + 3, col)\n && qrcode.isDark(row + 4, col)\n && !qrcode.isDark(row + 5, col)\n && qrcode.isDark(row + 6, col) ) {\n lostPoint += 40;\n }\n }\n }\n\n // LEVEL4\n\n var darkCount = 0;\n\n for (var col = 0; col < moduleCount; col += 1) {\n for (var row = 0; row < moduleCount; row += 1) {\n if (qrcode.isDark(row, col) ) {\n darkCount += 1;\n }\n }\n }\n\n var ratio = Math.abs(100 * darkCount / moduleCount / moduleCount - 50) / 5;\n lostPoint += ratio * 10;\n\n return lostPoint;\n };\n\n return _this;\n }();\n\n //---------------------------------------------------------------------\n // QRMath\n //---------------------------------------------------------------------\n\n var QRMath = function() {\n\n var EXP_TABLE = new Array(256);\n var LOG_TABLE = new Array(256);\n\n // initialize tables\n for (var i = 0; i < 8; i += 1) {\n EXP_TABLE[i] = 1 << i;\n }\n for (var i = 8; i < 256; i += 1) {\n EXP_TABLE[i] = EXP_TABLE[i - 4]\n ^ EXP_TABLE[i - 5]\n ^ EXP_TABLE[i - 6]\n ^ EXP_TABLE[i - 8];\n }\n for (var i = 0; i < 255; i += 1) {\n LOG_TABLE[EXP_TABLE[i] ] = i;\n }\n\n var _this = {};\n\n _this.glog = function(n) {\n\n if (n < 1) {\n throw 'glog(' + n + ')';\n }\n\n return LOG_TABLE[n];\n };\n\n _this.gexp = function(n) {\n\n while (n < 0) {\n n += 255;\n }\n\n while (n >= 256) {\n n -= 255;\n }\n\n return EXP_TABLE[n];\n };\n\n return _this;\n }();\n\n //---------------------------------------------------------------------\n // qrPolynomial\n //---------------------------------------------------------------------\n\n function qrPolynomial(num, shift) {\n\n if (typeof num.length == 'undefined') {\n throw num.length + '/' + shift;\n }\n\n var _num = function() {\n var offset = 0;\n while (offset < num.length && num[offset] == 0) {\n offset += 1;\n }\n var _num = new Array(num.length - offset + shift);\n for (var i = 0; i < num.length - offset; i += 1) {\n _num[i] = num[i + offset];\n }\n return _num;\n }();\n\n var _this = {};\n\n _this.getAt = function(index) {\n return _num[index];\n };\n\n _this.getLength = function() {\n return _num.length;\n };\n\n _this.multiply = function(e) {\n\n var num = new Array(_this.getLength() + e.getLength() - 1);\n\n for (var i = 0; i < _this.getLength(); i += 1) {\n for (var j = 0; j < e.getLength(); j += 1) {\n num[i + j] ^= QRMath.gexp(QRMath.glog(_this.getAt(i) ) + QRMath.glog(e.getAt(j) ) );\n }\n }\n\n return qrPolynomial(num, 0);\n };\n\n _this.mod = function(e) {\n\n if (_this.getLength() - e.getLength() < 0) {\n return _this;\n }\n\n var ratio = QRMath.glog(_this.getAt(0) ) - QRMath.glog(e.getAt(0) );\n\n var num = new Array(_this.getLength() );\n for (var i = 0; i < _this.getLength(); i += 1) {\n num[i] = _this.getAt(i);\n }\n\n for (var i = 0; i < e.getLength(); i += 1) {\n num[i] ^= QRMath.gexp(QRMath.glog(e.getAt(i) ) + ratio);\n }\n\n // recursive call\n return qrPolynomial(num, 0).mod(e);\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // QRRSBlock\n //---------------------------------------------------------------------\n\n var QRRSBlock = function() {\n\n var RS_BLOCK_TABLE = [\n\n // L\n // M\n // Q\n // H\n\n // 1\n [1, 26, 19],\n [1, 26, 16],\n [1, 26, 13],\n [1, 26, 9],\n\n // 2\n [1, 44, 34],\n [1, 44, 28],\n [1, 44, 22],\n [1, 44, 16],\n\n // 3\n [1, 70, 55],\n [1, 70, 44],\n [2, 35, 17],\n [2, 35, 13],\n\n // 4\n [1, 100, 80],\n [2, 50, 32],\n [2, 50, 24],\n [4, 25, 9],\n\n // 5\n [1, 134, 108],\n [2, 67, 43],\n [2, 33, 15, 2, 34, 16],\n [2, 33, 11, 2, 34, 12],\n\n // 6\n [2, 86, 68],\n [4, 43, 27],\n [4, 43, 19],\n [4, 43, 15],\n\n // 7\n [2, 98, 78],\n [4, 49, 31],\n [2, 32, 14, 4, 33, 15],\n [4, 39, 13, 1, 40, 14],\n\n // 8\n [2, 121, 97],\n [2, 60, 38, 2, 61, 39],\n [4, 40, 18, 2, 41, 19],\n [4, 40, 14, 2, 41, 15],\n\n // 9\n [2, 146, 116],\n [3, 58, 36, 2, 59, 37],\n [4, 36, 16, 4, 37, 17],\n [4, 36, 12, 4, 37, 13],\n\n // 10\n [2, 86, 68, 2, 87, 69],\n [4, 69, 43, 1, 70, 44],\n [6, 43, 19, 2, 44, 20],\n [6, 43, 15, 2, 44, 16],\n\n // 11\n [4, 101, 81],\n [1, 80, 50, 4, 81, 51],\n [4, 50, 22, 4, 51, 23],\n [3, 36, 12, 8, 37, 13],\n\n // 12\n [2, 116, 92, 2, 117, 93],\n [6, 58, 36, 2, 59, 37],\n [4, 46, 20, 6, 47, 21],\n [7, 42, 14, 4, 43, 15],\n\n // 13\n [4, 133, 107],\n [8, 59, 37, 1, 60, 38],\n [8, 44, 20, 4, 45, 21],\n [12, 33, 11, 4, 34, 12],\n\n // 14\n [3, 145, 115, 1, 146, 116],\n [4, 64, 40, 5, 65, 41],\n [11, 36, 16, 5, 37, 17],\n [11, 36, 12, 5, 37, 13],\n\n // 15\n [5, 109, 87, 1, 110, 88],\n [5, 65, 41, 5, 66, 42],\n [5, 54, 24, 7, 55, 25],\n [11, 36, 12, 7, 37, 13],\n\n // 16\n [5, 122, 98, 1, 123, 99],\n [7, 73, 45, 3, 74, 46],\n [15, 43, 19, 2, 44, 20],\n [3, 45, 15, 13, 46, 16],\n\n // 17\n [1, 135, 107, 5, 136, 108],\n [10, 74, 46, 1, 75, 47],\n [1, 50, 22, 15, 51, 23],\n [2, 42, 14, 17, 43, 15],\n\n // 18\n [5, 150, 120, 1, 151, 121],\n [9, 69, 43, 4, 70, 44],\n [17, 50, 22, 1, 51, 23],\n [2, 42, 14, 19, 43, 15],\n\n // 19\n [3, 141, 113, 4, 142, 114],\n [3, 70, 44, 11, 71, 45],\n [17, 47, 21, 4, 48, 22],\n [9, 39, 13, 16, 40, 14],\n\n // 20\n [3, 135, 107, 5, 136, 108],\n [3, 67, 41, 13, 68, 42],\n [15, 54, 24, 5, 55, 25],\n [15, 43, 15, 10, 44, 16],\n\n // 21\n [4, 144, 116, 4, 145, 117],\n [17, 68, 42],\n [17, 50, 22, 6, 51, 23],\n [19, 46, 16, 6, 47, 17],\n\n // 22\n [2, 139, 111, 7, 140, 112],\n [17, 74, 46],\n [7, 54, 24, 16, 55, 25],\n [34, 37, 13],\n\n // 23\n [4, 151, 121, 5, 152, 122],\n [4, 75, 47, 14, 76, 48],\n [11, 54, 24, 14, 55, 25],\n [16, 45, 15, 14, 46, 16],\n\n // 24\n [6, 147, 117, 4, 148, 118],\n [6, 73, 45, 14, 74, 46],\n [11, 54, 24, 16, 55, 25],\n [30, 46, 16, 2, 47, 17],\n\n // 25\n [8, 132, 106, 4, 133, 107],\n [8, 75, 47, 13, 76, 48],\n [7, 54, 24, 22, 55, 25],\n [22, 45, 15, 13, 46, 16],\n\n // 26\n [10, 142, 114, 2, 143, 115],\n [19, 74, 46, 4, 75, 47],\n [28, 50, 22, 6, 51, 23],\n [33, 46, 16, 4, 47, 17],\n\n // 27\n [8, 152, 122, 4, 153, 123],\n [22, 73, 45, 3, 74, 46],\n [8, 53, 23, 26, 54, 24],\n [12, 45, 15, 28, 46, 16],\n\n // 28\n [3, 147, 117, 10, 148, 118],\n [3, 73, 45, 23, 74, 46],\n [4, 54, 24, 31, 55, 25],\n [11, 45, 15, 31, 46, 16],\n\n // 29\n [7, 146, 116, 7, 147, 117],\n [21, 73, 45, 7, 74, 46],\n [1, 53, 23, 37, 54, 24],\n [19, 45, 15, 26, 46, 16],\n\n // 30\n [5, 145, 115, 10, 146, 116],\n [19, 75, 47, 10, 76, 48],\n [15, 54, 24, 25, 55, 25],\n [23, 45, 15, 25, 46, 16],\n\n // 31\n [13, 145, 115, 3, 146, 116],\n [2, 74, 46, 29, 75, 47],\n [42, 54, 24, 1, 55, 25],\n [23, 45, 15, 28, 46, 16],\n\n // 32\n [17, 145, 115],\n [10, 74, 46, 23, 75, 47],\n [10, 54, 24, 35, 55, 25],\n [19, 45, 15, 35, 46, 16],\n\n // 33\n [17, 145, 115, 1, 146, 116],\n [14, 74, 46, 21, 75, 47],\n [29, 54, 24, 19, 55, 25],\n [11, 45, 15, 46, 46, 16],\n\n // 34\n [13, 145, 115, 6, 146, 116],\n [14, 74, 46, 23, 75, 47],\n [44, 54, 24, 7, 55, 25],\n [59, 46, 16, 1, 47, 17],\n\n // 35\n [12, 151, 121, 7, 152, 122],\n [12, 75, 47, 26, 76, 48],\n [39, 54, 24, 14, 55, 25],\n [22, 45, 15, 41, 46, 16],\n\n // 36\n [6, 151, 121, 14, 152, 122],\n [6, 75, 47, 34, 76, 48],\n [46, 54, 24, 10, 55, 25],\n [2, 45, 15, 64, 46, 16],\n\n // 37\n [17, 152, 122, 4, 153, 123],\n [29, 74, 46, 14, 75, 47],\n [49, 54, 24, 10, 55, 25],\n [24, 45, 15, 46, 46, 16],\n\n // 38\n [4, 152, 122, 18, 153, 123],\n [13, 74, 46, 32, 75, 47],\n [48, 54, 24, 14, 55, 25],\n [42, 45, 15, 32, 46, 16],\n\n // 39\n [20, 147, 117, 4, 148, 118],\n [40, 75, 47, 7, 76, 48],\n [43, 54, 24, 22, 55, 25],\n [10, 45, 15, 67, 46, 16],\n\n // 40\n [19, 148, 118, 6, 149, 119],\n [18, 75, 47, 31, 76, 48],\n [34, 54, 24, 34, 55, 25],\n [20, 45, 15, 61, 46, 16]\n ];\n\n var qrRSBlock = function(totalCount, dataCount) {\n var _this = {};\n _this.totalCount = totalCount;\n _this.dataCount = dataCount;\n return _this;\n };\n\n var _this = {};\n\n var getRsBlockTable = function(typeNumber, errorCorrectionLevel) {\n\n switch(errorCorrectionLevel) {\n case QRErrorCorrectionLevel.L :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 0];\n case QRErrorCorrectionLevel.M :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 1];\n case QRErrorCorrectionLevel.Q :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 2];\n case QRErrorCorrectionLevel.H :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 3];\n default :\n return undefined;\n }\n };\n\n _this.getRSBlocks = function(typeNumber, errorCorrectionLevel) {\n\n var rsBlock = getRsBlockTable(typeNumber, errorCorrectionLevel);\n\n if (typeof rsBlock == 'undefined') {\n throw 'bad rs block @ typeNumber:' + typeNumber +\n '/errorCorrectionLevel:' + errorCorrectionLevel;\n }\n\n var length = rsBlock.length / 3;\n\n var list = [];\n\n for (var i = 0; i < length; i += 1) {\n\n var count = rsBlock[i * 3 + 0];\n var totalCount = rsBlock[i * 3 + 1];\n var dataCount = rsBlock[i * 3 + 2];\n\n for (var j = 0; j < count; j += 1) {\n list.push(qrRSBlock(totalCount, dataCount) );\n }\n }\n\n return list;\n };\n\n return _this;\n }();\n\n //---------------------------------------------------------------------\n // qrBitBuffer\n //---------------------------------------------------------------------\n\n var qrBitBuffer = function() {\n\n var _buffer = [];\n var _length = 0;\n\n var _this = {};\n\n _this.getBuffer = function() {\n return _buffer;\n };\n\n _this.getAt = function(index) {\n var bufIndex = Math.floor(index / 8);\n return ( (_buffer[bufIndex] >>> (7 - index % 8) ) & 1) == 1;\n };\n\n _this.put = function(num, length) {\n for (var i = 0; i < length; i += 1) {\n _this.putBit( ( (num >>> (length - i - 1) ) & 1) == 1);\n }\n };\n\n _this.getLengthInBits = function() {\n return _length;\n };\n\n _this.putBit = function(bit) {\n\n var bufIndex = Math.floor(_length / 8);\n if (_buffer.length <= bufIndex) {\n _buffer.push(0);\n }\n\n if (bit) {\n _buffer[bufIndex] |= (0x80 >>> (_length % 8) );\n }\n\n _length += 1;\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qrNumber\n //---------------------------------------------------------------------\n\n var qrNumber = function(data) {\n\n var _mode = QRMode.MODE_NUMBER;\n var _data = data;\n\n var _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return _data.length;\n };\n\n _this.write = function(buffer) {\n\n var data = _data;\n\n var i = 0;\n\n while (i + 2 < data.length) {\n buffer.put(strToNum(data.substring(i, i + 3) ), 10);\n i += 3;\n }\n\n if (i < data.length) {\n if (data.length - i == 1) {\n buffer.put(strToNum(data.substring(i, i + 1) ), 4);\n } else if (data.length - i == 2) {\n buffer.put(strToNum(data.substring(i, i + 2) ), 7);\n }\n }\n };\n\n var strToNum = function(s) {\n var num = 0;\n for (var i = 0; i < s.length; i += 1) {\n num = num * 10 + chatToNum(s.charAt(i) );\n }\n return num;\n };\n\n var chatToNum = function(c) {\n if ('0' <= c && c <= '9') {\n return c.charCodeAt(0) - '0'.charCodeAt(0);\n }\n throw 'illegal char :' + c;\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qrAlphaNum\n //---------------------------------------------------------------------\n\n var qrAlphaNum = function(data) {\n\n var _mode = QRMode.MODE_ALPHA_NUM;\n var _data = data;\n\n var _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return _data.length;\n };\n\n _this.write = function(buffer) {\n\n var s = _data;\n\n var i = 0;\n\n while (i + 1 < s.length) {\n buffer.put(\n getCode(s.charAt(i) ) * 45 +\n getCode(s.charAt(i + 1) ), 11);\n i += 2;\n }\n\n if (i < s.length) {\n buffer.put(getCode(s.charAt(i) ), 6);\n }\n };\n\n var getCode = function(c) {\n\n if ('0' <= c && c <= '9') {\n return c.charCodeAt(0) - '0'.charCodeAt(0);\n } else if ('A' <= c && c <= 'Z') {\n return c.charCodeAt(0) - 'A'.charCodeAt(0) + 10;\n } else {\n switch (c) {\n case ' ' : return 36;\n case '$' : return 37;\n case '%' : return 38;\n case '*' : return 39;\n case '+' : return 40;\n case '-' : return 41;\n case '.' : return 42;\n case '/' : return 43;\n case ':' : return 44;\n default :\n throw 'illegal char :' + c;\n }\n }\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qr8BitByte\n //---------------------------------------------------------------------\n\n var qr8BitByte = function(data) {\n\n var _mode = QRMode.MODE_8BIT_BYTE;\n var _data = data;\n var _bytes = qrcode.stringToBytes(data);\n\n var _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return _bytes.length;\n };\n\n _this.write = function(buffer) {\n for (var i = 0; i < _bytes.length; i += 1) {\n buffer.put(_bytes[i], 8);\n }\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qrKanji\n //---------------------------------------------------------------------\n\n var qrKanji = function(data) {\n\n var _mode = QRMode.MODE_KANJI;\n var _data = data;\n\n var stringToBytes = qrcode.stringToBytesFuncs['SJIS'];\n if (!stringToBytes) {\n throw 'sjis not supported.';\n }\n !function(c, code) {\n // self test for sjis support.\n var test = stringToBytes(c);\n if (test.length != 2 || ( (test[0] << 8) | test[1]) != code) {\n throw 'sjis not supported.';\n }\n }('\\u53cb', 0x9746);\n\n var _bytes = stringToBytes(data);\n\n var _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return ~~(_bytes.length / 2);\n };\n\n _this.write = function(buffer) {\n\n var data = _bytes;\n\n var i = 0;\n\n while (i + 1 < data.length) {\n\n var c = ( (0xff & data[i]) << 8) | (0xff & data[i + 1]);\n\n if (0x8140 <= c && c <= 0x9FFC) {\n c -= 0x8140;\n } else if (0xE040 <= c && c <= 0xEBBF) {\n c -= 0xC140;\n } else {\n throw 'illegal char at ' + (i + 1) + '/' + c;\n }\n\n c = ( (c >>> 8) & 0xff) * 0xC0 + (c & 0xff);\n\n buffer.put(c, 13);\n\n i += 2;\n }\n\n if (i < data.length) {\n throw 'illegal char at ' + (i + 1);\n }\n };\n\n return _this;\n };\n\n //=====================================================================\n // GIF Support etc.\n //\n\n //---------------------------------------------------------------------\n // byteArrayOutputStream\n //---------------------------------------------------------------------\n\n var byteArrayOutputStream = function() {\n\n var _bytes = [];\n\n var _this = {};\n\n _this.writeByte = function(b) {\n _bytes.push(b & 0xff);\n };\n\n _this.writeShort = function(i) {\n _this.writeByte(i);\n _this.writeByte(i >>> 8);\n };\n\n _this.writeBytes = function(b, off, len) {\n off = off || 0;\n len = len || b.length;\n for (var i = 0; i < len; i += 1) {\n _this.writeByte(b[i + off]);\n }\n };\n\n _this.writeString = function(s) {\n for (var i = 0; i < s.length; i += 1) {\n _this.writeByte(s.charCodeAt(i) );\n }\n };\n\n _this.toByteArray = function() {\n return _bytes;\n };\n\n _this.toString = function() {\n var s = '';\n s += '[';\n for (var i = 0; i < _bytes.length; i += 1) {\n if (i > 0) {\n s += ',';\n }\n s += _bytes[i];\n }\n s += ']';\n return s;\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // base64EncodeOutputStream\n //---------------------------------------------------------------------\n\n var base64EncodeOutputStream = function() {\n\n var _buffer = 0;\n var _buflen = 0;\n var _length = 0;\n var _base64 = '';\n\n var _this = {};\n\n var writeEncoded = function(b) {\n _base64 += String.fromCharCode(encode(b & 0x3f) );\n };\n\n var encode = function(n) {\n if (n < 0) {\n // error.\n } else if (n < 26) {\n return 0x41 + n;\n } else if (n < 52) {\n return 0x61 + (n - 26);\n } else if (n < 62) {\n return 0x30 + (n - 52);\n } else if (n == 62) {\n return 0x2b;\n } else if (n == 63) {\n return 0x2f;\n }\n throw 'n:' + n;\n };\n\n _this.writeByte = function(n) {\n\n _buffer = (_buffer << 8) | (n & 0xff);\n _buflen += 8;\n _length += 1;\n\n while (_buflen >= 6) {\n writeEncoded(_buffer >>> (_buflen - 6) );\n _buflen -= 6;\n }\n };\n\n _this.flush = function() {\n\n if (_buflen > 0) {\n writeEncoded(_buffer << (6 - _buflen) );\n _buffer = 0;\n _buflen = 0;\n }\n\n if (_length % 3 != 0) {\n // padding\n var padlen = 3 - _length % 3;\n for (var i = 0; i < padlen; i += 1) {\n _base64 += '=';\n }\n }\n };\n\n _this.toString = function() {\n return _base64;\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // base64DecodeInputStream\n //---------------------------------------------------------------------\n\n var base64DecodeInputStream = function(str) {\n\n var _str = str;\n var _pos = 0;\n var _buffer = 0;\n var _buflen = 0;\n\n var _this = {};\n\n _this.read = function() {\n\n while (_buflen < 8) {\n\n if (_pos >= _str.length) {\n if (_buflen == 0) {\n return -1;\n }\n throw 'unexpected end of file./' + _buflen;\n }\n\n var c = _str.charAt(_pos);\n _pos += 1;\n\n if (c == '=') {\n _buflen = 0;\n return -1;\n } else if (c.match(/^\\s$/) ) {\n // ignore if whitespace.\n continue;\n }\n\n _buffer = (_buffer << 6) | decode(c.charCodeAt(0) );\n _buflen += 6;\n }\n\n var n = (_buffer >>> (_buflen - 8) ) & 0xff;\n _buflen -= 8;\n return n;\n };\n\n var decode = function(c) {\n if (0x41 <= c && c <= 0x5a) {\n return c - 0x41;\n } else if (0x61 <= c && c <= 0x7a) {\n return c - 0x61 + 26;\n } else if (0x30 <= c && c <= 0x39) {\n return c - 0x30 + 52;\n } else if (c == 0x2b) {\n return 62;\n } else if (c == 0x2f) {\n return 63;\n } else {\n throw 'c:' + c;\n }\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // gifImage (B/W)\n //---------------------------------------------------------------------\n\n var gifImage = function(width, height) {\n\n var _width = width;\n var _height = height;\n var _data = new Array(width * height);\n\n var _this = {};\n\n _this.setPixel = function(x, y, pixel) {\n _data[y * _width + x] = pixel;\n };\n\n _this.write = function(out) {\n\n //---------------------------------\n // GIF Signature\n\n out.writeString('GIF87a');\n\n //---------------------------------\n // Screen Descriptor\n\n out.writeShort(_width);\n out.writeShort(_height);\n\n out.writeByte(0x80); // 2bit\n out.writeByte(0);\n out.writeByte(0);\n\n //---------------------------------\n // Global Color Map\n\n // black\n out.writeByte(0x00);\n out.writeByte(0x00);\n out.writeByte(0x00);\n\n // white\n out.writeByte(0xff);\n out.writeByte(0xff);\n out.writeByte(0xff);\n\n //---------------------------------\n // Image Descriptor\n\n out.writeString(',');\n out.writeShort(0);\n out.writeShort(0);\n out.writeShort(_width);\n out.writeShort(_height);\n out.writeByte(0);\n\n //---------------------------------\n // Local Color Map\n\n //---------------------------------\n // Raster Data\n\n var lzwMinCodeSize = 2;\n var raster = getLZWRaster(lzwMinCodeSize);\n\n out.writeByte(lzwMinCodeSize);\n\n var offset = 0;\n\n while (raster.length - offset > 255) {\n out.writeByte(255);\n out.writeBytes(raster, offset, 255);\n offset += 255;\n }\n\n out.writeByte(raster.length - offset);\n out.writeBytes(raster, offset, raster.length - offset);\n out.writeByte(0x00);\n\n //---------------------------------\n // GIF Terminator\n out.writeString(';');\n };\n\n var bitOutputStream = function(out) {\n\n var _out = out;\n var _bitLength = 0;\n var _bitBuffer = 0;\n\n var _this = {};\n\n _this.write = function(data, length) {\n\n if ( (data >>> length) != 0) {\n throw 'length over';\n }\n\n while (_bitLength + length >= 8) {\n _out.writeByte(0xff & ( (data << _bitLength) | _bitBuffer) );\n length -= (8 - _bitLength);\n data >>>= (8 - _bitLength);\n _bitBuffer = 0;\n _bitLength = 0;\n }\n\n _bitBuffer = (data << _bitLength) | _bitBuffer;\n _bitLength = _bitLength + length;\n };\n\n _this.flush = function() {\n if (_bitLength > 0) {\n _out.writeByte(_bitBuffer);\n }\n };\n\n return _this;\n };\n\n var getLZWRaster = function(lzwMinCodeSize) {\n\n var clearCode = 1 << lzwMinCodeSize;\n var endCode = (1 << lzwMinCodeSize) + 1;\n var bitLength = lzwMinCodeSize + 1;\n\n // Setup LZWTable\n var table = lzwTable();\n\n for (var i = 0; i < clearCode; i += 1) {\n table.add(String.fromCharCode(i) );\n }\n table.add(String.fromCharCode(clearCode) );\n table.add(String.fromCharCode(endCode) );\n\n var byteOut = byteArrayOutputStream();\n var bitOut = bitOutputStream(byteOut);\n\n // clear code\n bitOut.write(clearCode, bitLength);\n\n var dataIndex = 0;\n\n var s = String.fromCharCode(_data[dataIndex]);\n dataIndex += 1;\n\n while (dataIndex < _data.length) {\n\n var c = String.fromCharCode(_data[dataIndex]);\n dataIndex += 1;\n\n if (table.contains(s + c) ) {\n\n s = s + c;\n\n } else {\n\n bitOut.write(table.indexOf(s), bitLength);\n\n if (table.size() < 0xfff) {\n\n if (table.size() == (1 << bitLength) ) {\n bitLength += 1;\n }\n\n table.add(s + c);\n }\n\n s = c;\n }\n }\n\n bitOut.write(table.indexOf(s), bitLength);\n\n // end code\n bitOut.write(endCode, bitLength);\n\n bitOut.flush();\n\n return byteOut.toByteArray();\n };\n\n var lzwTable = function() {\n\n var _map = {};\n var _size = 0;\n\n var _this = {};\n\n _this.add = function(key) {\n if (_this.contains(key) ) {\n throw 'dup key:' + key;\n }\n _map[key] = _size;\n _size += 1;\n };\n\n _this.size = function() {\n return _size;\n };\n\n _this.indexOf = function(key) {\n return _map[key];\n };\n\n _this.contains = function(key) {\n return typeof _map[key] != 'undefined';\n };\n\n return _this;\n };\n\n return _this;\n };\n\n var createDataURL = function(width, height, getPixel) {\n var gif = gifImage(width, height);\n for (var y = 0; y < height; y += 1) {\n for (var x = 0; x < width; x += 1) {\n gif.setPixel(x, y, getPixel(x, y) );\n }\n }\n\n var b = byteArrayOutputStream();\n gif.write(b);\n\n var base64 = base64EncodeOutputStream();\n var bytes = b.toByteArray();\n for (var i = 0; i < bytes.length; i += 1) {\n base64.writeByte(bytes[i]);\n }\n base64.flush();\n\n return 'data:image/gif;base64,' + base64;\n };\n\n //---------------------------------------------------------------------\n // returns qrcode function.\n\n return qrcode;\n}();\n\n// multibyte support\n!function() {\n\n qrcode.stringToBytesFuncs['UTF-8'] = function(s) {\n // http://stackoverflow.com/questions/18729405/how-to-convert-utf8-string-to-byte-array\n function toUTF8Array(str) {\n var utf8 = [];\n for (var i=0; i < str.length; i++) {\n var charcode = str.charCodeAt(i);\n if (charcode < 0x80) utf8.push(charcode);\n else if (charcode < 0x800) {\n utf8.push(0xc0 | (charcode >> 6),\n 0x80 | (charcode & 0x3f));\n }\n else if (charcode < 0xd800 || charcode >= 0xe000) {\n utf8.push(0xe0 | (charcode >> 12),\n 0x80 | ((charcode>>6) & 0x3f),\n 0x80 | (charcode & 0x3f));\n }\n // surrogate pair\n else {\n i++;\n // UTF-16 encodes 0x10000-0x10FFFF by\n // subtracting 0x10000 and splitting the\n // 20 bits of 0x0-0xFFFFF into two halves\n charcode = 0x10000 + (((charcode & 0x3ff)<<10)\n | (str.charCodeAt(i) & 0x3ff));\n utf8.push(0xf0 | (charcode >>18),\n 0x80 | ((charcode>>12) & 0x3f),\n 0x80 | ((charcode>>6) & 0x3f),\n 0x80 | (charcode & 0x3f));\n }\n }\n return utf8;\n }\n return toUTF8Array(s);\n };\n\n}();\n\n(function (factory) {\n if (typeof define === 'function' && define.amd) {\n define([], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory();\n }\n}(function () {\n return qrcode;\n}));\n","import { UnknownObject } from \"../types\";\n\nconst isObject = (obj: Record): boolean => !!obj && typeof obj === \"object\" && !Array.isArray(obj);\n\nexport default function mergeDeep(target: UnknownObject, ...sources: UnknownObject[]): UnknownObject {\n if (!sources.length) return target;\n const source = sources.shift();\n if (source === undefined || !isObject(target) || !isObject(source)) return target;\n target = { ...target };\n Object.keys(source).forEach((key: string): void => {\n const targetValue = target[key];\n const sourceValue = source[key];\n\n if (Array.isArray(targetValue) && Array.isArray(sourceValue)) {\n target[key] = sourceValue;\n } else if (isObject(targetValue) && isObject(sourceValue)) {\n target[key] = mergeDeep(Object.assign({}, targetValue), sourceValue);\n } else {\n target[key] = sourceValue;\n }\n });\n\n return mergeDeep(target, ...sources);\n}\n","export default function downloadURI(uri: string, name: string): void {\n const link = document.createElement(\"a\");\n link.download = name;\n link.href = uri;\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n}\n","interface ImageSizeOptions {\n originalHeight: number;\n originalWidth: number;\n maxHiddenDots: number;\n maxHiddenAxisDots?: number;\n dotSize: number;\n}\n\ninterface ImageSizeResult {\n height: number;\n width: number;\n hideYDots: number;\n hideXDots: number;\n}\n\nexport default function calculateImageSize({\n originalHeight,\n originalWidth,\n maxHiddenDots,\n maxHiddenAxisDots,\n dotSize\n}: ImageSizeOptions): ImageSizeResult {\n const hideDots = { x: 0, y: 0 };\n const imageSize = { x: 0, y: 0 };\n\n if (originalHeight <= 0 || originalWidth <= 0 || maxHiddenDots <= 0 || dotSize <= 0) {\n return {\n height: 0,\n width: 0,\n hideYDots: 0,\n hideXDots: 0\n };\n }\n\n const k = originalHeight / originalWidth;\n\n //Getting the maximum possible axis hidden dots\n hideDots.x = Math.floor(Math.sqrt(maxHiddenDots / k));\n //The count of hidden dot's can't be less than 1\n if (hideDots.x <= 0) hideDots.x = 1;\n //Check the limit of the maximum allowed axis hidden dots\n if (maxHiddenAxisDots && maxHiddenAxisDots < hideDots.x) hideDots.x = maxHiddenAxisDots;\n //The count of dots should be odd\n if (hideDots.x % 2 === 0) hideDots.x--;\n imageSize.x = hideDots.x * dotSize;\n //Calculate opposite axis hidden dots based on axis value.\n //The value will be odd.\n //We use ceil to prevent dots covering by the image.\n hideDots.y = 1 + 2 * Math.ceil((hideDots.x * k - 1) / 2);\n imageSize.y = Math.round(imageSize.x * k);\n //If the result dots count is bigger than max - then decrease size and calculate again\n if (hideDots.y * hideDots.x > maxHiddenDots || (maxHiddenAxisDots && maxHiddenAxisDots < hideDots.y)) {\n if (maxHiddenAxisDots && maxHiddenAxisDots < hideDots.y) {\n hideDots.y = maxHiddenAxisDots;\n if (hideDots.y % 2 === 0) hideDots.x--;\n } else {\n hideDots.y -= 2;\n }\n imageSize.y = hideDots.y * dotSize;\n hideDots.x = 1 + 2 * Math.ceil((hideDots.y / k - 1) / 2);\n imageSize.x = Math.round(imageSize.y / k);\n }\n\n return {\n height: imageSize.y,\n width: imageSize.x,\n hideYDots: hideDots.x,\n hideXDots: hideDots.y\n };\n}\n","interface ErrorCorrectionPercents {\n [key: string]: number;\n}\n\nexport default {\n L: 0.07,\n M: 0.15,\n Q: 0.25,\n H: 0.3\n} as ErrorCorrectionPercents;\n","import { DotTypes } from \"../types\";\n\nexport default {\n dots: \"dots\",\n rounded: \"rounded\",\n classy: \"classy\",\n classyRounded: \"classy-rounded\",\n square: \"square\",\n extraRounded: \"extra-rounded\"\n} as DotTypes;\n","import dotTypes from \"../../../constants/dotTypes\";\nimport {\n DotType,\n GetNeighbor,\n RotateFigureArgsCanvas,\n BasicFigureDrawArgsCanvas,\n DrawArgsCanvas\n} from \"../../../types\";\n\nexport default class QRDot {\n _context: CanvasRenderingContext2D;\n _type: DotType;\n\n constructor({ context, type }: { context: CanvasRenderingContext2D; type: DotType }) {\n this._context = context;\n this._type = type;\n }\n\n draw(x: number, y: number, size: number, getNeighbor: GetNeighbor): void {\n const context = this._context;\n const type = this._type;\n let drawFunction;\n\n switch (type) {\n case dotTypes.dots:\n drawFunction = this._drawDot;\n break;\n case dotTypes.classy:\n drawFunction = this._drawClassy;\n break;\n case dotTypes.classyRounded:\n drawFunction = this._drawClassyRounded;\n break;\n case dotTypes.rounded:\n drawFunction = this._drawRounded;\n break;\n case dotTypes.extraRounded:\n drawFunction = this._drawExtraRounded;\n break;\n case dotTypes.square:\n default:\n drawFunction = this._drawSquare;\n }\n\n drawFunction.call(this, { x, y, size, context, getNeighbor });\n }\n\n _rotateFigure({ x, y, size, context, rotation = 0, draw }: RotateFigureArgsCanvas): void {\n const cx = x + size / 2;\n const cy = y + size / 2;\n\n context.translate(cx, cy);\n rotation && context.rotate(rotation);\n draw();\n context.closePath();\n rotation && context.rotate(-rotation);\n context.translate(-cx, -cy);\n }\n\n _basicDot(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.arc(0, 0, size / 2, 0, Math.PI * 2);\n }\n });\n }\n\n _basicSquare(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.rect(-size / 2, -size / 2, size, size);\n }\n });\n }\n\n //if rotation === 0 - right side is rounded\n _basicSideRounded(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.arc(0, 0, size / 2, -Math.PI / 2, Math.PI / 2);\n context.lineTo(-size / 2, size / 2);\n context.lineTo(-size / 2, -size / 2);\n context.lineTo(0, -size / 2);\n }\n });\n }\n\n //if rotation === 0 - top right corner is rounded\n _basicCornerRounded(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.arc(0, 0, size / 2, -Math.PI / 2, 0);\n context.lineTo(size / 2, size / 2);\n context.lineTo(-size / 2, size / 2);\n context.lineTo(-size / 2, -size / 2);\n context.lineTo(0, -size / 2);\n }\n });\n }\n\n //if rotation === 0 - top right corner is rounded\n _basicCornerExtraRounded(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.arc(-size / 2, size / 2, size, -Math.PI / 2, 0);\n context.lineTo(-size / 2, size / 2);\n context.lineTo(-size / 2, -size / 2);\n }\n });\n }\n\n _basicCornersRounded(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.arc(0, 0, size / 2, -Math.PI / 2, 0);\n context.lineTo(size / 2, size / 2);\n context.lineTo(0, size / 2);\n context.arc(0, 0, size / 2, Math.PI / 2, Math.PI);\n context.lineTo(-size / 2, -size / 2);\n context.lineTo(0, -size / 2);\n }\n });\n }\n\n _basicCornersExtraRounded(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.arc(-size / 2, size / 2, size, -Math.PI / 2, 0);\n context.arc(size / 2, -size / 2, size, Math.PI / 2, Math.PI);\n }\n });\n }\n\n _drawDot({ x, y, size, context }: DrawArgsCanvas): void {\n this._basicDot({ x, y, size, context, rotation: 0 });\n }\n\n _drawSquare({ x, y, size, context }: DrawArgsCanvas): void {\n this._basicSquare({ x, y, size, context, rotation: 0 });\n }\n\n _drawRounded({ x, y, size, context, getNeighbor }: DrawArgsCanvas): void {\n const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\n const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\n const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\n const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\n\n const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\n\n if (neighborsCount === 0) {\n this._basicDot({ x, y, size, context, rotation: 0 });\n return;\n }\n\n if (neighborsCount > 2 || (leftNeighbor && rightNeighbor) || (topNeighbor && bottomNeighbor)) {\n this._basicSquare({ x, y, size, context, rotation: 0 });\n return;\n }\n\n if (neighborsCount === 2) {\n let rotation = 0;\n\n if (leftNeighbor && topNeighbor) {\n rotation = Math.PI / 2;\n } else if (topNeighbor && rightNeighbor) {\n rotation = Math.PI;\n } else if (rightNeighbor && bottomNeighbor) {\n rotation = -Math.PI / 2;\n }\n\n this._basicCornerRounded({ x, y, size, context, rotation });\n return;\n }\n\n if (neighborsCount === 1) {\n let rotation = 0;\n\n if (topNeighbor) {\n rotation = Math.PI / 2;\n } else if (rightNeighbor) {\n rotation = Math.PI;\n } else if (bottomNeighbor) {\n rotation = -Math.PI / 2;\n }\n\n this._basicSideRounded({ x, y, size, context, rotation });\n return;\n }\n }\n\n _drawExtraRounded({ x, y, size, context, getNeighbor }: DrawArgsCanvas): void {\n const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\n const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\n const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\n const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\n\n const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\n\n if (neighborsCount === 0) {\n this._basicDot({ x, y, size, context, rotation: 0 });\n return;\n }\n\n if (neighborsCount > 2 || (leftNeighbor && rightNeighbor) || (topNeighbor && bottomNeighbor)) {\n this._basicSquare({ x, y, size, context, rotation: 0 });\n return;\n }\n\n if (neighborsCount === 2) {\n let rotation = 0;\n\n if (leftNeighbor && topNeighbor) {\n rotation = Math.PI / 2;\n } else if (topNeighbor && rightNeighbor) {\n rotation = Math.PI;\n } else if (rightNeighbor && bottomNeighbor) {\n rotation = -Math.PI / 2;\n }\n\n this._basicCornerExtraRounded({ x, y, size, context, rotation });\n return;\n }\n\n if (neighborsCount === 1) {\n let rotation = 0;\n\n if (topNeighbor) {\n rotation = Math.PI / 2;\n } else if (rightNeighbor) {\n rotation = Math.PI;\n } else if (bottomNeighbor) {\n rotation = -Math.PI / 2;\n }\n\n this._basicSideRounded({ x, y, size, context, rotation });\n return;\n }\n }\n\n _drawClassy({ x, y, size, context, getNeighbor }: DrawArgsCanvas): void {\n const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\n const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\n const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\n const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\n\n const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\n\n if (neighborsCount === 0) {\n this._basicCornersRounded({ x, y, size, context, rotation: Math.PI / 2 });\n return;\n }\n\n if (!leftNeighbor && !topNeighbor) {\n this._basicCornerRounded({ x, y, size, context, rotation: -Math.PI / 2 });\n return;\n }\n\n if (!rightNeighbor && !bottomNeighbor) {\n this._basicCornerRounded({ x, y, size, context, rotation: Math.PI / 2 });\n return;\n }\n\n this._basicSquare({ x, y, size, context, rotation: 0 });\n }\n\n _drawClassyRounded({ x, y, size, context, getNeighbor }: DrawArgsCanvas): void {\n const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\n const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\n const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\n const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\n\n const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\n\n if (neighborsCount === 0) {\n this._basicCornersRounded({ x, y, size, context, rotation: Math.PI / 2 });\n return;\n }\n\n if (!leftNeighbor && !topNeighbor) {\n this._basicCornerExtraRounded({ x, y, size, context, rotation: -Math.PI / 2 });\n return;\n }\n\n if (!rightNeighbor && !bottomNeighbor) {\n this._basicCornerExtraRounded({ x, y, size, context, rotation: Math.PI / 2 });\n return;\n }\n\n this._basicSquare({ x, y, size, context, rotation: 0 });\n }\n}\n","import { CornerSquareTypes } from \"../types\";\n\nexport default {\n dot: \"dot\",\n square: \"square\",\n extraRounded: \"extra-rounded\"\n} as CornerSquareTypes;\n","import cornerSquareTypes from \"../../../constants/cornerSquareTypes\";\nimport { CornerSquareType, RotateFigureArgsCanvas, BasicFigureDrawArgsCanvas, DrawArgsCanvas } from \"../../../types\";\n\nexport default class QRCornerSquare {\n _context: CanvasRenderingContext2D;\n _type: CornerSquareType;\n\n constructor({ context, type }: { context: CanvasRenderingContext2D; type: CornerSquareType }) {\n this._context = context;\n this._type = type;\n }\n\n draw(x: number, y: number, size: number, rotation: number): void {\n const context = this._context;\n const type = this._type;\n let drawFunction;\n\n switch (type) {\n case cornerSquareTypes.square:\n drawFunction = this._drawSquare;\n break;\n case cornerSquareTypes.extraRounded:\n drawFunction = this._drawExtraRounded;\n break;\n case cornerSquareTypes.dot:\n default:\n drawFunction = this._drawDot;\n }\n\n drawFunction.call(this, { x, y, size, context, rotation });\n }\n\n _rotateFigure({ x, y, size, context, rotation = 0, draw }: RotateFigureArgsCanvas): void {\n const cx = x + size / 2;\n const cy = y + size / 2;\n\n context.translate(cx, cy);\n rotation && context.rotate(rotation);\n draw();\n context.closePath();\n rotation && context.rotate(-rotation);\n context.translate(-cx, -cy);\n }\n\n _basicDot(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n const dotSize = size / 7;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.arc(0, 0, size / 2, 0, Math.PI * 2);\n context.arc(0, 0, size / 2 - dotSize, 0, Math.PI * 2);\n }\n });\n }\n\n _basicSquare(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n const dotSize = size / 7;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.rect(-size / 2, -size / 2, size, size);\n context.rect(-size / 2 + dotSize, -size / 2 + dotSize, size - 2 * dotSize, size - 2 * dotSize);\n }\n });\n }\n\n _basicExtraRounded(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n const dotSize = size / 7;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.arc(-dotSize, -dotSize, 2.5 * dotSize, Math.PI, -Math.PI / 2);\n context.lineTo(dotSize, -3.5 * dotSize);\n context.arc(dotSize, -dotSize, 2.5 * dotSize, -Math.PI / 2, 0);\n context.lineTo(3.5 * dotSize, -dotSize);\n context.arc(dotSize, dotSize, 2.5 * dotSize, 0, Math.PI / 2);\n context.lineTo(-dotSize, 3.5 * dotSize);\n context.arc(-dotSize, dotSize, 2.5 * dotSize, Math.PI / 2, Math.PI);\n context.lineTo(-3.5 * dotSize, -dotSize);\n\n context.arc(-dotSize, -dotSize, 1.5 * dotSize, Math.PI, -Math.PI / 2);\n context.lineTo(dotSize, -2.5 * dotSize);\n context.arc(dotSize, -dotSize, 1.5 * dotSize, -Math.PI / 2, 0);\n context.lineTo(2.5 * dotSize, -dotSize);\n context.arc(dotSize, dotSize, 1.5 * dotSize, 0, Math.PI / 2);\n context.lineTo(-dotSize, 2.5 * dotSize);\n context.arc(-dotSize, dotSize, 1.5 * dotSize, Math.PI / 2, Math.PI);\n context.lineTo(-2.5 * dotSize, -dotSize);\n }\n });\n }\n\n _drawDot({ x, y, size, context, rotation }: DrawArgsCanvas): void {\n this._basicDot({ x, y, size, context, rotation });\n }\n\n _drawSquare({ x, y, size, context, rotation }: DrawArgsCanvas): void {\n this._basicSquare({ x, y, size, context, rotation });\n }\n\n _drawExtraRounded({ x, y, size, context, rotation }: DrawArgsCanvas): void {\n this._basicExtraRounded({ x, y, size, context, rotation });\n }\n}\n","import { CornerDotTypes } from \"../types\";\n\nexport default {\n dot: \"dot\",\n square: \"square\"\n} as CornerDotTypes;\n","import cornerDotTypes from \"../../../constants/cornerDotTypes\";\nimport { CornerDotType, RotateFigureArgsCanvas, BasicFigureDrawArgsCanvas, DrawArgsCanvas } from \"../../../types\";\n\nexport default class QRCornerDot {\n _context: CanvasRenderingContext2D;\n _type: CornerDotType;\n\n constructor({ context, type }: { context: CanvasRenderingContext2D; type: CornerDotType }) {\n this._context = context;\n this._type = type;\n }\n\n draw(x: number, y: number, size: number, rotation: number): void {\n const context = this._context;\n const type = this._type;\n let drawFunction;\n\n switch (type) {\n case cornerDotTypes.square:\n drawFunction = this._drawSquare;\n break;\n case cornerDotTypes.dot:\n default:\n drawFunction = this._drawDot;\n }\n\n drawFunction.call(this, { x, y, size, context, rotation });\n }\n\n _rotateFigure({ x, y, size, context, rotation = 0, draw }: RotateFigureArgsCanvas): void {\n const cx = x + size / 2;\n const cy = y + size / 2;\n\n context.translate(cx, cy);\n rotation && context.rotate(rotation);\n draw();\n context.closePath();\n rotation && context.rotate(-rotation);\n context.translate(-cx, -cy);\n }\n\n _basicDot(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.arc(0, 0, size / 2, 0, Math.PI * 2);\n }\n });\n }\n\n _basicSquare(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.rect(-size / 2, -size / 2, size, size);\n }\n });\n }\n\n _drawDot({ x, y, size, context, rotation }: DrawArgsCanvas): void {\n this._basicDot({ x, y, size, context, rotation });\n }\n\n _drawSquare({ x, y, size, context, rotation }: DrawArgsCanvas): void {\n this._basicSquare({ x, y, size, context, rotation });\n }\n}\n","import { GradientTypes } from \"../types\";\n\nexport default {\n radial: \"radial\",\n linear: \"linear\"\n} as GradientTypes;\n","import calculateImageSize from \"../tools/calculateImageSize\";\nimport errorCorrectionPercents from \"../constants/errorCorrectionPercents\";\nimport QRDot from \"../figures/dot/canvas/QRDot\";\nimport QRCornerSquare from \"../figures/cornerSquare/canvas/QRCornerSquare\";\nimport QRCornerDot from \"../figures/cornerDot/canvas/QRCornerDot\";\nimport { RequiredOptions } from \"./QROptions\";\nimport gradientTypes from \"../constants/gradientTypes\";\nimport { QRCode, Gradient, FilterFunction } from \"../types\";\n\nconst squareMask = [\n [1, 1, 1, 1, 1, 1, 1],\n [1, 0, 0, 0, 0, 0, 1],\n [1, 0, 0, 0, 0, 0, 1],\n [1, 0, 0, 0, 0, 0, 1],\n [1, 0, 0, 0, 0, 0, 1],\n [1, 0, 0, 0, 0, 0, 1],\n [1, 1, 1, 1, 1, 1, 1]\n];\n\nconst dotMask = [\n [0, 0, 0, 0, 0, 0, 0],\n [0, 0, 0, 0, 0, 0, 0],\n [0, 0, 1, 1, 1, 0, 0],\n [0, 0, 1, 1, 1, 0, 0],\n [0, 0, 1, 1, 1, 0, 0],\n [0, 0, 0, 0, 0, 0, 0],\n [0, 0, 0, 0, 0, 0, 0]\n];\n\nexport default class QRCanvas {\n _canvas: HTMLCanvasElement;\n _options: RequiredOptions;\n _qr?: QRCode;\n _image?: HTMLImageElement;\n\n //TODO don't pass all options to this class\n constructor(options: RequiredOptions) {\n this._canvas = document.createElement(\"canvas\");\n this._canvas.width = options.width;\n this._canvas.height = options.height;\n this._options = options;\n }\n\n get context(): CanvasRenderingContext2D | null {\n return this._canvas.getContext(\"2d\");\n }\n\n get width(): number {\n return this._canvas.width;\n }\n\n get height(): number {\n return this._canvas.height;\n }\n\n getCanvas(): HTMLCanvasElement {\n return this._canvas;\n }\n\n clear(): void {\n const canvasContext = this.context;\n\n if (canvasContext) {\n canvasContext.clearRect(0, 0, this._canvas.width, this._canvas.height);\n }\n }\n\n async drawQR(qr: QRCode): Promise {\n const count = qr.getModuleCount();\n const minSize = Math.min(this._options.width, this._options.height) - this._options.margin * 2;\n const dotSize = Math.floor(minSize / count);\n let drawImageSize = {\n hideXDots: 0,\n hideYDots: 0,\n width: 0,\n height: 0\n };\n\n this._qr = qr;\n\n if (this._options.image) {\n await this.loadImage();\n if (!this._image) return;\n const { imageOptions, qrOptions } = this._options;\n const coverLevel = imageOptions.imageSize * errorCorrectionPercents[qrOptions.errorCorrectionLevel];\n const maxHiddenDots = Math.floor(coverLevel * count * count);\n\n drawImageSize = calculateImageSize({\n originalWidth: this._image.width,\n originalHeight: this._image.height,\n maxHiddenDots,\n maxHiddenAxisDots: count - 14,\n dotSize\n });\n }\n\n this.clear();\n this.drawBackground();\n this.drawDots((i: number, j: number): boolean => {\n if (this._options.imageOptions.hideBackgroundDots) {\n if (\n i >= (count - drawImageSize.hideXDots) / 2 &&\n i < (count + drawImageSize.hideXDots) / 2 &&\n j >= (count - drawImageSize.hideYDots) / 2 &&\n j < (count + drawImageSize.hideYDots) / 2\n ) {\n return false;\n }\n }\n\n if (squareMask[i]?.[j] || squareMask[i - count + 7]?.[j] || squareMask[i]?.[j - count + 7]) {\n return false;\n }\n\n if (dotMask[i]?.[j] || dotMask[i - count + 7]?.[j] || dotMask[i]?.[j - count + 7]) {\n return false;\n }\n\n return true;\n });\n this.drawCorners();\n\n if (this._options.image) {\n this.drawImage({ width: drawImageSize.width, height: drawImageSize.height, count, dotSize });\n }\n }\n\n drawBackground(): void {\n const canvasContext = this.context;\n const options = this._options;\n\n if (canvasContext) {\n if (options.backgroundOptions.gradient) {\n const gradientOptions = options.backgroundOptions.gradient;\n const gradient = this._createGradient({\n context: canvasContext,\n options: gradientOptions,\n additionalRotation: 0,\n x: 0,\n y: 0,\n size: this._canvas.width > this._canvas.height ? this._canvas.width : this._canvas.height\n });\n\n gradientOptions.colorStops.forEach(({ offset, color }: { offset: number; color: string }) => {\n gradient.addColorStop(offset, color);\n });\n\n canvasContext.fillStyle = gradient;\n } else if (options.backgroundOptions.color) {\n canvasContext.fillStyle = options.backgroundOptions.color;\n }\n canvasContext.fillRect(0, 0, this._canvas.width, this._canvas.height);\n }\n }\n\n drawDots(filter?: FilterFunction): void {\n if (!this._qr) {\n throw \"QR code is not defined\";\n }\n\n const canvasContext = this.context;\n\n if (!canvasContext) {\n throw \"QR code is not defined\";\n }\n\n const options = this._options;\n const count = this._qr.getModuleCount();\n\n if (count > options.width || count > options.height) {\n throw \"The canvas is too small.\";\n }\n\n const minSize = Math.min(options.width, options.height) - options.margin * 2;\n const dotSize = Math.floor(minSize / count);\n const xBeginning = Math.floor((options.width - count * dotSize) / 2);\n const yBeginning = Math.floor((options.height - count * dotSize) / 2);\n const dot = new QRDot({ context: canvasContext, type: options.dotsOptions.type });\n\n canvasContext.beginPath();\n\n for (let i = 0; i < count; i++) {\n for (let j = 0; j < count; j++) {\n if (filter && !filter(i, j)) {\n continue;\n }\n if (!this._qr.isDark(i, j)) {\n continue;\n }\n dot.draw(\n yBeginning + j * dotSize,\n xBeginning + i * dotSize,\n dotSize,\n (xOffset: number, yOffset: number): boolean => {\n if (i + xOffset < 0 || j + yOffset < 0 || i + xOffset >= count || j + yOffset >= count) return false;\n if (filter && !filter(i + xOffset, j + yOffset)) return false;\n return !!this._qr && this._qr.isDark(i + xOffset, j + yOffset);\n }\n );\n }\n }\n\n if (options.dotsOptions.gradient) {\n const gradientOptions = options.dotsOptions.gradient;\n const gradient = this._createGradient({\n context: canvasContext,\n options: gradientOptions,\n additionalRotation: 0,\n x: xBeginning,\n y: yBeginning,\n size: count * dotSize\n });\n\n gradientOptions.colorStops.forEach(({ offset, color }: { offset: number; color: string }) => {\n gradient.addColorStop(offset, color);\n });\n\n canvasContext.fillStyle = canvasContext.strokeStyle = gradient;\n } else if (options.dotsOptions.color) {\n canvasContext.fillStyle = canvasContext.strokeStyle = options.dotsOptions.color;\n }\n\n canvasContext.fill(\"evenodd\");\n }\n\n drawCorners(filter?: FilterFunction): void {\n if (!this._qr) {\n throw \"QR code is not defined\";\n }\n\n const canvasContext = this.context;\n\n if (!canvasContext) {\n throw \"QR code is not defined\";\n }\n\n const options = this._options;\n\n const count = this._qr.getModuleCount();\n const minSize = Math.min(options.width, options.height) - options.margin * 2;\n const dotSize = Math.floor(minSize / count);\n const cornersSquareSize = dotSize * 7;\n const cornersDotSize = dotSize * 3;\n const xBeginning = Math.floor((options.width - count * dotSize) / 2);\n const yBeginning = Math.floor((options.height - count * dotSize) / 2);\n\n [\n [0, 0, 0],\n [1, 0, Math.PI / 2],\n [0, 1, -Math.PI / 2]\n ].forEach(([column, row, rotation]) => {\n if (filter && !filter(column, row)) {\n return;\n }\n\n const x = xBeginning + column * dotSize * (count - 7);\n const y = yBeginning + row * dotSize * (count - 7);\n\n if (options.cornersSquareOptions?.type) {\n const cornersSquare = new QRCornerSquare({ context: canvasContext, type: options.cornersSquareOptions?.type });\n\n canvasContext.beginPath();\n cornersSquare.draw(x, y, cornersSquareSize, rotation);\n } else {\n const dot = new QRDot({ context: canvasContext, type: options.dotsOptions.type });\n\n canvasContext.beginPath();\n\n for (let i = 0; i < squareMask.length; i++) {\n for (let j = 0; j < squareMask[i].length; j++) {\n if (!squareMask[i]?.[j]) {\n continue;\n }\n\n dot.draw(\n x + i * dotSize,\n y + j * dotSize,\n dotSize,\n (xOffset: number, yOffset: number): boolean => !!squareMask[i + xOffset]?.[j + yOffset]\n );\n }\n }\n }\n\n if (options.cornersSquareOptions?.gradient) {\n const gradientOptions = options.cornersSquareOptions.gradient;\n const gradient = this._createGradient({\n context: canvasContext,\n options: gradientOptions,\n additionalRotation: rotation,\n x,\n y,\n size: cornersSquareSize\n });\n\n gradientOptions.colorStops.forEach(({ offset, color }: { offset: number; color: string }) => {\n gradient.addColorStop(offset, color);\n });\n\n canvasContext.fillStyle = canvasContext.strokeStyle = gradient;\n } else if (options.cornersSquareOptions?.color) {\n canvasContext.fillStyle = canvasContext.strokeStyle = options.cornersSquareOptions.color;\n }\n\n canvasContext.fill(\"evenodd\");\n\n if (options.cornersDotOptions?.type) {\n const cornersDot = new QRCornerDot({ context: canvasContext, type: options.cornersDotOptions?.type });\n\n canvasContext.beginPath();\n cornersDot.draw(x + dotSize * 2, y + dotSize * 2, cornersDotSize, rotation);\n } else {\n const dot = new QRDot({ context: canvasContext, type: options.dotsOptions.type });\n\n canvasContext.beginPath();\n\n for (let i = 0; i < dotMask.length; i++) {\n for (let j = 0; j < dotMask[i].length; j++) {\n if (!dotMask[i]?.[j]) {\n continue;\n }\n\n dot.draw(\n x + i * dotSize,\n y + j * dotSize,\n dotSize,\n (xOffset: number, yOffset: number): boolean => !!dotMask[i + xOffset]?.[j + yOffset]\n );\n }\n }\n }\n\n if (options.cornersDotOptions?.gradient) {\n const gradientOptions = options.cornersDotOptions.gradient;\n const gradient = this._createGradient({\n context: canvasContext,\n options: gradientOptions,\n additionalRotation: rotation,\n x: x + dotSize * 2,\n y: y + dotSize * 2,\n size: cornersDotSize\n });\n\n gradientOptions.colorStops.forEach(({ offset, color }: { offset: number; color: string }) => {\n gradient.addColorStop(offset, color);\n });\n\n canvasContext.fillStyle = canvasContext.strokeStyle = gradient;\n } else if (options.cornersDotOptions?.color) {\n canvasContext.fillStyle = canvasContext.strokeStyle = options.cornersDotOptions.color;\n }\n\n canvasContext.fill(\"evenodd\");\n });\n }\n\n loadImage(): Promise {\n return new Promise((resolve, reject) => {\n const options = this._options;\n const image = new Image();\n\n if (!options.image) {\n return reject(\"Image is not defined\");\n }\n\n if (typeof options.imageOptions.crossOrigin === \"string\") {\n image.crossOrigin = options.imageOptions.crossOrigin;\n }\n\n this._image = image;\n image.onload = (): void => {\n resolve();\n };\n image.src = options.image;\n });\n }\n\n drawImage({\n width,\n height,\n count,\n dotSize\n }: {\n width: number;\n height: number;\n count: number;\n dotSize: number;\n }): void {\n const canvasContext = this.context;\n\n if (!canvasContext) {\n throw \"canvasContext is not defined\";\n }\n\n if (!this._image) {\n throw \"image is not defined\";\n }\n\n const options = this._options;\n const xBeginning = Math.floor((options.width - count * dotSize) / 2);\n const yBeginning = Math.floor((options.height - count * dotSize) / 2);\n const dx = xBeginning + options.imageOptions.margin + (count * dotSize - width) / 2;\n const dy = yBeginning + options.imageOptions.margin + (count * dotSize - height) / 2;\n const dw = width - options.imageOptions.margin * 2;\n const dh = height - options.imageOptions.margin * 2;\n\n canvasContext.drawImage(this._image, dx, dy, dw < 0 ? 0 : dw, dh < 0 ? 0 : dh);\n }\n\n _createGradient({\n context,\n options,\n additionalRotation,\n x,\n y,\n size\n }: {\n context: CanvasRenderingContext2D;\n options: Gradient;\n additionalRotation: number;\n x: number;\n y: number;\n size: number;\n }): CanvasGradient {\n let gradient;\n\n if (options.type === gradientTypes.radial) {\n gradient = context.createRadialGradient(x + size / 2, y + size / 2, 0, x + size / 2, y + size / 2, size / 2);\n } else {\n const rotation = ((options.rotation || 0) + additionalRotation) % (2 * Math.PI);\n const positiveRotation = (rotation + 2 * Math.PI) % (2 * Math.PI);\n let x0 = x + size / 2;\n let y0 = y + size / 2;\n let x1 = x + size / 2;\n let y1 = y + size / 2;\n\n if (\n (positiveRotation >= 0 && positiveRotation <= 0.25 * Math.PI) ||\n (positiveRotation > 1.75 * Math.PI && positiveRotation <= 2 * Math.PI)\n ) {\n x0 = x0 - size / 2;\n y0 = y0 - (size / 2) * Math.tan(rotation);\n x1 = x1 + size / 2;\n y1 = y1 + (size / 2) * Math.tan(rotation);\n } else if (positiveRotation > 0.25 * Math.PI && positiveRotation <= 0.75 * Math.PI) {\n y0 = y0 - size / 2;\n x0 = x0 - size / 2 / Math.tan(rotation);\n y1 = y1 + size / 2;\n x1 = x1 + size / 2 / Math.tan(rotation);\n } else if (positiveRotation > 0.75 * Math.PI && positiveRotation <= 1.25 * Math.PI) {\n x0 = x0 + size / 2;\n y0 = y0 + (size / 2) * Math.tan(rotation);\n x1 = x1 - size / 2;\n y1 = y1 - (size / 2) * Math.tan(rotation);\n } else if (positiveRotation > 1.25 * Math.PI && positiveRotation <= 1.75 * Math.PI) {\n y0 = y0 + size / 2;\n x0 = x0 + size / 2 / Math.tan(rotation);\n y1 = y1 - size / 2;\n x1 = x1 - size / 2 / Math.tan(rotation);\n }\n\n gradient = context.createLinearGradient(Math.round(x0), Math.round(y0), Math.round(x1), Math.round(y1));\n }\n\n return gradient;\n }\n}\n","import dotTypes from \"../../../constants/dotTypes\";\nimport { DotType, GetNeighbor, DrawArgs, BasicFigureDrawArgs, RotateFigureArgs } from \"../../../types\";\n\nexport default class QRDot {\n _element?: SVGElement;\n _svg: SVGElement;\n _type: DotType;\n\n constructor({ svg, type }: { svg: SVGElement; type: DotType }) {\n this._svg = svg;\n this._type = type;\n }\n\n draw(x: number, y: number, size: number, getNeighbor: GetNeighbor): void {\n const type = this._type;\n let drawFunction;\n\n switch (type) {\n case dotTypes.dots:\n drawFunction = this._drawDot;\n break;\n case dotTypes.classy:\n drawFunction = this._drawClassy;\n break;\n case dotTypes.classyRounded:\n drawFunction = this._drawClassyRounded;\n break;\n case dotTypes.rounded:\n drawFunction = this._drawRounded;\n break;\n case dotTypes.extraRounded:\n drawFunction = this._drawExtraRounded;\n break;\n case dotTypes.square:\n default:\n drawFunction = this._drawSquare;\n }\n\n drawFunction.call(this, { x, y, size, getNeighbor });\n }\n\n _rotateFigure({ x, y, size, rotation = 0, draw }: RotateFigureArgs): void {\n const cx = x + size / 2;\n const cy = y + size / 2;\n\n draw();\n this._element?.setAttribute(\"transform\", `rotate(${(180 * rotation) / Math.PI},${cx},${cy})`);\n }\n\n _basicDot(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"circle\");\n this._element.setAttribute(\"cx\", String(x + size / 2));\n this._element.setAttribute(\"cy\", String(y + size / 2));\n this._element.setAttribute(\"r\", String(size / 2));\n }\n });\n }\n\n _basicSquare(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"rect\");\n this._element.setAttribute(\"x\", String(x));\n this._element.setAttribute(\"y\", String(y));\n this._element.setAttribute(\"width\", String(size));\n this._element.setAttribute(\"height\", String(size));\n }\n });\n }\n\n //if rotation === 0 - right side is rounded\n _basicSideRounded(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n this._element.setAttribute(\n \"d\",\n `M ${x} ${y}` + //go to top left position\n `v ${size}` + //draw line to left bottom corner\n `h ${size / 2}` + //draw line to left bottom corner + half of size right\n `a ${size / 2} ${size / 2}, 0, 0, 0, 0 ${-size}` // draw rounded corner\n );\n }\n });\n }\n\n //if rotation === 0 - top right corner is rounded\n _basicCornerRounded(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n this._element.setAttribute(\n \"d\",\n `M ${x} ${y}` + //go to top left position\n `v ${size}` + //draw line to left bottom corner\n `h ${size}` + //draw line to right bottom corner\n `v ${-size / 2}` + //draw line to right bottom corner + half of size top\n `a ${size / 2} ${size / 2}, 0, 0, 0, ${-size / 2} ${-size / 2}` // draw rounded corner\n );\n }\n });\n }\n\n //if rotation === 0 - top right corner is rounded\n _basicCornerExtraRounded(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n this._element.setAttribute(\n \"d\",\n `M ${x} ${y}` + //go to top left position\n `v ${size}` + //draw line to left bottom corner\n `h ${size}` + //draw line to right bottom corner\n `a ${size} ${size}, 0, 0, 0, ${-size} ${-size}` // draw rounded top right corner\n );\n }\n });\n }\n\n //if rotation === 0 - left bottom and right top corners are rounded\n _basicCornersRounded(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n this._element.setAttribute(\n \"d\",\n `M ${x} ${y}` + //go to left top position\n `v ${size / 2}` + //draw line to left top corner + half of size bottom\n `a ${size / 2} ${size / 2}, 0, 0, 0, ${size / 2} ${size / 2}` + // draw rounded left bottom corner\n `h ${size / 2}` + //draw line to right bottom corner\n `v ${-size / 2}` + //draw line to right bottom corner + half of size top\n `a ${size / 2} ${size / 2}, 0, 0, 0, ${-size / 2} ${-size / 2}` // draw rounded right top corner\n );\n }\n });\n }\n\n _drawDot({ x, y, size }: DrawArgs): void {\n this._basicDot({ x, y, size, rotation: 0 });\n }\n\n _drawSquare({ x, y, size }: DrawArgs): void {\n this._basicSquare({ x, y, size, rotation: 0 });\n }\n\n _drawRounded({ x, y, size, getNeighbor }: DrawArgs): void {\n const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\n const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\n const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\n const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\n\n const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\n\n if (neighborsCount === 0) {\n this._basicDot({ x, y, size, rotation: 0 });\n return;\n }\n\n if (neighborsCount > 2 || (leftNeighbor && rightNeighbor) || (topNeighbor && bottomNeighbor)) {\n this._basicSquare({ x, y, size, rotation: 0 });\n return;\n }\n\n if (neighborsCount === 2) {\n let rotation = 0;\n\n if (leftNeighbor && topNeighbor) {\n rotation = Math.PI / 2;\n } else if (topNeighbor && rightNeighbor) {\n rotation = Math.PI;\n } else if (rightNeighbor && bottomNeighbor) {\n rotation = -Math.PI / 2;\n }\n\n this._basicCornerRounded({ x, y, size, rotation });\n return;\n }\n\n if (neighborsCount === 1) {\n let rotation = 0;\n\n if (topNeighbor) {\n rotation = Math.PI / 2;\n } else if (rightNeighbor) {\n rotation = Math.PI;\n } else if (bottomNeighbor) {\n rotation = -Math.PI / 2;\n }\n\n this._basicSideRounded({ x, y, size, rotation });\n return;\n }\n }\n\n _drawExtraRounded({ x, y, size, getNeighbor }: DrawArgs): void {\n const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\n const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\n const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\n const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\n\n const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\n\n if (neighborsCount === 0) {\n this._basicDot({ x, y, size, rotation: 0 });\n return;\n }\n\n if (neighborsCount > 2 || (leftNeighbor && rightNeighbor) || (topNeighbor && bottomNeighbor)) {\n this._basicSquare({ x, y, size, rotation: 0 });\n return;\n }\n\n if (neighborsCount === 2) {\n let rotation = 0;\n\n if (leftNeighbor && topNeighbor) {\n rotation = Math.PI / 2;\n } else if (topNeighbor && rightNeighbor) {\n rotation = Math.PI;\n } else if (rightNeighbor && bottomNeighbor) {\n rotation = -Math.PI / 2;\n }\n\n this._basicCornerExtraRounded({ x, y, size, rotation });\n return;\n }\n\n if (neighborsCount === 1) {\n let rotation = 0;\n\n if (topNeighbor) {\n rotation = Math.PI / 2;\n } else if (rightNeighbor) {\n rotation = Math.PI;\n } else if (bottomNeighbor) {\n rotation = -Math.PI / 2;\n }\n\n this._basicSideRounded({ x, y, size, rotation });\n return;\n }\n }\n\n _drawClassy({ x, y, size, getNeighbor }: DrawArgs): void {\n const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\n const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\n const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\n const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\n\n const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\n\n if (neighborsCount === 0) {\n this._basicCornersRounded({ x, y, size, rotation: Math.PI / 2 });\n return;\n }\n\n if (!leftNeighbor && !topNeighbor) {\n this._basicCornerRounded({ x, y, size, rotation: -Math.PI / 2 });\n return;\n }\n\n if (!rightNeighbor && !bottomNeighbor) {\n this._basicCornerRounded({ x, y, size, rotation: Math.PI / 2 });\n return;\n }\n\n this._basicSquare({ x, y, size, rotation: 0 });\n }\n\n _drawClassyRounded({ x, y, size, getNeighbor }: DrawArgs): void {\n const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\n const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\n const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\n const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\n\n const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\n\n if (neighborsCount === 0) {\n this._basicCornersRounded({ x, y, size, rotation: Math.PI / 2 });\n return;\n }\n\n if (!leftNeighbor && !topNeighbor) {\n this._basicCornerExtraRounded({ x, y, size, rotation: -Math.PI / 2 });\n return;\n }\n\n if (!rightNeighbor && !bottomNeighbor) {\n this._basicCornerExtraRounded({ x, y, size, rotation: Math.PI / 2 });\n return;\n }\n\n this._basicSquare({ x, y, size, rotation: 0 });\n }\n}\n","import cornerSquareTypes from \"../../../constants/cornerSquareTypes\";\nimport { CornerSquareType, DrawArgs, BasicFigureDrawArgs, RotateFigureArgs } from \"../../../types\";\n\nexport default class QRCornerSquare {\n _element?: SVGElement;\n _svg: SVGElement;\n _type: CornerSquareType;\n\n constructor({ svg, type }: { svg: SVGElement; type: CornerSquareType }) {\n this._svg = svg;\n this._type = type;\n }\n\n draw(x: number, y: number, size: number, rotation: number): void {\n const type = this._type;\n let drawFunction;\n\n switch (type) {\n case cornerSquareTypes.square:\n drawFunction = this._drawSquare;\n break;\n case cornerSquareTypes.extraRounded:\n drawFunction = this._drawExtraRounded;\n break;\n case cornerSquareTypes.dot:\n default:\n drawFunction = this._drawDot;\n }\n\n drawFunction.call(this, { x, y, size, rotation });\n }\n\n _rotateFigure({ x, y, size, rotation = 0, draw }: RotateFigureArgs): void {\n const cx = x + size / 2;\n const cy = y + size / 2;\n\n draw();\n this._element?.setAttribute(\"transform\", `rotate(${(180 * rotation) / Math.PI},${cx},${cy})`);\n }\n\n _basicDot(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n const dotSize = size / 7;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n this._element.setAttribute(\"clip-rule\", \"evenodd\");\n this._element.setAttribute(\n \"d\",\n `M ${x + size / 2} ${y}` + // M cx, y // Move to top of ring\n `a ${size / 2} ${size / 2} 0 1 0 0.1 0` + // a outerRadius, outerRadius, 0, 1, 0, 1, 0 // Draw outer arc, but don't close it\n `z` + // Z // Close the outer shape\n `m 0 ${dotSize}` + // m -1 outerRadius-innerRadius // Move to top point of inner radius\n `a ${size / 2 - dotSize} ${size / 2 - dotSize} 0 1 1 -0.1 0` + // a innerRadius, innerRadius, 0, 1, 1, -1, 0 // Draw inner arc, but don't close it\n `Z` // Z // Close the inner ring. Actually will still work without, but inner ring will have one unit missing in stroke\n );\n }\n });\n }\n\n _basicSquare(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n const dotSize = size / 7;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n this._element.setAttribute(\"clip-rule\", \"evenodd\");\n this._element.setAttribute(\n \"d\",\n `M ${x} ${y}` +\n `v ${size}` +\n `h ${size}` +\n `v ${-size}` +\n `z` +\n `M ${x + dotSize} ${y + dotSize}` +\n `h ${size - 2 * dotSize}` +\n `v ${size - 2 * dotSize}` +\n `h ${-size + 2 * dotSize}` +\n `z`\n );\n }\n });\n }\n\n _basicExtraRounded(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n const dotSize = size / 7;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n this._element.setAttribute(\"clip-rule\", \"evenodd\");\n this._element.setAttribute(\n \"d\",\n `M ${x} ${y + 2.5 * dotSize}` +\n `v ${2 * dotSize}` +\n `a ${2.5 * dotSize} ${2.5 * dotSize}, 0, 0, 0, ${dotSize * 2.5} ${dotSize * 2.5}` +\n `h ${2 * dotSize}` +\n `a ${2.5 * dotSize} ${2.5 * dotSize}, 0, 0, 0, ${dotSize * 2.5} ${-dotSize * 2.5}` +\n `v ${-2 * dotSize}` +\n `a ${2.5 * dotSize} ${2.5 * dotSize}, 0, 0, 0, ${-dotSize * 2.5} ${-dotSize * 2.5}` +\n `h ${-2 * dotSize}` +\n `a ${2.5 * dotSize} ${2.5 * dotSize}, 0, 0, 0, ${-dotSize * 2.5} ${dotSize * 2.5}` +\n `M ${x + 2.5 * dotSize} ${y + dotSize}` +\n `h ${2 * dotSize}` +\n `a ${1.5 * dotSize} ${1.5 * dotSize}, 0, 0, 1, ${dotSize * 1.5} ${dotSize * 1.5}` +\n `v ${2 * dotSize}` +\n `a ${1.5 * dotSize} ${1.5 * dotSize}, 0, 0, 1, ${-dotSize * 1.5} ${dotSize * 1.5}` +\n `h ${-2 * dotSize}` +\n `a ${1.5 * dotSize} ${1.5 * dotSize}, 0, 0, 1, ${-dotSize * 1.5} ${-dotSize * 1.5}` +\n `v ${-2 * dotSize}` +\n `a ${1.5 * dotSize} ${1.5 * dotSize}, 0, 0, 1, ${dotSize * 1.5} ${-dotSize * 1.5}`\n );\n }\n });\n }\n\n _drawDot({ x, y, size, rotation }: DrawArgs): void {\n this._basicDot({ x, y, size, rotation });\n }\n\n _drawSquare({ x, y, size, rotation }: DrawArgs): void {\n this._basicSquare({ x, y, size, rotation });\n }\n\n _drawExtraRounded({ x, y, size, rotation }: DrawArgs): void {\n this._basicExtraRounded({ x, y, size, rotation });\n }\n}\n","import cornerDotTypes from \"../../../constants/cornerDotTypes\";\nimport { CornerDotType, RotateFigureArgs, BasicFigureDrawArgs, DrawArgs } from \"../../../types\";\n\nexport default class QRCornerDot {\n _element?: SVGElement;\n _svg: SVGElement;\n _type: CornerDotType;\n\n constructor({ svg, type }: { svg: SVGElement; type: CornerDotType }) {\n this._svg = svg;\n this._type = type;\n }\n\n draw(x: number, y: number, size: number, rotation: number): void {\n const type = this._type;\n let drawFunction;\n\n switch (type) {\n case cornerDotTypes.square:\n drawFunction = this._drawSquare;\n break;\n case cornerDotTypes.dot:\n default:\n drawFunction = this._drawDot;\n }\n\n drawFunction.call(this, { x, y, size, rotation });\n }\n\n _rotateFigure({ x, y, size, rotation = 0, draw }: RotateFigureArgs): void {\n const cx = x + size / 2;\n const cy = y + size / 2;\n\n draw();\n this._element?.setAttribute(\"transform\", `rotate(${(180 * rotation) / Math.PI},${cx},${cy})`);\n }\n\n _basicDot(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"circle\");\n this._element.setAttribute(\"cx\", String(x + size / 2));\n this._element.setAttribute(\"cy\", String(y + size / 2));\n this._element.setAttribute(\"r\", String(size / 2));\n }\n });\n }\n\n _basicSquare(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"rect\");\n this._element.setAttribute(\"x\", String(x));\n this._element.setAttribute(\"y\", String(y));\n this._element.setAttribute(\"width\", String(size));\n this._element.setAttribute(\"height\", String(size));\n }\n });\n }\n\n _drawDot({ x, y, size, rotation }: DrawArgs): void {\n this._basicDot({ x, y, size, rotation });\n }\n\n _drawSquare({ x, y, size, rotation }: DrawArgs): void {\n this._basicSquare({ x, y, size, rotation });\n }\n}\n","import calculateImageSize from \"../tools/calculateImageSize\";\nimport errorCorrectionPercents from \"../constants/errorCorrectionPercents\";\nimport QRDot from \"../figures/dot/svg/QRDot\";\nimport QRCornerSquare from \"../figures/cornerSquare/svg/QRCornerSquare\";\nimport QRCornerDot from \"../figures/cornerDot/svg/QRCornerDot\";\nimport { RequiredOptions } from \"./QROptions\";\nimport gradientTypes from \"../constants/gradientTypes\";\nimport { QRCode, FilterFunction, Gradient } from \"../types\";\n\nconst squareMask = [\n [1, 1, 1, 1, 1, 1, 1],\n [1, 0, 0, 0, 0, 0, 1],\n [1, 0, 0, 0, 0, 0, 1],\n [1, 0, 0, 0, 0, 0, 1],\n [1, 0, 0, 0, 0, 0, 1],\n [1, 0, 0, 0, 0, 0, 1],\n [1, 1, 1, 1, 1, 1, 1]\n];\n\nconst dotMask = [\n [0, 0, 0, 0, 0, 0, 0],\n [0, 0, 0, 0, 0, 0, 0],\n [0, 0, 1, 1, 1, 0, 0],\n [0, 0, 1, 1, 1, 0, 0],\n [0, 0, 1, 1, 1, 0, 0],\n [0, 0, 0, 0, 0, 0, 0],\n [0, 0, 0, 0, 0, 0, 0]\n];\n\nexport default class QRSVG {\n _element: SVGElement;\n _style: SVGStyleElement;\n _defs: SVGElement;\n _dotsClipPath?: SVGElement;\n _cornersSquareClipPath?: SVGElement;\n _cornersDotClipPath?: SVGElement;\n _dots?: SVGElement;\n _cornerSquares?: SVGElement;\n _corners?: SVGElement;\n _cornerDots?: SVGElement;\n _options: RequiredOptions;\n _qr?: QRCode;\n _image?: HTMLImageElement;\n\n //TODO don't pass all options to this class\n constructor(options: RequiredOptions) {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\");\n this._element.setAttribute(\"width\", String(options.width));\n this._element.setAttribute(\"height\", String(options.height));\n this._element.setAttribute(\"xmlns:xlink\", \"http://www.w3.org/1999/xlink\");\n this._defs = document.createElementNS(\"http://www.w3.org/2000/svg\", \"defs\");\n this._style = document.createElementNS(\"http://www.w3.org/2000/svg\", \"style\");\n\n this._options = options;\n }\n\n get width(): number {\n return this._options.width;\n }\n\n get height(): number {\n return this._options.height;\n }\n\n getElement(): SVGElement {\n return this._element;\n }\n\n clear(): void {\n const oldElement = this._element;\n this._element = oldElement.cloneNode(false) as SVGElement;\n oldElement?.parentNode?.replaceChild(this._element, oldElement);\n this._defs = document.createElementNS(\"http://www.w3.org/2000/svg\", \"defs\");\n this._style = document.createElementNS(\"http://www.w3.org/2000/svg\", \"style\");\n this._element.appendChild(this._style);\n this._element.appendChild(this._defs);\n }\n\n async drawQR(qr: QRCode): Promise {\n const count = qr.getModuleCount();\n const minSize = Math.min(this._options.width, this._options.height) - this._options.margin * 2;\n const dotSize = Math.floor(minSize / count);\n let drawImageSize = {\n hideXDots: 0,\n hideYDots: 0,\n width: 0,\n height: 0\n };\n\n this._qr = qr;\n\n if (this._options.image) {\n //We need it to get image size\n await this.loadImage();\n if (!this._image) return;\n const { imageOptions, qrOptions } = this._options;\n const coverLevel = imageOptions.imageSize * errorCorrectionPercents[qrOptions.errorCorrectionLevel];\n const maxHiddenDots = Math.floor(coverLevel * count * count);\n\n drawImageSize = calculateImageSize({\n originalWidth: this._image.width,\n originalHeight: this._image.height,\n maxHiddenDots,\n maxHiddenAxisDots: count - 14,\n dotSize\n });\n }\n\n this._element.appendChild(this._style);\n this._element.appendChild(this._defs);\n\n this.clear();\n this.drawBackground();\n this.drawDots((i: number, j: number): boolean => {\n if (this._options.imageOptions.hideBackgroundDots) {\n if (\n i >= (count - drawImageSize.hideXDots) / 2 &&\n i < (count + drawImageSize.hideXDots) / 2 &&\n j >= (count - drawImageSize.hideYDots) / 2 &&\n j < (count + drawImageSize.hideYDots) / 2\n ) {\n return false;\n }\n }\n\n if (squareMask[i]?.[j] || squareMask[i - count + 7]?.[j] || squareMask[i]?.[j - count + 7]) {\n return false;\n }\n\n if (dotMask[i]?.[j] || dotMask[i - count + 7]?.[j] || dotMask[i]?.[j - count + 7]) {\n return false;\n }\n\n return true;\n });\n this.drawCorners();\n\n if (this._options.image) {\n await this.drawImage({ width: drawImageSize.width, height: drawImageSize.height, count, dotSize });\n }\n }\n\n drawBackground(): void {\n const element = this._element;\n const options = this._options;\n\n if (element) {\n const gradientOptions = options.backgroundOptions?.gradient;\n const color = options.backgroundOptions?.color;\n\n if (gradientOptions) {\n this._createColor({\n options: gradientOptions,\n color: color,\n additionalRotation: 0,\n x: 0,\n y: 0,\n height: options.height,\n width: options.width,\n name: \"background-color\"\n });\n } else if (options.backgroundOptions?.color) {\n this._createStyle({\n color: color,\n name: \"background-color\"\n });\n }\n }\n }\n\n drawDots(filter?: FilterFunction): void {\n if (!this._qr) {\n throw \"QR code is not defined\";\n }\n\n const options = this._options;\n const count = this._qr.getModuleCount();\n\n if (count > options.width || count > options.height) {\n throw \"The canvas is too small.\";\n }\n\n const minSize = Math.min(options.width, options.height) - options.margin * 2;\n const dotSize = Math.floor(minSize / count);\n const xBeginning = Math.floor((options.width - count * dotSize) / 2);\n const yBeginning = Math.floor((options.height - count * dotSize) / 2);\n const dot = new QRDot({ svg: this._element, type: options.dotsOptions.type });\n\n if (options.dotsOptions?.gradient) {\n this._dotsClipPath = document.createElementNS(\"http://www.w3.org/2000/svg\", \"clipPath\");\n this._dotsClipPath.setAttribute(\"id\", \"clip-path-dot-color\");\n this._defs.appendChild(this._dotsClipPath);\n this._createColor({\n options: options.dotsOptions?.gradient,\n color: options.dotsOptions.color,\n additionalRotation: 0,\n x: xBeginning,\n y: yBeginning,\n height: count * dotSize,\n width: count * dotSize,\n name: \"dot-color\"\n });\n } else if (options.dotsOptions.color) {\n this._dots = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n this._dots.setAttribute(\"class\", \"dot-color\");\n this._element.appendChild(this._dots);\n this._createStyle({\n color: options.dotsOptions.color,\n name: \"dot-color\"\n });\n }\n\n for (let i = 0; i < count; i++) {\n for (let j = 0; j < count; j++) {\n if (filter && !filter(i, j)) {\n continue;\n }\n if (!this._qr?.isDark(i, j)) {\n continue;\n }\n\n dot.draw(\n yBeginning + j * dotSize,\n xBeginning + i * dotSize,\n dotSize,\n (xOffset: number, yOffset: number): boolean => {\n if (i + xOffset < 0 || j + yOffset < 0 || i + xOffset >= count || j + yOffset >= count) return false;\n if (filter && !filter(i + xOffset, j + yOffset)) return false;\n return !!this._qr && this._qr.isDark(i + xOffset, j + yOffset);\n }\n );\n\n if (dot._element && this._dotsClipPath) {\n this._dotsClipPath.appendChild(dot._element);\n } else if (dot._element && this._dots) {\n this._dots.appendChild(dot._element);\n }\n }\n }\n }\n\n drawCorners(): void {\n if (!this._qr) {\n throw \"QR code is not defined\";\n }\n\n const element = this._element;\n const options = this._options;\n\n if (!element) {\n throw \"Element code is not defined\";\n }\n\n const count = this._qr.getModuleCount();\n const minSize = Math.min(options.width, options.height) - options.margin * 2;\n const dotSize = Math.floor(minSize / count);\n const cornersSquareSize = dotSize * 7;\n const cornersDotSize = dotSize * 3;\n const xBeginning = Math.floor((options.width - count * dotSize) / 2);\n const yBeginning = Math.floor((options.height - count * dotSize) / 2);\n\n [\n [0, 0, 0],\n [1, 0, Math.PI / 2],\n [0, 1, -Math.PI / 2]\n ].forEach(([column, row, rotation]) => {\n const x = xBeginning + column * dotSize * (count - 7);\n const y = yBeginning + row * dotSize * (count - 7);\n let cornersSquareClipPath = this._dotsClipPath;\n let cornersDotClipPath = this._dotsClipPath;\n\n if (options.cornersSquareOptions?.gradient) {\n cornersSquareClipPath = document.createElementNS(\"http://www.w3.org/2000/svg\", \"clipPath\");\n cornersSquareClipPath.setAttribute(\"id\", `clip-path-corners-square-color-${column}-${row}`);\n this._defs.appendChild(cornersSquareClipPath);\n this._cornersSquareClipPath = this._cornersDotClipPath = cornersDotClipPath = cornersSquareClipPath;\n\n this._createColor({\n options: options.cornersSquareOptions?.gradient,\n color: options.cornersSquareOptions?.color,\n additionalRotation: rotation,\n x,\n y,\n height: cornersSquareSize,\n width: cornersSquareSize,\n name: `corners-square-color-${column}-${row}`\n });\n } else {\n this._cornerSquares = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n this._cornerSquares.setAttribute(\"class\", `corners-square-color-${column}-${row}`);\n this._element.appendChild(this._cornerSquares);\n this._createStyle({\n color: options.cornersSquareOptions?.color,\n name: `corners-square-color-${column}-${row}`\n });\n }\n\n if (options.cornersSquareOptions?.type) {\n const cornersSquare = new QRCornerSquare({ svg: this._element, type: options.cornersSquareOptions.type });\n\n cornersSquare.draw(x, y, cornersSquareSize, rotation);\n\n if (options.cornersSquareOptions?.gradient && cornersSquare._element && cornersSquareClipPath) {\n cornersSquareClipPath.appendChild(cornersSquare._element);\n } else if (cornersSquare._element && this._cornerSquares) {\n this._cornerSquares.appendChild(cornersSquare._element);\n }\n } else {\n const dot = new QRDot({ svg: this._element, type: options.dotsOptions.type });\n\n for (let i = 0; i < squareMask.length; i++) {\n for (let j = 0; j < squareMask[i].length; j++) {\n if (!squareMask[i]?.[j]) {\n continue;\n }\n\n dot.draw(\n x + i * dotSize,\n y + j * dotSize,\n dotSize,\n (xOffset: number, yOffset: number): boolean => !!squareMask[i + xOffset]?.[j + yOffset]\n );\n\n if (dot._element && this._cornersSquareClipPath) {\n this._cornersSquareClipPath.appendChild(dot._element);\n } else if (dot._element && this._cornerSquares) {\n this._cornerSquares.appendChild(dot._element);\n }\n }\n }\n }\n\n if (options.cornersDotOptions?.gradient) {\n cornersDotClipPath = document.createElementNS(\"http://www.w3.org/2000/svg\", \"clipPath\");\n cornersDotClipPath.setAttribute(\"id\", `clip-path-corners-dot-color-${column}-${row}`);\n this._defs.appendChild(cornersDotClipPath);\n this._cornersDotClipPath = cornersDotClipPath;\n\n this._createColor({\n options: options.cornersDotOptions?.gradient,\n color: options.cornersDotOptions?.color,\n additionalRotation: rotation,\n x: x + dotSize * 2,\n y: y + dotSize * 2,\n height: cornersDotSize,\n width: cornersDotSize,\n name: `corners-dot-color-${column}-${row}`\n });\n } else {\n this._cornerDots = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n this._cornerDots.setAttribute(\"class\", `corners-dot-color-${column}-${row}`);\n this._element.appendChild(this._cornerDots);\n this._createStyle({\n color: options.cornersDotOptions?.color,\n name: `corners-dot-color-${column}-${row}`\n });\n }\n\n if (options.cornersDotOptions?.type) {\n const cornersDot = new QRCornerDot({ svg: this._element, type: options.cornersDotOptions.type });\n\n cornersDot.draw(x + dotSize * 2, y + dotSize * 2, cornersDotSize, rotation);\n\n if (options.cornersDotOptions?.gradient && cornersDot._element && cornersDotClipPath) {\n cornersDotClipPath.appendChild(cornersDot._element);\n } else if (cornersDot._element && this._cornerDots) {\n this._cornerDots.appendChild(cornersDot._element);\n }\n } else {\n const dot = new QRDot({ svg: this._element, type: options.dotsOptions.type });\n\n for (let i = 0; i < dotMask.length; i++) {\n for (let j = 0; j < dotMask[i].length; j++) {\n if (!dotMask[i]?.[j]) {\n continue;\n }\n\n dot.draw(\n x + i * dotSize,\n y + j * dotSize,\n dotSize,\n (xOffset: number, yOffset: number): boolean => !!dotMask[i + xOffset]?.[j + yOffset]\n );\n\n if (dot._element && this._cornersDotClipPath) {\n this._cornersDotClipPath.appendChild(dot._element);\n } else if (dot._element && this._cornerDots) {\n this._cornerDots.appendChild(dot._element);\n }\n }\n }\n }\n });\n }\n\n loadImage(): Promise {\n return new Promise((resolve, reject) => {\n const options = this._options;\n const image = new Image();\n\n if (!options.image) {\n return reject(\"Image is not defined\");\n }\n\n if (typeof options.imageOptions.crossOrigin === \"string\") {\n image.crossOrigin = options.imageOptions.crossOrigin;\n }\n\n this._image = image;\n image.onload = (): void => {\n resolve();\n };\n image.src = options.image;\n });\n }\n\n async drawImage({\n width,\n height,\n count,\n dotSize\n }: {\n width: number;\n height: number;\n count: number;\n dotSize: number;\n }): Promise {\n const options = this._options;\n const xBeginning = Math.floor((options.width - count * dotSize) / 2);\n const yBeginning = Math.floor((options.height - count * dotSize) / 2);\n const dx = xBeginning + options.imageOptions.margin + (count * dotSize - width) / 2;\n const dy = yBeginning + options.imageOptions.margin + (count * dotSize - height) / 2;\n const dw = width - options.imageOptions.margin * 2;\n const dh = height - options.imageOptions.margin * 2;\n\n const image = document.createElementNS(\"http://www.w3.org/2000/svg\", \"image\");\n\n // const base64Image = await this._getBase64Image(options.image || \"\");\n const base64Image = \"./image.svg\";\n\n image.setAttribute(\"href\", base64Image);\n image.setAttribute(\"xlink:href\", base64Image);\n image.setAttribute(\"x\", String(dx));\n image.setAttribute(\"y\", String(dy));\n image.setAttribute(\"width\", `${dw}px`);\n image.setAttribute(\"height\", `${dh}px`);\n\n this._element.appendChild(image);\n }\n\n async _getImageBlob(url: string): Promise {\n const resp = await fetch(url);\n return resp.blob();\n }\n\n // convert a blob to base64\n _blobToBase64(blob: Blob): Promise {\n return new Promise((resolve) => {\n const reader = new FileReader();\n reader.onload = function () {\n const dataUrl = reader.result;\n resolve(dataUrl as string);\n };\n reader.readAsDataURL(blob);\n });\n }\n\n async _getBase64Image(url: string): Promise {\n if (url === \"\") {\n return new Promise((resolve) => {\n resolve(\"\");\n });\n }\n\n const blob = await this._getImageBlob(url);\n const base64 = await this._blobToBase64(blob);\n return base64;\n }\n\n _createColor({\n options,\n color,\n additionalRotation,\n x,\n y,\n height,\n width,\n name\n }: {\n options?: Gradient;\n color?: string;\n additionalRotation: number;\n x: number;\n y: number;\n height: number;\n width: number;\n name: string;\n }): void {\n const size = width > height ? width : height;\n const rect = document.createElementNS(\"http://www.w3.org/2000/svg\", \"rect\");\n rect.setAttribute(\"x\", String(x));\n rect.setAttribute(\"y\", String(y));\n rect.setAttribute(\"height\", String(height));\n rect.setAttribute(\"width\", String(width));\n rect.setAttribute(\"clip-path\", `url('#clip-path-${name}')`);\n\n if (options) {\n let gradient: SVGElement;\n if (options.type === gradientTypes.radial) {\n gradient = document.createElementNS(\"http://www.w3.org/2000/svg\", \"radialGradient\");\n gradient.setAttribute(\"id\", name);\n gradient.setAttribute(\"gradientUnits\", \"userSpaceOnUse\");\n gradient.setAttribute(\"fx\", String(x + width / 2));\n gradient.setAttribute(\"fy\", String(y + height / 2));\n gradient.setAttribute(\"cx\", String(x + width / 2));\n gradient.setAttribute(\"cy\", String(y + height / 2));\n gradient.setAttribute(\"r\", String(size / 2));\n } else {\n const rotation = ((options.rotation || 0) + additionalRotation) % (2 * Math.PI);\n const positiveRotation = (rotation + 2 * Math.PI) % (2 * Math.PI);\n let x0 = x + width / 2;\n let y0 = y + height / 2;\n let x1 = x + width / 2;\n let y1 = y + height / 2;\n\n if (\n (positiveRotation >= 0 && positiveRotation <= 0.25 * Math.PI) ||\n (positiveRotation > 1.75 * Math.PI && positiveRotation <= 2 * Math.PI)\n ) {\n x0 = x0 - width / 2;\n y0 = y0 - (height / 2) * Math.tan(rotation);\n x1 = x1 + width / 2;\n y1 = y1 + (height / 2) * Math.tan(rotation);\n } else if (positiveRotation > 0.25 * Math.PI && positiveRotation <= 0.75 * Math.PI) {\n y0 = y0 - height / 2;\n x0 = x0 - width / 2 / Math.tan(rotation);\n y1 = y1 + height / 2;\n x1 = x1 + width / 2 / Math.tan(rotation);\n } else if (positiveRotation > 0.75 * Math.PI && positiveRotation <= 1.25 * Math.PI) {\n x0 = x0 + width / 2;\n y0 = y0 + (height / 2) * Math.tan(rotation);\n x1 = x1 - width / 2;\n y1 = y1 - (height / 2) * Math.tan(rotation);\n } else if (positiveRotation > 1.25 * Math.PI && positiveRotation <= 1.75 * Math.PI) {\n y0 = y0 + height / 2;\n x0 = x0 + width / 2 / Math.tan(rotation);\n y1 = y1 - height / 2;\n x1 = x1 - width / 2 / Math.tan(rotation);\n }\n\n gradient = document.createElementNS(\"http://www.w3.org/2000/svg\", \"linearGradient\");\n gradient.setAttribute(\"id\", name);\n gradient.setAttribute(\"gradientUnits\", \"userSpaceOnUse\");\n gradient.setAttribute(\"x1\", String(Math.round(x0)));\n gradient.setAttribute(\"y1\", String(Math.round(y0)));\n gradient.setAttribute(\"x2\", String(Math.round(x1)));\n gradient.setAttribute(\"y2\", String(Math.round(y1)));\n }\n\n options.colorStops.forEach(({ offset, color }: { offset: number; color: string }) => {\n const stop = document.createElementNS(\"http://www.w3.org/2000/svg\", \"stop\");\n stop.setAttribute(\"offset\", `${100 * offset}%`);\n stop.setAttribute(\"stop-color\", color);\n gradient.appendChild(stop);\n });\n\n rect.setAttribute(\"fill\", `url('#${name}')`);\n this._defs.appendChild(gradient);\n } else if (color) {\n rect.setAttribute(\"fill\", color);\n }\n\n this._element.appendChild(rect);\n }\n\n _createStyle({ color, name }: { color?: string; name: string }): void {\n this._style.innerHTML += `.${name}{ fill: ${color}; }`;\n }\n}\n","import { DrawTypes } from \"../types\";\n\nexport default {\n canvas: \"canvas\",\n svg: \"svg\"\n} as DrawTypes;\n","import { TypeNumber } from \"../types\";\n\ninterface TypesMap {\n [key: number]: TypeNumber;\n}\n\nconst qrTypes: TypesMap = {};\n\nfor (let type = 0; type <= 40; type++) {\n qrTypes[type] = type as TypeNumber;\n}\n\n// 0 types is autodetect\n\n// types = {\n// 0: 0,\n// 1: 1,\n// ...\n// 40: 40\n// }\n\nexport default qrTypes;\n","import qrTypes from \"../constants/qrTypes\";\nimport drawTypes from \"../constants/drawTypes\";\nimport errorCorrectionLevels from \"../constants/errorCorrectionLevels\";\nimport { DotType, Options, TypeNumber, ErrorCorrectionLevel, Mode, DrawType, Gradient } from \"../types\";\n\nexport interface RequiredOptions extends Options {\n type: DrawType;\n width: number;\n height: number;\n margin: number;\n data: string;\n qrOptions: {\n typeNumber: TypeNumber;\n mode?: Mode;\n errorCorrectionLevel: ErrorCorrectionLevel;\n };\n imageOptions: {\n hideBackgroundDots: boolean;\n imageSize: number;\n crossOrigin?: string;\n margin: number;\n };\n dotsOptions: {\n type: DotType;\n color: string;\n gradient?: Gradient;\n };\n backgroundOptions: {\n color: string;\n gradient?: Gradient;\n };\n}\n\nconst defaultOptions: RequiredOptions = {\n type: drawTypes.canvas,\n width: 300,\n height: 300,\n data: \"\",\n margin: 0,\n qrOptions: {\n typeNumber: qrTypes[0],\n mode: undefined,\n errorCorrectionLevel: errorCorrectionLevels.Q\n },\n imageOptions: {\n hideBackgroundDots: true,\n imageSize: 0.4,\n crossOrigin: \"anonymous\",\n margin: 0\n },\n dotsOptions: {\n type: \"square\",\n color: \"#000\"\n },\n backgroundOptions: {\n color: \"#fff\"\n }\n};\n\nexport default defaultOptions;\n","import { ErrorCorrectionLevel } from \"../types\";\n\ninterface ErrorCorrectionLevels {\n [key: string]: ErrorCorrectionLevel;\n}\n\nexport default {\n L: \"L\",\n M: \"M\",\n Q: \"Q\",\n H: \"H\"\n} as ErrorCorrectionLevels;\n","import { RequiredOptions } from \"../core/QROptions\";\nimport { Gradient } from \"../types\";\n\nfunction sanitizeGradient(gradient: Gradient): Gradient {\n const newGradient = { ...gradient };\n\n if (!newGradient.colorStops || !newGradient.colorStops.length) {\n throw \"Field 'colorStops' is required in gradient\";\n }\n\n if (newGradient.rotation) {\n newGradient.rotation = Number(newGradient.rotation);\n } else {\n newGradient.rotation = 0;\n }\n\n newGradient.colorStops = newGradient.colorStops.map((colorStop: { offset: number; color: string }) => ({\n ...colorStop,\n offset: Number(colorStop.offset)\n }));\n\n return newGradient;\n}\n\nexport default function sanitizeOptions(options: RequiredOptions): RequiredOptions {\n const newOptions = { ...options };\n\n newOptions.width = Number(newOptions.width);\n newOptions.height = Number(newOptions.height);\n newOptions.margin = Number(newOptions.margin);\n newOptions.imageOptions = {\n ...newOptions.imageOptions,\n hideBackgroundDots: Boolean(newOptions.imageOptions.hideBackgroundDots),\n imageSize: Number(newOptions.imageOptions.imageSize),\n margin: Number(newOptions.imageOptions.margin)\n };\n\n if (newOptions.margin > Math.min(newOptions.width, newOptions.height)) {\n newOptions.margin = Math.min(newOptions.width, newOptions.height);\n }\n\n newOptions.dotsOptions = {\n ...newOptions.dotsOptions\n };\n if (newOptions.dotsOptions.gradient) {\n newOptions.dotsOptions.gradient = sanitizeGradient(newOptions.dotsOptions.gradient);\n }\n\n if (newOptions.cornersSquareOptions) {\n newOptions.cornersSquareOptions = {\n ...newOptions.cornersSquareOptions\n };\n if (newOptions.cornersSquareOptions.gradient) {\n newOptions.cornersSquareOptions.gradient = sanitizeGradient(newOptions.cornersSquareOptions.gradient);\n }\n }\n\n if (newOptions.cornersDotOptions) {\n newOptions.cornersDotOptions = {\n ...newOptions.cornersDotOptions\n };\n if (newOptions.cornersDotOptions.gradient) {\n newOptions.cornersDotOptions.gradient = sanitizeGradient(newOptions.cornersDotOptions.gradient);\n }\n }\n\n if (newOptions.backgroundOptions) {\n newOptions.backgroundOptions = {\n ...newOptions.backgroundOptions\n };\n if (newOptions.backgroundOptions.gradient) {\n newOptions.backgroundOptions.gradient = sanitizeGradient(newOptions.backgroundOptions.gradient);\n }\n }\n\n return newOptions;\n}\n","import QRCodeStyling from \"./core/QRCodeStyling\";\nimport dotTypes from \"./constants/dotTypes\";\nimport cornerDotTypes from \"./constants/cornerDotTypes\";\nimport cornerSquareTypes from \"./constants/cornerSquareTypes\";\nimport errorCorrectionLevels from \"./constants/errorCorrectionLevels\";\nimport errorCorrectionPercents from \"./constants/errorCorrectionPercents\";\nimport modes from \"./constants/modes\";\nimport qrTypes from \"./constants/qrTypes\";\nimport drawTypes from \"./constants/drawTypes\";\n\nexport * from \"./types\";\n\nexport {\n dotTypes,\n cornerDotTypes,\n cornerSquareTypes,\n errorCorrectionLevels,\n errorCorrectionPercents,\n modes,\n qrTypes,\n drawTypes\n};\n\nexport default QRCodeStyling;\n","import getMode from \"../tools/getMode\";\nimport mergeDeep from \"../tools/merge\";\nimport downloadURI from \"../tools/downloadURI\";\nimport QRCanvas from \"./QRCanvas\";\nimport QRSVG from \"./QRSVG\";\nimport drawTypes from \"../constants/drawTypes\";\n\nimport defaultOptions, { RequiredOptions } from \"./QROptions\";\nimport sanitizeOptions from \"../tools/sanitizeOptions\";\nimport { Extension, QRCode, Options, DownloadOptions } from \"../types\";\nimport qrcode from \"qrcode-generator\";\n\nexport default class QRCodeStyling {\n _options: RequiredOptions;\n _container?: HTMLElement;\n _canvas?: QRCanvas;\n _svg?: QRSVG;\n _qr?: QRCode;\n _canvasDrawingPromise?: Promise;\n _svgDrawingPromise?: Promise;\n\n constructor(options?: Partial) {\n this._options = options ? sanitizeOptions(mergeDeep(defaultOptions, options) as RequiredOptions) : defaultOptions;\n this.update();\n }\n\n static _clearContainer(container?: HTMLElement): void {\n if (container) {\n container.innerHTML = \"\";\n }\n }\n\n async _getQRStylingElement(extension: Extension = \"png\"): Promise {\n if (!this._qr) throw \"QR code is empty\";\n\n if (extension.toLowerCase() === \"svg\") {\n let promise, svg: QRSVG;\n\n if (this._svg && this._svgDrawingPromise) {\n svg = this._svg;\n promise = this._svgDrawingPromise;\n } else {\n svg = new QRSVG(this._options);\n promise = svg.drawQR(this._qr);\n }\n\n await promise;\n\n return svg;\n } else {\n let promise, canvas: QRCanvas;\n\n if (this._canvas && this._canvasDrawingPromise) {\n canvas = this._canvas;\n promise = this._canvasDrawingPromise;\n } else {\n canvas = new QRCanvas(this._options);\n promise = canvas.drawQR(this._qr);\n }\n\n await promise;\n\n return canvas;\n }\n }\n\n update(options?: Partial): void {\n QRCodeStyling._clearContainer(this._container);\n this._options = options ? sanitizeOptions(mergeDeep(this._options, options) as RequiredOptions) : this._options;\n\n if (!this._options.data) {\n return;\n }\n\n this._qr = qrcode(this._options.qrOptions.typeNumber, this._options.qrOptions.errorCorrectionLevel);\n this._qr.addData(this._options.data, this._options.qrOptions.mode || getMode(this._options.data));\n this._qr.make();\n\n if (this._options.type === drawTypes.canvas) {\n this._canvas = new QRCanvas(this._options);\n this._canvasDrawingPromise = this._canvas.drawQR(this._qr);\n this._svgDrawingPromise = undefined;\n this._svg = undefined;\n } else {\n this._svg = new QRSVG(this._options);\n this._svgDrawingPromise = this._svg.drawQR(this._qr);\n this._canvasDrawingPromise = undefined;\n this._canvas = undefined;\n }\n\n this.append(this._container);\n }\n\n append(container?: HTMLElement): void {\n if (!container) {\n return;\n }\n\n if (typeof container.appendChild !== \"function\") {\n throw \"Container should be a single DOM node\";\n }\n\n if (this._options.type === drawTypes.canvas) {\n if (this._canvas) {\n container.appendChild(this._canvas.getCanvas());\n }\n } else {\n if (this._svg) {\n container.appendChild(this._svg.getElement());\n }\n }\n\n this._container = container;\n }\n\n async getRawData(extension: Extension = \"png\"): Promise {\n if (!this._qr) throw \"QR code is empty\";\n const element = await this._getQRStylingElement(extension);\n\n if (extension.toLowerCase() === \"svg\") {\n const serializer = new XMLSerializer();\n const source = serializer.serializeToString(((element as unknown) as QRSVG).getElement());\n\n return new Blob(['\\r\\n' + source], { type: \"image/svg+xml\" });\n } else {\n return new Promise((resolve) =>\n ((element as unknown) as QRCanvas).getCanvas().toBlob(resolve, `image/${extension}`, 1)\n );\n }\n }\n\n async download(downloadOptions?: Partial | string): Promise {\n if (!this._qr) throw \"QR code is empty\";\n let extension = \"png\" as Extension;\n let name = \"qr\";\n\n //TODO remove deprecated code in the v2\n if (typeof downloadOptions === \"string\") {\n extension = downloadOptions as Extension;\n console.warn(\n \"Extension is deprecated as argument for 'download' method, please pass object { name: '...', extension: '...' } as argument\"\n );\n } else if (typeof downloadOptions === \"object\" && downloadOptions !== null) {\n if (downloadOptions.name) {\n name = downloadOptions.name;\n }\n if (downloadOptions.extension) {\n extension = downloadOptions.extension;\n }\n }\n\n const element = await this._getQRStylingElement(extension);\n\n if (extension.toLowerCase() === \"svg\") {\n const serializer = new XMLSerializer();\n let source = serializer.serializeToString(((element as unknown) as QRSVG).getElement());\n\n source = '\\r\\n' + source;\n const url = \"data:image/svg+xml;charset=utf-8,\" + encodeURIComponent(source);\n downloadURI(url, `${name}.svg`);\n } else {\n const url = ((element as unknown) as QRCanvas).getCanvas().toDataURL(`image/${extension}`);\n downloadURI(url, `${name}.${extension}`);\n }\n }\n}\n","import modes from \"../constants/modes\";\nimport { Mode } from \"../types\";\n\nexport default function getMode(data: string): Mode {\n switch (true) {\n case /^[0-9]*$/.test(data):\n return modes.numeric;\n case /^[0-9A-Z $%*+\\-./:]*$/.test(data):\n return modes.alphanumeric;\n default:\n return modes.byte;\n }\n}\n","import { Mode } from \"../types\";\n\ninterface Modes {\n [key: string]: Mode;\n}\n\nexport default {\n numeric: \"Numeric\",\n alphanumeric: \"Alphanumeric\",\n byte: \"Byte\",\n kanji: \"Kanji\"\n} as Modes;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tif(__webpack_module_cache__[moduleId]) {\n\t\treturn __webpack_module_cache__[moduleId].exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// module exports must be returned from runtime so entry inlining is disabled\n// startup\n// Load entry module and return exports\nreturn __webpack_require__(796);\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => module['default'] :\n\t\t() => module;\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop)"],"sourceRoot":""} \ No newline at end of file From 040bf3ae8170fedc16101aaac8c1673246e2c11e Mon Sep 17 00:00:00 2001 From: Henk van Maanen <36051232+HenkVanMaanen@users.noreply.github.com> Date: Thu, 28 Jul 2022 11:36:29 +0200 Subject: [PATCH 15/25] new build --- lib/qr-code-styling.js | 2 +- lib/qr-code-styling.js.map | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/qr-code-styling.js b/lib/qr-code-styling.js index 1aea2ac7..978d770a 100644 --- a/lib/qr-code-styling.js +++ b/lib/qr-code-styling.js @@ -1,2 +1,2 @@ -!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.QRCodeStyling=e():t.QRCodeStyling=e()}(self,(function(){return(()=>{var t={192:(t,e)=>{var r,n,o=function(){var t=function(t,e){var r=t,n=a[e],o=null,i=0,u=null,v=[],w={},_=function(t,e){o=function(t){for(var e=new Array(t),r=0;r=7&&M(t),null==u&&(u=P(r,n,v)),C(u,e)},m=function(t,e){for(var r=-1;r<=7;r+=1)if(!(t+r<=-1||i<=t+r))for(var n=-1;n<=7;n+=1)e+n<=-1||i<=e+n||(o[t+r][e+n]=0<=r&&r<=6&&(0==n||6==n)||0<=n&&n<=6&&(0==r||6==r)||2<=r&&r<=4&&2<=n&&n<=4)},b=function(){for(var t=8;t>n&1);o[Math.floor(n/3)][n%3+i-8-3]=a}for(n=0;n<18;n+=1)a=!t&&1==(e>>n&1),o[n%3+i-8-3][Math.floor(n/3)]=a},S=function(t,e){for(var r=n<<3|e,a=s.getBCHTypeInfo(r),u=0;u<15;u+=1){var c=!t&&1==(a>>u&1);u<6?o[u][8]=c:u<8?o[u+1][8]=c:o[i-15+u][8]=c}for(u=0;u<15;u+=1)c=!t&&1==(a>>u&1),u<8?o[8][i-u-1]=c:u<9?o[8][15-u-1+1]=c:o[8][15-u-1]=c;o[i-8][8]=!t},C=function(t,e){for(var r=-1,n=i-1,a=7,u=0,c=s.getMaskFunction(e),h=i-1;h>0;h-=2)for(6==h&&(h-=1);;){for(var l=0;l<2;l+=1)if(null==o[n][h-l]){var d=!1;u>>a&1)),c(n,h-l)&&(d=!d),o[n][h-l]=d,-1==(a-=1)&&(u+=1,a=7)}if((n+=r)<0||i<=n){n-=r,r=-r;break}}},P=function(t,e,r){for(var n=h.getRSBlocks(t,e),o=l(),i=0;i8*u)throw"code length overflow. ("+o.getLengthInBits()+">"+8*u+")";for(o.getLengthInBits()+4<=8*u&&o.put(0,4);o.getLengthInBits()%8!=0;)o.putBit(!1);for(;!(o.getLengthInBits()>=8*u||(o.put(236,8),o.getLengthInBits()>=8*u));)o.put(17,8);return function(t,e){for(var r=0,n=0,o=0,i=new Array(e.length),a=new Array(e.length),u=0;u=0?p.getAt(g):0}}var v=0;for(d=0;dn)&&(t=n,e=r)}return e}())},w.createTableTag=function(t,e){t=t||2;var r="";r+='
',r+="";for(var n=0;n";for(var o=0;o';r+=""}return(r+="")+"
"},w.createSvgTag=function(t,e,r,n){var o={};"object"==typeof arguments[0]&&(t=(o=arguments[0]).cellSize,e=o.margin,r=o.alt,n=o.title),t=t||2,e=void 0===e?4*t:e,(r="string"==typeof r?{text:r}:r||{}).text=r.text||null,r.id=r.text?r.id||"qrcode-description":null,(n="string"==typeof n?{text:n}:n||{}).text=n.text||null,n.id=n.text?n.id||"qrcode-title":null;var i,a,s,u,c=w.getModuleCount()*t+2*e,h="";for(u="l"+t+",0 0,"+t+" -"+t+",0 0,-"+t+"z ",h+=''+O(n.text)+"":"",h+=r.text?''+O(r.text)+"":"",h+='',h+='"},w.createDataURL=function(t,e){t=t||2,e=void 0===e?4*t:e;var r=w.getModuleCount()*t+2*e,n=e,o=r-e;return y(r,r,(function(e,r){if(n<=e&&e"};var O=function(t){for(var e="",r=0;r":e+=">";break;case"&":e+="&";break;case'"':e+=""";break;default:e+=n}}return e};return w.createASCII=function(t,e){if((t=t||1)<2)return function(t){t=void 0===t?2:t;var e,r,n,o,i,a=1*w.getModuleCount()+2*t,s=t,u=a-t,c={"██":"█","█ ":"▀"," █":"▄"," ":" "},h={"██":"▀","█ ":"▀"," █":" "," ":" "},l="";for(e=0;e=u?h[i]:c[i];l+="\n"}return a%2&&t>0?l.substring(0,l.length-a-1)+Array(a+1).join("▀"):l.substring(0,l.length-1)}(e);t-=1,e=void 0===e?2*t:e;var r,n,o,i,a=w.getModuleCount()*t+2*e,s=e,u=a-e,c=Array(t+1).join("██"),h=Array(t+1).join(" "),l="",d="";for(r=0;r>>8),e.push(255&a)):e.push(n)}}return e}};var e,r,n,o,i,a={L:1,M:0,Q:3,H:2},s=(e=[[],[6,18],[6,22],[6,26],[6,30],[6,34],[6,22,38],[6,24,42],[6,26,46],[6,28,50],[6,30,54],[6,32,58],[6,34,62],[6,26,46,66],[6,26,48,70],[6,26,50,74],[6,30,54,78],[6,30,56,82],[6,30,58,86],[6,34,62,90],[6,28,50,72,94],[6,26,50,74,98],[6,30,54,78,102],[6,28,54,80,106],[6,32,58,84,110],[6,30,58,86,114],[6,34,62,90,118],[6,26,50,74,98,122],[6,30,54,78,102,126],[6,26,52,78,104,130],[6,30,56,82,108,134],[6,34,60,86,112,138],[6,30,58,86,114,142],[6,34,62,90,118,146],[6,30,54,78,102,126,150],[6,24,50,76,102,128,154],[6,28,54,80,106,132,158],[6,32,58,84,110,136,162],[6,26,54,82,110,138,166],[6,30,58,86,114,142,170]],r=1335,n=7973,i=function(t){for(var e=0;0!=t;)e+=1,t>>>=1;return e},(o={}).getBCHTypeInfo=function(t){for(var e=t<<10;i(e)-i(r)>=0;)e^=r<=0;)e^=n<5&&(r+=3+i-5)}for(n=0;n=256;)e-=255;return t[e]}}}();function c(t,e){if(void 0===t.length)throw t.length+"/"+e;var r=function(){for(var r=0;r>>7-e%8&1)},put:function(t,e){for(var n=0;n>>e-n-1&1))},getLengthInBits:function(){return e},putBit:function(r){var n=Math.floor(e/8);t.length<=n&&t.push(0),r&&(t[n]|=128>>>e%8),e+=1}};return r},d=function(t){var e=t,r={getMode:function(){return 1},getLength:function(t){return e.length},write:function(t){for(var r=e,o=0;o+2>>8&255)+(255&o),t.put(o,13),r+=2}if(r>>8)},writeBytes:function(t,r,n){r=r||0,n=n||t.length;for(var o=0;o0&&(e+=","),e+=t[r];return e+"]"}};return e},w=function(t){var e=t,r=0,n=0,o=0,i={read:function(){for(;o<8;){if(r>=e.length){if(0==o)return-1;throw"unexpected end of file./"+o}var t=e.charAt(r);if(r+=1,"="==t)return o=0,-1;t.match(/^\s$/)||(n=n<<6|a(t.charCodeAt(0)),o+=6)}var i=n>>>o-8&255;return o-=8,i}},a=function(t){if(65<=t&&t<=90)return t-65;if(97<=t&&t<=122)return t-97+26;if(48<=t&&t<=57)return t-48+52;if(43==t)return 62;if(47==t)return 63;throw"c:"+t};return i},y=function(t,e,r){for(var n=function(t,e){var r=t,n=e,o=new Array(t*e),i={setPixel:function(t,e,n){o[e*r+t]=n},write:function(t){t.writeString("GIF87a"),t.writeShort(r),t.writeShort(n),t.writeByte(128),t.writeByte(0),t.writeByte(0),t.writeByte(0),t.writeByte(0),t.writeByte(0),t.writeByte(255),t.writeByte(255),t.writeByte(255),t.writeString(","),t.writeShort(0),t.writeShort(0),t.writeShort(r),t.writeShort(n),t.writeByte(0);var e=a(2);t.writeByte(2);for(var o=0;e.length-o>255;)t.writeByte(255),t.writeBytes(e,o,255),o+=255;t.writeByte(e.length-o),t.writeBytes(e,o,e.length-o),t.writeByte(0),t.writeString(";")}},a=function(t){for(var e=1<>>e!=0)throw"length over";for(;c+e>=8;)u.writeByte(255&(t<>>=8-c,h=0,c=0;h|=t<0&&u.writeByte(h)}});d.write(e,n);var f=0,p=String.fromCharCode(o[f]);for(f+=1;f=6;)i(t>>>e-6),e-=6},o.flush=function(){if(e>0&&(i(t<<6-e),t=0,e=0),r%3!=0)for(var o=3-r%3,a=0;a>6,128|63&n):n<55296||n>=57344?e.push(224|n>>12,128|n>>6&63,128|63&n):(r++,n=65536+((1023&n)<<10|1023&t.charCodeAt(r)),e.push(240|n>>18,128|n>>12&63,128|n>>6&63,128|63&n))}return e}(t)},void 0===(n="function"==typeof(r=function(){return o})?r.apply(e,[]):r)||(t.exports=n)},796:(t,e,r)=>{"use strict";r.d(e,{default:()=>J});var n=function(){return(n=Object.assign||function(t){for(var e,r=1,n=arguments.length;rn||o&&o2||a&&s||u&&c)this._basicSquare({x:e,y:r,size:n,context:o,rotation:0});else{if(2===h){var l=0;return a&&u?l=Math.PI/2:u&&s?l=Math.PI:s&&c&&(l=-Math.PI/2),void this._basicCornerRounded({x:e,y:r,size:n,context:o,rotation:l})}if(1===h)return l=0,u?l=Math.PI/2:s?l=Math.PI:c&&(l=-Math.PI/2),void this._basicSideRounded({x:e,y:r,size:n,context:o,rotation:l})}else this._basicDot({x:e,y:r,size:n,context:o,rotation:0})},t.prototype._drawExtraRounded=function(t){var e=t.x,r=t.y,n=t.size,o=t.context,i=t.getNeighbor,a=i?+i(-1,0):0,s=i?+i(1,0):0,u=i?+i(0,-1):0,c=i?+i(0,1):0,h=a+s+u+c;if(0!==h)if(h>2||a&&s||u&&c)this._basicSquare({x:e,y:r,size:n,context:o,rotation:0});else{if(2===h){var l=0;return a&&u?l=Math.PI/2:u&&s?l=Math.PI:s&&c&&(l=-Math.PI/2),void this._basicCornerExtraRounded({x:e,y:r,size:n,context:o,rotation:l})}if(1===h)return l=0,u?l=Math.PI/2:s?l=Math.PI:c&&(l=-Math.PI/2),void this._basicSideRounded({x:e,y:r,size:n,context:o,rotation:l})}else this._basicDot({x:e,y:r,size:n,context:o,rotation:0})},t.prototype._drawClassy=function(t){var e=t.x,r=t.y,n=t.size,o=t.context,i=t.getNeighbor,a=i?+i(-1,0):0,s=i?+i(1,0):0,u=i?+i(0,-1):0,c=i?+i(0,1):0;0!==a+s+u+c?a||u?s||c?this._basicSquare({x:e,y:r,size:n,context:o,rotation:0}):this._basicCornerRounded({x:e,y:r,size:n,context:o,rotation:Math.PI/2}):this._basicCornerRounded({x:e,y:r,size:n,context:o,rotation:-Math.PI/2}):this._basicCornersRounded({x:e,y:r,size:n,context:o,rotation:Math.PI/2})},t.prototype._drawClassyRounded=function(t){var e=t.x,r=t.y,n=t.size,o=t.context,i=t.getNeighbor,a=i?+i(-1,0):0,s=i?+i(1,0):0,u=i?+i(0,-1):0,c=i?+i(0,1):0;0!==a+s+u+c?a||u?s||c?this._basicSquare({x:e,y:r,size:n,context:o,rotation:0}):this._basicCornerExtraRounded({x:e,y:r,size:n,context:o,rotation:Math.PI/2}):this._basicCornerExtraRounded({x:e,y:r,size:n,context:o,rotation:-Math.PI/2}):this._basicCornersRounded({x:e,y:r,size:n,context:o,rotation:Math.PI/2})},t}(),y="square",_="extra-rounded";var m=function(){return(m=Object.assign||function(t){for(var e,r=1,n=arguments.length;r0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]=(e-o.hideXDots)/2&&t<(e+o.hideXDots)/2&&r>=(e-o.hideYDots)/2&&r<(e+o.hideYDots)/2||(null===(n=P[t])||void 0===n?void 0:n[r])||(null===(i=P[t-e+7])||void 0===i?void 0:i[r])||(null===(a=P[t])||void 0===a?void 0:a[r-e+7])||(null===(s=O[t])||void 0===s?void 0:s[r])||(null===(u=O[t-e+7])||void 0===u?void 0:u[r])||(null===(c=O[t])||void 0===c?void 0:c[r-e+7]))})),this.drawCorners(),this._options.image&&this.drawImage({width:o.width,height:o.height,count:e,dotSize:n}),[2]}}))},new((n=void 0)||(n=Promise))((function(t,i){function a(t){try{u(o.next(t))}catch(t){i(t)}}function s(t){try{u(o.throw(t))}catch(t){i(t)}}function u(e){var r;e.done?t(e.value):(r=e.value,r instanceof n?r:new n((function(t){t(r)}))).then(a,s)}u((o=o.apply(e,r||[])).next())}));var e,r,n,o},t.prototype.drawBackground=function(){var t=this.context,e=this._options;if(t){if(e.backgroundOptions.gradient){var r=e.backgroundOptions.gradient,n=this._createGradient({context:t,options:r,additionalRotation:0,x:0,y:0,size:this._canvas.width>this._canvas.height?this._canvas.width:this._canvas.height});r.colorStops.forEach((function(t){var e=t.offset,r=t.color;n.addColorStop(e,r)})),t.fillStyle=n}else e.backgroundOptions.color&&(t.fillStyle=e.backgroundOptions.color);t.fillRect(0,0,this._canvas.width,this._canvas.height)}},t.prototype.drawDots=function(t){var e=this;if(!this._qr)throw"QR code is not defined";var r=this.context;if(!r)throw"QR code is not defined";var n=this._options,o=this._qr.getModuleCount();if(o>n.width||o>n.height)throw"The canvas is too small.";var i=Math.min(n.width,n.height)-2*n.margin,a=Math.floor(i/o),s=Math.floor((n.width-o*a)/2),u=Math.floor((n.height-o*a)/2),c=new w({context:r,type:n.dotsOptions.type});r.beginPath();for(var h=function(r){for(var n=function(n){return t&&!t(r,n)?"continue":l._qr.isDark(r,n)?void c.draw(u+n*a,s+r*a,a,(function(i,a){return!(r+i<0||n+a<0||r+i>=o||n+a>=o)&&!(t&&!t(r+i,n+a))&&!!e._qr&&e._qr.isDark(r+i,n+a)})):"continue"},i=0;i=0&&c<=.25*Math.PI||c>1.75*Math.PI&&c<=2*Math.PI?(h-=s/2,l-=s/2*Math.tan(u),d+=s/2,f+=s/2*Math.tan(u)):c>.25*Math.PI&&c<=.75*Math.PI?(l-=s/2,h-=s/2/Math.tan(u),f+=s/2,d+=s/2/Math.tan(u)):c>.75*Math.PI&&c<=1.25*Math.PI?(h+=s/2,l+=s/2*Math.tan(u),d-=s/2,f-=s/2*Math.tan(u)):c>1.25*Math.PI&&c<=1.75*Math.PI&&(l+=s/2,h+=s/2/Math.tan(u),f-=s/2,d-=s/2/Math.tan(u)),e=r.createLinearGradient(Math.round(h),Math.round(l),Math.round(d),Math.round(f))}return e},t}();var z=function(){return(z=Object.assign||function(t){for(var e,r=1,n=arguments.length;r2||i&&a||s&&u)this._basicSquare({x:e,y:r,size:n,rotation:0});else{if(2===c){var h=0;return i&&s?h=Math.PI/2:s&&a?h=Math.PI:a&&u&&(h=-Math.PI/2),void this._basicCornerRounded({x:e,y:r,size:n,rotation:h})}if(1===c)return h=0,s?h=Math.PI/2:a?h=Math.PI:u&&(h=-Math.PI/2),void this._basicSideRounded({x:e,y:r,size:n,rotation:h})}else this._basicDot({x:e,y:r,size:n,rotation:0})},t.prototype._drawExtraRounded=function(t){var e=t.x,r=t.y,n=t.size,o=t.getNeighbor,i=o?+o(-1,0):0,a=o?+o(1,0):0,s=o?+o(0,-1):0,u=o?+o(0,1):0,c=i+a+s+u;if(0!==c)if(c>2||i&&a||s&&u)this._basicSquare({x:e,y:r,size:n,rotation:0});else{if(2===c){var h=0;return i&&s?h=Math.PI/2:s&&a?h=Math.PI:a&&u&&(h=-Math.PI/2),void this._basicCornerExtraRounded({x:e,y:r,size:n,rotation:h})}if(1===c)return h=0,s?h=Math.PI/2:a?h=Math.PI:u&&(h=-Math.PI/2),void this._basicSideRounded({x:e,y:r,size:n,rotation:h})}else this._basicDot({x:e,y:r,size:n,rotation:0})},t.prototype._drawClassy=function(t){var e=t.x,r=t.y,n=t.size,o=t.getNeighbor,i=o?+o(-1,0):0,a=o?+o(1,0):0,s=o?+o(0,-1):0,u=o?+o(0,1):0;0!==i+a+s+u?i||s?a||u?this._basicSquare({x:e,y:r,size:n,rotation:0}):this._basicCornerRounded({x:e,y:r,size:n,rotation:Math.PI/2}):this._basicCornerRounded({x:e,y:r,size:n,rotation:-Math.PI/2}):this._basicCornersRounded({x:e,y:r,size:n,rotation:Math.PI/2})},t.prototype._drawClassyRounded=function(t){var e=t.x,r=t.y,n=t.size,o=t.getNeighbor,i=o?+o(-1,0):0,a=o?+o(1,0):0,s=o?+o(0,-1):0,u=o?+o(0,1):0;0!==i+a+s+u?i||s?a||u?this._basicSquare({x:e,y:r,size:n,rotation:0}):this._basicCornerExtraRounded({x:e,y:r,size:n,rotation:Math.PI/2}):this._basicCornerExtraRounded({x:e,y:r,size:n,rotation:-Math.PI/2}):this._basicCornersRounded({x:e,y:r,size:n,rotation:Math.PI/2})},t}();var I=function(){return(I=Object.assign||function(t){for(var e,r=1,n=arguments.length;r0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]=(e-o.hideXDots)/2&&t<(e+o.hideXDots)/2&&r>=(e-o.hideYDots)/2&&r<(e+o.hideYDots)/2||(null===(n=N[t])||void 0===n?void 0:n[r])||(null===(i=N[t-e+7])||void 0===i?void 0:i[r])||(null===(a=N[t])||void 0===a?void 0:a[r-e+7])||(null===(s=L[t])||void 0===s?void 0:s[r])||(null===(u=L[t-e+7])||void 0===u?void 0:u[r])||(null===(c=L[t])||void 0===c?void 0:c[r-e+7]))})),this.drawCorners(),this._options.image?[4,this.drawImage({width:o.width,height:o.height,count:e,dotSize:n})]:[3,4];case 3:f.sent(),f.label=4;case 4:return[2]}}))}))},t.prototype.drawBackground=function(){var t,e,r,n=this._element,o=this._options;if(n){var i=null===(t=o.backgroundOptions)||void 0===t?void 0:t.gradient,a=null===(e=o.backgroundOptions)||void 0===e?void 0:e.color;i?this._createColor({options:i,color:a,additionalRotation:0,x:0,y:0,height:o.height,width:o.width,name:"background-color"}):(null===(r=o.backgroundOptions)||void 0===r?void 0:r.color)&&this._createStyle({color:a,name:"background-color"})}},t.prototype.drawDots=function(t){var e,r,n,o=this;if(!this._qr)throw"QR code is not defined";var i=this._options,a=this._qr.getModuleCount();if(a>i.width||a>i.height)throw"The canvas is too small.";var s=Math.min(i.width,i.height)-2*i.margin,u=Math.floor(s/a),c=Math.floor((i.width-a*u)/2),h=Math.floor((i.height-a*u)/2),l=new A({svg:this._element,type:i.dotsOptions.type});(null===(e=i.dotsOptions)||void 0===e?void 0:e.gradient)?(this._dotsClipPath=document.createElementNS("http://www.w3.org/2000/svg","clipPath"),this._dotsClipPath.setAttribute("id","clip-path-dot-color"),this._defs.appendChild(this._dotsClipPath),this._createColor({options:null===(r=i.dotsOptions)||void 0===r?void 0:r.gradient,color:i.dotsOptions.color,additionalRotation:0,x:c,y:h,height:a*u,width:a*u,name:"dot-color"})):i.dotsOptions.color&&(this._dots=document.createElementNS("http://www.w3.org/2000/svg","g"),this._dots.setAttribute("class","dot-color"),this._element.appendChild(this._dots),this._createStyle({color:i.dotsOptions.color,name:"dot-color"}));for(var d=function(e){for(var r=function(r){return t&&!t(e,r)?"continue":(null===(n=f._qr)||void 0===n?void 0:n.isDark(e,r))?(l.draw(h+r*u,c+e*u,u,(function(n,i){return!(e+n<0||r+i<0||e+n>=a||r+i>=a)&&!(t&&!t(e+n,r+i))&&!!o._qr&&o._qr.isDark(e+n,r+i)})),void(l._element&&f._dotsClipPath?f._dotsClipPath.appendChild(l._element):l._element&&f._dots&&f._dots.appendChild(l._element))):"continue"},i=0;ia?s:a,h=document.createElementNS("http://www.w3.org/2000/svg","rect");if(h.setAttribute("x",String(o)),h.setAttribute("y",String(i)),h.setAttribute("height",String(a)),h.setAttribute("width",String(s)),h.setAttribute("clip-path","url('#clip-path-"+u+"')"),e){var l;if(e.type===C)(l=document.createElementNS("http://www.w3.org/2000/svg","radialGradient")).setAttribute("id",u),l.setAttribute("gradientUnits","userSpaceOnUse"),l.setAttribute("fx",String(o+s/2)),l.setAttribute("fy",String(i+a/2)),l.setAttribute("cx",String(o+s/2)),l.setAttribute("cy",String(i+a/2)),l.setAttribute("r",String(c/2));else{var d=((e.rotation||0)+n)%(2*Math.PI),f=(d+2*Math.PI)%(2*Math.PI),p=o+s/2,g=i+a/2,v=o+s/2,w=i+a/2;f>=0&&f<=.25*Math.PI||f>1.75*Math.PI&&f<=2*Math.PI?(p-=s/2,g-=a/2*Math.tan(d),v+=s/2,w+=a/2*Math.tan(d)):f>.25*Math.PI&&f<=.75*Math.PI?(g-=a/2,p-=s/2/Math.tan(d),w+=a/2,v+=s/2/Math.tan(d)):f>.75*Math.PI&&f<=1.25*Math.PI?(p+=s/2,g+=a/2*Math.tan(d),v-=s/2,w-=a/2*Math.tan(d)):f>1.25*Math.PI&&f<=1.75*Math.PI&&(g+=a/2,p+=s/2/Math.tan(d),w-=a/2,v-=s/2/Math.tan(d)),(l=document.createElementNS("http://www.w3.org/2000/svg","linearGradient")).setAttribute("id",u),l.setAttribute("gradientUnits","userSpaceOnUse"),l.setAttribute("x1",String(Math.round(p))),l.setAttribute("y1",String(Math.round(g))),l.setAttribute("x2",String(Math.round(v))),l.setAttribute("y2",String(Math.round(w)))}e.colorStops.forEach((function(t){var e=t.offset,r=t.color,n=document.createElementNS("http://www.w3.org/2000/svg","stop");n.setAttribute("offset",100*e+"%"),n.setAttribute("stop-color",r),l.appendChild(n)})),h.setAttribute("fill","url('#"+u+"')"),this._defs.appendChild(l)}else r&&h.setAttribute("fill",r);this._element.appendChild(h)},t.prototype._createStyle=function(t){var e=t.color,r=t.name;this._style.innerHTML+="."+r+"{ fill: "+e+"; }"},t}(),j="canvas";for(var F={},Q=0;Q<=40;Q++)F[Q]=Q;const H={type:j,width:300,height:300,data:"",margin:0,qrOptions:{typeNumber:F[0],mode:void 0,errorCorrectionLevel:"Q"},imageOptions:{hideBackgroundDots:!0,imageSize:.4,crossOrigin:"anonymous",margin:0},dotsOptions:{type:"square",color:"#000"},backgroundOptions:{color:"#fff"}};var G=function(){return(G=Object.assign||function(t){for(var e,r=1,n=arguments.length;rMath.min(e.width,e.height)&&(e.margin=Math.min(e.width,e.height)),e.dotsOptions=G({},e.dotsOptions),e.dotsOptions.gradient&&(e.dotsOptions.gradient=U(e.dotsOptions.gradient)),e.cornersSquareOptions&&(e.cornersSquareOptions=G({},e.cornersSquareOptions),e.cornersSquareOptions.gradient&&(e.cornersSquareOptions.gradient=U(e.cornersSquareOptions.gradient))),e.cornersDotOptions&&(e.cornersDotOptions=G({},e.cornersDotOptions),e.cornersDotOptions.gradient&&(e.cornersDotOptions.gradient=U(e.cornersDotOptions.gradient))),e.backgroundOptions&&(e.backgroundOptions=G({},e.backgroundOptions),e.backgroundOptions.gradient&&(e.backgroundOptions.gradient=U(e.backgroundOptions.gradient))),e}var Y=r(192),$=r.n(Y),W=function(t,e,r,n){return new(r||(r=Promise))((function(o,i){function a(t){try{u(n.next(t))}catch(t){i(t)}}function s(t){try{u(n.throw(t))}catch(t){i(t)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof r?e:new r((function(t){t(e)}))).then(a,s)}u((n=n.apply(t,e||[])).next())}))},Z=function(t,e){var r,n,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(i){return function(s){return function(i){if(r)throw new TypeError("Generator is already executing.");for(;a;)try{if(r=1,n&&(o=2&i[0]?n.return:i[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,i[1])).done)return o;switch(n=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,n=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!((o=(o=a.trys).length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]\r\n'+n],{type:"image/svg+xml"})]):[2,new Promise((function(r){return e.getCanvas().toBlob(r,"image/"+t,1)}))]}}))}))},t.prototype.download=function(t){return W(this,void 0,void 0,(function(){var e,r,n,o,i;return Z(this,(function(a){switch(a.label){case 0:if(!this._qr)throw"QR code is empty";return e="png",r="qr","string"==typeof t?(e=t,console.warn("Extension is deprecated as argument for 'download' method, please pass object { name: '...', extension: '...' } as argument")):"object"==typeof t&&null!==t&&(t.name&&(r=t.name),t.extension&&(e=t.extension)),[4,this._getQRStylingElement(e)];case 1:return n=a.sent(),"svg"===e.toLowerCase()?(o=new XMLSerializer,i='\r\n'+(i=o.serializeToString(n.getElement())),s("data:image/svg+xml;charset=utf-8,"+encodeURIComponent(i),r+".svg")):s(n.getCanvas().toDataURL("image/"+e),r+"."+e),[2]}}))}))},t}()}},e={};function r(n){if(e[n])return e[n].exports;var o=e[n]={exports:{}};return t[n](o,o.exports,r),o.exports}return r.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return r.d(e,{a:e}),e},r.d=(t,e)=>{for(var n in e)r.o(e,n)&&!r.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},r.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r(796)})().default})); +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.QRCodeStyling=e():t.QRCodeStyling=e()}(self,(function(){return(()=>{var t={192:(t,e)=>{var r,n,o=function(){var t=function(t,e){var r=t,n=a[e],o=null,i=0,u=null,v=[],w={},_=function(t,e){o=function(t){for(var e=new Array(t),r=0;r=7&&M(t),null==u&&(u=P(r,n,v)),C(u,e)},m=function(t,e){for(var r=-1;r<=7;r+=1)if(!(t+r<=-1||i<=t+r))for(var n=-1;n<=7;n+=1)e+n<=-1||i<=e+n||(o[t+r][e+n]=0<=r&&r<=6&&(0==n||6==n)||0<=n&&n<=6&&(0==r||6==r)||2<=r&&r<=4&&2<=n&&n<=4)},b=function(){for(var t=8;t>n&1);o[Math.floor(n/3)][n%3+i-8-3]=a}for(n=0;n<18;n+=1)a=!t&&1==(e>>n&1),o[n%3+i-8-3][Math.floor(n/3)]=a},S=function(t,e){for(var r=n<<3|e,a=s.getBCHTypeInfo(r),u=0;u<15;u+=1){var c=!t&&1==(a>>u&1);u<6?o[u][8]=c:u<8?o[u+1][8]=c:o[i-15+u][8]=c}for(u=0;u<15;u+=1)c=!t&&1==(a>>u&1),u<8?o[8][i-u-1]=c:u<9?o[8][15-u-1+1]=c:o[8][15-u-1]=c;o[i-8][8]=!t},C=function(t,e){for(var r=-1,n=i-1,a=7,u=0,c=s.getMaskFunction(e),h=i-1;h>0;h-=2)for(6==h&&(h-=1);;){for(var l=0;l<2;l+=1)if(null==o[n][h-l]){var d=!1;u>>a&1)),c(n,h-l)&&(d=!d),o[n][h-l]=d,-1==(a-=1)&&(u+=1,a=7)}if((n+=r)<0||i<=n){n-=r,r=-r;break}}},P=function(t,e,r){for(var n=h.getRSBlocks(t,e),o=l(),i=0;i8*u)throw"code length overflow. ("+o.getLengthInBits()+">"+8*u+")";for(o.getLengthInBits()+4<=8*u&&o.put(0,4);o.getLengthInBits()%8!=0;)o.putBit(!1);for(;!(o.getLengthInBits()>=8*u||(o.put(236,8),o.getLengthInBits()>=8*u));)o.put(17,8);return function(t,e){for(var r=0,n=0,o=0,i=new Array(e.length),a=new Array(e.length),u=0;u=0?p.getAt(g):0}}var v=0;for(d=0;dn)&&(t=n,e=r)}return e}())},w.createTableTag=function(t,e){t=t||2;var r="";r+='',r+="";for(var n=0;n";for(var o=0;o';r+=""}return(r+="")+"
"},w.createSvgTag=function(t,e,r,n){var o={};"object"==typeof arguments[0]&&(t=(o=arguments[0]).cellSize,e=o.margin,r=o.alt,n=o.title),t=t||2,e=void 0===e?4*t:e,(r="string"==typeof r?{text:r}:r||{}).text=r.text||null,r.id=r.text?r.id||"qrcode-description":null,(n="string"==typeof n?{text:n}:n||{}).text=n.text||null,n.id=n.text?n.id||"qrcode-title":null;var i,a,s,u,c=w.getModuleCount()*t+2*e,h="";for(u="l"+t+",0 0,"+t+" -"+t+",0 0,-"+t+"z ",h+=''+O(n.text)+"":"",h+=r.text?''+O(r.text)+"":"",h+='',h+='"},w.createDataURL=function(t,e){t=t||2,e=void 0===e?4*t:e;var r=w.getModuleCount()*t+2*e,n=e,o=r-e;return y(r,r,(function(e,r){if(n<=e&&e"};var O=function(t){for(var e="",r=0;r":e+=">";break;case"&":e+="&";break;case'"':e+=""";break;default:e+=n}}return e};return w.createASCII=function(t,e){if((t=t||1)<2)return function(t){t=void 0===t?2:t;var e,r,n,o,i,a=1*w.getModuleCount()+2*t,s=t,u=a-t,c={"██":"█","█ ":"▀"," █":"▄"," ":" "},h={"██":"▀","█ ":"▀"," █":" "," ":" "},l="";for(e=0;e=u?h[i]:c[i];l+="\n"}return a%2&&t>0?l.substring(0,l.length-a-1)+Array(a+1).join("▀"):l.substring(0,l.length-1)}(e);t-=1,e=void 0===e?2*t:e;var r,n,o,i,a=w.getModuleCount()*t+2*e,s=e,u=a-e,c=Array(t+1).join("██"),h=Array(t+1).join(" "),l="",d="";for(r=0;r>>8),e.push(255&a)):e.push(n)}}return e}};var e,r,n,o,i,a={L:1,M:0,Q:3,H:2},s=(e=[[],[6,18],[6,22],[6,26],[6,30],[6,34],[6,22,38],[6,24,42],[6,26,46],[6,28,50],[6,30,54],[6,32,58],[6,34,62],[6,26,46,66],[6,26,48,70],[6,26,50,74],[6,30,54,78],[6,30,56,82],[6,30,58,86],[6,34,62,90],[6,28,50,72,94],[6,26,50,74,98],[6,30,54,78,102],[6,28,54,80,106],[6,32,58,84,110],[6,30,58,86,114],[6,34,62,90,118],[6,26,50,74,98,122],[6,30,54,78,102,126],[6,26,52,78,104,130],[6,30,56,82,108,134],[6,34,60,86,112,138],[6,30,58,86,114,142],[6,34,62,90,118,146],[6,30,54,78,102,126,150],[6,24,50,76,102,128,154],[6,28,54,80,106,132,158],[6,32,58,84,110,136,162],[6,26,54,82,110,138,166],[6,30,58,86,114,142,170]],r=1335,n=7973,i=function(t){for(var e=0;0!=t;)e+=1,t>>>=1;return e},(o={}).getBCHTypeInfo=function(t){for(var e=t<<10;i(e)-i(r)>=0;)e^=r<=0;)e^=n<5&&(r+=3+i-5)}for(n=0;n=256;)e-=255;return t[e]}}}();function c(t,e){if(void 0===t.length)throw t.length+"/"+e;var r=function(){for(var r=0;r>>7-e%8&1)},put:function(t,e){for(var n=0;n>>e-n-1&1))},getLengthInBits:function(){return e},putBit:function(r){var n=Math.floor(e/8);t.length<=n&&t.push(0),r&&(t[n]|=128>>>e%8),e+=1}};return r},d=function(t){var e=t,r={getMode:function(){return 1},getLength:function(t){return e.length},write:function(t){for(var r=e,o=0;o+2>>8&255)+(255&o),t.put(o,13),r+=2}if(r>>8)},writeBytes:function(t,r,n){r=r||0,n=n||t.length;for(var o=0;o0&&(e+=","),e+=t[r];return e+"]"}};return e},w=function(t){var e=t,r=0,n=0,o=0,i={read:function(){for(;o<8;){if(r>=e.length){if(0==o)return-1;throw"unexpected end of file./"+o}var t=e.charAt(r);if(r+=1,"="==t)return o=0,-1;t.match(/^\s$/)||(n=n<<6|a(t.charCodeAt(0)),o+=6)}var i=n>>>o-8&255;return o-=8,i}},a=function(t){if(65<=t&&t<=90)return t-65;if(97<=t&&t<=122)return t-97+26;if(48<=t&&t<=57)return t-48+52;if(43==t)return 62;if(47==t)return 63;throw"c:"+t};return i},y=function(t,e,r){for(var n=function(t,e){var r=t,n=e,o=new Array(t*e),i={setPixel:function(t,e,n){o[e*r+t]=n},write:function(t){t.writeString("GIF87a"),t.writeShort(r),t.writeShort(n),t.writeByte(128),t.writeByte(0),t.writeByte(0),t.writeByte(0),t.writeByte(0),t.writeByte(0),t.writeByte(255),t.writeByte(255),t.writeByte(255),t.writeString(","),t.writeShort(0),t.writeShort(0),t.writeShort(r),t.writeShort(n),t.writeByte(0);var e=a(2);t.writeByte(2);for(var o=0;e.length-o>255;)t.writeByte(255),t.writeBytes(e,o,255),o+=255;t.writeByte(e.length-o),t.writeBytes(e,o,e.length-o),t.writeByte(0),t.writeString(";")}},a=function(t){for(var e=1<>>e!=0)throw"length over";for(;c+e>=8;)u.writeByte(255&(t<>>=8-c,h=0,c=0;h|=t<0&&u.writeByte(h)}});d.write(e,n);var f=0,p=String.fromCharCode(o[f]);for(f+=1;f=6;)i(t>>>e-6),e-=6},o.flush=function(){if(e>0&&(i(t<<6-e),t=0,e=0),r%3!=0)for(var o=3-r%3,a=0;a>6,128|63&n):n<55296||n>=57344?e.push(224|n>>12,128|n>>6&63,128|63&n):(r++,n=65536+((1023&n)<<10|1023&t.charCodeAt(r)),e.push(240|n>>18,128|n>>12&63,128|n>>6&63,128|63&n))}return e}(t)},void 0===(n="function"==typeof(r=function(){return o})?r.apply(e,[]):r)||(t.exports=n)},796:(t,e,r)=>{"use strict";r.d(e,{default:()=>J});var n=function(){return(n=Object.assign||function(t){for(var e,r=1,n=arguments.length;rn||o&&o2||a&&s||u&&c)this._basicSquare({x:e,y:r,size:n,context:o,rotation:0});else{if(2===h){var l=0;return a&&u?l=Math.PI/2:u&&s?l=Math.PI:s&&c&&(l=-Math.PI/2),void this._basicCornerRounded({x:e,y:r,size:n,context:o,rotation:l})}if(1===h)return l=0,u?l=Math.PI/2:s?l=Math.PI:c&&(l=-Math.PI/2),void this._basicSideRounded({x:e,y:r,size:n,context:o,rotation:l})}else this._basicDot({x:e,y:r,size:n,context:o,rotation:0})},t.prototype._drawExtraRounded=function(t){var e=t.x,r=t.y,n=t.size,o=t.context,i=t.getNeighbor,a=i?+i(-1,0):0,s=i?+i(1,0):0,u=i?+i(0,-1):0,c=i?+i(0,1):0,h=a+s+u+c;if(0!==h)if(h>2||a&&s||u&&c)this._basicSquare({x:e,y:r,size:n,context:o,rotation:0});else{if(2===h){var l=0;return a&&u?l=Math.PI/2:u&&s?l=Math.PI:s&&c&&(l=-Math.PI/2),void this._basicCornerExtraRounded({x:e,y:r,size:n,context:o,rotation:l})}if(1===h)return l=0,u?l=Math.PI/2:s?l=Math.PI:c&&(l=-Math.PI/2),void this._basicSideRounded({x:e,y:r,size:n,context:o,rotation:l})}else this._basicDot({x:e,y:r,size:n,context:o,rotation:0})},t.prototype._drawClassy=function(t){var e=t.x,r=t.y,n=t.size,o=t.context,i=t.getNeighbor,a=i?+i(-1,0):0,s=i?+i(1,0):0,u=i?+i(0,-1):0,c=i?+i(0,1):0;0!==a+s+u+c?a||u?s||c?this._basicSquare({x:e,y:r,size:n,context:o,rotation:0}):this._basicCornerRounded({x:e,y:r,size:n,context:o,rotation:Math.PI/2}):this._basicCornerRounded({x:e,y:r,size:n,context:o,rotation:-Math.PI/2}):this._basicCornersRounded({x:e,y:r,size:n,context:o,rotation:Math.PI/2})},t.prototype._drawClassyRounded=function(t){var e=t.x,r=t.y,n=t.size,o=t.context,i=t.getNeighbor,a=i?+i(-1,0):0,s=i?+i(1,0):0,u=i?+i(0,-1):0,c=i?+i(0,1):0;0!==a+s+u+c?a||u?s||c?this._basicSquare({x:e,y:r,size:n,context:o,rotation:0}):this._basicCornerExtraRounded({x:e,y:r,size:n,context:o,rotation:Math.PI/2}):this._basicCornerExtraRounded({x:e,y:r,size:n,context:o,rotation:-Math.PI/2}):this._basicCornersRounded({x:e,y:r,size:n,context:o,rotation:Math.PI/2})},t}(),y="square",_="extra-rounded";var m=function(){return(m=Object.assign||function(t){for(var e,r=1,n=arguments.length;r0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]=(e-o.hideXDots)/2&&t<(e+o.hideXDots)/2&&r>=(e-o.hideYDots)/2&&r<(e+o.hideYDots)/2||(null===(n=P[t])||void 0===n?void 0:n[r])||(null===(i=P[t-e+7])||void 0===i?void 0:i[r])||(null===(a=P[t])||void 0===a?void 0:a[r-e+7])||(null===(s=O[t])||void 0===s?void 0:s[r])||(null===(u=O[t-e+7])||void 0===u?void 0:u[r])||(null===(c=O[t])||void 0===c?void 0:c[r-e+7]))})),this.drawCorners(),this._options.image&&this.drawImage({width:o.width,height:o.height,count:e,dotSize:n}),[2]}}))},new((n=void 0)||(n=Promise))((function(t,i){function a(t){try{u(o.next(t))}catch(t){i(t)}}function s(t){try{u(o.throw(t))}catch(t){i(t)}}function u(e){var r;e.done?t(e.value):(r=e.value,r instanceof n?r:new n((function(t){t(r)}))).then(a,s)}u((o=o.apply(e,r||[])).next())}));var e,r,n,o},t.prototype.drawBackground=function(){var t=this.context,e=this._options;if(t){if(e.backgroundOptions.gradient){var r=e.backgroundOptions.gradient,n=this._createGradient({context:t,options:r,additionalRotation:0,x:0,y:0,size:this._canvas.width>this._canvas.height?this._canvas.width:this._canvas.height});r.colorStops.forEach((function(t){var e=t.offset,r=t.color;n.addColorStop(e,r)})),t.fillStyle=n}else e.backgroundOptions.color&&(t.fillStyle=e.backgroundOptions.color);t.fillRect(0,0,this._canvas.width,this._canvas.height)}},t.prototype.drawDots=function(t){var e=this;if(!this._qr)throw"QR code is not defined";var r=this.context;if(!r)throw"QR code is not defined";var n=this._options,o=this._qr.getModuleCount();if(o>n.width||o>n.height)throw"The canvas is too small.";var i=Math.min(n.width,n.height)-2*n.margin,a=Math.floor(i/o),s=Math.floor((n.width-o*a)/2),u=Math.floor((n.height-o*a)/2),c=new w({context:r,type:n.dotsOptions.type});r.beginPath();for(var h=function(r){for(var n=function(n){return t&&!t(r,n)?"continue":l._qr.isDark(r,n)?void c.draw(u+n*a,s+r*a,a,(function(i,a){return!(r+i<0||n+a<0||r+i>=o||n+a>=o)&&!(t&&!t(r+i,n+a))&&!!e._qr&&e._qr.isDark(r+i,n+a)})):"continue"},i=0;i=0&&c<=.25*Math.PI||c>1.75*Math.PI&&c<=2*Math.PI?(h-=s/2,l-=s/2*Math.tan(u),d+=s/2,f+=s/2*Math.tan(u)):c>.25*Math.PI&&c<=.75*Math.PI?(l-=s/2,h-=s/2/Math.tan(u),f+=s/2,d+=s/2/Math.tan(u)):c>.75*Math.PI&&c<=1.25*Math.PI?(h+=s/2,l+=s/2*Math.tan(u),d-=s/2,f-=s/2*Math.tan(u)):c>1.25*Math.PI&&c<=1.75*Math.PI&&(l+=s/2,h+=s/2/Math.tan(u),f-=s/2,d-=s/2/Math.tan(u)),e=r.createLinearGradient(Math.round(h),Math.round(l),Math.round(d),Math.round(f))}return e},t}();var z=function(){return(z=Object.assign||function(t){for(var e,r=1,n=arguments.length;r2||i&&a||s&&u)this._basicSquare({x:e,y:r,size:n,rotation:0});else{if(2===c){var h=0;return i&&s?h=Math.PI/2:s&&a?h=Math.PI:a&&u&&(h=-Math.PI/2),void this._basicCornerRounded({x:e,y:r,size:n,rotation:h})}if(1===c)return h=0,s?h=Math.PI/2:a?h=Math.PI:u&&(h=-Math.PI/2),void this._basicSideRounded({x:e,y:r,size:n,rotation:h})}else this._basicDot({x:e,y:r,size:n,rotation:0})},t.prototype._drawExtraRounded=function(t){var e=t.x,r=t.y,n=t.size,o=t.getNeighbor,i=o?+o(-1,0):0,a=o?+o(1,0):0,s=o?+o(0,-1):0,u=o?+o(0,1):0,c=i+a+s+u;if(0!==c)if(c>2||i&&a||s&&u)this._basicSquare({x:e,y:r,size:n,rotation:0});else{if(2===c){var h=0;return i&&s?h=Math.PI/2:s&&a?h=Math.PI:a&&u&&(h=-Math.PI/2),void this._basicCornerExtraRounded({x:e,y:r,size:n,rotation:h})}if(1===c)return h=0,s?h=Math.PI/2:a?h=Math.PI:u&&(h=-Math.PI/2),void this._basicSideRounded({x:e,y:r,size:n,rotation:h})}else this._basicDot({x:e,y:r,size:n,rotation:0})},t.prototype._drawClassy=function(t){var e=t.x,r=t.y,n=t.size,o=t.getNeighbor,i=o?+o(-1,0):0,a=o?+o(1,0):0,s=o?+o(0,-1):0,u=o?+o(0,1):0;0!==i+a+s+u?i||s?a||u?this._basicSquare({x:e,y:r,size:n,rotation:0}):this._basicCornerRounded({x:e,y:r,size:n,rotation:Math.PI/2}):this._basicCornerRounded({x:e,y:r,size:n,rotation:-Math.PI/2}):this._basicCornersRounded({x:e,y:r,size:n,rotation:Math.PI/2})},t.prototype._drawClassyRounded=function(t){var e=t.x,r=t.y,n=t.size,o=t.getNeighbor,i=o?+o(-1,0):0,a=o?+o(1,0):0,s=o?+o(0,-1):0,u=o?+o(0,1):0;0!==i+a+s+u?i||s?a||u?this._basicSquare({x:e,y:r,size:n,rotation:0}):this._basicCornerExtraRounded({x:e,y:r,size:n,rotation:Math.PI/2}):this._basicCornerExtraRounded({x:e,y:r,size:n,rotation:-Math.PI/2}):this._basicCornersRounded({x:e,y:r,size:n,rotation:Math.PI/2})},t}();var I=function(){return(I=Object.assign||function(t){for(var e,r=1,n=arguments.length;r0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]=(e-o.hideXDots)/2&&t<(e+o.hideXDots)/2&&r>=(e-o.hideYDots)/2&&r<(e+o.hideYDots)/2||(null===(n=N[t])||void 0===n?void 0:n[r])||(null===(i=N[t-e+7])||void 0===i?void 0:i[r])||(null===(a=N[t])||void 0===a?void 0:a[r-e+7])||(null===(s=L[t])||void 0===s?void 0:s[r])||(null===(u=L[t-e+7])||void 0===u?void 0:u[r])||(null===(c=L[t])||void 0===c?void 0:c[r-e+7]))})),this.drawCorners(),this._options.image?[4,this.drawImage({width:o.width,height:o.height,count:e,dotSize:n})]:[3,4];case 3:f.sent(),f.label=4;case 4:return[2]}}))}))},t.prototype.drawBackground=function(){var t,e,r,n=this._element,o=this._options;if(n){var i=null===(t=o.backgroundOptions)||void 0===t?void 0:t.gradient,a=null===(e=o.backgroundOptions)||void 0===e?void 0:e.color;i?this._createColor({options:i,color:a,additionalRotation:0,x:0,y:0,height:o.height,width:o.width,name:"background-color"}):(null===(r=o.backgroundOptions)||void 0===r?void 0:r.color)&&this._createStyle({color:a,name:"background-color"})}},t.prototype.drawDots=function(t){var e,r,n,o=this;if(!this._qr)throw"QR code is not defined";var i=this._options,a=this._qr.getModuleCount();if(a>i.width||a>i.height)throw"The canvas is too small.";var s=Math.min(i.width,i.height)-2*i.margin,u=Math.floor(s/a),c=Math.floor((i.width-a*u)/2),h=Math.floor((i.height-a*u)/2),l=new A({svg:this._element,type:i.dotsOptions.type});(null===(e=i.dotsOptions)||void 0===e?void 0:e.gradient)?(this._dotsClipPath=document.createElementNS("http://www.w3.org/2000/svg","clipPath"),this._dotsClipPath.setAttribute("id","clip-path-dot-color"),this._defs.appendChild(this._dotsClipPath),this._createColor({options:null===(r=i.dotsOptions)||void 0===r?void 0:r.gradient,color:i.dotsOptions.color,additionalRotation:0,x:c,y:h,height:a*u,width:a*u,name:"dot-color"})):i.dotsOptions.color&&(this._dots=document.createElementNS("http://www.w3.org/2000/svg","g"),this._dots.setAttribute("class","dot-color"),this._element.appendChild(this._dots),this._createStyle({color:i.dotsOptions.color,name:"dot-color"}));for(var d=function(e){for(var r=function(r){return t&&!t(e,r)?"continue":(null===(n=f._qr)||void 0===n?void 0:n.isDark(e,r))?(l.draw(h+r*u,c+e*u,u,(function(n,i){return!(e+n<0||r+i<0||e+n>=a||r+i>=a)&&!(t&&!t(e+n,r+i))&&!!o._qr&&o._qr.isDark(e+n,r+i)})),void(l._element&&f._dotsClipPath?f._dotsClipPath.appendChild(l._element):l._element&&f._dots&&f._dots.appendChild(l._element))):"continue"},i=0;ia?s:a,h=document.createElementNS("http://www.w3.org/2000/svg","rect");if(h.setAttribute("x",String(o)),h.setAttribute("y",String(i)),h.setAttribute("height",String(a)),h.setAttribute("width",String(s)),h.setAttribute("clip-path","url('#clip-path-"+u+"')"),e){var l;if(e.type===C)(l=document.createElementNS("http://www.w3.org/2000/svg","radialGradient")).setAttribute("id",u),l.setAttribute("gradientUnits","userSpaceOnUse"),l.setAttribute("fx",String(o+s/2)),l.setAttribute("fy",String(i+a/2)),l.setAttribute("cx",String(o+s/2)),l.setAttribute("cy",String(i+a/2)),l.setAttribute("r",String(c/2));else{var d=((e.rotation||0)+n)%(2*Math.PI),f=(d+2*Math.PI)%(2*Math.PI),p=o+s/2,g=i+a/2,v=o+s/2,w=i+a/2;f>=0&&f<=.25*Math.PI||f>1.75*Math.PI&&f<=2*Math.PI?(p-=s/2,g-=a/2*Math.tan(d),v+=s/2,w+=a/2*Math.tan(d)):f>.25*Math.PI&&f<=.75*Math.PI?(g-=a/2,p-=s/2/Math.tan(d),w+=a/2,v+=s/2/Math.tan(d)):f>.75*Math.PI&&f<=1.25*Math.PI?(p+=s/2,g+=a/2*Math.tan(d),v-=s/2,w-=a/2*Math.tan(d)):f>1.25*Math.PI&&f<=1.75*Math.PI&&(g+=a/2,p+=s/2/Math.tan(d),w-=a/2,v-=s/2/Math.tan(d)),(l=document.createElementNS("http://www.w3.org/2000/svg","linearGradient")).setAttribute("id",u),l.setAttribute("gradientUnits","userSpaceOnUse"),l.setAttribute("x1",String(Math.round(p))),l.setAttribute("y1",String(Math.round(g))),l.setAttribute("x2",String(Math.round(v))),l.setAttribute("y2",String(Math.round(w)))}e.colorStops.forEach((function(t){var e=t.offset,r=t.color,n=document.createElementNS("http://www.w3.org/2000/svg","stop");n.setAttribute("offset",100*e+"%"),n.setAttribute("stop-color",r),l.appendChild(n)})),h.setAttribute("fill","url('#"+u+"')"),this._defs.appendChild(l)}else r&&h.setAttribute("fill",r);this._element.appendChild(h)},t.prototype._createStyle=function(t){var e=t.color,r=t.name;this._style.innerHTML+="."+r+"{ fill: "+e+"; }"},t}(),j="canvas";for(var F={},Q=0;Q<=40;Q++)F[Q]=Q;const H={type:j,width:300,height:300,data:"",margin:0,qrOptions:{typeNumber:F[0],mode:void 0,errorCorrectionLevel:"Q"},imageOptions:{hideBackgroundDots:!0,imageSize:.4,crossOrigin:"anonymous",margin:0},dotsOptions:{type:"square",color:"#000"},backgroundOptions:{color:"#fff"}};var G=function(){return(G=Object.assign||function(t){for(var e,r=1,n=arguments.length;rMath.min(e.width,e.height)&&(e.margin=Math.min(e.width,e.height)),e.dotsOptions=G({},e.dotsOptions),e.dotsOptions.gradient&&(e.dotsOptions.gradient=U(e.dotsOptions.gradient)),e.cornersSquareOptions&&(e.cornersSquareOptions=G({},e.cornersSquareOptions),e.cornersSquareOptions.gradient&&(e.cornersSquareOptions.gradient=U(e.cornersSquareOptions.gradient))),e.cornersDotOptions&&(e.cornersDotOptions=G({},e.cornersDotOptions),e.cornersDotOptions.gradient&&(e.cornersDotOptions.gradient=U(e.cornersDotOptions.gradient))),e.backgroundOptions&&(e.backgroundOptions=G({},e.backgroundOptions),e.backgroundOptions.gradient&&(e.backgroundOptions.gradient=U(e.backgroundOptions.gradient))),e}var Y=r(192),$=r.n(Y),W=function(t,e,r,n){return new(r||(r=Promise))((function(o,i){function a(t){try{u(n.next(t))}catch(t){i(t)}}function s(t){try{u(n.throw(t))}catch(t){i(t)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof r?e:new r((function(t){t(e)}))).then(a,s)}u((n=n.apply(t,e||[])).next())}))},Z=function(t,e){var r,n,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(i){return function(s){return function(i){if(r)throw new TypeError("Generator is already executing.");for(;a;)try{if(r=1,n&&(o=2&i[0]?n.return:i[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,i[1])).done)return o;switch(n=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,n=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!((o=(o=a.trys).length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]\r\n'+n],{type:"image/svg+xml"})]):[2,new Promise((function(r){return e.getCanvas().toBlob(r,"image/"+t,1)}))]}}))}))},t.prototype.download=function(t){return W(this,void 0,void 0,(function(){var e,r,n,o,i;return Z(this,(function(a){switch(a.label){case 0:if(!this._qr)throw"QR code is empty";return e="png",r="qr","string"==typeof t?(e=t,console.warn("Extension is deprecated as argument for 'download' method, please pass object { name: '...', extension: '...' } as argument")):"object"==typeof t&&null!==t&&(t.name&&(r=t.name),t.extension&&(e=t.extension)),[4,this._getQRStylingElement(e)];case 1:return n=a.sent(),"svg"===e.toLowerCase()?(o=new XMLSerializer,i='\r\n'+(i=o.serializeToString(n.getElement())),s("data:image/svg+xml;charset=utf-8,"+encodeURIComponent(i),r+".svg")):s(n.getCanvas().toDataURL("image/"+e),r+"."+e),[2]}}))}))},t}()}},e={};function r(n){if(e[n])return e[n].exports;var o=e[n]={exports:{}};return t[n](o,o.exports,r),o.exports}return r.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return r.d(e,{a:e}),e},r.d=(t,e)=>{for(var n in e)r.o(e,n)&&!r.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},r.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r(796)})().default})); //# sourceMappingURL=qr-code-styling.js.map \ No newline at end of file diff --git a/lib/qr-code-styling.js.map b/lib/qr-code-styling.js.map index 72b35e74..1b03d718 100644 --- a/lib/qr-code-styling.js.map +++ b/lib/qr-code-styling.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://QRCodeStyling/webpack/universalModuleDefinition","webpack://QRCodeStyling/./node_modules/qrcode-generator/qrcode.js","webpack://QRCodeStyling/./src/tools/merge.ts","webpack://QRCodeStyling/./src/tools/downloadURI.ts","webpack://QRCodeStyling/./src/tools/calculateImageSize.ts","webpack://QRCodeStyling/./src/constants/errorCorrectionPercents.ts","webpack://QRCodeStyling/./src/constants/dotTypes.ts","webpack://QRCodeStyling/./src/figures/dot/canvas/QRDot.ts","webpack://QRCodeStyling/./src/constants/cornerSquareTypes.ts","webpack://QRCodeStyling/./src/figures/cornerSquare/canvas/QRCornerSquare.ts","webpack://QRCodeStyling/./src/constants/cornerDotTypes.ts","webpack://QRCodeStyling/./src/figures/cornerDot/canvas/QRCornerDot.ts","webpack://QRCodeStyling/./src/constants/gradientTypes.ts","webpack://QRCodeStyling/./src/core/QRCanvas.ts","webpack://QRCodeStyling/./src/figures/dot/svg/QRDot.ts","webpack://QRCodeStyling/./src/figures/cornerSquare/svg/QRCornerSquare.ts","webpack://QRCodeStyling/./src/figures/cornerDot/svg/QRCornerDot.ts","webpack://QRCodeStyling/./src/core/QRSVG.ts","webpack://QRCodeStyling/./src/constants/drawTypes.ts","webpack://QRCodeStyling/./src/constants/qrTypes.ts","webpack://QRCodeStyling/./src/core/QROptions.ts","webpack://QRCodeStyling/./src/constants/errorCorrectionLevels.ts","webpack://QRCodeStyling/./src/tools/sanitizeOptions.ts","webpack://QRCodeStyling/./src/index.ts","webpack://QRCodeStyling/./src/core/QRCodeStyling.ts","webpack://QRCodeStyling/./src/tools/getMode.ts","webpack://QRCodeStyling/./src/constants/modes.ts","webpack://QRCodeStyling/webpack/bootstrap","webpack://QRCodeStyling/webpack/startup","webpack://QRCodeStyling/webpack/runtime/compat get default export","webpack://QRCodeStyling/webpack/runtime/define property getters","webpack://QRCodeStyling/webpack/runtime/hasOwnProperty shorthand"],"names":["root","factory","exports","module","define","amd","self","qrcode","typeNumber","errorCorrectionLevel","_typeNumber","_errorCorrectionLevel","QRErrorCorrectionLevel","_modules","_moduleCount","_dataCache","_dataList","_this","makeImpl","test","maskPattern","moduleCount","modules","Array","row","col","setupPositionProbePattern","setupPositionAdjustPattern","setupTimingPattern","setupTypeInfo","setupTypeNumber","createData","mapData","r","c","pos","QRUtil","getPatternPosition","i","length","j","bits","getBCHTypeNumber","mod","Math","floor","data","getBCHTypeInfo","inc","bitIndex","byteIndex","maskFunc","getMaskFunction","dark","dataList","rsBlocks","QRRSBlock","getRSBlocks","buffer","qrBitBuffer","put","getMode","getLength","getLengthInBits","write","totalDataCount","dataCount","putBit","offset","maxDcCount","maxEcCount","dcdata","ecdata","dcCount","ecCount","totalCount","max","getBuffer","rsPoly","getErrorCorrectPolynomial","modPoly","qrPolynomial","modIndex","getAt","totalCodeCount","index","createBytes","addData","mode","newData","qrNumber","qrAlphaNum","qr8BitByte","qrKanji","push","isDark","getModuleCount","make","minLostPoint","pattern","lostPoint","getLostPoint","getBestMaskPattern","createTableTag","cellSize","margin","qrHtml","createSvgTag","alt","title","opts","arguments","text","id","mr","rect","size","qrSvg","scalable","escapeXml","join","trim","createDataURL","min","x","y","createImgTag","img","s","escaped","charAt","createASCII","r1","r2","p","blocks","blocksLastLineNoMargin","ascii","substring","_createHalfASCII","white","black","line","renderTo2dContext","context","fillStyle","fillRect","stringToBytes","stringToBytesFuncs","bytes","charCodeAt","createStringToBytes","unicodeData","numChars","unicodeMap","bin","base64DecodeInputStream","read","b","count","b0","b1","v","String","fromCharCode","unknownChar","PATTERN_POSITION_TABLE","G15","G18","getBCHDigit","L","M","Q","H","digit","d","errorCorrectLength","a","multiply","QRMath","gexp","type","sameCount","darkCount","abs","EXP_TABLE","LOG_TABLE","n","num","shift","_num","e","glog","ratio","RS_BLOCK_TABLE","qrRSBlock","rsBlock","getRsBlockTable","list","_buffer","_length","bufIndex","bit","_data","strToNum","chatToNum","getCode","_bytes","code","byteArrayOutputStream","writeByte","off","len","str","_str","_pos","_buflen","match","decode","width","height","getPixel","gif","_width","_height","pixel","out","writeString","writeShort","raster","getLZWRaster","writeBytes","lzwMinCodeSize","clearCode","endCode","bitLength","table","lzwTable","add","_out","_bitLength","_bitBuffer","byteOut","bitOut","dataIndex","contains","indexOf","flush","toByteArray","_map","_size","key","gifImage","setPixel","base64","_base64","writeEncoded","encode","padlen","toString","base64EncodeOutputStream","utf8","charcode","toUTF8Array","isObject","obj","isArray","mergeDeep","target","sources","source","undefined","Object","keys","forEach","targetValue","sourceValue","assign","downloadURI","uri","name","link","document","createElement","download","href","body","appendChild","click","removeChild","calculateImageSize","originalHeight","originalWidth","maxHiddenDots","maxHiddenAxisDots","dotSize","hideDots","imageSize","hideYDots","hideXDots","k","sqrt","ceil","round","this","_context","_type","draw","getNeighbor","drawFunction","dotTypes","_drawDot","_drawClassy","_drawClassyRounded","_drawRounded","_drawExtraRounded","_drawSquare","call","_rotateFigure","rotation","cx","cy","translate","rotate","closePath","_basicDot","args","arc","PI","_basicSquare","_basicSideRounded","lineTo","_basicCornerRounded","_basicCornerExtraRounded","_basicCornersRounded","_basicCornersExtraRounded","leftNeighbor","rightNeighbor","topNeighbor","bottomNeighbor","neighborsCount","cornerSquareTypes","_basicExtraRounded","cornerDotTypes","squareMask","dotMask","options","_canvas","_options","getContext","getCanvas","clear","canvasContext","clearRect","drawQR","qr","minSize","drawImageSize","_qr","image","loadImage","_image","imageOptions","qrOptions","coverLevel","errorCorrectionPercents","drawBackground","drawDots","hideBackgroundDots","drawCorners","drawImage","backgroundOptions","gradient","gradientOptions","_createGradient","additionalRotation","colorStops","color","addColorStop","filter","xBeginning","yBeginning","dot","dotsOptions","beginPath","xOffset","yOffset","strokeStyle","fill","cornersSquareSize","cornersDotSize","column","cornersSquareOptions","cornersSquare","cornersDotOptions","cornersDot","Promise","resolve","reject","Image","crossOrigin","onload","src","dx","dy","dw","dh","gradientTypes","createRadialGradient","positiveRotation","x0","y0","x1","y1","tan","createLinearGradient","svg","_svg","_element","setAttribute","createElementNS","_defs","_style","getElement","oldElement","cloneNode","parentNode","replaceChild","element","_createColor","_createStyle","_dotsClipPath","_dots","cornersSquareClipPath","cornersDotClipPath","_cornersSquareClipPath","_cornersDotClipPath","_cornerSquares","_cornerDots","base64Image","_getImageBlob","url","fetch","blob","_blobToBase64","reader","FileReader","dataUrl","result","readAsDataURL","_getBase64Image","stop","innerHTML","qrTypes","drawTypes","sanitizeGradient","newGradient","Number","map","colorStop","sanitizeOptions","newOptions","Boolean","update","_clearContainer","container","_getQRStylingElement","extension","toLowerCase","promise","_svgDrawingPromise","canvas","_canvasDrawingPromise","QRCodeStyling","_container","append","getRawData","serializer","XMLSerializer","serializeToString","Blob","toBlob","downloadOptions","console","warn","encodeURIComponent","toDataURL","__webpack_module_cache__","__webpack_require__","moduleId","__webpack_modules__","getter","__esModule","definition","o","defineProperty","enumerable","get","prop","prototype","hasOwnProperty"],"mappings":"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","file":"qr-code-styling.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"QRCodeStyling\"] = factory();\n\telse\n\t\troot[\"QRCodeStyling\"] = factory();\n})(self, function() {\nreturn ","//---------------------------------------------------------------------\n//\n// QR Code Generator for JavaScript\n//\n// Copyright (c) 2009 Kazuhiko Arase\n//\n// URL: http://www.d-project.com/\n//\n// Licensed under the MIT license:\n// http://www.opensource.org/licenses/mit-license.php\n//\n// The word 'QR Code' is registered trademark of\n// DENSO WAVE INCORPORATED\n// http://www.denso-wave.com/qrcode/faqpatent-e.html\n//\n//---------------------------------------------------------------------\n\nvar qrcode = function() {\n\n //---------------------------------------------------------------------\n // qrcode\n //---------------------------------------------------------------------\n\n /**\n * qrcode\n * @param typeNumber 1 to 40\n * @param errorCorrectionLevel 'L','M','Q','H'\n */\n var qrcode = function(typeNumber, errorCorrectionLevel) {\n\n var PAD0 = 0xEC;\n var PAD1 = 0x11;\n\n var _typeNumber = typeNumber;\n var _errorCorrectionLevel = QRErrorCorrectionLevel[errorCorrectionLevel];\n var _modules = null;\n var _moduleCount = 0;\n var _dataCache = null;\n var _dataList = [];\n\n var _this = {};\n\n var makeImpl = function(test, maskPattern) {\n\n _moduleCount = _typeNumber * 4 + 17;\n _modules = function(moduleCount) {\n var modules = new Array(moduleCount);\n for (var row = 0; row < moduleCount; row += 1) {\n modules[row] = new Array(moduleCount);\n for (var col = 0; col < moduleCount; col += 1) {\n modules[row][col] = null;\n }\n }\n return modules;\n }(_moduleCount);\n\n setupPositionProbePattern(0, 0);\n setupPositionProbePattern(_moduleCount - 7, 0);\n setupPositionProbePattern(0, _moduleCount - 7);\n setupPositionAdjustPattern();\n setupTimingPattern();\n setupTypeInfo(test, maskPattern);\n\n if (_typeNumber >= 7) {\n setupTypeNumber(test);\n }\n\n if (_dataCache == null) {\n _dataCache = createData(_typeNumber, _errorCorrectionLevel, _dataList);\n }\n\n mapData(_dataCache, maskPattern);\n };\n\n var setupPositionProbePattern = function(row, col) {\n\n for (var r = -1; r <= 7; r += 1) {\n\n if (row + r <= -1 || _moduleCount <= row + r) continue;\n\n for (var c = -1; c <= 7; c += 1) {\n\n if (col + c <= -1 || _moduleCount <= col + c) continue;\n\n if ( (0 <= r && r <= 6 && (c == 0 || c == 6) )\n || (0 <= c && c <= 6 && (r == 0 || r == 6) )\n || (2 <= r && r <= 4 && 2 <= c && c <= 4) ) {\n _modules[row + r][col + c] = true;\n } else {\n _modules[row + r][col + c] = false;\n }\n }\n }\n };\n\n var getBestMaskPattern = function() {\n\n var minLostPoint = 0;\n var pattern = 0;\n\n for (var i = 0; i < 8; i += 1) {\n\n makeImpl(true, i);\n\n var lostPoint = QRUtil.getLostPoint(_this);\n\n if (i == 0 || minLostPoint > lostPoint) {\n minLostPoint = lostPoint;\n pattern = i;\n }\n }\n\n return pattern;\n };\n\n var setupTimingPattern = function() {\n\n for (var r = 8; r < _moduleCount - 8; r += 1) {\n if (_modules[r][6] != null) {\n continue;\n }\n _modules[r][6] = (r % 2 == 0);\n }\n\n for (var c = 8; c < _moduleCount - 8; c += 1) {\n if (_modules[6][c] != null) {\n continue;\n }\n _modules[6][c] = (c % 2 == 0);\n }\n };\n\n var setupPositionAdjustPattern = function() {\n\n var pos = QRUtil.getPatternPosition(_typeNumber);\n\n for (var i = 0; i < pos.length; i += 1) {\n\n for (var j = 0; j < pos.length; j += 1) {\n\n var row = pos[i];\n var col = pos[j];\n\n if (_modules[row][col] != null) {\n continue;\n }\n\n for (var r = -2; r <= 2; r += 1) {\n\n for (var c = -2; c <= 2; c += 1) {\n\n if (r == -2 || r == 2 || c == -2 || c == 2\n || (r == 0 && c == 0) ) {\n _modules[row + r][col + c] = true;\n } else {\n _modules[row + r][col + c] = false;\n }\n }\n }\n }\n }\n };\n\n var setupTypeNumber = function(test) {\n\n var bits = QRUtil.getBCHTypeNumber(_typeNumber);\n\n for (var i = 0; i < 18; i += 1) {\n var mod = (!test && ( (bits >> i) & 1) == 1);\n _modules[Math.floor(i / 3)][i % 3 + _moduleCount - 8 - 3] = mod;\n }\n\n for (var i = 0; i < 18; i += 1) {\n var mod = (!test && ( (bits >> i) & 1) == 1);\n _modules[i % 3 + _moduleCount - 8 - 3][Math.floor(i / 3)] = mod;\n }\n };\n\n var setupTypeInfo = function(test, maskPattern) {\n\n var data = (_errorCorrectionLevel << 3) | maskPattern;\n var bits = QRUtil.getBCHTypeInfo(data);\n\n // vertical\n for (var i = 0; i < 15; i += 1) {\n\n var mod = (!test && ( (bits >> i) & 1) == 1);\n\n if (i < 6) {\n _modules[i][8] = mod;\n } else if (i < 8) {\n _modules[i + 1][8] = mod;\n } else {\n _modules[_moduleCount - 15 + i][8] = mod;\n }\n }\n\n // horizontal\n for (var i = 0; i < 15; i += 1) {\n\n var mod = (!test && ( (bits >> i) & 1) == 1);\n\n if (i < 8) {\n _modules[8][_moduleCount - i - 1] = mod;\n } else if (i < 9) {\n _modules[8][15 - i - 1 + 1] = mod;\n } else {\n _modules[8][15 - i - 1] = mod;\n }\n }\n\n // fixed module\n _modules[_moduleCount - 8][8] = (!test);\n };\n\n var mapData = function(data, maskPattern) {\n\n var inc = -1;\n var row = _moduleCount - 1;\n var bitIndex = 7;\n var byteIndex = 0;\n var maskFunc = QRUtil.getMaskFunction(maskPattern);\n\n for (var col = _moduleCount - 1; col > 0; col -= 2) {\n\n if (col == 6) col -= 1;\n\n while (true) {\n\n for (var c = 0; c < 2; c += 1) {\n\n if (_modules[row][col - c] == null) {\n\n var dark = false;\n\n if (byteIndex < data.length) {\n dark = ( ( (data[byteIndex] >>> bitIndex) & 1) == 1);\n }\n\n var mask = maskFunc(row, col - c);\n\n if (mask) {\n dark = !dark;\n }\n\n _modules[row][col - c] = dark;\n bitIndex -= 1;\n\n if (bitIndex == -1) {\n byteIndex += 1;\n bitIndex = 7;\n }\n }\n }\n\n row += inc;\n\n if (row < 0 || _moduleCount <= row) {\n row -= inc;\n inc = -inc;\n break;\n }\n }\n }\n };\n\n var createBytes = function(buffer, rsBlocks) {\n\n var offset = 0;\n\n var maxDcCount = 0;\n var maxEcCount = 0;\n\n var dcdata = new Array(rsBlocks.length);\n var ecdata = new Array(rsBlocks.length);\n\n for (var r = 0; r < rsBlocks.length; r += 1) {\n\n var dcCount = rsBlocks[r].dataCount;\n var ecCount = rsBlocks[r].totalCount - dcCount;\n\n maxDcCount = Math.max(maxDcCount, dcCount);\n maxEcCount = Math.max(maxEcCount, ecCount);\n\n dcdata[r] = new Array(dcCount);\n\n for (var i = 0; i < dcdata[r].length; i += 1) {\n dcdata[r][i] = 0xff & buffer.getBuffer()[i + offset];\n }\n offset += dcCount;\n\n var rsPoly = QRUtil.getErrorCorrectPolynomial(ecCount);\n var rawPoly = qrPolynomial(dcdata[r], rsPoly.getLength() - 1);\n\n var modPoly = rawPoly.mod(rsPoly);\n ecdata[r] = new Array(rsPoly.getLength() - 1);\n for (var i = 0; i < ecdata[r].length; i += 1) {\n var modIndex = i + modPoly.getLength() - ecdata[r].length;\n ecdata[r][i] = (modIndex >= 0)? modPoly.getAt(modIndex) : 0;\n }\n }\n\n var totalCodeCount = 0;\n for (var i = 0; i < rsBlocks.length; i += 1) {\n totalCodeCount += rsBlocks[i].totalCount;\n }\n\n var data = new Array(totalCodeCount);\n var index = 0;\n\n for (var i = 0; i < maxDcCount; i += 1) {\n for (var r = 0; r < rsBlocks.length; r += 1) {\n if (i < dcdata[r].length) {\n data[index] = dcdata[r][i];\n index += 1;\n }\n }\n }\n\n for (var i = 0; i < maxEcCount; i += 1) {\n for (var r = 0; r < rsBlocks.length; r += 1) {\n if (i < ecdata[r].length) {\n data[index] = ecdata[r][i];\n index += 1;\n }\n }\n }\n\n return data;\n };\n\n var createData = function(typeNumber, errorCorrectionLevel, dataList) {\n\n var rsBlocks = QRRSBlock.getRSBlocks(typeNumber, errorCorrectionLevel);\n\n var buffer = qrBitBuffer();\n\n for (var i = 0; i < dataList.length; i += 1) {\n var data = dataList[i];\n buffer.put(data.getMode(), 4);\n buffer.put(data.getLength(), QRUtil.getLengthInBits(data.getMode(), typeNumber) );\n data.write(buffer);\n }\n\n // calc num max data.\n var totalDataCount = 0;\n for (var i = 0; i < rsBlocks.length; i += 1) {\n totalDataCount += rsBlocks[i].dataCount;\n }\n\n if (buffer.getLengthInBits() > totalDataCount * 8) {\n throw 'code length overflow. ('\n + buffer.getLengthInBits()\n + '>'\n + totalDataCount * 8\n + ')';\n }\n\n // end code\n if (buffer.getLengthInBits() + 4 <= totalDataCount * 8) {\n buffer.put(0, 4);\n }\n\n // padding\n while (buffer.getLengthInBits() % 8 != 0) {\n buffer.putBit(false);\n }\n\n // padding\n while (true) {\n\n if (buffer.getLengthInBits() >= totalDataCount * 8) {\n break;\n }\n buffer.put(PAD0, 8);\n\n if (buffer.getLengthInBits() >= totalDataCount * 8) {\n break;\n }\n buffer.put(PAD1, 8);\n }\n\n return createBytes(buffer, rsBlocks);\n };\n\n _this.addData = function(data, mode) {\n\n mode = mode || 'Byte';\n\n var newData = null;\n\n switch(mode) {\n case 'Numeric' :\n newData = qrNumber(data);\n break;\n case 'Alphanumeric' :\n newData = qrAlphaNum(data);\n break;\n case 'Byte' :\n newData = qr8BitByte(data);\n break;\n case 'Kanji' :\n newData = qrKanji(data);\n break;\n default :\n throw 'mode:' + mode;\n }\n\n _dataList.push(newData);\n _dataCache = null;\n };\n\n _this.isDark = function(row, col) {\n if (row < 0 || _moduleCount <= row || col < 0 || _moduleCount <= col) {\n throw row + ',' + col;\n }\n return _modules[row][col];\n };\n\n _this.getModuleCount = function() {\n return _moduleCount;\n };\n\n _this.make = function() {\n if (_typeNumber < 1) {\n var typeNumber = 1;\n\n for (; typeNumber < 40; typeNumber++) {\n var rsBlocks = QRRSBlock.getRSBlocks(typeNumber, _errorCorrectionLevel);\n var buffer = qrBitBuffer();\n\n for (var i = 0; i < _dataList.length; i++) {\n var data = _dataList[i];\n buffer.put(data.getMode(), 4);\n buffer.put(data.getLength(), QRUtil.getLengthInBits(data.getMode(), typeNumber) );\n data.write(buffer);\n }\n\n var totalDataCount = 0;\n for (var i = 0; i < rsBlocks.length; i++) {\n totalDataCount += rsBlocks[i].dataCount;\n }\n\n if (buffer.getLengthInBits() <= totalDataCount * 8) {\n break;\n }\n }\n\n _typeNumber = typeNumber;\n }\n\n makeImpl(false, getBestMaskPattern() );\n };\n\n _this.createTableTag = function(cellSize, margin) {\n\n cellSize = cellSize || 2;\n margin = (typeof margin == 'undefined')? cellSize * 4 : margin;\n\n var qrHtml = '';\n\n qrHtml += '' +\n escapeXml(title.text) + '' : '';\n qrSvg += (alt.text) ? '' +\n escapeXml(alt.text) + '' : '';\n qrSvg += '';\n qrSvg += '': escaped += '>'; break;\n case '&': escaped += '&'; break;\n case '\"': escaped += '"'; break;\n default : escaped += c; break;\n }\n }\n return escaped;\n };\n\n var _createHalfASCII = function(margin) {\n var cellSize = 1;\n margin = (typeof margin == 'undefined')? cellSize * 2 : margin;\n\n var size = _this.getModuleCount() * cellSize + margin * 2;\n var min = margin;\n var max = size - margin;\n\n var y, x, r1, r2, p;\n\n var blocks = {\n '██': '█',\n '█ ': '▀',\n ' █': '▄',\n ' ': ' '\n };\n\n var blocksLastLineNoMargin = {\n '██': '▀',\n '█ ': '▀',\n ' █': ' ',\n ' ': ' '\n };\n\n var ascii = '';\n for (y = 0; y < size; y += 2) {\n r1 = Math.floor((y - min) / cellSize);\n r2 = Math.floor((y + 1 - min) / cellSize);\n for (x = 0; x < size; x += 1) {\n p = '█';\n\n if (min <= x && x < max && min <= y && y < max && _this.isDark(r1, Math.floor((x - min) / cellSize))) {\n p = ' ';\n }\n\n if (min <= x && x < max && min <= y+1 && y+1 < max && _this.isDark(r2, Math.floor((x - min) / cellSize))) {\n p += ' ';\n }\n else {\n p += '█';\n }\n\n // Output 2 characters per pixel, to create full square. 1 character per pixels gives only half width of square.\n ascii += (margin < 1 && y+1 >= max) ? blocksLastLineNoMargin[p] : blocks[p];\n }\n\n ascii += '\\n';\n }\n\n if (size % 2 && margin > 0) {\n return ascii.substring(0, ascii.length - size - 1) + Array(size+1).join('▀');\n }\n\n return ascii.substring(0, ascii.length-1);\n };\n\n _this.createASCII = function(cellSize, margin) {\n cellSize = cellSize || 1;\n\n if (cellSize < 2) {\n return _createHalfASCII(margin);\n }\n\n cellSize -= 1;\n margin = (typeof margin == 'undefined')? cellSize * 2 : margin;\n\n var size = _this.getModuleCount() * cellSize + margin * 2;\n var min = margin;\n var max = size - margin;\n\n var y, x, r, p;\n\n var white = Array(cellSize+1).join('██');\n var black = Array(cellSize+1).join(' ');\n\n var ascii = '';\n var line = '';\n for (y = 0; y < size; y += 1) {\n r = Math.floor( (y - min) / cellSize);\n line = '';\n for (x = 0; x < size; x += 1) {\n p = 1;\n\n if (min <= x && x < max && min <= y && y < max && _this.isDark(r, Math.floor((x - min) / cellSize))) {\n p = 0;\n }\n\n // Output 2 characters per pixel, to create full square. 1 character per pixels gives only half width of square.\n line += p ? white : black;\n }\n\n for (r = 0; r < cellSize; r += 1) {\n ascii += line + '\\n';\n }\n }\n\n return ascii.substring(0, ascii.length-1);\n };\n\n _this.renderTo2dContext = function(context, cellSize) {\n cellSize = cellSize || 2;\n var length = _this.getModuleCount();\n for (var row = 0; row < length; row++) {\n for (var col = 0; col < length; col++) {\n context.fillStyle = _this.isDark(row, col) ? 'black' : 'white';\n context.fillRect(row * cellSize, col * cellSize, cellSize, cellSize);\n }\n }\n }\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qrcode.stringToBytes\n //---------------------------------------------------------------------\n\n qrcode.stringToBytesFuncs = {\n 'default' : function(s) {\n var bytes = [];\n for (var i = 0; i < s.length; i += 1) {\n var c = s.charCodeAt(i);\n bytes.push(c & 0xff);\n }\n return bytes;\n }\n };\n\n qrcode.stringToBytes = qrcode.stringToBytesFuncs['default'];\n\n //---------------------------------------------------------------------\n // qrcode.createStringToBytes\n //---------------------------------------------------------------------\n\n /**\n * @param unicodeData base64 string of byte array.\n * [16bit Unicode],[16bit Bytes], ...\n * @param numChars\n */\n qrcode.createStringToBytes = function(unicodeData, numChars) {\n\n // create conversion map.\n\n var unicodeMap = function() {\n\n var bin = base64DecodeInputStream(unicodeData);\n var read = function() {\n var b = bin.read();\n if (b == -1) throw 'eof';\n return b;\n };\n\n var count = 0;\n var unicodeMap = {};\n while (true) {\n var b0 = bin.read();\n if (b0 == -1) break;\n var b1 = read();\n var b2 = read();\n var b3 = read();\n var k = String.fromCharCode( (b0 << 8) | b1);\n var v = (b2 << 8) | b3;\n unicodeMap[k] = v;\n count += 1;\n }\n if (count != numChars) {\n throw count + ' != ' + numChars;\n }\n\n return unicodeMap;\n }();\n\n var unknownChar = '?'.charCodeAt(0);\n\n return function(s) {\n var bytes = [];\n for (var i = 0; i < s.length; i += 1) {\n var c = s.charCodeAt(i);\n if (c < 128) {\n bytes.push(c);\n } else {\n var b = unicodeMap[s.charAt(i)];\n if (typeof b == 'number') {\n if ( (b & 0xff) == b) {\n // 1byte\n bytes.push(b);\n } else {\n // 2bytes\n bytes.push(b >>> 8);\n bytes.push(b & 0xff);\n }\n } else {\n bytes.push(unknownChar);\n }\n }\n }\n return bytes;\n };\n };\n\n //---------------------------------------------------------------------\n // QRMode\n //---------------------------------------------------------------------\n\n var QRMode = {\n MODE_NUMBER : 1 << 0,\n MODE_ALPHA_NUM : 1 << 1,\n MODE_8BIT_BYTE : 1 << 2,\n MODE_KANJI : 1 << 3\n };\n\n //---------------------------------------------------------------------\n // QRErrorCorrectionLevel\n //---------------------------------------------------------------------\n\n var QRErrorCorrectionLevel = {\n L : 1,\n M : 0,\n Q : 3,\n H : 2\n };\n\n //---------------------------------------------------------------------\n // QRMaskPattern\n //---------------------------------------------------------------------\n\n var QRMaskPattern = {\n PATTERN000 : 0,\n PATTERN001 : 1,\n PATTERN010 : 2,\n PATTERN011 : 3,\n PATTERN100 : 4,\n PATTERN101 : 5,\n PATTERN110 : 6,\n PATTERN111 : 7\n };\n\n //---------------------------------------------------------------------\n // QRUtil\n //---------------------------------------------------------------------\n\n var QRUtil = function() {\n\n var PATTERN_POSITION_TABLE = [\n [],\n [6, 18],\n [6, 22],\n [6, 26],\n [6, 30],\n [6, 34],\n [6, 22, 38],\n [6, 24, 42],\n [6, 26, 46],\n [6, 28, 50],\n [6, 30, 54],\n [6, 32, 58],\n [6, 34, 62],\n [6, 26, 46, 66],\n [6, 26, 48, 70],\n [6, 26, 50, 74],\n [6, 30, 54, 78],\n [6, 30, 56, 82],\n [6, 30, 58, 86],\n [6, 34, 62, 90],\n [6, 28, 50, 72, 94],\n [6, 26, 50, 74, 98],\n [6, 30, 54, 78, 102],\n [6, 28, 54, 80, 106],\n [6, 32, 58, 84, 110],\n [6, 30, 58, 86, 114],\n [6, 34, 62, 90, 118],\n [6, 26, 50, 74, 98, 122],\n [6, 30, 54, 78, 102, 126],\n [6, 26, 52, 78, 104, 130],\n [6, 30, 56, 82, 108, 134],\n [6, 34, 60, 86, 112, 138],\n [6, 30, 58, 86, 114, 142],\n [6, 34, 62, 90, 118, 146],\n [6, 30, 54, 78, 102, 126, 150],\n [6, 24, 50, 76, 102, 128, 154],\n [6, 28, 54, 80, 106, 132, 158],\n [6, 32, 58, 84, 110, 136, 162],\n [6, 26, 54, 82, 110, 138, 166],\n [6, 30, 58, 86, 114, 142, 170]\n ];\n var G15 = (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0);\n var G18 = (1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | (1 << 2) | (1 << 0);\n var G15_MASK = (1 << 14) | (1 << 12) | (1 << 10) | (1 << 4) | (1 << 1);\n\n var _this = {};\n\n var getBCHDigit = function(data) {\n var digit = 0;\n while (data != 0) {\n digit += 1;\n data >>>= 1;\n }\n return digit;\n };\n\n _this.getBCHTypeInfo = function(data) {\n var d = data << 10;\n while (getBCHDigit(d) - getBCHDigit(G15) >= 0) {\n d ^= (G15 << (getBCHDigit(d) - getBCHDigit(G15) ) );\n }\n return ( (data << 10) | d) ^ G15_MASK;\n };\n\n _this.getBCHTypeNumber = function(data) {\n var d = data << 12;\n while (getBCHDigit(d) - getBCHDigit(G18) >= 0) {\n d ^= (G18 << (getBCHDigit(d) - getBCHDigit(G18) ) );\n }\n return (data << 12) | d;\n };\n\n _this.getPatternPosition = function(typeNumber) {\n return PATTERN_POSITION_TABLE[typeNumber - 1];\n };\n\n _this.getMaskFunction = function(maskPattern) {\n\n switch (maskPattern) {\n\n case QRMaskPattern.PATTERN000 :\n return function(i, j) { return (i + j) % 2 == 0; };\n case QRMaskPattern.PATTERN001 :\n return function(i, j) { return i % 2 == 0; };\n case QRMaskPattern.PATTERN010 :\n return function(i, j) { return j % 3 == 0; };\n case QRMaskPattern.PATTERN011 :\n return function(i, j) { return (i + j) % 3 == 0; };\n case QRMaskPattern.PATTERN100 :\n return function(i, j) { return (Math.floor(i / 2) + Math.floor(j / 3) ) % 2 == 0; };\n case QRMaskPattern.PATTERN101 :\n return function(i, j) { return (i * j) % 2 + (i * j) % 3 == 0; };\n case QRMaskPattern.PATTERN110 :\n return function(i, j) { return ( (i * j) % 2 + (i * j) % 3) % 2 == 0; };\n case QRMaskPattern.PATTERN111 :\n return function(i, j) { return ( (i * j) % 3 + (i + j) % 2) % 2 == 0; };\n\n default :\n throw 'bad maskPattern:' + maskPattern;\n }\n };\n\n _this.getErrorCorrectPolynomial = function(errorCorrectLength) {\n var a = qrPolynomial([1], 0);\n for (var i = 0; i < errorCorrectLength; i += 1) {\n a = a.multiply(qrPolynomial([1, QRMath.gexp(i)], 0) );\n }\n return a;\n };\n\n _this.getLengthInBits = function(mode, type) {\n\n if (1 <= type && type < 10) {\n\n // 1 - 9\n\n switch(mode) {\n case QRMode.MODE_NUMBER : return 10;\n case QRMode.MODE_ALPHA_NUM : return 9;\n case QRMode.MODE_8BIT_BYTE : return 8;\n case QRMode.MODE_KANJI : return 8;\n default :\n throw 'mode:' + mode;\n }\n\n } else if (type < 27) {\n\n // 10 - 26\n\n switch(mode) {\n case QRMode.MODE_NUMBER : return 12;\n case QRMode.MODE_ALPHA_NUM : return 11;\n case QRMode.MODE_8BIT_BYTE : return 16;\n case QRMode.MODE_KANJI : return 10;\n default :\n throw 'mode:' + mode;\n }\n\n } else if (type < 41) {\n\n // 27 - 40\n\n switch(mode) {\n case QRMode.MODE_NUMBER : return 14;\n case QRMode.MODE_ALPHA_NUM : return 13;\n case QRMode.MODE_8BIT_BYTE : return 16;\n case QRMode.MODE_KANJI : return 12;\n default :\n throw 'mode:' + mode;\n }\n\n } else {\n throw 'type:' + type;\n }\n };\n\n _this.getLostPoint = function(qrcode) {\n\n var moduleCount = qrcode.getModuleCount();\n\n var lostPoint = 0;\n\n // LEVEL1\n\n for (var row = 0; row < moduleCount; row += 1) {\n for (var col = 0; col < moduleCount; col += 1) {\n\n var sameCount = 0;\n var dark = qrcode.isDark(row, col);\n\n for (var r = -1; r <= 1; r += 1) {\n\n if (row + r < 0 || moduleCount <= row + r) {\n continue;\n }\n\n for (var c = -1; c <= 1; c += 1) {\n\n if (col + c < 0 || moduleCount <= col + c) {\n continue;\n }\n\n if (r == 0 && c == 0) {\n continue;\n }\n\n if (dark == qrcode.isDark(row + r, col + c) ) {\n sameCount += 1;\n }\n }\n }\n\n if (sameCount > 5) {\n lostPoint += (3 + sameCount - 5);\n }\n }\n };\n\n // LEVEL2\n\n for (var row = 0; row < moduleCount - 1; row += 1) {\n for (var col = 0; col < moduleCount - 1; col += 1) {\n var count = 0;\n if (qrcode.isDark(row, col) ) count += 1;\n if (qrcode.isDark(row + 1, col) ) count += 1;\n if (qrcode.isDark(row, col + 1) ) count += 1;\n if (qrcode.isDark(row + 1, col + 1) ) count += 1;\n if (count == 0 || count == 4) {\n lostPoint += 3;\n }\n }\n }\n\n // LEVEL3\n\n for (var row = 0; row < moduleCount; row += 1) {\n for (var col = 0; col < moduleCount - 6; col += 1) {\n if (qrcode.isDark(row, col)\n && !qrcode.isDark(row, col + 1)\n && qrcode.isDark(row, col + 2)\n && qrcode.isDark(row, col + 3)\n && qrcode.isDark(row, col + 4)\n && !qrcode.isDark(row, col + 5)\n && qrcode.isDark(row, col + 6) ) {\n lostPoint += 40;\n }\n }\n }\n\n for (var col = 0; col < moduleCount; col += 1) {\n for (var row = 0; row < moduleCount - 6; row += 1) {\n if (qrcode.isDark(row, col)\n && !qrcode.isDark(row + 1, col)\n && qrcode.isDark(row + 2, col)\n && qrcode.isDark(row + 3, col)\n && qrcode.isDark(row + 4, col)\n && !qrcode.isDark(row + 5, col)\n && qrcode.isDark(row + 6, col) ) {\n lostPoint += 40;\n }\n }\n }\n\n // LEVEL4\n\n var darkCount = 0;\n\n for (var col = 0; col < moduleCount; col += 1) {\n for (var row = 0; row < moduleCount; row += 1) {\n if (qrcode.isDark(row, col) ) {\n darkCount += 1;\n }\n }\n }\n\n var ratio = Math.abs(100 * darkCount / moduleCount / moduleCount - 50) / 5;\n lostPoint += ratio * 10;\n\n return lostPoint;\n };\n\n return _this;\n }();\n\n //---------------------------------------------------------------------\n // QRMath\n //---------------------------------------------------------------------\n\n var QRMath = function() {\n\n var EXP_TABLE = new Array(256);\n var LOG_TABLE = new Array(256);\n\n // initialize tables\n for (var i = 0; i < 8; i += 1) {\n EXP_TABLE[i] = 1 << i;\n }\n for (var i = 8; i < 256; i += 1) {\n EXP_TABLE[i] = EXP_TABLE[i - 4]\n ^ EXP_TABLE[i - 5]\n ^ EXP_TABLE[i - 6]\n ^ EXP_TABLE[i - 8];\n }\n for (var i = 0; i < 255; i += 1) {\n LOG_TABLE[EXP_TABLE[i] ] = i;\n }\n\n var _this = {};\n\n _this.glog = function(n) {\n\n if (n < 1) {\n throw 'glog(' + n + ')';\n }\n\n return LOG_TABLE[n];\n };\n\n _this.gexp = function(n) {\n\n while (n < 0) {\n n += 255;\n }\n\n while (n >= 256) {\n n -= 255;\n }\n\n return EXP_TABLE[n];\n };\n\n return _this;\n }();\n\n //---------------------------------------------------------------------\n // qrPolynomial\n //---------------------------------------------------------------------\n\n function qrPolynomial(num, shift) {\n\n if (typeof num.length == 'undefined') {\n throw num.length + '/' + shift;\n }\n\n var _num = function() {\n var offset = 0;\n while (offset < num.length && num[offset] == 0) {\n offset += 1;\n }\n var _num = new Array(num.length - offset + shift);\n for (var i = 0; i < num.length - offset; i += 1) {\n _num[i] = num[i + offset];\n }\n return _num;\n }();\n\n var _this = {};\n\n _this.getAt = function(index) {\n return _num[index];\n };\n\n _this.getLength = function() {\n return _num.length;\n };\n\n _this.multiply = function(e) {\n\n var num = new Array(_this.getLength() + e.getLength() - 1);\n\n for (var i = 0; i < _this.getLength(); i += 1) {\n for (var j = 0; j < e.getLength(); j += 1) {\n num[i + j] ^= QRMath.gexp(QRMath.glog(_this.getAt(i) ) + QRMath.glog(e.getAt(j) ) );\n }\n }\n\n return qrPolynomial(num, 0);\n };\n\n _this.mod = function(e) {\n\n if (_this.getLength() - e.getLength() < 0) {\n return _this;\n }\n\n var ratio = QRMath.glog(_this.getAt(0) ) - QRMath.glog(e.getAt(0) );\n\n var num = new Array(_this.getLength() );\n for (var i = 0; i < _this.getLength(); i += 1) {\n num[i] = _this.getAt(i);\n }\n\n for (var i = 0; i < e.getLength(); i += 1) {\n num[i] ^= QRMath.gexp(QRMath.glog(e.getAt(i) ) + ratio);\n }\n\n // recursive call\n return qrPolynomial(num, 0).mod(e);\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // QRRSBlock\n //---------------------------------------------------------------------\n\n var QRRSBlock = function() {\n\n var RS_BLOCK_TABLE = [\n\n // L\n // M\n // Q\n // H\n\n // 1\n [1, 26, 19],\n [1, 26, 16],\n [1, 26, 13],\n [1, 26, 9],\n\n // 2\n [1, 44, 34],\n [1, 44, 28],\n [1, 44, 22],\n [1, 44, 16],\n\n // 3\n [1, 70, 55],\n [1, 70, 44],\n [2, 35, 17],\n [2, 35, 13],\n\n // 4\n [1, 100, 80],\n [2, 50, 32],\n [2, 50, 24],\n [4, 25, 9],\n\n // 5\n [1, 134, 108],\n [2, 67, 43],\n [2, 33, 15, 2, 34, 16],\n [2, 33, 11, 2, 34, 12],\n\n // 6\n [2, 86, 68],\n [4, 43, 27],\n [4, 43, 19],\n [4, 43, 15],\n\n // 7\n [2, 98, 78],\n [4, 49, 31],\n [2, 32, 14, 4, 33, 15],\n [4, 39, 13, 1, 40, 14],\n\n // 8\n [2, 121, 97],\n [2, 60, 38, 2, 61, 39],\n [4, 40, 18, 2, 41, 19],\n [4, 40, 14, 2, 41, 15],\n\n // 9\n [2, 146, 116],\n [3, 58, 36, 2, 59, 37],\n [4, 36, 16, 4, 37, 17],\n [4, 36, 12, 4, 37, 13],\n\n // 10\n [2, 86, 68, 2, 87, 69],\n [4, 69, 43, 1, 70, 44],\n [6, 43, 19, 2, 44, 20],\n [6, 43, 15, 2, 44, 16],\n\n // 11\n [4, 101, 81],\n [1, 80, 50, 4, 81, 51],\n [4, 50, 22, 4, 51, 23],\n [3, 36, 12, 8, 37, 13],\n\n // 12\n [2, 116, 92, 2, 117, 93],\n [6, 58, 36, 2, 59, 37],\n [4, 46, 20, 6, 47, 21],\n [7, 42, 14, 4, 43, 15],\n\n // 13\n [4, 133, 107],\n [8, 59, 37, 1, 60, 38],\n [8, 44, 20, 4, 45, 21],\n [12, 33, 11, 4, 34, 12],\n\n // 14\n [3, 145, 115, 1, 146, 116],\n [4, 64, 40, 5, 65, 41],\n [11, 36, 16, 5, 37, 17],\n [11, 36, 12, 5, 37, 13],\n\n // 15\n [5, 109, 87, 1, 110, 88],\n [5, 65, 41, 5, 66, 42],\n [5, 54, 24, 7, 55, 25],\n [11, 36, 12, 7, 37, 13],\n\n // 16\n [5, 122, 98, 1, 123, 99],\n [7, 73, 45, 3, 74, 46],\n [15, 43, 19, 2, 44, 20],\n [3, 45, 15, 13, 46, 16],\n\n // 17\n [1, 135, 107, 5, 136, 108],\n [10, 74, 46, 1, 75, 47],\n [1, 50, 22, 15, 51, 23],\n [2, 42, 14, 17, 43, 15],\n\n // 18\n [5, 150, 120, 1, 151, 121],\n [9, 69, 43, 4, 70, 44],\n [17, 50, 22, 1, 51, 23],\n [2, 42, 14, 19, 43, 15],\n\n // 19\n [3, 141, 113, 4, 142, 114],\n [3, 70, 44, 11, 71, 45],\n [17, 47, 21, 4, 48, 22],\n [9, 39, 13, 16, 40, 14],\n\n // 20\n [3, 135, 107, 5, 136, 108],\n [3, 67, 41, 13, 68, 42],\n [15, 54, 24, 5, 55, 25],\n [15, 43, 15, 10, 44, 16],\n\n // 21\n [4, 144, 116, 4, 145, 117],\n [17, 68, 42],\n [17, 50, 22, 6, 51, 23],\n [19, 46, 16, 6, 47, 17],\n\n // 22\n [2, 139, 111, 7, 140, 112],\n [17, 74, 46],\n [7, 54, 24, 16, 55, 25],\n [34, 37, 13],\n\n // 23\n [4, 151, 121, 5, 152, 122],\n [4, 75, 47, 14, 76, 48],\n [11, 54, 24, 14, 55, 25],\n [16, 45, 15, 14, 46, 16],\n\n // 24\n [6, 147, 117, 4, 148, 118],\n [6, 73, 45, 14, 74, 46],\n [11, 54, 24, 16, 55, 25],\n [30, 46, 16, 2, 47, 17],\n\n // 25\n [8, 132, 106, 4, 133, 107],\n [8, 75, 47, 13, 76, 48],\n [7, 54, 24, 22, 55, 25],\n [22, 45, 15, 13, 46, 16],\n\n // 26\n [10, 142, 114, 2, 143, 115],\n [19, 74, 46, 4, 75, 47],\n [28, 50, 22, 6, 51, 23],\n [33, 46, 16, 4, 47, 17],\n\n // 27\n [8, 152, 122, 4, 153, 123],\n [22, 73, 45, 3, 74, 46],\n [8, 53, 23, 26, 54, 24],\n [12, 45, 15, 28, 46, 16],\n\n // 28\n [3, 147, 117, 10, 148, 118],\n [3, 73, 45, 23, 74, 46],\n [4, 54, 24, 31, 55, 25],\n [11, 45, 15, 31, 46, 16],\n\n // 29\n [7, 146, 116, 7, 147, 117],\n [21, 73, 45, 7, 74, 46],\n [1, 53, 23, 37, 54, 24],\n [19, 45, 15, 26, 46, 16],\n\n // 30\n [5, 145, 115, 10, 146, 116],\n [19, 75, 47, 10, 76, 48],\n [15, 54, 24, 25, 55, 25],\n [23, 45, 15, 25, 46, 16],\n\n // 31\n [13, 145, 115, 3, 146, 116],\n [2, 74, 46, 29, 75, 47],\n [42, 54, 24, 1, 55, 25],\n [23, 45, 15, 28, 46, 16],\n\n // 32\n [17, 145, 115],\n [10, 74, 46, 23, 75, 47],\n [10, 54, 24, 35, 55, 25],\n [19, 45, 15, 35, 46, 16],\n\n // 33\n [17, 145, 115, 1, 146, 116],\n [14, 74, 46, 21, 75, 47],\n [29, 54, 24, 19, 55, 25],\n [11, 45, 15, 46, 46, 16],\n\n // 34\n [13, 145, 115, 6, 146, 116],\n [14, 74, 46, 23, 75, 47],\n [44, 54, 24, 7, 55, 25],\n [59, 46, 16, 1, 47, 17],\n\n // 35\n [12, 151, 121, 7, 152, 122],\n [12, 75, 47, 26, 76, 48],\n [39, 54, 24, 14, 55, 25],\n [22, 45, 15, 41, 46, 16],\n\n // 36\n [6, 151, 121, 14, 152, 122],\n [6, 75, 47, 34, 76, 48],\n [46, 54, 24, 10, 55, 25],\n [2, 45, 15, 64, 46, 16],\n\n // 37\n [17, 152, 122, 4, 153, 123],\n [29, 74, 46, 14, 75, 47],\n [49, 54, 24, 10, 55, 25],\n [24, 45, 15, 46, 46, 16],\n\n // 38\n [4, 152, 122, 18, 153, 123],\n [13, 74, 46, 32, 75, 47],\n [48, 54, 24, 14, 55, 25],\n [42, 45, 15, 32, 46, 16],\n\n // 39\n [20, 147, 117, 4, 148, 118],\n [40, 75, 47, 7, 76, 48],\n [43, 54, 24, 22, 55, 25],\n [10, 45, 15, 67, 46, 16],\n\n // 40\n [19, 148, 118, 6, 149, 119],\n [18, 75, 47, 31, 76, 48],\n [34, 54, 24, 34, 55, 25],\n [20, 45, 15, 61, 46, 16]\n ];\n\n var qrRSBlock = function(totalCount, dataCount) {\n var _this = {};\n _this.totalCount = totalCount;\n _this.dataCount = dataCount;\n return _this;\n };\n\n var _this = {};\n\n var getRsBlockTable = function(typeNumber, errorCorrectionLevel) {\n\n switch(errorCorrectionLevel) {\n case QRErrorCorrectionLevel.L :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 0];\n case QRErrorCorrectionLevel.M :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 1];\n case QRErrorCorrectionLevel.Q :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 2];\n case QRErrorCorrectionLevel.H :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 3];\n default :\n return undefined;\n }\n };\n\n _this.getRSBlocks = function(typeNumber, errorCorrectionLevel) {\n\n var rsBlock = getRsBlockTable(typeNumber, errorCorrectionLevel);\n\n if (typeof rsBlock == 'undefined') {\n throw 'bad rs block @ typeNumber:' + typeNumber +\n '/errorCorrectionLevel:' + errorCorrectionLevel;\n }\n\n var length = rsBlock.length / 3;\n\n var list = [];\n\n for (var i = 0; i < length; i += 1) {\n\n var count = rsBlock[i * 3 + 0];\n var totalCount = rsBlock[i * 3 + 1];\n var dataCount = rsBlock[i * 3 + 2];\n\n for (var j = 0; j < count; j += 1) {\n list.push(qrRSBlock(totalCount, dataCount) );\n }\n }\n\n return list;\n };\n\n return _this;\n }();\n\n //---------------------------------------------------------------------\n // qrBitBuffer\n //---------------------------------------------------------------------\n\n var qrBitBuffer = function() {\n\n var _buffer = [];\n var _length = 0;\n\n var _this = {};\n\n _this.getBuffer = function() {\n return _buffer;\n };\n\n _this.getAt = function(index) {\n var bufIndex = Math.floor(index / 8);\n return ( (_buffer[bufIndex] >>> (7 - index % 8) ) & 1) == 1;\n };\n\n _this.put = function(num, length) {\n for (var i = 0; i < length; i += 1) {\n _this.putBit( ( (num >>> (length - i - 1) ) & 1) == 1);\n }\n };\n\n _this.getLengthInBits = function() {\n return _length;\n };\n\n _this.putBit = function(bit) {\n\n var bufIndex = Math.floor(_length / 8);\n if (_buffer.length <= bufIndex) {\n _buffer.push(0);\n }\n\n if (bit) {\n _buffer[bufIndex] |= (0x80 >>> (_length % 8) );\n }\n\n _length += 1;\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qrNumber\n //---------------------------------------------------------------------\n\n var qrNumber = function(data) {\n\n var _mode = QRMode.MODE_NUMBER;\n var _data = data;\n\n var _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return _data.length;\n };\n\n _this.write = function(buffer) {\n\n var data = _data;\n\n var i = 0;\n\n while (i + 2 < data.length) {\n buffer.put(strToNum(data.substring(i, i + 3) ), 10);\n i += 3;\n }\n\n if (i < data.length) {\n if (data.length - i == 1) {\n buffer.put(strToNum(data.substring(i, i + 1) ), 4);\n } else if (data.length - i == 2) {\n buffer.put(strToNum(data.substring(i, i + 2) ), 7);\n }\n }\n };\n\n var strToNum = function(s) {\n var num = 0;\n for (var i = 0; i < s.length; i += 1) {\n num = num * 10 + chatToNum(s.charAt(i) );\n }\n return num;\n };\n\n var chatToNum = function(c) {\n if ('0' <= c && c <= '9') {\n return c.charCodeAt(0) - '0'.charCodeAt(0);\n }\n throw 'illegal char :' + c;\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qrAlphaNum\n //---------------------------------------------------------------------\n\n var qrAlphaNum = function(data) {\n\n var _mode = QRMode.MODE_ALPHA_NUM;\n var _data = data;\n\n var _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return _data.length;\n };\n\n _this.write = function(buffer) {\n\n var s = _data;\n\n var i = 0;\n\n while (i + 1 < s.length) {\n buffer.put(\n getCode(s.charAt(i) ) * 45 +\n getCode(s.charAt(i + 1) ), 11);\n i += 2;\n }\n\n if (i < s.length) {\n buffer.put(getCode(s.charAt(i) ), 6);\n }\n };\n\n var getCode = function(c) {\n\n if ('0' <= c && c <= '9') {\n return c.charCodeAt(0) - '0'.charCodeAt(0);\n } else if ('A' <= c && c <= 'Z') {\n return c.charCodeAt(0) - 'A'.charCodeAt(0) + 10;\n } else {\n switch (c) {\n case ' ' : return 36;\n case '$' : return 37;\n case '%' : return 38;\n case '*' : return 39;\n case '+' : return 40;\n case '-' : return 41;\n case '.' : return 42;\n case '/' : return 43;\n case ':' : return 44;\n default :\n throw 'illegal char :' + c;\n }\n }\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qr8BitByte\n //---------------------------------------------------------------------\n\n var qr8BitByte = function(data) {\n\n var _mode = QRMode.MODE_8BIT_BYTE;\n var _data = data;\n var _bytes = qrcode.stringToBytes(data);\n\n var _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return _bytes.length;\n };\n\n _this.write = function(buffer) {\n for (var i = 0; i < _bytes.length; i += 1) {\n buffer.put(_bytes[i], 8);\n }\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qrKanji\n //---------------------------------------------------------------------\n\n var qrKanji = function(data) {\n\n var _mode = QRMode.MODE_KANJI;\n var _data = data;\n\n var stringToBytes = qrcode.stringToBytesFuncs['SJIS'];\n if (!stringToBytes) {\n throw 'sjis not supported.';\n }\n !function(c, code) {\n // self test for sjis support.\n var test = stringToBytes(c);\n if (test.length != 2 || ( (test[0] << 8) | test[1]) != code) {\n throw 'sjis not supported.';\n }\n }('\\u53cb', 0x9746);\n\n var _bytes = stringToBytes(data);\n\n var _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return ~~(_bytes.length / 2);\n };\n\n _this.write = function(buffer) {\n\n var data = _bytes;\n\n var i = 0;\n\n while (i + 1 < data.length) {\n\n var c = ( (0xff & data[i]) << 8) | (0xff & data[i + 1]);\n\n if (0x8140 <= c && c <= 0x9FFC) {\n c -= 0x8140;\n } else if (0xE040 <= c && c <= 0xEBBF) {\n c -= 0xC140;\n } else {\n throw 'illegal char at ' + (i + 1) + '/' + c;\n }\n\n c = ( (c >>> 8) & 0xff) * 0xC0 + (c & 0xff);\n\n buffer.put(c, 13);\n\n i += 2;\n }\n\n if (i < data.length) {\n throw 'illegal char at ' + (i + 1);\n }\n };\n\n return _this;\n };\n\n //=====================================================================\n // GIF Support etc.\n //\n\n //---------------------------------------------------------------------\n // byteArrayOutputStream\n //---------------------------------------------------------------------\n\n var byteArrayOutputStream = function() {\n\n var _bytes = [];\n\n var _this = {};\n\n _this.writeByte = function(b) {\n _bytes.push(b & 0xff);\n };\n\n _this.writeShort = function(i) {\n _this.writeByte(i);\n _this.writeByte(i >>> 8);\n };\n\n _this.writeBytes = function(b, off, len) {\n off = off || 0;\n len = len || b.length;\n for (var i = 0; i < len; i += 1) {\n _this.writeByte(b[i + off]);\n }\n };\n\n _this.writeString = function(s) {\n for (var i = 0; i < s.length; i += 1) {\n _this.writeByte(s.charCodeAt(i) );\n }\n };\n\n _this.toByteArray = function() {\n return _bytes;\n };\n\n _this.toString = function() {\n var s = '';\n s += '[';\n for (var i = 0; i < _bytes.length; i += 1) {\n if (i > 0) {\n s += ',';\n }\n s += _bytes[i];\n }\n s += ']';\n return s;\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // base64EncodeOutputStream\n //---------------------------------------------------------------------\n\n var base64EncodeOutputStream = function() {\n\n var _buffer = 0;\n var _buflen = 0;\n var _length = 0;\n var _base64 = '';\n\n var _this = {};\n\n var writeEncoded = function(b) {\n _base64 += String.fromCharCode(encode(b & 0x3f) );\n };\n\n var encode = function(n) {\n if (n < 0) {\n // error.\n } else if (n < 26) {\n return 0x41 + n;\n } else if (n < 52) {\n return 0x61 + (n - 26);\n } else if (n < 62) {\n return 0x30 + (n - 52);\n } else if (n == 62) {\n return 0x2b;\n } else if (n == 63) {\n return 0x2f;\n }\n throw 'n:' + n;\n };\n\n _this.writeByte = function(n) {\n\n _buffer = (_buffer << 8) | (n & 0xff);\n _buflen += 8;\n _length += 1;\n\n while (_buflen >= 6) {\n writeEncoded(_buffer >>> (_buflen - 6) );\n _buflen -= 6;\n }\n };\n\n _this.flush = function() {\n\n if (_buflen > 0) {\n writeEncoded(_buffer << (6 - _buflen) );\n _buffer = 0;\n _buflen = 0;\n }\n\n if (_length % 3 != 0) {\n // padding\n var padlen = 3 - _length % 3;\n for (var i = 0; i < padlen; i += 1) {\n _base64 += '=';\n }\n }\n };\n\n _this.toString = function() {\n return _base64;\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // base64DecodeInputStream\n //---------------------------------------------------------------------\n\n var base64DecodeInputStream = function(str) {\n\n var _str = str;\n var _pos = 0;\n var _buffer = 0;\n var _buflen = 0;\n\n var _this = {};\n\n _this.read = function() {\n\n while (_buflen < 8) {\n\n if (_pos >= _str.length) {\n if (_buflen == 0) {\n return -1;\n }\n throw 'unexpected end of file./' + _buflen;\n }\n\n var c = _str.charAt(_pos);\n _pos += 1;\n\n if (c == '=') {\n _buflen = 0;\n return -1;\n } else if (c.match(/^\\s$/) ) {\n // ignore if whitespace.\n continue;\n }\n\n _buffer = (_buffer << 6) | decode(c.charCodeAt(0) );\n _buflen += 6;\n }\n\n var n = (_buffer >>> (_buflen - 8) ) & 0xff;\n _buflen -= 8;\n return n;\n };\n\n var decode = function(c) {\n if (0x41 <= c && c <= 0x5a) {\n return c - 0x41;\n } else if (0x61 <= c && c <= 0x7a) {\n return c - 0x61 + 26;\n } else if (0x30 <= c && c <= 0x39) {\n return c - 0x30 + 52;\n } else if (c == 0x2b) {\n return 62;\n } else if (c == 0x2f) {\n return 63;\n } else {\n throw 'c:' + c;\n }\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // gifImage (B/W)\n //---------------------------------------------------------------------\n\n var gifImage = function(width, height) {\n\n var _width = width;\n var _height = height;\n var _data = new Array(width * height);\n\n var _this = {};\n\n _this.setPixel = function(x, y, pixel) {\n _data[y * _width + x] = pixel;\n };\n\n _this.write = function(out) {\n\n //---------------------------------\n // GIF Signature\n\n out.writeString('GIF87a');\n\n //---------------------------------\n // Screen Descriptor\n\n out.writeShort(_width);\n out.writeShort(_height);\n\n out.writeByte(0x80); // 2bit\n out.writeByte(0);\n out.writeByte(0);\n\n //---------------------------------\n // Global Color Map\n\n // black\n out.writeByte(0x00);\n out.writeByte(0x00);\n out.writeByte(0x00);\n\n // white\n out.writeByte(0xff);\n out.writeByte(0xff);\n out.writeByte(0xff);\n\n //---------------------------------\n // Image Descriptor\n\n out.writeString(',');\n out.writeShort(0);\n out.writeShort(0);\n out.writeShort(_width);\n out.writeShort(_height);\n out.writeByte(0);\n\n //---------------------------------\n // Local Color Map\n\n //---------------------------------\n // Raster Data\n\n var lzwMinCodeSize = 2;\n var raster = getLZWRaster(lzwMinCodeSize);\n\n out.writeByte(lzwMinCodeSize);\n\n var offset = 0;\n\n while (raster.length - offset > 255) {\n out.writeByte(255);\n out.writeBytes(raster, offset, 255);\n offset += 255;\n }\n\n out.writeByte(raster.length - offset);\n out.writeBytes(raster, offset, raster.length - offset);\n out.writeByte(0x00);\n\n //---------------------------------\n // GIF Terminator\n out.writeString(';');\n };\n\n var bitOutputStream = function(out) {\n\n var _out = out;\n var _bitLength = 0;\n var _bitBuffer = 0;\n\n var _this = {};\n\n _this.write = function(data, length) {\n\n if ( (data >>> length) != 0) {\n throw 'length over';\n }\n\n while (_bitLength + length >= 8) {\n _out.writeByte(0xff & ( (data << _bitLength) | _bitBuffer) );\n length -= (8 - _bitLength);\n data >>>= (8 - _bitLength);\n _bitBuffer = 0;\n _bitLength = 0;\n }\n\n _bitBuffer = (data << _bitLength) | _bitBuffer;\n _bitLength = _bitLength + length;\n };\n\n _this.flush = function() {\n if (_bitLength > 0) {\n _out.writeByte(_bitBuffer);\n }\n };\n\n return _this;\n };\n\n var getLZWRaster = function(lzwMinCodeSize) {\n\n var clearCode = 1 << lzwMinCodeSize;\n var endCode = (1 << lzwMinCodeSize) + 1;\n var bitLength = lzwMinCodeSize + 1;\n\n // Setup LZWTable\n var table = lzwTable();\n\n for (var i = 0; i < clearCode; i += 1) {\n table.add(String.fromCharCode(i) );\n }\n table.add(String.fromCharCode(clearCode) );\n table.add(String.fromCharCode(endCode) );\n\n var byteOut = byteArrayOutputStream();\n var bitOut = bitOutputStream(byteOut);\n\n // clear code\n bitOut.write(clearCode, bitLength);\n\n var dataIndex = 0;\n\n var s = String.fromCharCode(_data[dataIndex]);\n dataIndex += 1;\n\n while (dataIndex < _data.length) {\n\n var c = String.fromCharCode(_data[dataIndex]);\n dataIndex += 1;\n\n if (table.contains(s + c) ) {\n\n s = s + c;\n\n } else {\n\n bitOut.write(table.indexOf(s), bitLength);\n\n if (table.size() < 0xfff) {\n\n if (table.size() == (1 << bitLength) ) {\n bitLength += 1;\n }\n\n table.add(s + c);\n }\n\n s = c;\n }\n }\n\n bitOut.write(table.indexOf(s), bitLength);\n\n // end code\n bitOut.write(endCode, bitLength);\n\n bitOut.flush();\n\n return byteOut.toByteArray();\n };\n\n var lzwTable = function() {\n\n var _map = {};\n var _size = 0;\n\n var _this = {};\n\n _this.add = function(key) {\n if (_this.contains(key) ) {\n throw 'dup key:' + key;\n }\n _map[key] = _size;\n _size += 1;\n };\n\n _this.size = function() {\n return _size;\n };\n\n _this.indexOf = function(key) {\n return _map[key];\n };\n\n _this.contains = function(key) {\n return typeof _map[key] != 'undefined';\n };\n\n return _this;\n };\n\n return _this;\n };\n\n var createDataURL = function(width, height, getPixel) {\n var gif = gifImage(width, height);\n for (var y = 0; y < height; y += 1) {\n for (var x = 0; x < width; x += 1) {\n gif.setPixel(x, y, getPixel(x, y) );\n }\n }\n\n var b = byteArrayOutputStream();\n gif.write(b);\n\n var base64 = base64EncodeOutputStream();\n var bytes = b.toByteArray();\n for (var i = 0; i < bytes.length; i += 1) {\n base64.writeByte(bytes[i]);\n }\n base64.flush();\n\n return 'data:image/gif;base64,' + base64;\n };\n\n //---------------------------------------------------------------------\n // returns qrcode function.\n\n return qrcode;\n}();\n\n// multibyte support\n!function() {\n\n qrcode.stringToBytesFuncs['UTF-8'] = function(s) {\n // http://stackoverflow.com/questions/18729405/how-to-convert-utf8-string-to-byte-array\n function toUTF8Array(str) {\n var utf8 = [];\n for (var i=0; i < str.length; i++) {\n var charcode = str.charCodeAt(i);\n if (charcode < 0x80) utf8.push(charcode);\n else if (charcode < 0x800) {\n utf8.push(0xc0 | (charcode >> 6),\n 0x80 | (charcode & 0x3f));\n }\n else if (charcode < 0xd800 || charcode >= 0xe000) {\n utf8.push(0xe0 | (charcode >> 12),\n 0x80 | ((charcode>>6) & 0x3f),\n 0x80 | (charcode & 0x3f));\n }\n // surrogate pair\n else {\n i++;\n // UTF-16 encodes 0x10000-0x10FFFF by\n // subtracting 0x10000 and splitting the\n // 20 bits of 0x0-0xFFFFF into two halves\n charcode = 0x10000 + (((charcode & 0x3ff)<<10)\n | (str.charCodeAt(i) & 0x3ff));\n utf8.push(0xf0 | (charcode >>18),\n 0x80 | ((charcode>>12) & 0x3f),\n 0x80 | ((charcode>>6) & 0x3f),\n 0x80 | (charcode & 0x3f));\n }\n }\n return utf8;\n }\n return toUTF8Array(s);\n };\n\n}();\n\n(function (factory) {\n if (typeof define === 'function' && define.amd) {\n define([], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory();\n }\n}(function () {\n return qrcode;\n}));\n","import { UnknownObject } from \"../types\";\n\nconst isObject = (obj: Record): boolean => !!obj && typeof obj === \"object\" && !Array.isArray(obj);\n\nexport default function mergeDeep(target: UnknownObject, ...sources: UnknownObject[]): UnknownObject {\n if (!sources.length) return target;\n const source = sources.shift();\n if (source === undefined || !isObject(target) || !isObject(source)) return target;\n target = { ...target };\n Object.keys(source).forEach((key: string): void => {\n const targetValue = target[key];\n const sourceValue = source[key];\n\n if (Array.isArray(targetValue) && Array.isArray(sourceValue)) {\n target[key] = sourceValue;\n } else if (isObject(targetValue) && isObject(sourceValue)) {\n target[key] = mergeDeep(Object.assign({}, targetValue), sourceValue);\n } else {\n target[key] = sourceValue;\n }\n });\n\n return mergeDeep(target, ...sources);\n}\n","export default function downloadURI(uri: string, name: string): void {\n const link = document.createElement(\"a\");\n link.download = name;\n link.href = uri;\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n}\n","interface ImageSizeOptions {\n originalHeight: number;\n originalWidth: number;\n maxHiddenDots: number;\n maxHiddenAxisDots?: number;\n dotSize: number;\n}\n\ninterface ImageSizeResult {\n height: number;\n width: number;\n hideYDots: number;\n hideXDots: number;\n}\n\nexport default function calculateImageSize({\n originalHeight,\n originalWidth,\n maxHiddenDots,\n maxHiddenAxisDots,\n dotSize\n}: ImageSizeOptions): ImageSizeResult {\n const hideDots = { x: 0, y: 0 };\n const imageSize = { x: 0, y: 0 };\n\n if (originalHeight <= 0 || originalWidth <= 0 || maxHiddenDots <= 0 || dotSize <= 0) {\n return {\n height: 0,\n width: 0,\n hideYDots: 0,\n hideXDots: 0\n };\n }\n\n const k = originalHeight / originalWidth;\n\n //Getting the maximum possible axis hidden dots\n hideDots.x = Math.floor(Math.sqrt(maxHiddenDots / k));\n //The count of hidden dot's can't be less than 1\n if (hideDots.x <= 0) hideDots.x = 1;\n //Check the limit of the maximum allowed axis hidden dots\n if (maxHiddenAxisDots && maxHiddenAxisDots < hideDots.x) hideDots.x = maxHiddenAxisDots;\n //The count of dots should be odd\n if (hideDots.x % 2 === 0) hideDots.x--;\n imageSize.x = hideDots.x * dotSize;\n //Calculate opposite axis hidden dots based on axis value.\n //The value will be odd.\n //We use ceil to prevent dots covering by the image.\n hideDots.y = 1 + 2 * Math.ceil((hideDots.x * k - 1) / 2);\n imageSize.y = Math.round(imageSize.x * k);\n //If the result dots count is bigger than max - then decrease size and calculate again\n if (hideDots.y * hideDots.x > maxHiddenDots || (maxHiddenAxisDots && maxHiddenAxisDots < hideDots.y)) {\n if (maxHiddenAxisDots && maxHiddenAxisDots < hideDots.y) {\n hideDots.y = maxHiddenAxisDots;\n if (hideDots.y % 2 === 0) hideDots.x--;\n } else {\n hideDots.y -= 2;\n }\n imageSize.y = hideDots.y * dotSize;\n hideDots.x = 1 + 2 * Math.ceil((hideDots.y / k - 1) / 2);\n imageSize.x = Math.round(imageSize.y / k);\n }\n\n return {\n height: imageSize.y,\n width: imageSize.x,\n hideYDots: hideDots.x,\n hideXDots: hideDots.y\n };\n}\n","interface ErrorCorrectionPercents {\n [key: string]: number;\n}\n\nexport default {\n L: 0.07,\n M: 0.15,\n Q: 0.25,\n H: 0.3\n} as ErrorCorrectionPercents;\n","import { DotTypes } from \"../types\";\n\nexport default {\n dots: \"dots\",\n rounded: \"rounded\",\n classy: \"classy\",\n classyRounded: \"classy-rounded\",\n square: \"square\",\n extraRounded: \"extra-rounded\"\n} as DotTypes;\n","import dotTypes from \"../../../constants/dotTypes\";\nimport {\n DotType,\n GetNeighbor,\n RotateFigureArgsCanvas,\n BasicFigureDrawArgsCanvas,\n DrawArgsCanvas\n} from \"../../../types\";\n\nexport default class QRDot {\n _context: CanvasRenderingContext2D;\n _type: DotType;\n\n constructor({ context, type }: { context: CanvasRenderingContext2D; type: DotType }) {\n this._context = context;\n this._type = type;\n }\n\n draw(x: number, y: number, size: number, getNeighbor: GetNeighbor): void {\n const context = this._context;\n const type = this._type;\n let drawFunction;\n\n switch (type) {\n case dotTypes.dots:\n drawFunction = this._drawDot;\n break;\n case dotTypes.classy:\n drawFunction = this._drawClassy;\n break;\n case dotTypes.classyRounded:\n drawFunction = this._drawClassyRounded;\n break;\n case dotTypes.rounded:\n drawFunction = this._drawRounded;\n break;\n case dotTypes.extraRounded:\n drawFunction = this._drawExtraRounded;\n break;\n case dotTypes.square:\n default:\n drawFunction = this._drawSquare;\n }\n\n drawFunction.call(this, { x, y, size, context, getNeighbor });\n }\n\n _rotateFigure({ x, y, size, context, rotation = 0, draw }: RotateFigureArgsCanvas): void {\n const cx = x + size / 2;\n const cy = y + size / 2;\n\n context.translate(cx, cy);\n rotation && context.rotate(rotation);\n draw();\n context.closePath();\n rotation && context.rotate(-rotation);\n context.translate(-cx, -cy);\n }\n\n _basicDot(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.arc(0, 0, size / 2, 0, Math.PI * 2);\n }\n });\n }\n\n _basicSquare(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.rect(-size / 2, -size / 2, size, size);\n }\n });\n }\n\n //if rotation === 0 - right side is rounded\n _basicSideRounded(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.arc(0, 0, size / 2, -Math.PI / 2, Math.PI / 2);\n context.lineTo(-size / 2, size / 2);\n context.lineTo(-size / 2, -size / 2);\n context.lineTo(0, -size / 2);\n }\n });\n }\n\n //if rotation === 0 - top right corner is rounded\n _basicCornerRounded(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.arc(0, 0, size / 2, -Math.PI / 2, 0);\n context.lineTo(size / 2, size / 2);\n context.lineTo(-size / 2, size / 2);\n context.lineTo(-size / 2, -size / 2);\n context.lineTo(0, -size / 2);\n }\n });\n }\n\n //if rotation === 0 - top right corner is rounded\n _basicCornerExtraRounded(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.arc(-size / 2, size / 2, size, -Math.PI / 2, 0);\n context.lineTo(-size / 2, size / 2);\n context.lineTo(-size / 2, -size / 2);\n }\n });\n }\n\n _basicCornersRounded(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.arc(0, 0, size / 2, -Math.PI / 2, 0);\n context.lineTo(size / 2, size / 2);\n context.lineTo(0, size / 2);\n context.arc(0, 0, size / 2, Math.PI / 2, Math.PI);\n context.lineTo(-size / 2, -size / 2);\n context.lineTo(0, -size / 2);\n }\n });\n }\n\n _basicCornersExtraRounded(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.arc(-size / 2, size / 2, size, -Math.PI / 2, 0);\n context.arc(size / 2, -size / 2, size, Math.PI / 2, Math.PI);\n }\n });\n }\n\n _drawDot({ x, y, size, context }: DrawArgsCanvas): void {\n this._basicDot({ x, y, size, context, rotation: 0 });\n }\n\n _drawSquare({ x, y, size, context }: DrawArgsCanvas): void {\n this._basicSquare({ x, y, size, context, rotation: 0 });\n }\n\n _drawRounded({ x, y, size, context, getNeighbor }: DrawArgsCanvas): void {\n const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\n const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\n const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\n const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\n\n const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\n\n if (neighborsCount === 0) {\n this._basicDot({ x, y, size, context, rotation: 0 });\n return;\n }\n\n if (neighborsCount > 2 || (leftNeighbor && rightNeighbor) || (topNeighbor && bottomNeighbor)) {\n this._basicSquare({ x, y, size, context, rotation: 0 });\n return;\n }\n\n if (neighborsCount === 2) {\n let rotation = 0;\n\n if (leftNeighbor && topNeighbor) {\n rotation = Math.PI / 2;\n } else if (topNeighbor && rightNeighbor) {\n rotation = Math.PI;\n } else if (rightNeighbor && bottomNeighbor) {\n rotation = -Math.PI / 2;\n }\n\n this._basicCornerRounded({ x, y, size, context, rotation });\n return;\n }\n\n if (neighborsCount === 1) {\n let rotation = 0;\n\n if (topNeighbor) {\n rotation = Math.PI / 2;\n } else if (rightNeighbor) {\n rotation = Math.PI;\n } else if (bottomNeighbor) {\n rotation = -Math.PI / 2;\n }\n\n this._basicSideRounded({ x, y, size, context, rotation });\n return;\n }\n }\n\n _drawExtraRounded({ x, y, size, context, getNeighbor }: DrawArgsCanvas): void {\n const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\n const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\n const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\n const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\n\n const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\n\n if (neighborsCount === 0) {\n this._basicDot({ x, y, size, context, rotation: 0 });\n return;\n }\n\n if (neighborsCount > 2 || (leftNeighbor && rightNeighbor) || (topNeighbor && bottomNeighbor)) {\n this._basicSquare({ x, y, size, context, rotation: 0 });\n return;\n }\n\n if (neighborsCount === 2) {\n let rotation = 0;\n\n if (leftNeighbor && topNeighbor) {\n rotation = Math.PI / 2;\n } else if (topNeighbor && rightNeighbor) {\n rotation = Math.PI;\n } else if (rightNeighbor && bottomNeighbor) {\n rotation = -Math.PI / 2;\n }\n\n this._basicCornerExtraRounded({ x, y, size, context, rotation });\n return;\n }\n\n if (neighborsCount === 1) {\n let rotation = 0;\n\n if (topNeighbor) {\n rotation = Math.PI / 2;\n } else if (rightNeighbor) {\n rotation = Math.PI;\n } else if (bottomNeighbor) {\n rotation = -Math.PI / 2;\n }\n\n this._basicSideRounded({ x, y, size, context, rotation });\n return;\n }\n }\n\n _drawClassy({ x, y, size, context, getNeighbor }: DrawArgsCanvas): void {\n const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\n const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\n const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\n const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\n\n const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\n\n if (neighborsCount === 0) {\n this._basicCornersRounded({ x, y, size, context, rotation: Math.PI / 2 });\n return;\n }\n\n if (!leftNeighbor && !topNeighbor) {\n this._basicCornerRounded({ x, y, size, context, rotation: -Math.PI / 2 });\n return;\n }\n\n if (!rightNeighbor && !bottomNeighbor) {\n this._basicCornerRounded({ x, y, size, context, rotation: Math.PI / 2 });\n return;\n }\n\n this._basicSquare({ x, y, size, context, rotation: 0 });\n }\n\n _drawClassyRounded({ x, y, size, context, getNeighbor }: DrawArgsCanvas): void {\n const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\n const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\n const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\n const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\n\n const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\n\n if (neighborsCount === 0) {\n this._basicCornersRounded({ x, y, size, context, rotation: Math.PI / 2 });\n return;\n }\n\n if (!leftNeighbor && !topNeighbor) {\n this._basicCornerExtraRounded({ x, y, size, context, rotation: -Math.PI / 2 });\n return;\n }\n\n if (!rightNeighbor && !bottomNeighbor) {\n this._basicCornerExtraRounded({ x, y, size, context, rotation: Math.PI / 2 });\n return;\n }\n\n this._basicSquare({ x, y, size, context, rotation: 0 });\n }\n}\n","import { CornerSquareTypes } from \"../types\";\n\nexport default {\n dot: \"dot\",\n square: \"square\",\n extraRounded: \"extra-rounded\"\n} as CornerSquareTypes;\n","import cornerSquareTypes from \"../../../constants/cornerSquareTypes\";\nimport { CornerSquareType, RotateFigureArgsCanvas, BasicFigureDrawArgsCanvas, DrawArgsCanvas } from \"../../../types\";\n\nexport default class QRCornerSquare {\n _context: CanvasRenderingContext2D;\n _type: CornerSquareType;\n\n constructor({ context, type }: { context: CanvasRenderingContext2D; type: CornerSquareType }) {\n this._context = context;\n this._type = type;\n }\n\n draw(x: number, y: number, size: number, rotation: number): void {\n const context = this._context;\n const type = this._type;\n let drawFunction;\n\n switch (type) {\n case cornerSquareTypes.square:\n drawFunction = this._drawSquare;\n break;\n case cornerSquareTypes.extraRounded:\n drawFunction = this._drawExtraRounded;\n break;\n case cornerSquareTypes.dot:\n default:\n drawFunction = this._drawDot;\n }\n\n drawFunction.call(this, { x, y, size, context, rotation });\n }\n\n _rotateFigure({ x, y, size, context, rotation = 0, draw }: RotateFigureArgsCanvas): void {\n const cx = x + size / 2;\n const cy = y + size / 2;\n\n context.translate(cx, cy);\n rotation && context.rotate(rotation);\n draw();\n context.closePath();\n rotation && context.rotate(-rotation);\n context.translate(-cx, -cy);\n }\n\n _basicDot(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n const dotSize = size / 7;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.arc(0, 0, size / 2, 0, Math.PI * 2);\n context.arc(0, 0, size / 2 - dotSize, 0, Math.PI * 2);\n }\n });\n }\n\n _basicSquare(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n const dotSize = size / 7;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.rect(-size / 2, -size / 2, size, size);\n context.rect(-size / 2 + dotSize, -size / 2 + dotSize, size - 2 * dotSize, size - 2 * dotSize);\n }\n });\n }\n\n _basicExtraRounded(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n const dotSize = size / 7;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.arc(-dotSize, -dotSize, 2.5 * dotSize, Math.PI, -Math.PI / 2);\n context.lineTo(dotSize, -3.5 * dotSize);\n context.arc(dotSize, -dotSize, 2.5 * dotSize, -Math.PI / 2, 0);\n context.lineTo(3.5 * dotSize, -dotSize);\n context.arc(dotSize, dotSize, 2.5 * dotSize, 0, Math.PI / 2);\n context.lineTo(-dotSize, 3.5 * dotSize);\n context.arc(-dotSize, dotSize, 2.5 * dotSize, Math.PI / 2, Math.PI);\n context.lineTo(-3.5 * dotSize, -dotSize);\n\n context.arc(-dotSize, -dotSize, 1.5 * dotSize, Math.PI, -Math.PI / 2);\n context.lineTo(dotSize, -2.5 * dotSize);\n context.arc(dotSize, -dotSize, 1.5 * dotSize, -Math.PI / 2, 0);\n context.lineTo(2.5 * dotSize, -dotSize);\n context.arc(dotSize, dotSize, 1.5 * dotSize, 0, Math.PI / 2);\n context.lineTo(-dotSize, 2.5 * dotSize);\n context.arc(-dotSize, dotSize, 1.5 * dotSize, Math.PI / 2, Math.PI);\n context.lineTo(-2.5 * dotSize, -dotSize);\n }\n });\n }\n\n _drawDot({ x, y, size, context, rotation }: DrawArgsCanvas): void {\n this._basicDot({ x, y, size, context, rotation });\n }\n\n _drawSquare({ x, y, size, context, rotation }: DrawArgsCanvas): void {\n this._basicSquare({ x, y, size, context, rotation });\n }\n\n _drawExtraRounded({ x, y, size, context, rotation }: DrawArgsCanvas): void {\n this._basicExtraRounded({ x, y, size, context, rotation });\n }\n}\n","import { CornerDotTypes } from \"../types\";\n\nexport default {\n dot: \"dot\",\n square: \"square\"\n} as CornerDotTypes;\n","import cornerDotTypes from \"../../../constants/cornerDotTypes\";\nimport { CornerDotType, RotateFigureArgsCanvas, BasicFigureDrawArgsCanvas, DrawArgsCanvas } from \"../../../types\";\n\nexport default class QRCornerDot {\n _context: CanvasRenderingContext2D;\n _type: CornerDotType;\n\n constructor({ context, type }: { context: CanvasRenderingContext2D; type: CornerDotType }) {\n this._context = context;\n this._type = type;\n }\n\n draw(x: number, y: number, size: number, rotation: number): void {\n const context = this._context;\n const type = this._type;\n let drawFunction;\n\n switch (type) {\n case cornerDotTypes.square:\n drawFunction = this._drawSquare;\n break;\n case cornerDotTypes.dot:\n default:\n drawFunction = this._drawDot;\n }\n\n drawFunction.call(this, { x, y, size, context, rotation });\n }\n\n _rotateFigure({ x, y, size, context, rotation = 0, draw }: RotateFigureArgsCanvas): void {\n const cx = x + size / 2;\n const cy = y + size / 2;\n\n context.translate(cx, cy);\n rotation && context.rotate(rotation);\n draw();\n context.closePath();\n rotation && context.rotate(-rotation);\n context.translate(-cx, -cy);\n }\n\n _basicDot(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.arc(0, 0, size / 2, 0, Math.PI * 2);\n }\n });\n }\n\n _basicSquare(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.rect(-size / 2, -size / 2, size, size);\n }\n });\n }\n\n _drawDot({ x, y, size, context, rotation }: DrawArgsCanvas): void {\n this._basicDot({ x, y, size, context, rotation });\n }\n\n _drawSquare({ x, y, size, context, rotation }: DrawArgsCanvas): void {\n this._basicSquare({ x, y, size, context, rotation });\n }\n}\n","import { GradientTypes } from \"../types\";\n\nexport default {\n radial: \"radial\",\n linear: \"linear\"\n} as GradientTypes;\n","import calculateImageSize from \"../tools/calculateImageSize\";\nimport errorCorrectionPercents from \"../constants/errorCorrectionPercents\";\nimport QRDot from \"../figures/dot/canvas/QRDot\";\nimport QRCornerSquare from \"../figures/cornerSquare/canvas/QRCornerSquare\";\nimport QRCornerDot from \"../figures/cornerDot/canvas/QRCornerDot\";\nimport { RequiredOptions } from \"./QROptions\";\nimport gradientTypes from \"../constants/gradientTypes\";\nimport { QRCode, Gradient, FilterFunction } from \"../types\";\n\nconst squareMask = [\n [1, 1, 1, 1, 1, 1, 1],\n [1, 0, 0, 0, 0, 0, 1],\n [1, 0, 0, 0, 0, 0, 1],\n [1, 0, 0, 0, 0, 0, 1],\n [1, 0, 0, 0, 0, 0, 1],\n [1, 0, 0, 0, 0, 0, 1],\n [1, 1, 1, 1, 1, 1, 1]\n];\n\nconst dotMask = [\n [0, 0, 0, 0, 0, 0, 0],\n [0, 0, 0, 0, 0, 0, 0],\n [0, 0, 1, 1, 1, 0, 0],\n [0, 0, 1, 1, 1, 0, 0],\n [0, 0, 1, 1, 1, 0, 0],\n [0, 0, 0, 0, 0, 0, 0],\n [0, 0, 0, 0, 0, 0, 0]\n];\n\nexport default class QRCanvas {\n _canvas: HTMLCanvasElement;\n _options: RequiredOptions;\n _qr?: QRCode;\n _image?: HTMLImageElement;\n\n //TODO don't pass all options to this class\n constructor(options: RequiredOptions) {\n this._canvas = document.createElement(\"canvas\");\n this._canvas.width = options.width;\n this._canvas.height = options.height;\n this._options = options;\n }\n\n get context(): CanvasRenderingContext2D | null {\n return this._canvas.getContext(\"2d\");\n }\n\n get width(): number {\n return this._canvas.width;\n }\n\n get height(): number {\n return this._canvas.height;\n }\n\n getCanvas(): HTMLCanvasElement {\n return this._canvas;\n }\n\n clear(): void {\n const canvasContext = this.context;\n\n if (canvasContext) {\n canvasContext.clearRect(0, 0, this._canvas.width, this._canvas.height);\n }\n }\n\n async drawQR(qr: QRCode): Promise {\n const count = qr.getModuleCount();\n const minSize = Math.min(this._options.width, this._options.height) - this._options.margin * 2;\n const dotSize = Math.floor(minSize / count);\n let drawImageSize = {\n hideXDots: 0,\n hideYDots: 0,\n width: 0,\n height: 0\n };\n\n this._qr = qr;\n\n if (this._options.image) {\n await this.loadImage();\n if (!this._image) return;\n const { imageOptions, qrOptions } = this._options;\n const coverLevel = imageOptions.imageSize * errorCorrectionPercents[qrOptions.errorCorrectionLevel];\n const maxHiddenDots = Math.floor(coverLevel * count * count);\n\n drawImageSize = calculateImageSize({\n originalWidth: this._image.width,\n originalHeight: this._image.height,\n maxHiddenDots,\n maxHiddenAxisDots: count - 14,\n dotSize\n });\n }\n\n this.clear();\n this.drawBackground();\n this.drawDots((i: number, j: number): boolean => {\n if (this._options.imageOptions.hideBackgroundDots) {\n if (\n i >= (count - drawImageSize.hideXDots) / 2 &&\n i < (count + drawImageSize.hideXDots) / 2 &&\n j >= (count - drawImageSize.hideYDots) / 2 &&\n j < (count + drawImageSize.hideYDots) / 2\n ) {\n return false;\n }\n }\n\n if (squareMask[i]?.[j] || squareMask[i - count + 7]?.[j] || squareMask[i]?.[j - count + 7]) {\n return false;\n }\n\n if (dotMask[i]?.[j] || dotMask[i - count + 7]?.[j] || dotMask[i]?.[j - count + 7]) {\n return false;\n }\n\n return true;\n });\n this.drawCorners();\n\n if (this._options.image) {\n this.drawImage({ width: drawImageSize.width, height: drawImageSize.height, count, dotSize });\n }\n }\n\n drawBackground(): void {\n const canvasContext = this.context;\n const options = this._options;\n\n if (canvasContext) {\n if (options.backgroundOptions.gradient) {\n const gradientOptions = options.backgroundOptions.gradient;\n const gradient = this._createGradient({\n context: canvasContext,\n options: gradientOptions,\n additionalRotation: 0,\n x: 0,\n y: 0,\n size: this._canvas.width > this._canvas.height ? this._canvas.width : this._canvas.height\n });\n\n gradientOptions.colorStops.forEach(({ offset, color }: { offset: number; color: string }) => {\n gradient.addColorStop(offset, color);\n });\n\n canvasContext.fillStyle = gradient;\n } else if (options.backgroundOptions.color) {\n canvasContext.fillStyle = options.backgroundOptions.color;\n }\n canvasContext.fillRect(0, 0, this._canvas.width, this._canvas.height);\n }\n }\n\n drawDots(filter?: FilterFunction): void {\n if (!this._qr) {\n throw \"QR code is not defined\";\n }\n\n const canvasContext = this.context;\n\n if (!canvasContext) {\n throw \"QR code is not defined\";\n }\n\n const options = this._options;\n const count = this._qr.getModuleCount();\n\n if (count > options.width || count > options.height) {\n throw \"The canvas is too small.\";\n }\n\n const minSize = Math.min(options.width, options.height) - options.margin * 2;\n const dotSize = Math.floor(minSize / count);\n const xBeginning = Math.floor((options.width - count * dotSize) / 2);\n const yBeginning = Math.floor((options.height - count * dotSize) / 2);\n const dot = new QRDot({ context: canvasContext, type: options.dotsOptions.type });\n\n canvasContext.beginPath();\n\n for (let i = 0; i < count; i++) {\n for (let j = 0; j < count; j++) {\n if (filter && !filter(i, j)) {\n continue;\n }\n if (!this._qr.isDark(i, j)) {\n continue;\n }\n dot.draw(\n yBeginning + j * dotSize,\n xBeginning + i * dotSize,\n dotSize,\n (xOffset: number, yOffset: number): boolean => {\n if (i + xOffset < 0 || j + yOffset < 0 || i + xOffset >= count || j + yOffset >= count) return false;\n if (filter && !filter(i + xOffset, j + yOffset)) return false;\n return !!this._qr && this._qr.isDark(i + xOffset, j + yOffset);\n }\n );\n }\n }\n\n if (options.dotsOptions.gradient) {\n const gradientOptions = options.dotsOptions.gradient;\n const gradient = this._createGradient({\n context: canvasContext,\n options: gradientOptions,\n additionalRotation: 0,\n x: xBeginning,\n y: yBeginning,\n size: count * dotSize\n });\n\n gradientOptions.colorStops.forEach(({ offset, color }: { offset: number; color: string }) => {\n gradient.addColorStop(offset, color);\n });\n\n canvasContext.fillStyle = canvasContext.strokeStyle = gradient;\n } else if (options.dotsOptions.color) {\n canvasContext.fillStyle = canvasContext.strokeStyle = options.dotsOptions.color;\n }\n\n canvasContext.fill(\"evenodd\");\n }\n\n drawCorners(filter?: FilterFunction): void {\n if (!this._qr) {\n throw \"QR code is not defined\";\n }\n\n const canvasContext = this.context;\n\n if (!canvasContext) {\n throw \"QR code is not defined\";\n }\n\n const options = this._options;\n\n const count = this._qr.getModuleCount();\n const minSize = Math.min(options.width, options.height) - options.margin * 2;\n const dotSize = Math.floor(minSize / count);\n const cornersSquareSize = dotSize * 7;\n const cornersDotSize = dotSize * 3;\n const xBeginning = Math.floor((options.width - count * dotSize) / 2);\n const yBeginning = Math.floor((options.height - count * dotSize) / 2);\n\n [\n [0, 0, 0],\n [1, 0, Math.PI / 2],\n [0, 1, -Math.PI / 2]\n ].forEach(([column, row, rotation]) => {\n if (filter && !filter(column, row)) {\n return;\n }\n\n const x = xBeginning + column * dotSize * (count - 7);\n const y = yBeginning + row * dotSize * (count - 7);\n\n if (options.cornersSquareOptions?.type) {\n const cornersSquare = new QRCornerSquare({ context: canvasContext, type: options.cornersSquareOptions?.type });\n\n canvasContext.beginPath();\n cornersSquare.draw(x, y, cornersSquareSize, rotation);\n } else {\n const dot = new QRDot({ context: canvasContext, type: options.dotsOptions.type });\n\n canvasContext.beginPath();\n\n for (let i = 0; i < squareMask.length; i++) {\n for (let j = 0; j < squareMask[i].length; j++) {\n if (!squareMask[i]?.[j]) {\n continue;\n }\n\n dot.draw(\n x + i * dotSize,\n y + j * dotSize,\n dotSize,\n (xOffset: number, yOffset: number): boolean => !!squareMask[i + xOffset]?.[j + yOffset]\n );\n }\n }\n }\n\n if (options.cornersSquareOptions?.gradient) {\n const gradientOptions = options.cornersSquareOptions.gradient;\n const gradient = this._createGradient({\n context: canvasContext,\n options: gradientOptions,\n additionalRotation: rotation,\n x,\n y,\n size: cornersSquareSize\n });\n\n gradientOptions.colorStops.forEach(({ offset, color }: { offset: number; color: string }) => {\n gradient.addColorStop(offset, color);\n });\n\n canvasContext.fillStyle = canvasContext.strokeStyle = gradient;\n } else if (options.cornersSquareOptions?.color) {\n canvasContext.fillStyle = canvasContext.strokeStyle = options.cornersSquareOptions.color;\n }\n\n canvasContext.fill(\"evenodd\");\n\n if (options.cornersDotOptions?.type) {\n const cornersDot = new QRCornerDot({ context: canvasContext, type: options.cornersDotOptions?.type });\n\n canvasContext.beginPath();\n cornersDot.draw(x + dotSize * 2, y + dotSize * 2, cornersDotSize, rotation);\n } else {\n const dot = new QRDot({ context: canvasContext, type: options.dotsOptions.type });\n\n canvasContext.beginPath();\n\n for (let i = 0; i < dotMask.length; i++) {\n for (let j = 0; j < dotMask[i].length; j++) {\n if (!dotMask[i]?.[j]) {\n continue;\n }\n\n dot.draw(\n x + i * dotSize,\n y + j * dotSize,\n dotSize,\n (xOffset: number, yOffset: number): boolean => !!dotMask[i + xOffset]?.[j + yOffset]\n );\n }\n }\n }\n\n if (options.cornersDotOptions?.gradient) {\n const gradientOptions = options.cornersDotOptions.gradient;\n const gradient = this._createGradient({\n context: canvasContext,\n options: gradientOptions,\n additionalRotation: rotation,\n x: x + dotSize * 2,\n y: y + dotSize * 2,\n size: cornersDotSize\n });\n\n gradientOptions.colorStops.forEach(({ offset, color }: { offset: number; color: string }) => {\n gradient.addColorStop(offset, color);\n });\n\n canvasContext.fillStyle = canvasContext.strokeStyle = gradient;\n } else if (options.cornersDotOptions?.color) {\n canvasContext.fillStyle = canvasContext.strokeStyle = options.cornersDotOptions.color;\n }\n\n canvasContext.fill(\"evenodd\");\n });\n }\n\n loadImage(): Promise {\n return new Promise((resolve, reject) => {\n const options = this._options;\n const image = new Image();\n\n if (!options.image) {\n return reject(\"Image is not defined\");\n }\n\n if (typeof options.imageOptions.crossOrigin === \"string\") {\n image.crossOrigin = options.imageOptions.crossOrigin;\n }\n\n this._image = image;\n image.onload = (): void => {\n resolve();\n };\n image.src = options.image;\n });\n }\n\n drawImage({\n width,\n height,\n count,\n dotSize\n }: {\n width: number;\n height: number;\n count: number;\n dotSize: number;\n }): void {\n const canvasContext = this.context;\n\n if (!canvasContext) {\n throw \"canvasContext is not defined\";\n }\n\n if (!this._image) {\n throw \"image is not defined\";\n }\n\n const options = this._options;\n const xBeginning = Math.floor((options.width - count * dotSize) / 2);\n const yBeginning = Math.floor((options.height - count * dotSize) / 2);\n const dx = xBeginning + options.imageOptions.margin + (count * dotSize - width) / 2;\n const dy = yBeginning + options.imageOptions.margin + (count * dotSize - height) / 2;\n const dw = width - options.imageOptions.margin * 2;\n const dh = height - options.imageOptions.margin * 2;\n\n canvasContext.drawImage(this._image, dx, dy, dw < 0 ? 0 : dw, dh < 0 ? 0 : dh);\n }\n\n _createGradient({\n context,\n options,\n additionalRotation,\n x,\n y,\n size\n }: {\n context: CanvasRenderingContext2D;\n options: Gradient;\n additionalRotation: number;\n x: number;\n y: number;\n size: number;\n }): CanvasGradient {\n let gradient;\n\n if (options.type === gradientTypes.radial) {\n gradient = context.createRadialGradient(x + size / 2, y + size / 2, 0, x + size / 2, y + size / 2, size / 2);\n } else {\n const rotation = ((options.rotation || 0) + additionalRotation) % (2 * Math.PI);\n const positiveRotation = (rotation + 2 * Math.PI) % (2 * Math.PI);\n let x0 = x + size / 2;\n let y0 = y + size / 2;\n let x1 = x + size / 2;\n let y1 = y + size / 2;\n\n if (\n (positiveRotation >= 0 && positiveRotation <= 0.25 * Math.PI) ||\n (positiveRotation > 1.75 * Math.PI && positiveRotation <= 2 * Math.PI)\n ) {\n x0 = x0 - size / 2;\n y0 = y0 - (size / 2) * Math.tan(rotation);\n x1 = x1 + size / 2;\n y1 = y1 + (size / 2) * Math.tan(rotation);\n } else if (positiveRotation > 0.25 * Math.PI && positiveRotation <= 0.75 * Math.PI) {\n y0 = y0 - size / 2;\n x0 = x0 - size / 2 / Math.tan(rotation);\n y1 = y1 + size / 2;\n x1 = x1 + size / 2 / Math.tan(rotation);\n } else if (positiveRotation > 0.75 * Math.PI && positiveRotation <= 1.25 * Math.PI) {\n x0 = x0 + size / 2;\n y0 = y0 + (size / 2) * Math.tan(rotation);\n x1 = x1 - size / 2;\n y1 = y1 - (size / 2) * Math.tan(rotation);\n } else if (positiveRotation > 1.25 * Math.PI && positiveRotation <= 1.75 * Math.PI) {\n y0 = y0 + size / 2;\n x0 = x0 + size / 2 / Math.tan(rotation);\n y1 = y1 - size / 2;\n x1 = x1 - size / 2 / Math.tan(rotation);\n }\n\n gradient = context.createLinearGradient(Math.round(x0), Math.round(y0), Math.round(x1), Math.round(y1));\n }\n\n return gradient;\n }\n}\n","import dotTypes from \"../../../constants/dotTypes\";\nimport { DotType, GetNeighbor, DrawArgs, BasicFigureDrawArgs, RotateFigureArgs } from \"../../../types\";\n\nexport default class QRDot {\n _element?: SVGElement;\n _svg: SVGElement;\n _type: DotType;\n\n constructor({ svg, type }: { svg: SVGElement; type: DotType }) {\n this._svg = svg;\n this._type = type;\n }\n\n draw(x: number, y: number, size: number, getNeighbor: GetNeighbor): void {\n const type = this._type;\n let drawFunction;\n\n switch (type) {\n case dotTypes.dots:\n drawFunction = this._drawDot;\n break;\n case dotTypes.classy:\n drawFunction = this._drawClassy;\n break;\n case dotTypes.classyRounded:\n drawFunction = this._drawClassyRounded;\n break;\n case dotTypes.rounded:\n drawFunction = this._drawRounded;\n break;\n case dotTypes.extraRounded:\n drawFunction = this._drawExtraRounded;\n break;\n case dotTypes.square:\n default:\n drawFunction = this._drawSquare;\n }\n\n drawFunction.call(this, { x, y, size, getNeighbor });\n }\n\n _rotateFigure({ x, y, size, rotation = 0, draw }: RotateFigureArgs): void {\n const cx = x + size / 2;\n const cy = y + size / 2;\n\n draw();\n this._element?.setAttribute(\"transform\", `rotate(${(180 * rotation) / Math.PI},${cx},${cy})`);\n }\n\n _basicDot(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"circle\");\n this._element.setAttribute(\"cx\", String(x + size / 2));\n this._element.setAttribute(\"cy\", String(y + size / 2));\n this._element.setAttribute(\"r\", String(size / 2));\n }\n });\n }\n\n _basicSquare(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"rect\");\n this._element.setAttribute(\"x\", String(x));\n this._element.setAttribute(\"y\", String(y));\n this._element.setAttribute(\"width\", String(size));\n this._element.setAttribute(\"height\", String(size));\n }\n });\n }\n\n //if rotation === 0 - right side is rounded\n _basicSideRounded(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n this._element.setAttribute(\n \"d\",\n `M ${x} ${y}` + //go to top left position\n `v ${size}` + //draw line to left bottom corner\n `h ${size / 2}` + //draw line to left bottom corner + half of size right\n `a ${size / 2} ${size / 2}, 0, 0, 0, 0 ${-size}` // draw rounded corner\n );\n }\n });\n }\n\n //if rotation === 0 - top right corner is rounded\n _basicCornerRounded(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n this._element.setAttribute(\n \"d\",\n `M ${x} ${y}` + //go to top left position\n `v ${size}` + //draw line to left bottom corner\n `h ${size}` + //draw line to right bottom corner\n `v ${-size / 2}` + //draw line to right bottom corner + half of size top\n `a ${size / 2} ${size / 2}, 0, 0, 0, ${-size / 2} ${-size / 2}` // draw rounded corner\n );\n }\n });\n }\n\n //if rotation === 0 - top right corner is rounded\n _basicCornerExtraRounded(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n this._element.setAttribute(\n \"d\",\n `M ${x} ${y}` + //go to top left position\n `v ${size}` + //draw line to left bottom corner\n `h ${size}` + //draw line to right bottom corner\n `a ${size} ${size}, 0, 0, 0, ${-size} ${-size}` // draw rounded top right corner\n );\n }\n });\n }\n\n //if rotation === 0 - left bottom and right top corners are rounded\n _basicCornersRounded(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n this._element.setAttribute(\n \"d\",\n `M ${x} ${y}` + //go to left top position\n `v ${size / 2}` + //draw line to left top corner + half of size bottom\n `a ${size / 2} ${size / 2}, 0, 0, 0, ${size / 2} ${size / 2}` + // draw rounded left bottom corner\n `h ${size / 2}` + //draw line to right bottom corner\n `v ${-size / 2}` + //draw line to right bottom corner + half of size top\n `a ${size / 2} ${size / 2}, 0, 0, 0, ${-size / 2} ${-size / 2}` // draw rounded right top corner\n );\n }\n });\n }\n\n _drawDot({ x, y, size }: DrawArgs): void {\n this._basicDot({ x, y, size, rotation: 0 });\n }\n\n _drawSquare({ x, y, size }: DrawArgs): void {\n this._basicSquare({ x, y, size, rotation: 0 });\n }\n\n _drawRounded({ x, y, size, getNeighbor }: DrawArgs): void {\n const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\n const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\n const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\n const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\n\n const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\n\n if (neighborsCount === 0) {\n this._basicDot({ x, y, size, rotation: 0 });\n return;\n }\n\n if (neighborsCount > 2 || (leftNeighbor && rightNeighbor) || (topNeighbor && bottomNeighbor)) {\n this._basicSquare({ x, y, size, rotation: 0 });\n return;\n }\n\n if (neighborsCount === 2) {\n let rotation = 0;\n\n if (leftNeighbor && topNeighbor) {\n rotation = Math.PI / 2;\n } else if (topNeighbor && rightNeighbor) {\n rotation = Math.PI;\n } else if (rightNeighbor && bottomNeighbor) {\n rotation = -Math.PI / 2;\n }\n\n this._basicCornerRounded({ x, y, size, rotation });\n return;\n }\n\n if (neighborsCount === 1) {\n let rotation = 0;\n\n if (topNeighbor) {\n rotation = Math.PI / 2;\n } else if (rightNeighbor) {\n rotation = Math.PI;\n } else if (bottomNeighbor) {\n rotation = -Math.PI / 2;\n }\n\n this._basicSideRounded({ x, y, size, rotation });\n return;\n }\n }\n\n _drawExtraRounded({ x, y, size, getNeighbor }: DrawArgs): void {\n const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\n const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\n const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\n const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\n\n const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\n\n if (neighborsCount === 0) {\n this._basicDot({ x, y, size, rotation: 0 });\n return;\n }\n\n if (neighborsCount > 2 || (leftNeighbor && rightNeighbor) || (topNeighbor && bottomNeighbor)) {\n this._basicSquare({ x, y, size, rotation: 0 });\n return;\n }\n\n if (neighborsCount === 2) {\n let rotation = 0;\n\n if (leftNeighbor && topNeighbor) {\n rotation = Math.PI / 2;\n } else if (topNeighbor && rightNeighbor) {\n rotation = Math.PI;\n } else if (rightNeighbor && bottomNeighbor) {\n rotation = -Math.PI / 2;\n }\n\n this._basicCornerExtraRounded({ x, y, size, rotation });\n return;\n }\n\n if (neighborsCount === 1) {\n let rotation = 0;\n\n if (topNeighbor) {\n rotation = Math.PI / 2;\n } else if (rightNeighbor) {\n rotation = Math.PI;\n } else if (bottomNeighbor) {\n rotation = -Math.PI / 2;\n }\n\n this._basicSideRounded({ x, y, size, rotation });\n return;\n }\n }\n\n _drawClassy({ x, y, size, getNeighbor }: DrawArgs): void {\n const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\n const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\n const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\n const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\n\n const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\n\n if (neighborsCount === 0) {\n this._basicCornersRounded({ x, y, size, rotation: Math.PI / 2 });\n return;\n }\n\n if (!leftNeighbor && !topNeighbor) {\n this._basicCornerRounded({ x, y, size, rotation: -Math.PI / 2 });\n return;\n }\n\n if (!rightNeighbor && !bottomNeighbor) {\n this._basicCornerRounded({ x, y, size, rotation: Math.PI / 2 });\n return;\n }\n\n this._basicSquare({ x, y, size, rotation: 0 });\n }\n\n _drawClassyRounded({ x, y, size, getNeighbor }: DrawArgs): void {\n const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\n const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\n const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\n const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\n\n const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\n\n if (neighborsCount === 0) {\n this._basicCornersRounded({ x, y, size, rotation: Math.PI / 2 });\n return;\n }\n\n if (!leftNeighbor && !topNeighbor) {\n this._basicCornerExtraRounded({ x, y, size, rotation: -Math.PI / 2 });\n return;\n }\n\n if (!rightNeighbor && !bottomNeighbor) {\n this._basicCornerExtraRounded({ x, y, size, rotation: Math.PI / 2 });\n return;\n }\n\n this._basicSquare({ x, y, size, rotation: 0 });\n }\n}\n","import cornerSquareTypes from \"../../../constants/cornerSquareTypes\";\nimport { CornerSquareType, DrawArgs, BasicFigureDrawArgs, RotateFigureArgs } from \"../../../types\";\n\nexport default class QRCornerSquare {\n _element?: SVGElement;\n _svg: SVGElement;\n _type: CornerSquareType;\n\n constructor({ svg, type }: { svg: SVGElement; type: CornerSquareType }) {\n this._svg = svg;\n this._type = type;\n }\n\n draw(x: number, y: number, size: number, rotation: number): void {\n const type = this._type;\n let drawFunction;\n\n switch (type) {\n case cornerSquareTypes.square:\n drawFunction = this._drawSquare;\n break;\n case cornerSquareTypes.extraRounded:\n drawFunction = this._drawExtraRounded;\n break;\n case cornerSquareTypes.dot:\n default:\n drawFunction = this._drawDot;\n }\n\n drawFunction.call(this, { x, y, size, rotation });\n }\n\n _rotateFigure({ x, y, size, rotation = 0, draw }: RotateFigureArgs): void {\n const cx = x + size / 2;\n const cy = y + size / 2;\n\n draw();\n this._element?.setAttribute(\"transform\", `rotate(${(180 * rotation) / Math.PI},${cx},${cy})`);\n }\n\n _basicDot(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n const dotSize = size / 7;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n this._element.setAttribute(\"clip-rule\", \"evenodd\");\n this._element.setAttribute(\n \"d\",\n `M ${x + size / 2} ${y}` + // M cx, y // Move to top of ring\n `a ${size / 2} ${size / 2} 0 1 0 0.1 0` + // a outerRadius, outerRadius, 0, 1, 0, 1, 0 // Draw outer arc, but don't close it\n `z` + // Z // Close the outer shape\n `m 0 ${dotSize}` + // m -1 outerRadius-innerRadius // Move to top point of inner radius\n `a ${size / 2 - dotSize} ${size / 2 - dotSize} 0 1 1 -0.1 0` + // a innerRadius, innerRadius, 0, 1, 1, -1, 0 // Draw inner arc, but don't close it\n `Z` // Z // Close the inner ring. Actually will still work without, but inner ring will have one unit missing in stroke\n );\n }\n });\n }\n\n _basicSquare(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n const dotSize = size / 7;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n this._element.setAttribute(\"clip-rule\", \"evenodd\");\n this._element.setAttribute(\n \"d\",\n `M ${x} ${y}` +\n `v ${size}` +\n `h ${size}` +\n `v ${-size}` +\n `z` +\n `M ${x + dotSize} ${y + dotSize}` +\n `h ${size - 2 * dotSize}` +\n `v ${size - 2 * dotSize}` +\n `h ${-size + 2 * dotSize}` +\n `z`\n );\n }\n });\n }\n\n _basicExtraRounded(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n const dotSize = size / 7;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n this._element.setAttribute(\"clip-rule\", \"evenodd\");\n this._element.setAttribute(\n \"d\",\n `M ${x} ${y + 2.5 * dotSize}` +\n `v ${2 * dotSize}` +\n `a ${2.5 * dotSize} ${2.5 * dotSize}, 0, 0, 0, ${dotSize * 2.5} ${dotSize * 2.5}` +\n `h ${2 * dotSize}` +\n `a ${2.5 * dotSize} ${2.5 * dotSize}, 0, 0, 0, ${dotSize * 2.5} ${-dotSize * 2.5}` +\n `v ${-2 * dotSize}` +\n `a ${2.5 * dotSize} ${2.5 * dotSize}, 0, 0, 0, ${-dotSize * 2.5} ${-dotSize * 2.5}` +\n `h ${-2 * dotSize}` +\n `a ${2.5 * dotSize} ${2.5 * dotSize}, 0, 0, 0, ${-dotSize * 2.5} ${dotSize * 2.5}` +\n `M ${x + 2.5 * dotSize} ${y + dotSize}` +\n `h ${2 * dotSize}` +\n `a ${1.5 * dotSize} ${1.5 * dotSize}, 0, 0, 1, ${dotSize * 1.5} ${dotSize * 1.5}` +\n `v ${2 * dotSize}` +\n `a ${1.5 * dotSize} ${1.5 * dotSize}, 0, 0, 1, ${-dotSize * 1.5} ${dotSize * 1.5}` +\n `h ${-2 * dotSize}` +\n `a ${1.5 * dotSize} ${1.5 * dotSize}, 0, 0, 1, ${-dotSize * 1.5} ${-dotSize * 1.5}` +\n `v ${-2 * dotSize}` +\n `a ${1.5 * dotSize} ${1.5 * dotSize}, 0, 0, 1, ${dotSize * 1.5} ${-dotSize * 1.5}`\n );\n }\n });\n }\n\n _drawDot({ x, y, size, rotation }: DrawArgs): void {\n this._basicDot({ x, y, size, rotation });\n }\n\n _drawSquare({ x, y, size, rotation }: DrawArgs): void {\n this._basicSquare({ x, y, size, rotation });\n }\n\n _drawExtraRounded({ x, y, size, rotation }: DrawArgs): void {\n this._basicExtraRounded({ x, y, size, rotation });\n }\n}\n","import cornerDotTypes from \"../../../constants/cornerDotTypes\";\nimport { CornerDotType, RotateFigureArgs, BasicFigureDrawArgs, DrawArgs } from \"../../../types\";\n\nexport default class QRCornerDot {\n _element?: SVGElement;\n _svg: SVGElement;\n _type: CornerDotType;\n\n constructor({ svg, type }: { svg: SVGElement; type: CornerDotType }) {\n this._svg = svg;\n this._type = type;\n }\n\n draw(x: number, y: number, size: number, rotation: number): void {\n const type = this._type;\n let drawFunction;\n\n switch (type) {\n case cornerDotTypes.square:\n drawFunction = this._drawSquare;\n break;\n case cornerDotTypes.dot:\n default:\n drawFunction = this._drawDot;\n }\n\n drawFunction.call(this, { x, y, size, rotation });\n }\n\n _rotateFigure({ x, y, size, rotation = 0, draw }: RotateFigureArgs): void {\n const cx = x + size / 2;\n const cy = y + size / 2;\n\n draw();\n this._element?.setAttribute(\"transform\", `rotate(${(180 * rotation) / Math.PI},${cx},${cy})`);\n }\n\n _basicDot(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"circle\");\n this._element.setAttribute(\"cx\", String(x + size / 2));\n this._element.setAttribute(\"cy\", String(y + size / 2));\n this._element.setAttribute(\"r\", String(size / 2));\n }\n });\n }\n\n _basicSquare(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"rect\");\n this._element.setAttribute(\"x\", String(x));\n this._element.setAttribute(\"y\", String(y));\n this._element.setAttribute(\"width\", String(size));\n this._element.setAttribute(\"height\", String(size));\n }\n });\n }\n\n _drawDot({ x, y, size, rotation }: DrawArgs): void {\n this._basicDot({ x, y, size, rotation });\n }\n\n _drawSquare({ x, y, size, rotation }: DrawArgs): void {\n this._basicSquare({ x, y, size, rotation });\n }\n}\n","import calculateImageSize from \"../tools/calculateImageSize\";\nimport errorCorrectionPercents from \"../constants/errorCorrectionPercents\";\nimport QRDot from \"../figures/dot/svg/QRDot\";\nimport QRCornerSquare from \"../figures/cornerSquare/svg/QRCornerSquare\";\nimport QRCornerDot from \"../figures/cornerDot/svg/QRCornerDot\";\nimport { RequiredOptions } from \"./QROptions\";\nimport gradientTypes from \"../constants/gradientTypes\";\nimport { QRCode, FilterFunction, Gradient } from \"../types\";\n\nconst squareMask = [\n [1, 1, 1, 1, 1, 1, 1],\n [1, 0, 0, 0, 0, 0, 1],\n [1, 0, 0, 0, 0, 0, 1],\n [1, 0, 0, 0, 0, 0, 1],\n [1, 0, 0, 0, 0, 0, 1],\n [1, 0, 0, 0, 0, 0, 1],\n [1, 1, 1, 1, 1, 1, 1]\n];\n\nconst dotMask = [\n [0, 0, 0, 0, 0, 0, 0],\n [0, 0, 0, 0, 0, 0, 0],\n [0, 0, 1, 1, 1, 0, 0],\n [0, 0, 1, 1, 1, 0, 0],\n [0, 0, 1, 1, 1, 0, 0],\n [0, 0, 0, 0, 0, 0, 0],\n [0, 0, 0, 0, 0, 0, 0]\n];\n\nexport default class QRSVG {\n _element: SVGElement;\n _style: SVGStyleElement;\n _defs: SVGElement;\n _dotsClipPath?: SVGElement;\n _cornersSquareClipPath?: SVGElement;\n _cornersDotClipPath?: SVGElement;\n _dots?: SVGElement;\n _cornerSquares?: SVGElement;\n _corners?: SVGElement;\n _cornerDots?: SVGElement;\n _options: RequiredOptions;\n _qr?: QRCode;\n _image?: HTMLImageElement;\n\n //TODO don't pass all options to this class\n constructor(options: RequiredOptions) {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\");\n this._element.setAttribute(\"width\", String(options.width));\n this._element.setAttribute(\"height\", String(options.height));\n this._element.setAttribute(\"xmlns:xlink\", \"http://www.w3.org/1999/xlink\");\n this._defs = document.createElementNS(\"http://www.w3.org/2000/svg\", \"defs\");\n this._style = document.createElementNS(\"http://www.w3.org/2000/svg\", \"style\");\n\n this._options = options;\n }\n\n get width(): number {\n return this._options.width;\n }\n\n get height(): number {\n return this._options.height;\n }\n\n getElement(): SVGElement {\n return this._element;\n }\n\n clear(): void {\n const oldElement = this._element;\n this._element = oldElement.cloneNode(false) as SVGElement;\n oldElement?.parentNode?.replaceChild(this._element, oldElement);\n this._defs = document.createElementNS(\"http://www.w3.org/2000/svg\", \"defs\");\n this._style = document.createElementNS(\"http://www.w3.org/2000/svg\", \"style\");\n this._element.appendChild(this._style);\n this._element.appendChild(this._defs);\n }\n\n async drawQR(qr: QRCode): Promise {\n const count = qr.getModuleCount();\n const minSize = Math.min(this._options.width, this._options.height) - this._options.margin * 2;\n const dotSize = Math.floor(minSize / count);\n let drawImageSize = {\n hideXDots: 0,\n hideYDots: 0,\n width: 0,\n height: 0\n };\n\n this._qr = qr;\n\n if (this._options.image) {\n //We need it to get image size\n await this.loadImage();\n if (!this._image) return;\n const { imageOptions, qrOptions } = this._options;\n const coverLevel = imageOptions.imageSize * errorCorrectionPercents[qrOptions.errorCorrectionLevel];\n const maxHiddenDots = Math.floor(coverLevel * count * count);\n\n drawImageSize = calculateImageSize({\n originalWidth: this._image.width,\n originalHeight: this._image.height,\n maxHiddenDots,\n maxHiddenAxisDots: count - 14,\n dotSize\n });\n }\n\n this._element.appendChild(this._style);\n this._element.appendChild(this._defs);\n\n this.clear();\n this.drawBackground();\n this.drawDots((i: number, j: number): boolean => {\n if (this._options.imageOptions.hideBackgroundDots) {\n if (\n i >= (count - drawImageSize.hideXDots) / 2 &&\n i < (count + drawImageSize.hideXDots) / 2 &&\n j >= (count - drawImageSize.hideYDots) / 2 &&\n j < (count + drawImageSize.hideYDots) / 2\n ) {\n return false;\n }\n }\n\n if (squareMask[i]?.[j] || squareMask[i - count + 7]?.[j] || squareMask[i]?.[j - count + 7]) {\n return false;\n }\n\n if (dotMask[i]?.[j] || dotMask[i - count + 7]?.[j] || dotMask[i]?.[j - count + 7]) {\n return false;\n }\n\n return true;\n });\n this.drawCorners();\n\n if (this._options.image) {\n await this.drawImage({ width: drawImageSize.width, height: drawImageSize.height, count, dotSize });\n }\n }\n\n drawBackground(): void {\n const element = this._element;\n const options = this._options;\n\n if (element) {\n const gradientOptions = options.backgroundOptions?.gradient;\n const color = options.backgroundOptions?.color;\n\n if (gradientOptions) {\n this._createColor({\n options: gradientOptions,\n color: color,\n additionalRotation: 0,\n x: 0,\n y: 0,\n height: options.height,\n width: options.width,\n name: \"background-color\"\n });\n } else if (options.backgroundOptions?.color) {\n this._createStyle({\n color: color,\n name: \"background-color\"\n });\n }\n }\n }\n\n drawDots(filter?: FilterFunction): void {\n if (!this._qr) {\n throw \"QR code is not defined\";\n }\n\n const options = this._options;\n const count = this._qr.getModuleCount();\n\n if (count > options.width || count > options.height) {\n throw \"The canvas is too small.\";\n }\n\n const minSize = Math.min(options.width, options.height) - options.margin * 2;\n const dotSize = Math.floor(minSize / count);\n const xBeginning = Math.floor((options.width - count * dotSize) / 2);\n const yBeginning = Math.floor((options.height - count * dotSize) / 2);\n const dot = new QRDot({ svg: this._element, type: options.dotsOptions.type });\n\n if (options.dotsOptions?.gradient) {\n this._dotsClipPath = document.createElementNS(\"http://www.w3.org/2000/svg\", \"clipPath\");\n this._dotsClipPath.setAttribute(\"id\", \"clip-path-dot-color\");\n this._defs.appendChild(this._dotsClipPath);\n this._createColor({\n options: options.dotsOptions?.gradient,\n color: options.dotsOptions.color,\n additionalRotation: 0,\n x: xBeginning,\n y: yBeginning,\n height: count * dotSize,\n width: count * dotSize,\n name: \"dot-color\"\n });\n } else if (options.dotsOptions.color) {\n this._dots = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n this._dots.setAttribute(\"class\", \"dot-color\");\n this._element.appendChild(this._dots);\n this._createStyle({\n color: options.dotsOptions.color,\n name: \"dot-color\"\n });\n }\n\n for (let i = 0; i < count; i++) {\n for (let j = 0; j < count; j++) {\n if (filter && !filter(i, j)) {\n continue;\n }\n if (!this._qr?.isDark(i, j)) {\n continue;\n }\n\n dot.draw(\n yBeginning + j * dotSize,\n xBeginning + i * dotSize,\n dotSize,\n (xOffset: number, yOffset: number): boolean => {\n if (i + xOffset < 0 || j + yOffset < 0 || i + xOffset >= count || j + yOffset >= count) return false;\n if (filter && !filter(i + xOffset, j + yOffset)) return false;\n return !!this._qr && this._qr.isDark(i + xOffset, j + yOffset);\n }\n );\n\n if (dot._element && this._dotsClipPath) {\n this._dotsClipPath.appendChild(dot._element);\n } else if (dot._element && this._dots) {\n this._dots.appendChild(dot._element);\n }\n }\n }\n }\n\n drawCorners(): void {\n if (!this._qr) {\n throw \"QR code is not defined\";\n }\n\n const element = this._element;\n const options = this._options;\n\n if (!element) {\n throw \"Element code is not defined\";\n }\n\n const count = this._qr.getModuleCount();\n const minSize = Math.min(options.width, options.height) - options.margin * 2;\n const dotSize = Math.floor(minSize / count);\n const cornersSquareSize = dotSize * 7;\n const cornersDotSize = dotSize * 3;\n const xBeginning = Math.floor((options.width - count * dotSize) / 2);\n const yBeginning = Math.floor((options.height - count * dotSize) / 2);\n\n [\n [0, 0, 0],\n [1, 0, Math.PI / 2],\n [0, 1, -Math.PI / 2]\n ].forEach(([column, row, rotation]) => {\n const x = xBeginning + column * dotSize * (count - 7);\n const y = yBeginning + row * dotSize * (count - 7);\n let cornersSquareClipPath = this._dotsClipPath;\n let cornersDotClipPath = this._dotsClipPath;\n\n if (options.cornersSquareOptions?.gradient) {\n cornersSquareClipPath = document.createElementNS(\"http://www.w3.org/2000/svg\", \"clipPath\");\n cornersSquareClipPath.setAttribute(\"id\", `clip-path-corners-square-color-${column}-${row}`);\n this._defs.appendChild(cornersSquareClipPath);\n this._cornersSquareClipPath = this._cornersDotClipPath = cornersDotClipPath = cornersSquareClipPath;\n\n this._createColor({\n options: options.cornersSquareOptions?.gradient,\n color: options.cornersSquareOptions?.color,\n additionalRotation: rotation,\n x,\n y,\n height: cornersSquareSize,\n width: cornersSquareSize,\n name: `corners-square-color-${column}-${row}`\n });\n } else {\n this._cornerSquares = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n this._cornerSquares.setAttribute(\"class\", `corners-square-color-${column}-${row}`);\n this._element.appendChild(this._cornerSquares);\n this._createStyle({\n color: options.cornersSquareOptions?.color,\n name: `corners-square-color-${column}-${row}`\n });\n }\n\n if (options.cornersSquareOptions?.type) {\n const cornersSquare = new QRCornerSquare({ svg: this._element, type: options.cornersSquareOptions.type });\n\n cornersSquare.draw(x, y, cornersSquareSize, rotation);\n\n if (options.cornersSquareOptions?.gradient && cornersSquare._element && cornersSquareClipPath) {\n cornersSquareClipPath.appendChild(cornersSquare._element);\n } else if (cornersSquare._element && this._cornerSquares) {\n this._cornerSquares.appendChild(cornersSquare._element);\n }\n } else {\n const dot = new QRDot({ svg: this._element, type: options.dotsOptions.type });\n\n for (let i = 0; i < squareMask.length; i++) {\n for (let j = 0; j < squareMask[i].length; j++) {\n if (!squareMask[i]?.[j]) {\n continue;\n }\n\n dot.draw(\n x + i * dotSize,\n y + j * dotSize,\n dotSize,\n (xOffset: number, yOffset: number): boolean => !!squareMask[i + xOffset]?.[j + yOffset]\n );\n\n if (dot._element && this._cornersSquareClipPath) {\n this._cornersSquareClipPath.appendChild(dot._element);\n } else if (dot._element && this._cornerSquares) {\n this._cornerSquares.appendChild(dot._element);\n }\n }\n }\n }\n\n if (options.cornersDotOptions?.gradient) {\n cornersDotClipPath = document.createElementNS(\"http://www.w3.org/2000/svg\", \"clipPath\");\n cornersDotClipPath.setAttribute(\"id\", `clip-path-corners-dot-color-${column}-${row}`);\n this._defs.appendChild(cornersDotClipPath);\n this._cornersDotClipPath = cornersDotClipPath;\n\n this._createColor({\n options: options.cornersDotOptions?.gradient,\n color: options.cornersDotOptions?.color,\n additionalRotation: rotation,\n x: x + dotSize * 2,\n y: y + dotSize * 2,\n height: cornersDotSize,\n width: cornersDotSize,\n name: `corners-dot-color-${column}-${row}`\n });\n } else {\n this._cornerDots = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n this._cornerDots.setAttribute(\"class\", `corners-dot-color-${column}-${row}`);\n this._element.appendChild(this._cornerDots);\n this._createStyle({\n color: options.cornersDotOptions?.color,\n name: `corners-dot-color-${column}-${row}`\n });\n }\n\n if (options.cornersDotOptions?.type) {\n const cornersDot = new QRCornerDot({ svg: this._element, type: options.cornersDotOptions.type });\n\n cornersDot.draw(x + dotSize * 2, y + dotSize * 2, cornersDotSize, rotation);\n\n if (options.cornersDotOptions?.gradient && cornersDot._element && cornersDotClipPath) {\n cornersDotClipPath.appendChild(cornersDot._element);\n } else if (cornersDot._element && this._cornerDots) {\n this._cornerDots.appendChild(cornersDot._element);\n }\n } else {\n const dot = new QRDot({ svg: this._element, type: options.dotsOptions.type });\n\n for (let i = 0; i < dotMask.length; i++) {\n for (let j = 0; j < dotMask[i].length; j++) {\n if (!dotMask[i]?.[j]) {\n continue;\n }\n\n dot.draw(\n x + i * dotSize,\n y + j * dotSize,\n dotSize,\n (xOffset: number, yOffset: number): boolean => !!dotMask[i + xOffset]?.[j + yOffset]\n );\n\n if (dot._element && this._cornersDotClipPath) {\n this._cornersDotClipPath.appendChild(dot._element);\n } else if (dot._element && this._cornerDots) {\n this._cornerDots.appendChild(dot._element);\n }\n }\n }\n }\n });\n }\n\n loadImage(): Promise {\n return new Promise((resolve, reject) => {\n const options = this._options;\n const image = new Image();\n\n if (!options.image) {\n return reject(\"Image is not defined\");\n }\n\n if (typeof options.imageOptions.crossOrigin === \"string\") {\n image.crossOrigin = options.imageOptions.crossOrigin;\n }\n\n this._image = image;\n image.onload = (): void => {\n resolve();\n };\n image.src = options.image;\n });\n }\n\n async drawImage({\n width,\n height,\n count,\n dotSize\n }: {\n width: number;\n height: number;\n count: number;\n dotSize: number;\n }): Promise {\n const options = this._options;\n const xBeginning = Math.floor((options.width - count * dotSize) / 2);\n const yBeginning = Math.floor((options.height - count * dotSize) / 2);\n const dx = xBeginning + options.imageOptions.margin + (count * dotSize - width) / 2;\n const dy = yBeginning + options.imageOptions.margin + (count * dotSize - height) / 2;\n const dw = width - options.imageOptions.margin * 2;\n const dh = height - options.imageOptions.margin * 2;\n\n const image = document.createElementNS(\"http://www.w3.org/2000/svg\", \"image\");\n\n // const base64Image = await this._getBase64Image(options.image || \"\");\n const base64Image = \"./image.svg\";\n\n image.setAttribute(\"href\", base64Image);\n image.setAttribute(\"xlink:href\", base64Image);\n image.setAttribute(\"x\", String(dx));\n image.setAttribute(\"y\", String(dy));\n image.setAttribute(\"width\", `${dw}px`);\n image.setAttribute(\"height\", `${dh}px`);\n\n this._element.appendChild(image);\n }\n\n async _getImageBlob(url: string): Promise {\n const resp = await fetch(url);\n return resp.blob();\n }\n\n // convert a blob to base64\n _blobToBase64(blob: Blob): Promise {\n return new Promise((resolve) => {\n const reader = new FileReader();\n reader.onload = function () {\n const dataUrl = reader.result;\n resolve(dataUrl as string);\n };\n reader.readAsDataURL(blob);\n });\n }\n\n async _getBase64Image(url: string): Promise {\n if (url === \"\") {\n return new Promise((resolve) => {\n resolve(\"\");\n });\n }\n\n const blob = await this._getImageBlob(url);\n const base64 = await this._blobToBase64(blob);\n return base64;\n }\n\n _createColor({\n options,\n color,\n additionalRotation,\n x,\n y,\n height,\n width,\n name\n }: {\n options?: Gradient;\n color?: string;\n additionalRotation: number;\n x: number;\n y: number;\n height: number;\n width: number;\n name: string;\n }): void {\n const size = width > height ? width : height;\n const rect = document.createElementNS(\"http://www.w3.org/2000/svg\", \"rect\");\n rect.setAttribute(\"x\", String(x));\n rect.setAttribute(\"y\", String(y));\n rect.setAttribute(\"height\", String(height));\n rect.setAttribute(\"width\", String(width));\n rect.setAttribute(\"clip-path\", `url('#clip-path-${name}')`);\n\n if (options) {\n let gradient: SVGElement;\n if (options.type === gradientTypes.radial) {\n gradient = document.createElementNS(\"http://www.w3.org/2000/svg\", \"radialGradient\");\n gradient.setAttribute(\"id\", name);\n gradient.setAttribute(\"gradientUnits\", \"userSpaceOnUse\");\n gradient.setAttribute(\"fx\", String(x + width / 2));\n gradient.setAttribute(\"fy\", String(y + height / 2));\n gradient.setAttribute(\"cx\", String(x + width / 2));\n gradient.setAttribute(\"cy\", String(y + height / 2));\n gradient.setAttribute(\"r\", String(size / 2));\n } else {\n const rotation = ((options.rotation || 0) + additionalRotation) % (2 * Math.PI);\n const positiveRotation = (rotation + 2 * Math.PI) % (2 * Math.PI);\n let x0 = x + width / 2;\n let y0 = y + height / 2;\n let x1 = x + width / 2;\n let y1 = y + height / 2;\n\n if (\n (positiveRotation >= 0 && positiveRotation <= 0.25 * Math.PI) ||\n (positiveRotation > 1.75 * Math.PI && positiveRotation <= 2 * Math.PI)\n ) {\n x0 = x0 - width / 2;\n y0 = y0 - (height / 2) * Math.tan(rotation);\n x1 = x1 + width / 2;\n y1 = y1 + (height / 2) * Math.tan(rotation);\n } else if (positiveRotation > 0.25 * Math.PI && positiveRotation <= 0.75 * Math.PI) {\n y0 = y0 - height / 2;\n x0 = x0 - width / 2 / Math.tan(rotation);\n y1 = y1 + height / 2;\n x1 = x1 + width / 2 / Math.tan(rotation);\n } else if (positiveRotation > 0.75 * Math.PI && positiveRotation <= 1.25 * Math.PI) {\n x0 = x0 + width / 2;\n y0 = y0 + (height / 2) * Math.tan(rotation);\n x1 = x1 - width / 2;\n y1 = y1 - (height / 2) * Math.tan(rotation);\n } else if (positiveRotation > 1.25 * Math.PI && positiveRotation <= 1.75 * Math.PI) {\n y0 = y0 + height / 2;\n x0 = x0 + width / 2 / Math.tan(rotation);\n y1 = y1 - height / 2;\n x1 = x1 - width / 2 / Math.tan(rotation);\n }\n\n gradient = document.createElementNS(\"http://www.w3.org/2000/svg\", \"linearGradient\");\n gradient.setAttribute(\"id\", name);\n gradient.setAttribute(\"gradientUnits\", \"userSpaceOnUse\");\n gradient.setAttribute(\"x1\", String(Math.round(x0)));\n gradient.setAttribute(\"y1\", String(Math.round(y0)));\n gradient.setAttribute(\"x2\", String(Math.round(x1)));\n gradient.setAttribute(\"y2\", String(Math.round(y1)));\n }\n\n options.colorStops.forEach(({ offset, color }: { offset: number; color: string }) => {\n const stop = document.createElementNS(\"http://www.w3.org/2000/svg\", \"stop\");\n stop.setAttribute(\"offset\", `${100 * offset}%`);\n stop.setAttribute(\"stop-color\", color);\n gradient.appendChild(stop);\n });\n\n rect.setAttribute(\"fill\", `url('#${name}')`);\n this._defs.appendChild(gradient);\n } else if (color) {\n rect.setAttribute(\"fill\", color);\n }\n\n this._element.appendChild(rect);\n }\n\n _createStyle({ color, name }: { color?: string; name: string }): void {\n this._style.innerHTML += `.${name}{ fill: ${color}; }`;\n }\n}\n","import { DrawTypes } from \"../types\";\n\nexport default {\n canvas: \"canvas\",\n svg: \"svg\"\n} as DrawTypes;\n","import { TypeNumber } from \"../types\";\n\ninterface TypesMap {\n [key: number]: TypeNumber;\n}\n\nconst qrTypes: TypesMap = {};\n\nfor (let type = 0; type <= 40; type++) {\n qrTypes[type] = type as TypeNumber;\n}\n\n// 0 types is autodetect\n\n// types = {\n// 0: 0,\n// 1: 1,\n// ...\n// 40: 40\n// }\n\nexport default qrTypes;\n","import qrTypes from \"../constants/qrTypes\";\nimport drawTypes from \"../constants/drawTypes\";\nimport errorCorrectionLevels from \"../constants/errorCorrectionLevels\";\nimport { DotType, Options, TypeNumber, ErrorCorrectionLevel, Mode, DrawType, Gradient } from \"../types\";\n\nexport interface RequiredOptions extends Options {\n type: DrawType;\n width: number;\n height: number;\n margin: number;\n data: string;\n qrOptions: {\n typeNumber: TypeNumber;\n mode?: Mode;\n errorCorrectionLevel: ErrorCorrectionLevel;\n };\n imageOptions: {\n hideBackgroundDots: boolean;\n imageSize: number;\n crossOrigin?: string;\n margin: number;\n };\n dotsOptions: {\n type: DotType;\n color: string;\n gradient?: Gradient;\n };\n backgroundOptions: {\n color: string;\n gradient?: Gradient;\n };\n}\n\nconst defaultOptions: RequiredOptions = {\n type: drawTypes.canvas,\n width: 300,\n height: 300,\n data: \"\",\n margin: 0,\n qrOptions: {\n typeNumber: qrTypes[0],\n mode: undefined,\n errorCorrectionLevel: errorCorrectionLevels.Q\n },\n imageOptions: {\n hideBackgroundDots: true,\n imageSize: 0.4,\n crossOrigin: \"anonymous\",\n margin: 0\n },\n dotsOptions: {\n type: \"square\",\n color: \"#000\"\n },\n backgroundOptions: {\n color: \"#fff\"\n }\n};\n\nexport default defaultOptions;\n","import { ErrorCorrectionLevel } from \"../types\";\n\ninterface ErrorCorrectionLevels {\n [key: string]: ErrorCorrectionLevel;\n}\n\nexport default {\n L: \"L\",\n M: \"M\",\n Q: \"Q\",\n H: \"H\"\n} as ErrorCorrectionLevels;\n","import { RequiredOptions } from \"../core/QROptions\";\nimport { Gradient } from \"../types\";\n\nfunction sanitizeGradient(gradient: Gradient): Gradient {\n const newGradient = { ...gradient };\n\n if (!newGradient.colorStops || !newGradient.colorStops.length) {\n throw \"Field 'colorStops' is required in gradient\";\n }\n\n if (newGradient.rotation) {\n newGradient.rotation = Number(newGradient.rotation);\n } else {\n newGradient.rotation = 0;\n }\n\n newGradient.colorStops = newGradient.colorStops.map((colorStop: { offset: number; color: string }) => ({\n ...colorStop,\n offset: Number(colorStop.offset)\n }));\n\n return newGradient;\n}\n\nexport default function sanitizeOptions(options: RequiredOptions): RequiredOptions {\n const newOptions = { ...options };\n\n newOptions.width = Number(newOptions.width);\n newOptions.height = Number(newOptions.height);\n newOptions.margin = Number(newOptions.margin);\n newOptions.imageOptions = {\n ...newOptions.imageOptions,\n hideBackgroundDots: Boolean(newOptions.imageOptions.hideBackgroundDots),\n imageSize: Number(newOptions.imageOptions.imageSize),\n margin: Number(newOptions.imageOptions.margin)\n };\n\n if (newOptions.margin > Math.min(newOptions.width, newOptions.height)) {\n newOptions.margin = Math.min(newOptions.width, newOptions.height);\n }\n\n newOptions.dotsOptions = {\n ...newOptions.dotsOptions\n };\n if (newOptions.dotsOptions.gradient) {\n newOptions.dotsOptions.gradient = sanitizeGradient(newOptions.dotsOptions.gradient);\n }\n\n if (newOptions.cornersSquareOptions) {\n newOptions.cornersSquareOptions = {\n ...newOptions.cornersSquareOptions\n };\n if (newOptions.cornersSquareOptions.gradient) {\n newOptions.cornersSquareOptions.gradient = sanitizeGradient(newOptions.cornersSquareOptions.gradient);\n }\n }\n\n if (newOptions.cornersDotOptions) {\n newOptions.cornersDotOptions = {\n ...newOptions.cornersDotOptions\n };\n if (newOptions.cornersDotOptions.gradient) {\n newOptions.cornersDotOptions.gradient = sanitizeGradient(newOptions.cornersDotOptions.gradient);\n }\n }\n\n if (newOptions.backgroundOptions) {\n newOptions.backgroundOptions = {\n ...newOptions.backgroundOptions\n };\n if (newOptions.backgroundOptions.gradient) {\n newOptions.backgroundOptions.gradient = sanitizeGradient(newOptions.backgroundOptions.gradient);\n }\n }\n\n return newOptions;\n}\n","import QRCodeStyling from \"./core/QRCodeStyling\";\nimport dotTypes from \"./constants/dotTypes\";\nimport cornerDotTypes from \"./constants/cornerDotTypes\";\nimport cornerSquareTypes from \"./constants/cornerSquareTypes\";\nimport errorCorrectionLevels from \"./constants/errorCorrectionLevels\";\nimport errorCorrectionPercents from \"./constants/errorCorrectionPercents\";\nimport modes from \"./constants/modes\";\nimport qrTypes from \"./constants/qrTypes\";\nimport drawTypes from \"./constants/drawTypes\";\n\nexport * from \"./types\";\n\nexport {\n dotTypes,\n cornerDotTypes,\n cornerSquareTypes,\n errorCorrectionLevels,\n errorCorrectionPercents,\n modes,\n qrTypes,\n drawTypes\n};\n\nexport default QRCodeStyling;\n","import getMode from \"../tools/getMode\";\nimport mergeDeep from \"../tools/merge\";\nimport downloadURI from \"../tools/downloadURI\";\nimport QRCanvas from \"./QRCanvas\";\nimport QRSVG from \"./QRSVG\";\nimport drawTypes from \"../constants/drawTypes\";\n\nimport defaultOptions, { RequiredOptions } from \"./QROptions\";\nimport sanitizeOptions from \"../tools/sanitizeOptions\";\nimport { Extension, QRCode, Options, DownloadOptions } from \"../types\";\nimport qrcode from \"qrcode-generator\";\n\nexport default class QRCodeStyling {\n _options: RequiredOptions;\n _container?: HTMLElement;\n _canvas?: QRCanvas;\n _svg?: QRSVG;\n _qr?: QRCode;\n _canvasDrawingPromise?: Promise;\n _svgDrawingPromise?: Promise;\n\n constructor(options?: Partial) {\n this._options = options ? sanitizeOptions(mergeDeep(defaultOptions, options) as RequiredOptions) : defaultOptions;\n this.update();\n }\n\n static _clearContainer(container?: HTMLElement): void {\n if (container) {\n container.innerHTML = \"\";\n }\n }\n\n async _getQRStylingElement(extension: Extension = \"png\"): Promise {\n if (!this._qr) throw \"QR code is empty\";\n\n if (extension.toLowerCase() === \"svg\") {\n let promise, svg: QRSVG;\n\n if (this._svg && this._svgDrawingPromise) {\n svg = this._svg;\n promise = this._svgDrawingPromise;\n } else {\n svg = new QRSVG(this._options);\n promise = svg.drawQR(this._qr);\n }\n\n await promise;\n\n return svg;\n } else {\n let promise, canvas: QRCanvas;\n\n if (this._canvas && this._canvasDrawingPromise) {\n canvas = this._canvas;\n promise = this._canvasDrawingPromise;\n } else {\n canvas = new QRCanvas(this._options);\n promise = canvas.drawQR(this._qr);\n }\n\n await promise;\n\n return canvas;\n }\n }\n\n update(options?: Partial): void {\n QRCodeStyling._clearContainer(this._container);\n this._options = options ? sanitizeOptions(mergeDeep(this._options, options) as RequiredOptions) : this._options;\n\n if (!this._options.data) {\n return;\n }\n\n this._qr = qrcode(this._options.qrOptions.typeNumber, this._options.qrOptions.errorCorrectionLevel);\n this._qr.addData(this._options.data, this._options.qrOptions.mode || getMode(this._options.data));\n this._qr.make();\n\n if (this._options.type === drawTypes.canvas) {\n this._canvas = new QRCanvas(this._options);\n this._canvasDrawingPromise = this._canvas.drawQR(this._qr);\n this._svgDrawingPromise = undefined;\n this._svg = undefined;\n } else {\n this._svg = new QRSVG(this._options);\n this._svgDrawingPromise = this._svg.drawQR(this._qr);\n this._canvasDrawingPromise = undefined;\n this._canvas = undefined;\n }\n\n this.append(this._container);\n }\n\n append(container?: HTMLElement): void {\n if (!container) {\n return;\n }\n\n if (typeof container.appendChild !== \"function\") {\n throw \"Container should be a single DOM node\";\n }\n\n if (this._options.type === drawTypes.canvas) {\n if (this._canvas) {\n container.appendChild(this._canvas.getCanvas());\n }\n } else {\n if (this._svg) {\n container.appendChild(this._svg.getElement());\n }\n }\n\n this._container = container;\n }\n\n async getRawData(extension: Extension = \"png\"): Promise {\n if (!this._qr) throw \"QR code is empty\";\n const element = await this._getQRStylingElement(extension);\n\n if (extension.toLowerCase() === \"svg\") {\n const serializer = new XMLSerializer();\n const source = serializer.serializeToString(((element as unknown) as QRSVG).getElement());\n\n return new Blob(['\\r\\n' + source], { type: \"image/svg+xml\" });\n } else {\n return new Promise((resolve) =>\n ((element as unknown) as QRCanvas).getCanvas().toBlob(resolve, `image/${extension}`, 1)\n );\n }\n }\n\n async download(downloadOptions?: Partial | string): Promise {\n if (!this._qr) throw \"QR code is empty\";\n let extension = \"png\" as Extension;\n let name = \"qr\";\n\n //TODO remove deprecated code in the v2\n if (typeof downloadOptions === \"string\") {\n extension = downloadOptions as Extension;\n console.warn(\n \"Extension is deprecated as argument for 'download' method, please pass object { name: '...', extension: '...' } as argument\"\n );\n } else if (typeof downloadOptions === \"object\" && downloadOptions !== null) {\n if (downloadOptions.name) {\n name = downloadOptions.name;\n }\n if (downloadOptions.extension) {\n extension = downloadOptions.extension;\n }\n }\n\n const element = await this._getQRStylingElement(extension);\n\n if (extension.toLowerCase() === \"svg\") {\n const serializer = new XMLSerializer();\n let source = serializer.serializeToString(((element as unknown) as QRSVG).getElement());\n\n source = '\\r\\n' + source;\n const url = \"data:image/svg+xml;charset=utf-8,\" + encodeURIComponent(source);\n downloadURI(url, `${name}.svg`);\n } else {\n const url = ((element as unknown) as QRCanvas).getCanvas().toDataURL(`image/${extension}`);\n downloadURI(url, `${name}.${extension}`);\n }\n }\n}\n","import modes from \"../constants/modes\";\nimport { Mode } from \"../types\";\n\nexport default function getMode(data: string): Mode {\n switch (true) {\n case /^[0-9]*$/.test(data):\n return modes.numeric;\n case /^[0-9A-Z $%*+\\-./:]*$/.test(data):\n return modes.alphanumeric;\n default:\n return modes.byte;\n }\n}\n","import { Mode } from \"../types\";\n\ninterface Modes {\n [key: string]: Mode;\n}\n\nexport default {\n numeric: \"Numeric\",\n alphanumeric: \"Alphanumeric\",\n byte: \"Byte\",\n kanji: \"Kanji\"\n} as Modes;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tif(__webpack_module_cache__[moduleId]) {\n\t\treturn __webpack_module_cache__[moduleId].exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// module exports must be returned from runtime so entry inlining is disabled\n// startup\n// Load entry module and return exports\nreturn __webpack_require__(796);\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => module['default'] :\n\t\t() => module;\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop)"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://QRCodeStyling/webpack/universalModuleDefinition","webpack://QRCodeStyling/./node_modules/qrcode-generator/qrcode.js","webpack://QRCodeStyling/./src/tools/merge.ts","webpack://QRCodeStyling/./src/tools/downloadURI.ts","webpack://QRCodeStyling/./src/tools/calculateImageSize.ts","webpack://QRCodeStyling/./src/constants/errorCorrectionPercents.ts","webpack://QRCodeStyling/./src/constants/dotTypes.ts","webpack://QRCodeStyling/./src/figures/dot/canvas/QRDot.ts","webpack://QRCodeStyling/./src/constants/cornerSquareTypes.ts","webpack://QRCodeStyling/./src/figures/cornerSquare/canvas/QRCornerSquare.ts","webpack://QRCodeStyling/./src/constants/cornerDotTypes.ts","webpack://QRCodeStyling/./src/figures/cornerDot/canvas/QRCornerDot.ts","webpack://QRCodeStyling/./src/constants/gradientTypes.ts","webpack://QRCodeStyling/./src/core/QRCanvas.ts","webpack://QRCodeStyling/./src/figures/dot/svg/QRDot.ts","webpack://QRCodeStyling/./src/figures/cornerSquare/svg/QRCornerSquare.ts","webpack://QRCodeStyling/./src/figures/cornerDot/svg/QRCornerDot.ts","webpack://QRCodeStyling/./src/core/QRSVG.ts","webpack://QRCodeStyling/./src/constants/drawTypes.ts","webpack://QRCodeStyling/./src/constants/qrTypes.ts","webpack://QRCodeStyling/./src/core/QROptions.ts","webpack://QRCodeStyling/./src/constants/errorCorrectionLevels.ts","webpack://QRCodeStyling/./src/tools/sanitizeOptions.ts","webpack://QRCodeStyling/./src/index.ts","webpack://QRCodeStyling/./src/core/QRCodeStyling.ts","webpack://QRCodeStyling/./src/tools/getMode.ts","webpack://QRCodeStyling/./src/constants/modes.ts","webpack://QRCodeStyling/webpack/bootstrap","webpack://QRCodeStyling/webpack/startup","webpack://QRCodeStyling/webpack/runtime/compat get default export","webpack://QRCodeStyling/webpack/runtime/define property getters","webpack://QRCodeStyling/webpack/runtime/hasOwnProperty shorthand"],"names":["root","factory","exports","module","define","amd","self","qrcode","typeNumber","errorCorrectionLevel","_typeNumber","_errorCorrectionLevel","QRErrorCorrectionLevel","_modules","_moduleCount","_dataCache","_dataList","_this","makeImpl","test","maskPattern","moduleCount","modules","Array","row","col","setupPositionProbePattern","setupPositionAdjustPattern","setupTimingPattern","setupTypeInfo","setupTypeNumber","createData","mapData","r","c","pos","QRUtil","getPatternPosition","i","length","j","bits","getBCHTypeNumber","mod","Math","floor","data","getBCHTypeInfo","inc","bitIndex","byteIndex","maskFunc","getMaskFunction","dark","dataList","rsBlocks","QRRSBlock","getRSBlocks","buffer","qrBitBuffer","put","getMode","getLength","getLengthInBits","write","totalDataCount","dataCount","putBit","offset","maxDcCount","maxEcCount","dcdata","ecdata","dcCount","ecCount","totalCount","max","getBuffer","rsPoly","getErrorCorrectPolynomial","modPoly","qrPolynomial","modIndex","getAt","totalCodeCount","index","createBytes","addData","mode","newData","qrNumber","qrAlphaNum","qr8BitByte","qrKanji","push","isDark","getModuleCount","make","minLostPoint","pattern","lostPoint","getLostPoint","getBestMaskPattern","createTableTag","cellSize","margin","qrHtml","createSvgTag","alt","title","opts","arguments","text","id","mr","rect","size","qrSvg","scalable","escapeXml","join","trim","createDataURL","min","x","y","createImgTag","img","s","escaped","charAt","createASCII","r1","r2","p","blocks","blocksLastLineNoMargin","ascii","substring","_createHalfASCII","white","black","line","renderTo2dContext","context","fillStyle","fillRect","stringToBytes","stringToBytesFuncs","bytes","charCodeAt","createStringToBytes","unicodeData","numChars","unicodeMap","bin","base64DecodeInputStream","read","b","count","b0","b1","v","String","fromCharCode","unknownChar","PATTERN_POSITION_TABLE","G15","G18","getBCHDigit","L","M","Q","H","digit","d","errorCorrectLength","a","multiply","QRMath","gexp","type","sameCount","darkCount","abs","EXP_TABLE","LOG_TABLE","n","num","shift","_num","e","glog","ratio","RS_BLOCK_TABLE","qrRSBlock","rsBlock","getRsBlockTable","list","_buffer","_length","bufIndex","bit","_data","strToNum","chatToNum","getCode","_bytes","code","byteArrayOutputStream","writeByte","off","len","str","_str","_pos","_buflen","match","decode","width","height","getPixel","gif","_width","_height","pixel","out","writeString","writeShort","raster","getLZWRaster","writeBytes","lzwMinCodeSize","clearCode","endCode","bitLength","table","lzwTable","add","_out","_bitLength","_bitBuffer","byteOut","bitOut","dataIndex","contains","indexOf","flush","toByteArray","_map","_size","key","gifImage","setPixel","base64","_base64","writeEncoded","encode","padlen","toString","base64EncodeOutputStream","utf8","charcode","toUTF8Array","isObject","obj","isArray","mergeDeep","target","sources","source","undefined","Object","keys","forEach","targetValue","sourceValue","assign","downloadURI","uri","name","link","document","createElement","download","href","body","appendChild","click","removeChild","calculateImageSize","originalHeight","originalWidth","maxHiddenDots","maxHiddenAxisDots","dotSize","hideDots","imageSize","hideYDots","hideXDots","k","sqrt","ceil","round","this","_context","_type","draw","getNeighbor","drawFunction","dotTypes","_drawDot","_drawClassy","_drawClassyRounded","_drawRounded","_drawExtraRounded","_drawSquare","call","_rotateFigure","rotation","cx","cy","translate","rotate","closePath","_basicDot","args","arc","PI","_basicSquare","_basicSideRounded","lineTo","_basicCornerRounded","_basicCornerExtraRounded","_basicCornersRounded","_basicCornersExtraRounded","leftNeighbor","rightNeighbor","topNeighbor","bottomNeighbor","neighborsCount","cornerSquareTypes","_basicExtraRounded","cornerDotTypes","squareMask","dotMask","options","_canvas","_options","getContext","getCanvas","clear","canvasContext","clearRect","drawQR","qr","minSize","drawImageSize","_qr","image","loadImage","_image","imageOptions","qrOptions","coverLevel","errorCorrectionPercents","drawBackground","drawDots","hideBackgroundDots","drawCorners","drawImage","backgroundOptions","gradient","gradientOptions","_createGradient","additionalRotation","colorStops","color","addColorStop","filter","xBeginning","yBeginning","dot","dotsOptions","beginPath","xOffset","yOffset","strokeStyle","fill","cornersSquareSize","cornersDotSize","column","cornersSquareOptions","cornersSquare","cornersDotOptions","cornersDot","Promise","resolve","reject","Image","crossOrigin","onload","src","dx","dy","dw","dh","gradientTypes","createRadialGradient","positiveRotation","x0","y0","x1","y1","tan","createLinearGradient","svg","_svg","_element","setAttribute","createElementNS","_defs","_style","getElement","oldElement","cloneNode","parentNode","replaceChild","element","_createColor","_createStyle","_dotsClipPath","_dots","cornersSquareClipPath","cornersDotClipPath","_cornersSquareClipPath","_cornersDotClipPath","_cornerSquares","_cornerDots","_getBase64Image","base64Image","_getImageBlob","url","fetch","blob","_blobToBase64","reader","FileReader","dataUrl","result","readAsDataURL","stop","innerHTML","qrTypes","drawTypes","sanitizeGradient","newGradient","Number","map","colorStop","sanitizeOptions","newOptions","Boolean","update","_clearContainer","container","_getQRStylingElement","extension","toLowerCase","promise","_svgDrawingPromise","canvas","_canvasDrawingPromise","QRCodeStyling","_container","append","getRawData","serializer","XMLSerializer","serializeToString","Blob","toBlob","downloadOptions","console","warn","encodeURIComponent","toDataURL","__webpack_module_cache__","__webpack_require__","moduleId","__webpack_modules__","getter","__esModule","definition","o","defineProperty","enumerable","get","prop","prototype","hasOwnProperty"],"mappings":"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","file":"qr-code-styling.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"QRCodeStyling\"] = factory();\n\telse\n\t\troot[\"QRCodeStyling\"] = factory();\n})(self, function() {\nreturn ","//---------------------------------------------------------------------\n//\n// QR Code Generator for JavaScript\n//\n// Copyright (c) 2009 Kazuhiko Arase\n//\n// URL: http://www.d-project.com/\n//\n// Licensed under the MIT license:\n// http://www.opensource.org/licenses/mit-license.php\n//\n// The word 'QR Code' is registered trademark of\n// DENSO WAVE INCORPORATED\n// http://www.denso-wave.com/qrcode/faqpatent-e.html\n//\n//---------------------------------------------------------------------\n\nvar qrcode = function() {\n\n //---------------------------------------------------------------------\n // qrcode\n //---------------------------------------------------------------------\n\n /**\n * qrcode\n * @param typeNumber 1 to 40\n * @param errorCorrectionLevel 'L','M','Q','H'\n */\n var qrcode = function(typeNumber, errorCorrectionLevel) {\n\n var PAD0 = 0xEC;\n var PAD1 = 0x11;\n\n var _typeNumber = typeNumber;\n var _errorCorrectionLevel = QRErrorCorrectionLevel[errorCorrectionLevel];\n var _modules = null;\n var _moduleCount = 0;\n var _dataCache = null;\n var _dataList = [];\n\n var _this = {};\n\n var makeImpl = function(test, maskPattern) {\n\n _moduleCount = _typeNumber * 4 + 17;\n _modules = function(moduleCount) {\n var modules = new Array(moduleCount);\n for (var row = 0; row < moduleCount; row += 1) {\n modules[row] = new Array(moduleCount);\n for (var col = 0; col < moduleCount; col += 1) {\n modules[row][col] = null;\n }\n }\n return modules;\n }(_moduleCount);\n\n setupPositionProbePattern(0, 0);\n setupPositionProbePattern(_moduleCount - 7, 0);\n setupPositionProbePattern(0, _moduleCount - 7);\n setupPositionAdjustPattern();\n setupTimingPattern();\n setupTypeInfo(test, maskPattern);\n\n if (_typeNumber >= 7) {\n setupTypeNumber(test);\n }\n\n if (_dataCache == null) {\n _dataCache = createData(_typeNumber, _errorCorrectionLevel, _dataList);\n }\n\n mapData(_dataCache, maskPattern);\n };\n\n var setupPositionProbePattern = function(row, col) {\n\n for (var r = -1; r <= 7; r += 1) {\n\n if (row + r <= -1 || _moduleCount <= row + r) continue;\n\n for (var c = -1; c <= 7; c += 1) {\n\n if (col + c <= -1 || _moduleCount <= col + c) continue;\n\n if ( (0 <= r && r <= 6 && (c == 0 || c == 6) )\n || (0 <= c && c <= 6 && (r == 0 || r == 6) )\n || (2 <= r && r <= 4 && 2 <= c && c <= 4) ) {\n _modules[row + r][col + c] = true;\n } else {\n _modules[row + r][col + c] = false;\n }\n }\n }\n };\n\n var getBestMaskPattern = function() {\n\n var minLostPoint = 0;\n var pattern = 0;\n\n for (var i = 0; i < 8; i += 1) {\n\n makeImpl(true, i);\n\n var lostPoint = QRUtil.getLostPoint(_this);\n\n if (i == 0 || minLostPoint > lostPoint) {\n minLostPoint = lostPoint;\n pattern = i;\n }\n }\n\n return pattern;\n };\n\n var setupTimingPattern = function() {\n\n for (var r = 8; r < _moduleCount - 8; r += 1) {\n if (_modules[r][6] != null) {\n continue;\n }\n _modules[r][6] = (r % 2 == 0);\n }\n\n for (var c = 8; c < _moduleCount - 8; c += 1) {\n if (_modules[6][c] != null) {\n continue;\n }\n _modules[6][c] = (c % 2 == 0);\n }\n };\n\n var setupPositionAdjustPattern = function() {\n\n var pos = QRUtil.getPatternPosition(_typeNumber);\n\n for (var i = 0; i < pos.length; i += 1) {\n\n for (var j = 0; j < pos.length; j += 1) {\n\n var row = pos[i];\n var col = pos[j];\n\n if (_modules[row][col] != null) {\n continue;\n }\n\n for (var r = -2; r <= 2; r += 1) {\n\n for (var c = -2; c <= 2; c += 1) {\n\n if (r == -2 || r == 2 || c == -2 || c == 2\n || (r == 0 && c == 0) ) {\n _modules[row + r][col + c] = true;\n } else {\n _modules[row + r][col + c] = false;\n }\n }\n }\n }\n }\n };\n\n var setupTypeNumber = function(test) {\n\n var bits = QRUtil.getBCHTypeNumber(_typeNumber);\n\n for (var i = 0; i < 18; i += 1) {\n var mod = (!test && ( (bits >> i) & 1) == 1);\n _modules[Math.floor(i / 3)][i % 3 + _moduleCount - 8 - 3] = mod;\n }\n\n for (var i = 0; i < 18; i += 1) {\n var mod = (!test && ( (bits >> i) & 1) == 1);\n _modules[i % 3 + _moduleCount - 8 - 3][Math.floor(i / 3)] = mod;\n }\n };\n\n var setupTypeInfo = function(test, maskPattern) {\n\n var data = (_errorCorrectionLevel << 3) | maskPattern;\n var bits = QRUtil.getBCHTypeInfo(data);\n\n // vertical\n for (var i = 0; i < 15; i += 1) {\n\n var mod = (!test && ( (bits >> i) & 1) == 1);\n\n if (i < 6) {\n _modules[i][8] = mod;\n } else if (i < 8) {\n _modules[i + 1][8] = mod;\n } else {\n _modules[_moduleCount - 15 + i][8] = mod;\n }\n }\n\n // horizontal\n for (var i = 0; i < 15; i += 1) {\n\n var mod = (!test && ( (bits >> i) & 1) == 1);\n\n if (i < 8) {\n _modules[8][_moduleCount - i - 1] = mod;\n } else if (i < 9) {\n _modules[8][15 - i - 1 + 1] = mod;\n } else {\n _modules[8][15 - i - 1] = mod;\n }\n }\n\n // fixed module\n _modules[_moduleCount - 8][8] = (!test);\n };\n\n var mapData = function(data, maskPattern) {\n\n var inc = -1;\n var row = _moduleCount - 1;\n var bitIndex = 7;\n var byteIndex = 0;\n var maskFunc = QRUtil.getMaskFunction(maskPattern);\n\n for (var col = _moduleCount - 1; col > 0; col -= 2) {\n\n if (col == 6) col -= 1;\n\n while (true) {\n\n for (var c = 0; c < 2; c += 1) {\n\n if (_modules[row][col - c] == null) {\n\n var dark = false;\n\n if (byteIndex < data.length) {\n dark = ( ( (data[byteIndex] >>> bitIndex) & 1) == 1);\n }\n\n var mask = maskFunc(row, col - c);\n\n if (mask) {\n dark = !dark;\n }\n\n _modules[row][col - c] = dark;\n bitIndex -= 1;\n\n if (bitIndex == -1) {\n byteIndex += 1;\n bitIndex = 7;\n }\n }\n }\n\n row += inc;\n\n if (row < 0 || _moduleCount <= row) {\n row -= inc;\n inc = -inc;\n break;\n }\n }\n }\n };\n\n var createBytes = function(buffer, rsBlocks) {\n\n var offset = 0;\n\n var maxDcCount = 0;\n var maxEcCount = 0;\n\n var dcdata = new Array(rsBlocks.length);\n var ecdata = new Array(rsBlocks.length);\n\n for (var r = 0; r < rsBlocks.length; r += 1) {\n\n var dcCount = rsBlocks[r].dataCount;\n var ecCount = rsBlocks[r].totalCount - dcCount;\n\n maxDcCount = Math.max(maxDcCount, dcCount);\n maxEcCount = Math.max(maxEcCount, ecCount);\n\n dcdata[r] = new Array(dcCount);\n\n for (var i = 0; i < dcdata[r].length; i += 1) {\n dcdata[r][i] = 0xff & buffer.getBuffer()[i + offset];\n }\n offset += dcCount;\n\n var rsPoly = QRUtil.getErrorCorrectPolynomial(ecCount);\n var rawPoly = qrPolynomial(dcdata[r], rsPoly.getLength() - 1);\n\n var modPoly = rawPoly.mod(rsPoly);\n ecdata[r] = new Array(rsPoly.getLength() - 1);\n for (var i = 0; i < ecdata[r].length; i += 1) {\n var modIndex = i + modPoly.getLength() - ecdata[r].length;\n ecdata[r][i] = (modIndex >= 0)? modPoly.getAt(modIndex) : 0;\n }\n }\n\n var totalCodeCount = 0;\n for (var i = 0; i < rsBlocks.length; i += 1) {\n totalCodeCount += rsBlocks[i].totalCount;\n }\n\n var data = new Array(totalCodeCount);\n var index = 0;\n\n for (var i = 0; i < maxDcCount; i += 1) {\n for (var r = 0; r < rsBlocks.length; r += 1) {\n if (i < dcdata[r].length) {\n data[index] = dcdata[r][i];\n index += 1;\n }\n }\n }\n\n for (var i = 0; i < maxEcCount; i += 1) {\n for (var r = 0; r < rsBlocks.length; r += 1) {\n if (i < ecdata[r].length) {\n data[index] = ecdata[r][i];\n index += 1;\n }\n }\n }\n\n return data;\n };\n\n var createData = function(typeNumber, errorCorrectionLevel, dataList) {\n\n var rsBlocks = QRRSBlock.getRSBlocks(typeNumber, errorCorrectionLevel);\n\n var buffer = qrBitBuffer();\n\n for (var i = 0; i < dataList.length; i += 1) {\n var data = dataList[i];\n buffer.put(data.getMode(), 4);\n buffer.put(data.getLength(), QRUtil.getLengthInBits(data.getMode(), typeNumber) );\n data.write(buffer);\n }\n\n // calc num max data.\n var totalDataCount = 0;\n for (var i = 0; i < rsBlocks.length; i += 1) {\n totalDataCount += rsBlocks[i].dataCount;\n }\n\n if (buffer.getLengthInBits() > totalDataCount * 8) {\n throw 'code length overflow. ('\n + buffer.getLengthInBits()\n + '>'\n + totalDataCount * 8\n + ')';\n }\n\n // end code\n if (buffer.getLengthInBits() + 4 <= totalDataCount * 8) {\n buffer.put(0, 4);\n }\n\n // padding\n while (buffer.getLengthInBits() % 8 != 0) {\n buffer.putBit(false);\n }\n\n // padding\n while (true) {\n\n if (buffer.getLengthInBits() >= totalDataCount * 8) {\n break;\n }\n buffer.put(PAD0, 8);\n\n if (buffer.getLengthInBits() >= totalDataCount * 8) {\n break;\n }\n buffer.put(PAD1, 8);\n }\n\n return createBytes(buffer, rsBlocks);\n };\n\n _this.addData = function(data, mode) {\n\n mode = mode || 'Byte';\n\n var newData = null;\n\n switch(mode) {\n case 'Numeric' :\n newData = qrNumber(data);\n break;\n case 'Alphanumeric' :\n newData = qrAlphaNum(data);\n break;\n case 'Byte' :\n newData = qr8BitByte(data);\n break;\n case 'Kanji' :\n newData = qrKanji(data);\n break;\n default :\n throw 'mode:' + mode;\n }\n\n _dataList.push(newData);\n _dataCache = null;\n };\n\n _this.isDark = function(row, col) {\n if (row < 0 || _moduleCount <= row || col < 0 || _moduleCount <= col) {\n throw row + ',' + col;\n }\n return _modules[row][col];\n };\n\n _this.getModuleCount = function() {\n return _moduleCount;\n };\n\n _this.make = function() {\n if (_typeNumber < 1) {\n var typeNumber = 1;\n\n for (; typeNumber < 40; typeNumber++) {\n var rsBlocks = QRRSBlock.getRSBlocks(typeNumber, _errorCorrectionLevel);\n var buffer = qrBitBuffer();\n\n for (var i = 0; i < _dataList.length; i++) {\n var data = _dataList[i];\n buffer.put(data.getMode(), 4);\n buffer.put(data.getLength(), QRUtil.getLengthInBits(data.getMode(), typeNumber) );\n data.write(buffer);\n }\n\n var totalDataCount = 0;\n for (var i = 0; i < rsBlocks.length; i++) {\n totalDataCount += rsBlocks[i].dataCount;\n }\n\n if (buffer.getLengthInBits() <= totalDataCount * 8) {\n break;\n }\n }\n\n _typeNumber = typeNumber;\n }\n\n makeImpl(false, getBestMaskPattern() );\n };\n\n _this.createTableTag = function(cellSize, margin) {\n\n cellSize = cellSize || 2;\n margin = (typeof margin == 'undefined')? cellSize * 4 : margin;\n\n var qrHtml = '';\n\n qrHtml += '
' +\n escapeXml(title.text) + '' : '';\n qrSvg += (alt.text) ? '' +\n escapeXml(alt.text) + '' : '';\n qrSvg += '';\n qrSvg += '': escaped += '>'; break;\n case '&': escaped += '&'; break;\n case '\"': escaped += '"'; break;\n default : escaped += c; break;\n }\n }\n return escaped;\n };\n\n var _createHalfASCII = function(margin) {\n var cellSize = 1;\n margin = (typeof margin == 'undefined')? cellSize * 2 : margin;\n\n var size = _this.getModuleCount() * cellSize + margin * 2;\n var min = margin;\n var max = size - margin;\n\n var y, x, r1, r2, p;\n\n var blocks = {\n '██': '█',\n '█ ': '▀',\n ' █': '▄',\n ' ': ' '\n };\n\n var blocksLastLineNoMargin = {\n '██': '▀',\n '█ ': '▀',\n ' █': ' ',\n ' ': ' '\n };\n\n var ascii = '';\n for (y = 0; y < size; y += 2) {\n r1 = Math.floor((y - min) / cellSize);\n r2 = Math.floor((y + 1 - min) / cellSize);\n for (x = 0; x < size; x += 1) {\n p = '█';\n\n if (min <= x && x < max && min <= y && y < max && _this.isDark(r1, Math.floor((x - min) / cellSize))) {\n p = ' ';\n }\n\n if (min <= x && x < max && min <= y+1 && y+1 < max && _this.isDark(r2, Math.floor((x - min) / cellSize))) {\n p += ' ';\n }\n else {\n p += '█';\n }\n\n // Output 2 characters per pixel, to create full square. 1 character per pixels gives only half width of square.\n ascii += (margin < 1 && y+1 >= max) ? blocksLastLineNoMargin[p] : blocks[p];\n }\n\n ascii += '\\n';\n }\n\n if (size % 2 && margin > 0) {\n return ascii.substring(0, ascii.length - size - 1) + Array(size+1).join('▀');\n }\n\n return ascii.substring(0, ascii.length-1);\n };\n\n _this.createASCII = function(cellSize, margin) {\n cellSize = cellSize || 1;\n\n if (cellSize < 2) {\n return _createHalfASCII(margin);\n }\n\n cellSize -= 1;\n margin = (typeof margin == 'undefined')? cellSize * 2 : margin;\n\n var size = _this.getModuleCount() * cellSize + margin * 2;\n var min = margin;\n var max = size - margin;\n\n var y, x, r, p;\n\n var white = Array(cellSize+1).join('██');\n var black = Array(cellSize+1).join(' ');\n\n var ascii = '';\n var line = '';\n for (y = 0; y < size; y += 1) {\n r = Math.floor( (y - min) / cellSize);\n line = '';\n for (x = 0; x < size; x += 1) {\n p = 1;\n\n if (min <= x && x < max && min <= y && y < max && _this.isDark(r, Math.floor((x - min) / cellSize))) {\n p = 0;\n }\n\n // Output 2 characters per pixel, to create full square. 1 character per pixels gives only half width of square.\n line += p ? white : black;\n }\n\n for (r = 0; r < cellSize; r += 1) {\n ascii += line + '\\n';\n }\n }\n\n return ascii.substring(0, ascii.length-1);\n };\n\n _this.renderTo2dContext = function(context, cellSize) {\n cellSize = cellSize || 2;\n var length = _this.getModuleCount();\n for (var row = 0; row < length; row++) {\n for (var col = 0; col < length; col++) {\n context.fillStyle = _this.isDark(row, col) ? 'black' : 'white';\n context.fillRect(row * cellSize, col * cellSize, cellSize, cellSize);\n }\n }\n }\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qrcode.stringToBytes\n //---------------------------------------------------------------------\n\n qrcode.stringToBytesFuncs = {\n 'default' : function(s) {\n var bytes = [];\n for (var i = 0; i < s.length; i += 1) {\n var c = s.charCodeAt(i);\n bytes.push(c & 0xff);\n }\n return bytes;\n }\n };\n\n qrcode.stringToBytes = qrcode.stringToBytesFuncs['default'];\n\n //---------------------------------------------------------------------\n // qrcode.createStringToBytes\n //---------------------------------------------------------------------\n\n /**\n * @param unicodeData base64 string of byte array.\n * [16bit Unicode],[16bit Bytes], ...\n * @param numChars\n */\n qrcode.createStringToBytes = function(unicodeData, numChars) {\n\n // create conversion map.\n\n var unicodeMap = function() {\n\n var bin = base64DecodeInputStream(unicodeData);\n var read = function() {\n var b = bin.read();\n if (b == -1) throw 'eof';\n return b;\n };\n\n var count = 0;\n var unicodeMap = {};\n while (true) {\n var b0 = bin.read();\n if (b0 == -1) break;\n var b1 = read();\n var b2 = read();\n var b3 = read();\n var k = String.fromCharCode( (b0 << 8) | b1);\n var v = (b2 << 8) | b3;\n unicodeMap[k] = v;\n count += 1;\n }\n if (count != numChars) {\n throw count + ' != ' + numChars;\n }\n\n return unicodeMap;\n }();\n\n var unknownChar = '?'.charCodeAt(0);\n\n return function(s) {\n var bytes = [];\n for (var i = 0; i < s.length; i += 1) {\n var c = s.charCodeAt(i);\n if (c < 128) {\n bytes.push(c);\n } else {\n var b = unicodeMap[s.charAt(i)];\n if (typeof b == 'number') {\n if ( (b & 0xff) == b) {\n // 1byte\n bytes.push(b);\n } else {\n // 2bytes\n bytes.push(b >>> 8);\n bytes.push(b & 0xff);\n }\n } else {\n bytes.push(unknownChar);\n }\n }\n }\n return bytes;\n };\n };\n\n //---------------------------------------------------------------------\n // QRMode\n //---------------------------------------------------------------------\n\n var QRMode = {\n MODE_NUMBER : 1 << 0,\n MODE_ALPHA_NUM : 1 << 1,\n MODE_8BIT_BYTE : 1 << 2,\n MODE_KANJI : 1 << 3\n };\n\n //---------------------------------------------------------------------\n // QRErrorCorrectionLevel\n //---------------------------------------------------------------------\n\n var QRErrorCorrectionLevel = {\n L : 1,\n M : 0,\n Q : 3,\n H : 2\n };\n\n //---------------------------------------------------------------------\n // QRMaskPattern\n //---------------------------------------------------------------------\n\n var QRMaskPattern = {\n PATTERN000 : 0,\n PATTERN001 : 1,\n PATTERN010 : 2,\n PATTERN011 : 3,\n PATTERN100 : 4,\n PATTERN101 : 5,\n PATTERN110 : 6,\n PATTERN111 : 7\n };\n\n //---------------------------------------------------------------------\n // QRUtil\n //---------------------------------------------------------------------\n\n var QRUtil = function() {\n\n var PATTERN_POSITION_TABLE = [\n [],\n [6, 18],\n [6, 22],\n [6, 26],\n [6, 30],\n [6, 34],\n [6, 22, 38],\n [6, 24, 42],\n [6, 26, 46],\n [6, 28, 50],\n [6, 30, 54],\n [6, 32, 58],\n [6, 34, 62],\n [6, 26, 46, 66],\n [6, 26, 48, 70],\n [6, 26, 50, 74],\n [6, 30, 54, 78],\n [6, 30, 56, 82],\n [6, 30, 58, 86],\n [6, 34, 62, 90],\n [6, 28, 50, 72, 94],\n [6, 26, 50, 74, 98],\n [6, 30, 54, 78, 102],\n [6, 28, 54, 80, 106],\n [6, 32, 58, 84, 110],\n [6, 30, 58, 86, 114],\n [6, 34, 62, 90, 118],\n [6, 26, 50, 74, 98, 122],\n [6, 30, 54, 78, 102, 126],\n [6, 26, 52, 78, 104, 130],\n [6, 30, 56, 82, 108, 134],\n [6, 34, 60, 86, 112, 138],\n [6, 30, 58, 86, 114, 142],\n [6, 34, 62, 90, 118, 146],\n [6, 30, 54, 78, 102, 126, 150],\n [6, 24, 50, 76, 102, 128, 154],\n [6, 28, 54, 80, 106, 132, 158],\n [6, 32, 58, 84, 110, 136, 162],\n [6, 26, 54, 82, 110, 138, 166],\n [6, 30, 58, 86, 114, 142, 170]\n ];\n var G15 = (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0);\n var G18 = (1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | (1 << 2) | (1 << 0);\n var G15_MASK = (1 << 14) | (1 << 12) | (1 << 10) | (1 << 4) | (1 << 1);\n\n var _this = {};\n\n var getBCHDigit = function(data) {\n var digit = 0;\n while (data != 0) {\n digit += 1;\n data >>>= 1;\n }\n return digit;\n };\n\n _this.getBCHTypeInfo = function(data) {\n var d = data << 10;\n while (getBCHDigit(d) - getBCHDigit(G15) >= 0) {\n d ^= (G15 << (getBCHDigit(d) - getBCHDigit(G15) ) );\n }\n return ( (data << 10) | d) ^ G15_MASK;\n };\n\n _this.getBCHTypeNumber = function(data) {\n var d = data << 12;\n while (getBCHDigit(d) - getBCHDigit(G18) >= 0) {\n d ^= (G18 << (getBCHDigit(d) - getBCHDigit(G18) ) );\n }\n return (data << 12) | d;\n };\n\n _this.getPatternPosition = function(typeNumber) {\n return PATTERN_POSITION_TABLE[typeNumber - 1];\n };\n\n _this.getMaskFunction = function(maskPattern) {\n\n switch (maskPattern) {\n\n case QRMaskPattern.PATTERN000 :\n return function(i, j) { return (i + j) % 2 == 0; };\n case QRMaskPattern.PATTERN001 :\n return function(i, j) { return i % 2 == 0; };\n case QRMaskPattern.PATTERN010 :\n return function(i, j) { return j % 3 == 0; };\n case QRMaskPattern.PATTERN011 :\n return function(i, j) { return (i + j) % 3 == 0; };\n case QRMaskPattern.PATTERN100 :\n return function(i, j) { return (Math.floor(i / 2) + Math.floor(j / 3) ) % 2 == 0; };\n case QRMaskPattern.PATTERN101 :\n return function(i, j) { return (i * j) % 2 + (i * j) % 3 == 0; };\n case QRMaskPattern.PATTERN110 :\n return function(i, j) { return ( (i * j) % 2 + (i * j) % 3) % 2 == 0; };\n case QRMaskPattern.PATTERN111 :\n return function(i, j) { return ( (i * j) % 3 + (i + j) % 2) % 2 == 0; };\n\n default :\n throw 'bad maskPattern:' + maskPattern;\n }\n };\n\n _this.getErrorCorrectPolynomial = function(errorCorrectLength) {\n var a = qrPolynomial([1], 0);\n for (var i = 0; i < errorCorrectLength; i += 1) {\n a = a.multiply(qrPolynomial([1, QRMath.gexp(i)], 0) );\n }\n return a;\n };\n\n _this.getLengthInBits = function(mode, type) {\n\n if (1 <= type && type < 10) {\n\n // 1 - 9\n\n switch(mode) {\n case QRMode.MODE_NUMBER : return 10;\n case QRMode.MODE_ALPHA_NUM : return 9;\n case QRMode.MODE_8BIT_BYTE : return 8;\n case QRMode.MODE_KANJI : return 8;\n default :\n throw 'mode:' + mode;\n }\n\n } else if (type < 27) {\n\n // 10 - 26\n\n switch(mode) {\n case QRMode.MODE_NUMBER : return 12;\n case QRMode.MODE_ALPHA_NUM : return 11;\n case QRMode.MODE_8BIT_BYTE : return 16;\n case QRMode.MODE_KANJI : return 10;\n default :\n throw 'mode:' + mode;\n }\n\n } else if (type < 41) {\n\n // 27 - 40\n\n switch(mode) {\n case QRMode.MODE_NUMBER : return 14;\n case QRMode.MODE_ALPHA_NUM : return 13;\n case QRMode.MODE_8BIT_BYTE : return 16;\n case QRMode.MODE_KANJI : return 12;\n default :\n throw 'mode:' + mode;\n }\n\n } else {\n throw 'type:' + type;\n }\n };\n\n _this.getLostPoint = function(qrcode) {\n\n var moduleCount = qrcode.getModuleCount();\n\n var lostPoint = 0;\n\n // LEVEL1\n\n for (var row = 0; row < moduleCount; row += 1) {\n for (var col = 0; col < moduleCount; col += 1) {\n\n var sameCount = 0;\n var dark = qrcode.isDark(row, col);\n\n for (var r = -1; r <= 1; r += 1) {\n\n if (row + r < 0 || moduleCount <= row + r) {\n continue;\n }\n\n for (var c = -1; c <= 1; c += 1) {\n\n if (col + c < 0 || moduleCount <= col + c) {\n continue;\n }\n\n if (r == 0 && c == 0) {\n continue;\n }\n\n if (dark == qrcode.isDark(row + r, col + c) ) {\n sameCount += 1;\n }\n }\n }\n\n if (sameCount > 5) {\n lostPoint += (3 + sameCount - 5);\n }\n }\n };\n\n // LEVEL2\n\n for (var row = 0; row < moduleCount - 1; row += 1) {\n for (var col = 0; col < moduleCount - 1; col += 1) {\n var count = 0;\n if (qrcode.isDark(row, col) ) count += 1;\n if (qrcode.isDark(row + 1, col) ) count += 1;\n if (qrcode.isDark(row, col + 1) ) count += 1;\n if (qrcode.isDark(row + 1, col + 1) ) count += 1;\n if (count == 0 || count == 4) {\n lostPoint += 3;\n }\n }\n }\n\n // LEVEL3\n\n for (var row = 0; row < moduleCount; row += 1) {\n for (var col = 0; col < moduleCount - 6; col += 1) {\n if (qrcode.isDark(row, col)\n && !qrcode.isDark(row, col + 1)\n && qrcode.isDark(row, col + 2)\n && qrcode.isDark(row, col + 3)\n && qrcode.isDark(row, col + 4)\n && !qrcode.isDark(row, col + 5)\n && qrcode.isDark(row, col + 6) ) {\n lostPoint += 40;\n }\n }\n }\n\n for (var col = 0; col < moduleCount; col += 1) {\n for (var row = 0; row < moduleCount - 6; row += 1) {\n if (qrcode.isDark(row, col)\n && !qrcode.isDark(row + 1, col)\n && qrcode.isDark(row + 2, col)\n && qrcode.isDark(row + 3, col)\n && qrcode.isDark(row + 4, col)\n && !qrcode.isDark(row + 5, col)\n && qrcode.isDark(row + 6, col) ) {\n lostPoint += 40;\n }\n }\n }\n\n // LEVEL4\n\n var darkCount = 0;\n\n for (var col = 0; col < moduleCount; col += 1) {\n for (var row = 0; row < moduleCount; row += 1) {\n if (qrcode.isDark(row, col) ) {\n darkCount += 1;\n }\n }\n }\n\n var ratio = Math.abs(100 * darkCount / moduleCount / moduleCount - 50) / 5;\n lostPoint += ratio * 10;\n\n return lostPoint;\n };\n\n return _this;\n }();\n\n //---------------------------------------------------------------------\n // QRMath\n //---------------------------------------------------------------------\n\n var QRMath = function() {\n\n var EXP_TABLE = new Array(256);\n var LOG_TABLE = new Array(256);\n\n // initialize tables\n for (var i = 0; i < 8; i += 1) {\n EXP_TABLE[i] = 1 << i;\n }\n for (var i = 8; i < 256; i += 1) {\n EXP_TABLE[i] = EXP_TABLE[i - 4]\n ^ EXP_TABLE[i - 5]\n ^ EXP_TABLE[i - 6]\n ^ EXP_TABLE[i - 8];\n }\n for (var i = 0; i < 255; i += 1) {\n LOG_TABLE[EXP_TABLE[i] ] = i;\n }\n\n var _this = {};\n\n _this.glog = function(n) {\n\n if (n < 1) {\n throw 'glog(' + n + ')';\n }\n\n return LOG_TABLE[n];\n };\n\n _this.gexp = function(n) {\n\n while (n < 0) {\n n += 255;\n }\n\n while (n >= 256) {\n n -= 255;\n }\n\n return EXP_TABLE[n];\n };\n\n return _this;\n }();\n\n //---------------------------------------------------------------------\n // qrPolynomial\n //---------------------------------------------------------------------\n\n function qrPolynomial(num, shift) {\n\n if (typeof num.length == 'undefined') {\n throw num.length + '/' + shift;\n }\n\n var _num = function() {\n var offset = 0;\n while (offset < num.length && num[offset] == 0) {\n offset += 1;\n }\n var _num = new Array(num.length - offset + shift);\n for (var i = 0; i < num.length - offset; i += 1) {\n _num[i] = num[i + offset];\n }\n return _num;\n }();\n\n var _this = {};\n\n _this.getAt = function(index) {\n return _num[index];\n };\n\n _this.getLength = function() {\n return _num.length;\n };\n\n _this.multiply = function(e) {\n\n var num = new Array(_this.getLength() + e.getLength() - 1);\n\n for (var i = 0; i < _this.getLength(); i += 1) {\n for (var j = 0; j < e.getLength(); j += 1) {\n num[i + j] ^= QRMath.gexp(QRMath.glog(_this.getAt(i) ) + QRMath.glog(e.getAt(j) ) );\n }\n }\n\n return qrPolynomial(num, 0);\n };\n\n _this.mod = function(e) {\n\n if (_this.getLength() - e.getLength() < 0) {\n return _this;\n }\n\n var ratio = QRMath.glog(_this.getAt(0) ) - QRMath.glog(e.getAt(0) );\n\n var num = new Array(_this.getLength() );\n for (var i = 0; i < _this.getLength(); i += 1) {\n num[i] = _this.getAt(i);\n }\n\n for (var i = 0; i < e.getLength(); i += 1) {\n num[i] ^= QRMath.gexp(QRMath.glog(e.getAt(i) ) + ratio);\n }\n\n // recursive call\n return qrPolynomial(num, 0).mod(e);\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // QRRSBlock\n //---------------------------------------------------------------------\n\n var QRRSBlock = function() {\n\n var RS_BLOCK_TABLE = [\n\n // L\n // M\n // Q\n // H\n\n // 1\n [1, 26, 19],\n [1, 26, 16],\n [1, 26, 13],\n [1, 26, 9],\n\n // 2\n [1, 44, 34],\n [1, 44, 28],\n [1, 44, 22],\n [1, 44, 16],\n\n // 3\n [1, 70, 55],\n [1, 70, 44],\n [2, 35, 17],\n [2, 35, 13],\n\n // 4\n [1, 100, 80],\n [2, 50, 32],\n [2, 50, 24],\n [4, 25, 9],\n\n // 5\n [1, 134, 108],\n [2, 67, 43],\n [2, 33, 15, 2, 34, 16],\n [2, 33, 11, 2, 34, 12],\n\n // 6\n [2, 86, 68],\n [4, 43, 27],\n [4, 43, 19],\n [4, 43, 15],\n\n // 7\n [2, 98, 78],\n [4, 49, 31],\n [2, 32, 14, 4, 33, 15],\n [4, 39, 13, 1, 40, 14],\n\n // 8\n [2, 121, 97],\n [2, 60, 38, 2, 61, 39],\n [4, 40, 18, 2, 41, 19],\n [4, 40, 14, 2, 41, 15],\n\n // 9\n [2, 146, 116],\n [3, 58, 36, 2, 59, 37],\n [4, 36, 16, 4, 37, 17],\n [4, 36, 12, 4, 37, 13],\n\n // 10\n [2, 86, 68, 2, 87, 69],\n [4, 69, 43, 1, 70, 44],\n [6, 43, 19, 2, 44, 20],\n [6, 43, 15, 2, 44, 16],\n\n // 11\n [4, 101, 81],\n [1, 80, 50, 4, 81, 51],\n [4, 50, 22, 4, 51, 23],\n [3, 36, 12, 8, 37, 13],\n\n // 12\n [2, 116, 92, 2, 117, 93],\n [6, 58, 36, 2, 59, 37],\n [4, 46, 20, 6, 47, 21],\n [7, 42, 14, 4, 43, 15],\n\n // 13\n [4, 133, 107],\n [8, 59, 37, 1, 60, 38],\n [8, 44, 20, 4, 45, 21],\n [12, 33, 11, 4, 34, 12],\n\n // 14\n [3, 145, 115, 1, 146, 116],\n [4, 64, 40, 5, 65, 41],\n [11, 36, 16, 5, 37, 17],\n [11, 36, 12, 5, 37, 13],\n\n // 15\n [5, 109, 87, 1, 110, 88],\n [5, 65, 41, 5, 66, 42],\n [5, 54, 24, 7, 55, 25],\n [11, 36, 12, 7, 37, 13],\n\n // 16\n [5, 122, 98, 1, 123, 99],\n [7, 73, 45, 3, 74, 46],\n [15, 43, 19, 2, 44, 20],\n [3, 45, 15, 13, 46, 16],\n\n // 17\n [1, 135, 107, 5, 136, 108],\n [10, 74, 46, 1, 75, 47],\n [1, 50, 22, 15, 51, 23],\n [2, 42, 14, 17, 43, 15],\n\n // 18\n [5, 150, 120, 1, 151, 121],\n [9, 69, 43, 4, 70, 44],\n [17, 50, 22, 1, 51, 23],\n [2, 42, 14, 19, 43, 15],\n\n // 19\n [3, 141, 113, 4, 142, 114],\n [3, 70, 44, 11, 71, 45],\n [17, 47, 21, 4, 48, 22],\n [9, 39, 13, 16, 40, 14],\n\n // 20\n [3, 135, 107, 5, 136, 108],\n [3, 67, 41, 13, 68, 42],\n [15, 54, 24, 5, 55, 25],\n [15, 43, 15, 10, 44, 16],\n\n // 21\n [4, 144, 116, 4, 145, 117],\n [17, 68, 42],\n [17, 50, 22, 6, 51, 23],\n [19, 46, 16, 6, 47, 17],\n\n // 22\n [2, 139, 111, 7, 140, 112],\n [17, 74, 46],\n [7, 54, 24, 16, 55, 25],\n [34, 37, 13],\n\n // 23\n [4, 151, 121, 5, 152, 122],\n [4, 75, 47, 14, 76, 48],\n [11, 54, 24, 14, 55, 25],\n [16, 45, 15, 14, 46, 16],\n\n // 24\n [6, 147, 117, 4, 148, 118],\n [6, 73, 45, 14, 74, 46],\n [11, 54, 24, 16, 55, 25],\n [30, 46, 16, 2, 47, 17],\n\n // 25\n [8, 132, 106, 4, 133, 107],\n [8, 75, 47, 13, 76, 48],\n [7, 54, 24, 22, 55, 25],\n [22, 45, 15, 13, 46, 16],\n\n // 26\n [10, 142, 114, 2, 143, 115],\n [19, 74, 46, 4, 75, 47],\n [28, 50, 22, 6, 51, 23],\n [33, 46, 16, 4, 47, 17],\n\n // 27\n [8, 152, 122, 4, 153, 123],\n [22, 73, 45, 3, 74, 46],\n [8, 53, 23, 26, 54, 24],\n [12, 45, 15, 28, 46, 16],\n\n // 28\n [3, 147, 117, 10, 148, 118],\n [3, 73, 45, 23, 74, 46],\n [4, 54, 24, 31, 55, 25],\n [11, 45, 15, 31, 46, 16],\n\n // 29\n [7, 146, 116, 7, 147, 117],\n [21, 73, 45, 7, 74, 46],\n [1, 53, 23, 37, 54, 24],\n [19, 45, 15, 26, 46, 16],\n\n // 30\n [5, 145, 115, 10, 146, 116],\n [19, 75, 47, 10, 76, 48],\n [15, 54, 24, 25, 55, 25],\n [23, 45, 15, 25, 46, 16],\n\n // 31\n [13, 145, 115, 3, 146, 116],\n [2, 74, 46, 29, 75, 47],\n [42, 54, 24, 1, 55, 25],\n [23, 45, 15, 28, 46, 16],\n\n // 32\n [17, 145, 115],\n [10, 74, 46, 23, 75, 47],\n [10, 54, 24, 35, 55, 25],\n [19, 45, 15, 35, 46, 16],\n\n // 33\n [17, 145, 115, 1, 146, 116],\n [14, 74, 46, 21, 75, 47],\n [29, 54, 24, 19, 55, 25],\n [11, 45, 15, 46, 46, 16],\n\n // 34\n [13, 145, 115, 6, 146, 116],\n [14, 74, 46, 23, 75, 47],\n [44, 54, 24, 7, 55, 25],\n [59, 46, 16, 1, 47, 17],\n\n // 35\n [12, 151, 121, 7, 152, 122],\n [12, 75, 47, 26, 76, 48],\n [39, 54, 24, 14, 55, 25],\n [22, 45, 15, 41, 46, 16],\n\n // 36\n [6, 151, 121, 14, 152, 122],\n [6, 75, 47, 34, 76, 48],\n [46, 54, 24, 10, 55, 25],\n [2, 45, 15, 64, 46, 16],\n\n // 37\n [17, 152, 122, 4, 153, 123],\n [29, 74, 46, 14, 75, 47],\n [49, 54, 24, 10, 55, 25],\n [24, 45, 15, 46, 46, 16],\n\n // 38\n [4, 152, 122, 18, 153, 123],\n [13, 74, 46, 32, 75, 47],\n [48, 54, 24, 14, 55, 25],\n [42, 45, 15, 32, 46, 16],\n\n // 39\n [20, 147, 117, 4, 148, 118],\n [40, 75, 47, 7, 76, 48],\n [43, 54, 24, 22, 55, 25],\n [10, 45, 15, 67, 46, 16],\n\n // 40\n [19, 148, 118, 6, 149, 119],\n [18, 75, 47, 31, 76, 48],\n [34, 54, 24, 34, 55, 25],\n [20, 45, 15, 61, 46, 16]\n ];\n\n var qrRSBlock = function(totalCount, dataCount) {\n var _this = {};\n _this.totalCount = totalCount;\n _this.dataCount = dataCount;\n return _this;\n };\n\n var _this = {};\n\n var getRsBlockTable = function(typeNumber, errorCorrectionLevel) {\n\n switch(errorCorrectionLevel) {\n case QRErrorCorrectionLevel.L :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 0];\n case QRErrorCorrectionLevel.M :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 1];\n case QRErrorCorrectionLevel.Q :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 2];\n case QRErrorCorrectionLevel.H :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 3];\n default :\n return undefined;\n }\n };\n\n _this.getRSBlocks = function(typeNumber, errorCorrectionLevel) {\n\n var rsBlock = getRsBlockTable(typeNumber, errorCorrectionLevel);\n\n if (typeof rsBlock == 'undefined') {\n throw 'bad rs block @ typeNumber:' + typeNumber +\n '/errorCorrectionLevel:' + errorCorrectionLevel;\n }\n\n var length = rsBlock.length / 3;\n\n var list = [];\n\n for (var i = 0; i < length; i += 1) {\n\n var count = rsBlock[i * 3 + 0];\n var totalCount = rsBlock[i * 3 + 1];\n var dataCount = rsBlock[i * 3 + 2];\n\n for (var j = 0; j < count; j += 1) {\n list.push(qrRSBlock(totalCount, dataCount) );\n }\n }\n\n return list;\n };\n\n return _this;\n }();\n\n //---------------------------------------------------------------------\n // qrBitBuffer\n //---------------------------------------------------------------------\n\n var qrBitBuffer = function() {\n\n var _buffer = [];\n var _length = 0;\n\n var _this = {};\n\n _this.getBuffer = function() {\n return _buffer;\n };\n\n _this.getAt = function(index) {\n var bufIndex = Math.floor(index / 8);\n return ( (_buffer[bufIndex] >>> (7 - index % 8) ) & 1) == 1;\n };\n\n _this.put = function(num, length) {\n for (var i = 0; i < length; i += 1) {\n _this.putBit( ( (num >>> (length - i - 1) ) & 1) == 1);\n }\n };\n\n _this.getLengthInBits = function() {\n return _length;\n };\n\n _this.putBit = function(bit) {\n\n var bufIndex = Math.floor(_length / 8);\n if (_buffer.length <= bufIndex) {\n _buffer.push(0);\n }\n\n if (bit) {\n _buffer[bufIndex] |= (0x80 >>> (_length % 8) );\n }\n\n _length += 1;\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qrNumber\n //---------------------------------------------------------------------\n\n var qrNumber = function(data) {\n\n var _mode = QRMode.MODE_NUMBER;\n var _data = data;\n\n var _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return _data.length;\n };\n\n _this.write = function(buffer) {\n\n var data = _data;\n\n var i = 0;\n\n while (i + 2 < data.length) {\n buffer.put(strToNum(data.substring(i, i + 3) ), 10);\n i += 3;\n }\n\n if (i < data.length) {\n if (data.length - i == 1) {\n buffer.put(strToNum(data.substring(i, i + 1) ), 4);\n } else if (data.length - i == 2) {\n buffer.put(strToNum(data.substring(i, i + 2) ), 7);\n }\n }\n };\n\n var strToNum = function(s) {\n var num = 0;\n for (var i = 0; i < s.length; i += 1) {\n num = num * 10 + chatToNum(s.charAt(i) );\n }\n return num;\n };\n\n var chatToNum = function(c) {\n if ('0' <= c && c <= '9') {\n return c.charCodeAt(0) - '0'.charCodeAt(0);\n }\n throw 'illegal char :' + c;\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qrAlphaNum\n //---------------------------------------------------------------------\n\n var qrAlphaNum = function(data) {\n\n var _mode = QRMode.MODE_ALPHA_NUM;\n var _data = data;\n\n var _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return _data.length;\n };\n\n _this.write = function(buffer) {\n\n var s = _data;\n\n var i = 0;\n\n while (i + 1 < s.length) {\n buffer.put(\n getCode(s.charAt(i) ) * 45 +\n getCode(s.charAt(i + 1) ), 11);\n i += 2;\n }\n\n if (i < s.length) {\n buffer.put(getCode(s.charAt(i) ), 6);\n }\n };\n\n var getCode = function(c) {\n\n if ('0' <= c && c <= '9') {\n return c.charCodeAt(0) - '0'.charCodeAt(0);\n } else if ('A' <= c && c <= 'Z') {\n return c.charCodeAt(0) - 'A'.charCodeAt(0) + 10;\n } else {\n switch (c) {\n case ' ' : return 36;\n case '$' : return 37;\n case '%' : return 38;\n case '*' : return 39;\n case '+' : return 40;\n case '-' : return 41;\n case '.' : return 42;\n case '/' : return 43;\n case ':' : return 44;\n default :\n throw 'illegal char :' + c;\n }\n }\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qr8BitByte\n //---------------------------------------------------------------------\n\n var qr8BitByte = function(data) {\n\n var _mode = QRMode.MODE_8BIT_BYTE;\n var _data = data;\n var _bytes = qrcode.stringToBytes(data);\n\n var _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return _bytes.length;\n };\n\n _this.write = function(buffer) {\n for (var i = 0; i < _bytes.length; i += 1) {\n buffer.put(_bytes[i], 8);\n }\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qrKanji\n //---------------------------------------------------------------------\n\n var qrKanji = function(data) {\n\n var _mode = QRMode.MODE_KANJI;\n var _data = data;\n\n var stringToBytes = qrcode.stringToBytesFuncs['SJIS'];\n if (!stringToBytes) {\n throw 'sjis not supported.';\n }\n !function(c, code) {\n // self test for sjis support.\n var test = stringToBytes(c);\n if (test.length != 2 || ( (test[0] << 8) | test[1]) != code) {\n throw 'sjis not supported.';\n }\n }('\\u53cb', 0x9746);\n\n var _bytes = stringToBytes(data);\n\n var _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return ~~(_bytes.length / 2);\n };\n\n _this.write = function(buffer) {\n\n var data = _bytes;\n\n var i = 0;\n\n while (i + 1 < data.length) {\n\n var c = ( (0xff & data[i]) << 8) | (0xff & data[i + 1]);\n\n if (0x8140 <= c && c <= 0x9FFC) {\n c -= 0x8140;\n } else if (0xE040 <= c && c <= 0xEBBF) {\n c -= 0xC140;\n } else {\n throw 'illegal char at ' + (i + 1) + '/' + c;\n }\n\n c = ( (c >>> 8) & 0xff) * 0xC0 + (c & 0xff);\n\n buffer.put(c, 13);\n\n i += 2;\n }\n\n if (i < data.length) {\n throw 'illegal char at ' + (i + 1);\n }\n };\n\n return _this;\n };\n\n //=====================================================================\n // GIF Support etc.\n //\n\n //---------------------------------------------------------------------\n // byteArrayOutputStream\n //---------------------------------------------------------------------\n\n var byteArrayOutputStream = function() {\n\n var _bytes = [];\n\n var _this = {};\n\n _this.writeByte = function(b) {\n _bytes.push(b & 0xff);\n };\n\n _this.writeShort = function(i) {\n _this.writeByte(i);\n _this.writeByte(i >>> 8);\n };\n\n _this.writeBytes = function(b, off, len) {\n off = off || 0;\n len = len || b.length;\n for (var i = 0; i < len; i += 1) {\n _this.writeByte(b[i + off]);\n }\n };\n\n _this.writeString = function(s) {\n for (var i = 0; i < s.length; i += 1) {\n _this.writeByte(s.charCodeAt(i) );\n }\n };\n\n _this.toByteArray = function() {\n return _bytes;\n };\n\n _this.toString = function() {\n var s = '';\n s += '[';\n for (var i = 0; i < _bytes.length; i += 1) {\n if (i > 0) {\n s += ',';\n }\n s += _bytes[i];\n }\n s += ']';\n return s;\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // base64EncodeOutputStream\n //---------------------------------------------------------------------\n\n var base64EncodeOutputStream = function() {\n\n var _buffer = 0;\n var _buflen = 0;\n var _length = 0;\n var _base64 = '';\n\n var _this = {};\n\n var writeEncoded = function(b) {\n _base64 += String.fromCharCode(encode(b & 0x3f) );\n };\n\n var encode = function(n) {\n if (n < 0) {\n // error.\n } else if (n < 26) {\n return 0x41 + n;\n } else if (n < 52) {\n return 0x61 + (n - 26);\n } else if (n < 62) {\n return 0x30 + (n - 52);\n } else if (n == 62) {\n return 0x2b;\n } else if (n == 63) {\n return 0x2f;\n }\n throw 'n:' + n;\n };\n\n _this.writeByte = function(n) {\n\n _buffer = (_buffer << 8) | (n & 0xff);\n _buflen += 8;\n _length += 1;\n\n while (_buflen >= 6) {\n writeEncoded(_buffer >>> (_buflen - 6) );\n _buflen -= 6;\n }\n };\n\n _this.flush = function() {\n\n if (_buflen > 0) {\n writeEncoded(_buffer << (6 - _buflen) );\n _buffer = 0;\n _buflen = 0;\n }\n\n if (_length % 3 != 0) {\n // padding\n var padlen = 3 - _length % 3;\n for (var i = 0; i < padlen; i += 1) {\n _base64 += '=';\n }\n }\n };\n\n _this.toString = function() {\n return _base64;\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // base64DecodeInputStream\n //---------------------------------------------------------------------\n\n var base64DecodeInputStream = function(str) {\n\n var _str = str;\n var _pos = 0;\n var _buffer = 0;\n var _buflen = 0;\n\n var _this = {};\n\n _this.read = function() {\n\n while (_buflen < 8) {\n\n if (_pos >= _str.length) {\n if (_buflen == 0) {\n return -1;\n }\n throw 'unexpected end of file./' + _buflen;\n }\n\n var c = _str.charAt(_pos);\n _pos += 1;\n\n if (c == '=') {\n _buflen = 0;\n return -1;\n } else if (c.match(/^\\s$/) ) {\n // ignore if whitespace.\n continue;\n }\n\n _buffer = (_buffer << 6) | decode(c.charCodeAt(0) );\n _buflen += 6;\n }\n\n var n = (_buffer >>> (_buflen - 8) ) & 0xff;\n _buflen -= 8;\n return n;\n };\n\n var decode = function(c) {\n if (0x41 <= c && c <= 0x5a) {\n return c - 0x41;\n } else if (0x61 <= c && c <= 0x7a) {\n return c - 0x61 + 26;\n } else if (0x30 <= c && c <= 0x39) {\n return c - 0x30 + 52;\n } else if (c == 0x2b) {\n return 62;\n } else if (c == 0x2f) {\n return 63;\n } else {\n throw 'c:' + c;\n }\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // gifImage (B/W)\n //---------------------------------------------------------------------\n\n var gifImage = function(width, height) {\n\n var _width = width;\n var _height = height;\n var _data = new Array(width * height);\n\n var _this = {};\n\n _this.setPixel = function(x, y, pixel) {\n _data[y * _width + x] = pixel;\n };\n\n _this.write = function(out) {\n\n //---------------------------------\n // GIF Signature\n\n out.writeString('GIF87a');\n\n //---------------------------------\n // Screen Descriptor\n\n out.writeShort(_width);\n out.writeShort(_height);\n\n out.writeByte(0x80); // 2bit\n out.writeByte(0);\n out.writeByte(0);\n\n //---------------------------------\n // Global Color Map\n\n // black\n out.writeByte(0x00);\n out.writeByte(0x00);\n out.writeByte(0x00);\n\n // white\n out.writeByte(0xff);\n out.writeByte(0xff);\n out.writeByte(0xff);\n\n //---------------------------------\n // Image Descriptor\n\n out.writeString(',');\n out.writeShort(0);\n out.writeShort(0);\n out.writeShort(_width);\n out.writeShort(_height);\n out.writeByte(0);\n\n //---------------------------------\n // Local Color Map\n\n //---------------------------------\n // Raster Data\n\n var lzwMinCodeSize = 2;\n var raster = getLZWRaster(lzwMinCodeSize);\n\n out.writeByte(lzwMinCodeSize);\n\n var offset = 0;\n\n while (raster.length - offset > 255) {\n out.writeByte(255);\n out.writeBytes(raster, offset, 255);\n offset += 255;\n }\n\n out.writeByte(raster.length - offset);\n out.writeBytes(raster, offset, raster.length - offset);\n out.writeByte(0x00);\n\n //---------------------------------\n // GIF Terminator\n out.writeString(';');\n };\n\n var bitOutputStream = function(out) {\n\n var _out = out;\n var _bitLength = 0;\n var _bitBuffer = 0;\n\n var _this = {};\n\n _this.write = function(data, length) {\n\n if ( (data >>> length) != 0) {\n throw 'length over';\n }\n\n while (_bitLength + length >= 8) {\n _out.writeByte(0xff & ( (data << _bitLength) | _bitBuffer) );\n length -= (8 - _bitLength);\n data >>>= (8 - _bitLength);\n _bitBuffer = 0;\n _bitLength = 0;\n }\n\n _bitBuffer = (data << _bitLength) | _bitBuffer;\n _bitLength = _bitLength + length;\n };\n\n _this.flush = function() {\n if (_bitLength > 0) {\n _out.writeByte(_bitBuffer);\n }\n };\n\n return _this;\n };\n\n var getLZWRaster = function(lzwMinCodeSize) {\n\n var clearCode = 1 << lzwMinCodeSize;\n var endCode = (1 << lzwMinCodeSize) + 1;\n var bitLength = lzwMinCodeSize + 1;\n\n // Setup LZWTable\n var table = lzwTable();\n\n for (var i = 0; i < clearCode; i += 1) {\n table.add(String.fromCharCode(i) );\n }\n table.add(String.fromCharCode(clearCode) );\n table.add(String.fromCharCode(endCode) );\n\n var byteOut = byteArrayOutputStream();\n var bitOut = bitOutputStream(byteOut);\n\n // clear code\n bitOut.write(clearCode, bitLength);\n\n var dataIndex = 0;\n\n var s = String.fromCharCode(_data[dataIndex]);\n dataIndex += 1;\n\n while (dataIndex < _data.length) {\n\n var c = String.fromCharCode(_data[dataIndex]);\n dataIndex += 1;\n\n if (table.contains(s + c) ) {\n\n s = s + c;\n\n } else {\n\n bitOut.write(table.indexOf(s), bitLength);\n\n if (table.size() < 0xfff) {\n\n if (table.size() == (1 << bitLength) ) {\n bitLength += 1;\n }\n\n table.add(s + c);\n }\n\n s = c;\n }\n }\n\n bitOut.write(table.indexOf(s), bitLength);\n\n // end code\n bitOut.write(endCode, bitLength);\n\n bitOut.flush();\n\n return byteOut.toByteArray();\n };\n\n var lzwTable = function() {\n\n var _map = {};\n var _size = 0;\n\n var _this = {};\n\n _this.add = function(key) {\n if (_this.contains(key) ) {\n throw 'dup key:' + key;\n }\n _map[key] = _size;\n _size += 1;\n };\n\n _this.size = function() {\n return _size;\n };\n\n _this.indexOf = function(key) {\n return _map[key];\n };\n\n _this.contains = function(key) {\n return typeof _map[key] != 'undefined';\n };\n\n return _this;\n };\n\n return _this;\n };\n\n var createDataURL = function(width, height, getPixel) {\n var gif = gifImage(width, height);\n for (var y = 0; y < height; y += 1) {\n for (var x = 0; x < width; x += 1) {\n gif.setPixel(x, y, getPixel(x, y) );\n }\n }\n\n var b = byteArrayOutputStream();\n gif.write(b);\n\n var base64 = base64EncodeOutputStream();\n var bytes = b.toByteArray();\n for (var i = 0; i < bytes.length; i += 1) {\n base64.writeByte(bytes[i]);\n }\n base64.flush();\n\n return 'data:image/gif;base64,' + base64;\n };\n\n //---------------------------------------------------------------------\n // returns qrcode function.\n\n return qrcode;\n}();\n\n// multibyte support\n!function() {\n\n qrcode.stringToBytesFuncs['UTF-8'] = function(s) {\n // http://stackoverflow.com/questions/18729405/how-to-convert-utf8-string-to-byte-array\n function toUTF8Array(str) {\n var utf8 = [];\n for (var i=0; i < str.length; i++) {\n var charcode = str.charCodeAt(i);\n if (charcode < 0x80) utf8.push(charcode);\n else if (charcode < 0x800) {\n utf8.push(0xc0 | (charcode >> 6),\n 0x80 | (charcode & 0x3f));\n }\n else if (charcode < 0xd800 || charcode >= 0xe000) {\n utf8.push(0xe0 | (charcode >> 12),\n 0x80 | ((charcode>>6) & 0x3f),\n 0x80 | (charcode & 0x3f));\n }\n // surrogate pair\n else {\n i++;\n // UTF-16 encodes 0x10000-0x10FFFF by\n // subtracting 0x10000 and splitting the\n // 20 bits of 0x0-0xFFFFF into two halves\n charcode = 0x10000 + (((charcode & 0x3ff)<<10)\n | (str.charCodeAt(i) & 0x3ff));\n utf8.push(0xf0 | (charcode >>18),\n 0x80 | ((charcode>>12) & 0x3f),\n 0x80 | ((charcode>>6) & 0x3f),\n 0x80 | (charcode & 0x3f));\n }\n }\n return utf8;\n }\n return toUTF8Array(s);\n };\n\n}();\n\n(function (factory) {\n if (typeof define === 'function' && define.amd) {\n define([], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory();\n }\n}(function () {\n return qrcode;\n}));\n","import { UnknownObject } from \"../types\";\n\nconst isObject = (obj: Record): boolean => !!obj && typeof obj === \"object\" && !Array.isArray(obj);\n\nexport default function mergeDeep(target: UnknownObject, ...sources: UnknownObject[]): UnknownObject {\n if (!sources.length) return target;\n const source = sources.shift();\n if (source === undefined || !isObject(target) || !isObject(source)) return target;\n target = { ...target };\n Object.keys(source).forEach((key: string): void => {\n const targetValue = target[key];\n const sourceValue = source[key];\n\n if (Array.isArray(targetValue) && Array.isArray(sourceValue)) {\n target[key] = sourceValue;\n } else if (isObject(targetValue) && isObject(sourceValue)) {\n target[key] = mergeDeep(Object.assign({}, targetValue), sourceValue);\n } else {\n target[key] = sourceValue;\n }\n });\n\n return mergeDeep(target, ...sources);\n}\n","export default function downloadURI(uri: string, name: string): void {\n const link = document.createElement(\"a\");\n link.download = name;\n link.href = uri;\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n}\n","interface ImageSizeOptions {\n originalHeight: number;\n originalWidth: number;\n maxHiddenDots: number;\n maxHiddenAxisDots?: number;\n dotSize: number;\n}\n\ninterface ImageSizeResult {\n height: number;\n width: number;\n hideYDots: number;\n hideXDots: number;\n}\n\nexport default function calculateImageSize({\n originalHeight,\n originalWidth,\n maxHiddenDots,\n maxHiddenAxisDots,\n dotSize\n}: ImageSizeOptions): ImageSizeResult {\n const hideDots = { x: 0, y: 0 };\n const imageSize = { x: 0, y: 0 };\n\n if (originalHeight <= 0 || originalWidth <= 0 || maxHiddenDots <= 0 || dotSize <= 0) {\n return {\n height: 0,\n width: 0,\n hideYDots: 0,\n hideXDots: 0\n };\n }\n\n const k = originalHeight / originalWidth;\n\n //Getting the maximum possible axis hidden dots\n hideDots.x = Math.floor(Math.sqrt(maxHiddenDots / k));\n //The count of hidden dot's can't be less than 1\n if (hideDots.x <= 0) hideDots.x = 1;\n //Check the limit of the maximum allowed axis hidden dots\n if (maxHiddenAxisDots && maxHiddenAxisDots < hideDots.x) hideDots.x = maxHiddenAxisDots;\n //The count of dots should be odd\n if (hideDots.x % 2 === 0) hideDots.x--;\n imageSize.x = hideDots.x * dotSize;\n //Calculate opposite axis hidden dots based on axis value.\n //The value will be odd.\n //We use ceil to prevent dots covering by the image.\n hideDots.y = 1 + 2 * Math.ceil((hideDots.x * k - 1) / 2);\n imageSize.y = Math.round(imageSize.x * k);\n //If the result dots count is bigger than max - then decrease size and calculate again\n if (hideDots.y * hideDots.x > maxHiddenDots || (maxHiddenAxisDots && maxHiddenAxisDots < hideDots.y)) {\n if (maxHiddenAxisDots && maxHiddenAxisDots < hideDots.y) {\n hideDots.y = maxHiddenAxisDots;\n if (hideDots.y % 2 === 0) hideDots.x--;\n } else {\n hideDots.y -= 2;\n }\n imageSize.y = hideDots.y * dotSize;\n hideDots.x = 1 + 2 * Math.ceil((hideDots.y / k - 1) / 2);\n imageSize.x = Math.round(imageSize.y / k);\n }\n\n return {\n height: imageSize.y,\n width: imageSize.x,\n hideYDots: hideDots.x,\n hideXDots: hideDots.y\n };\n}\n","interface ErrorCorrectionPercents {\n [key: string]: number;\n}\n\nexport default {\n L: 0.07,\n M: 0.15,\n Q: 0.25,\n H: 0.3\n} as ErrorCorrectionPercents;\n","import { DotTypes } from \"../types\";\n\nexport default {\n dots: \"dots\",\n rounded: \"rounded\",\n classy: \"classy\",\n classyRounded: \"classy-rounded\",\n square: \"square\",\n extraRounded: \"extra-rounded\"\n} as DotTypes;\n","import dotTypes from \"../../../constants/dotTypes\";\nimport {\n DotType,\n GetNeighbor,\n RotateFigureArgsCanvas,\n BasicFigureDrawArgsCanvas,\n DrawArgsCanvas\n} from \"../../../types\";\n\nexport default class QRDot {\n _context: CanvasRenderingContext2D;\n _type: DotType;\n\n constructor({ context, type }: { context: CanvasRenderingContext2D; type: DotType }) {\n this._context = context;\n this._type = type;\n }\n\n draw(x: number, y: number, size: number, getNeighbor: GetNeighbor): void {\n const context = this._context;\n const type = this._type;\n let drawFunction;\n\n switch (type) {\n case dotTypes.dots:\n drawFunction = this._drawDot;\n break;\n case dotTypes.classy:\n drawFunction = this._drawClassy;\n break;\n case dotTypes.classyRounded:\n drawFunction = this._drawClassyRounded;\n break;\n case dotTypes.rounded:\n drawFunction = this._drawRounded;\n break;\n case dotTypes.extraRounded:\n drawFunction = this._drawExtraRounded;\n break;\n case dotTypes.square:\n default:\n drawFunction = this._drawSquare;\n }\n\n drawFunction.call(this, { x, y, size, context, getNeighbor });\n }\n\n _rotateFigure({ x, y, size, context, rotation = 0, draw }: RotateFigureArgsCanvas): void {\n const cx = x + size / 2;\n const cy = y + size / 2;\n\n context.translate(cx, cy);\n rotation && context.rotate(rotation);\n draw();\n context.closePath();\n rotation && context.rotate(-rotation);\n context.translate(-cx, -cy);\n }\n\n _basicDot(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.arc(0, 0, size / 2, 0, Math.PI * 2);\n }\n });\n }\n\n _basicSquare(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.rect(-size / 2, -size / 2, size, size);\n }\n });\n }\n\n //if rotation === 0 - right side is rounded\n _basicSideRounded(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.arc(0, 0, size / 2, -Math.PI / 2, Math.PI / 2);\n context.lineTo(-size / 2, size / 2);\n context.lineTo(-size / 2, -size / 2);\n context.lineTo(0, -size / 2);\n }\n });\n }\n\n //if rotation === 0 - top right corner is rounded\n _basicCornerRounded(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.arc(0, 0, size / 2, -Math.PI / 2, 0);\n context.lineTo(size / 2, size / 2);\n context.lineTo(-size / 2, size / 2);\n context.lineTo(-size / 2, -size / 2);\n context.lineTo(0, -size / 2);\n }\n });\n }\n\n //if rotation === 0 - top right corner is rounded\n _basicCornerExtraRounded(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.arc(-size / 2, size / 2, size, -Math.PI / 2, 0);\n context.lineTo(-size / 2, size / 2);\n context.lineTo(-size / 2, -size / 2);\n }\n });\n }\n\n _basicCornersRounded(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.arc(0, 0, size / 2, -Math.PI / 2, 0);\n context.lineTo(size / 2, size / 2);\n context.lineTo(0, size / 2);\n context.arc(0, 0, size / 2, Math.PI / 2, Math.PI);\n context.lineTo(-size / 2, -size / 2);\n context.lineTo(0, -size / 2);\n }\n });\n }\n\n _basicCornersExtraRounded(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.arc(-size / 2, size / 2, size, -Math.PI / 2, 0);\n context.arc(size / 2, -size / 2, size, Math.PI / 2, Math.PI);\n }\n });\n }\n\n _drawDot({ x, y, size, context }: DrawArgsCanvas): void {\n this._basicDot({ x, y, size, context, rotation: 0 });\n }\n\n _drawSquare({ x, y, size, context }: DrawArgsCanvas): void {\n this._basicSquare({ x, y, size, context, rotation: 0 });\n }\n\n _drawRounded({ x, y, size, context, getNeighbor }: DrawArgsCanvas): void {\n const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\n const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\n const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\n const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\n\n const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\n\n if (neighborsCount === 0) {\n this._basicDot({ x, y, size, context, rotation: 0 });\n return;\n }\n\n if (neighborsCount > 2 || (leftNeighbor && rightNeighbor) || (topNeighbor && bottomNeighbor)) {\n this._basicSquare({ x, y, size, context, rotation: 0 });\n return;\n }\n\n if (neighborsCount === 2) {\n let rotation = 0;\n\n if (leftNeighbor && topNeighbor) {\n rotation = Math.PI / 2;\n } else if (topNeighbor && rightNeighbor) {\n rotation = Math.PI;\n } else if (rightNeighbor && bottomNeighbor) {\n rotation = -Math.PI / 2;\n }\n\n this._basicCornerRounded({ x, y, size, context, rotation });\n return;\n }\n\n if (neighborsCount === 1) {\n let rotation = 0;\n\n if (topNeighbor) {\n rotation = Math.PI / 2;\n } else if (rightNeighbor) {\n rotation = Math.PI;\n } else if (bottomNeighbor) {\n rotation = -Math.PI / 2;\n }\n\n this._basicSideRounded({ x, y, size, context, rotation });\n return;\n }\n }\n\n _drawExtraRounded({ x, y, size, context, getNeighbor }: DrawArgsCanvas): void {\n const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\n const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\n const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\n const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\n\n const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\n\n if (neighborsCount === 0) {\n this._basicDot({ x, y, size, context, rotation: 0 });\n return;\n }\n\n if (neighborsCount > 2 || (leftNeighbor && rightNeighbor) || (topNeighbor && bottomNeighbor)) {\n this._basicSquare({ x, y, size, context, rotation: 0 });\n return;\n }\n\n if (neighborsCount === 2) {\n let rotation = 0;\n\n if (leftNeighbor && topNeighbor) {\n rotation = Math.PI / 2;\n } else if (topNeighbor && rightNeighbor) {\n rotation = Math.PI;\n } else if (rightNeighbor && bottomNeighbor) {\n rotation = -Math.PI / 2;\n }\n\n this._basicCornerExtraRounded({ x, y, size, context, rotation });\n return;\n }\n\n if (neighborsCount === 1) {\n let rotation = 0;\n\n if (topNeighbor) {\n rotation = Math.PI / 2;\n } else if (rightNeighbor) {\n rotation = Math.PI;\n } else if (bottomNeighbor) {\n rotation = -Math.PI / 2;\n }\n\n this._basicSideRounded({ x, y, size, context, rotation });\n return;\n }\n }\n\n _drawClassy({ x, y, size, context, getNeighbor }: DrawArgsCanvas): void {\n const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\n const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\n const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\n const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\n\n const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\n\n if (neighborsCount === 0) {\n this._basicCornersRounded({ x, y, size, context, rotation: Math.PI / 2 });\n return;\n }\n\n if (!leftNeighbor && !topNeighbor) {\n this._basicCornerRounded({ x, y, size, context, rotation: -Math.PI / 2 });\n return;\n }\n\n if (!rightNeighbor && !bottomNeighbor) {\n this._basicCornerRounded({ x, y, size, context, rotation: Math.PI / 2 });\n return;\n }\n\n this._basicSquare({ x, y, size, context, rotation: 0 });\n }\n\n _drawClassyRounded({ x, y, size, context, getNeighbor }: DrawArgsCanvas): void {\n const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\n const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\n const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\n const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\n\n const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\n\n if (neighborsCount === 0) {\n this._basicCornersRounded({ x, y, size, context, rotation: Math.PI / 2 });\n return;\n }\n\n if (!leftNeighbor && !topNeighbor) {\n this._basicCornerExtraRounded({ x, y, size, context, rotation: -Math.PI / 2 });\n return;\n }\n\n if (!rightNeighbor && !bottomNeighbor) {\n this._basicCornerExtraRounded({ x, y, size, context, rotation: Math.PI / 2 });\n return;\n }\n\n this._basicSquare({ x, y, size, context, rotation: 0 });\n }\n}\n","import { CornerSquareTypes } from \"../types\";\n\nexport default {\n dot: \"dot\",\n square: \"square\",\n extraRounded: \"extra-rounded\"\n} as CornerSquareTypes;\n","import cornerSquareTypes from \"../../../constants/cornerSquareTypes\";\nimport { CornerSquareType, RotateFigureArgsCanvas, BasicFigureDrawArgsCanvas, DrawArgsCanvas } from \"../../../types\";\n\nexport default class QRCornerSquare {\n _context: CanvasRenderingContext2D;\n _type: CornerSquareType;\n\n constructor({ context, type }: { context: CanvasRenderingContext2D; type: CornerSquareType }) {\n this._context = context;\n this._type = type;\n }\n\n draw(x: number, y: number, size: number, rotation: number): void {\n const context = this._context;\n const type = this._type;\n let drawFunction;\n\n switch (type) {\n case cornerSquareTypes.square:\n drawFunction = this._drawSquare;\n break;\n case cornerSquareTypes.extraRounded:\n drawFunction = this._drawExtraRounded;\n break;\n case cornerSquareTypes.dot:\n default:\n drawFunction = this._drawDot;\n }\n\n drawFunction.call(this, { x, y, size, context, rotation });\n }\n\n _rotateFigure({ x, y, size, context, rotation = 0, draw }: RotateFigureArgsCanvas): void {\n const cx = x + size / 2;\n const cy = y + size / 2;\n\n context.translate(cx, cy);\n rotation && context.rotate(rotation);\n draw();\n context.closePath();\n rotation && context.rotate(-rotation);\n context.translate(-cx, -cy);\n }\n\n _basicDot(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n const dotSize = size / 7;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.arc(0, 0, size / 2, 0, Math.PI * 2);\n context.arc(0, 0, size / 2 - dotSize, 0, Math.PI * 2);\n }\n });\n }\n\n _basicSquare(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n const dotSize = size / 7;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.rect(-size / 2, -size / 2, size, size);\n context.rect(-size / 2 + dotSize, -size / 2 + dotSize, size - 2 * dotSize, size - 2 * dotSize);\n }\n });\n }\n\n _basicExtraRounded(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n const dotSize = size / 7;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.arc(-dotSize, -dotSize, 2.5 * dotSize, Math.PI, -Math.PI / 2);\n context.lineTo(dotSize, -3.5 * dotSize);\n context.arc(dotSize, -dotSize, 2.5 * dotSize, -Math.PI / 2, 0);\n context.lineTo(3.5 * dotSize, -dotSize);\n context.arc(dotSize, dotSize, 2.5 * dotSize, 0, Math.PI / 2);\n context.lineTo(-dotSize, 3.5 * dotSize);\n context.arc(-dotSize, dotSize, 2.5 * dotSize, Math.PI / 2, Math.PI);\n context.lineTo(-3.5 * dotSize, -dotSize);\n\n context.arc(-dotSize, -dotSize, 1.5 * dotSize, Math.PI, -Math.PI / 2);\n context.lineTo(dotSize, -2.5 * dotSize);\n context.arc(dotSize, -dotSize, 1.5 * dotSize, -Math.PI / 2, 0);\n context.lineTo(2.5 * dotSize, -dotSize);\n context.arc(dotSize, dotSize, 1.5 * dotSize, 0, Math.PI / 2);\n context.lineTo(-dotSize, 2.5 * dotSize);\n context.arc(-dotSize, dotSize, 1.5 * dotSize, Math.PI / 2, Math.PI);\n context.lineTo(-2.5 * dotSize, -dotSize);\n }\n });\n }\n\n _drawDot({ x, y, size, context, rotation }: DrawArgsCanvas): void {\n this._basicDot({ x, y, size, context, rotation });\n }\n\n _drawSquare({ x, y, size, context, rotation }: DrawArgsCanvas): void {\n this._basicSquare({ x, y, size, context, rotation });\n }\n\n _drawExtraRounded({ x, y, size, context, rotation }: DrawArgsCanvas): void {\n this._basicExtraRounded({ x, y, size, context, rotation });\n }\n}\n","import { CornerDotTypes } from \"../types\";\n\nexport default {\n dot: \"dot\",\n square: \"square\"\n} as CornerDotTypes;\n","import cornerDotTypes from \"../../../constants/cornerDotTypes\";\nimport { CornerDotType, RotateFigureArgsCanvas, BasicFigureDrawArgsCanvas, DrawArgsCanvas } from \"../../../types\";\n\nexport default class QRCornerDot {\n _context: CanvasRenderingContext2D;\n _type: CornerDotType;\n\n constructor({ context, type }: { context: CanvasRenderingContext2D; type: CornerDotType }) {\n this._context = context;\n this._type = type;\n }\n\n draw(x: number, y: number, size: number, rotation: number): void {\n const context = this._context;\n const type = this._type;\n let drawFunction;\n\n switch (type) {\n case cornerDotTypes.square:\n drawFunction = this._drawSquare;\n break;\n case cornerDotTypes.dot:\n default:\n drawFunction = this._drawDot;\n }\n\n drawFunction.call(this, { x, y, size, context, rotation });\n }\n\n _rotateFigure({ x, y, size, context, rotation = 0, draw }: RotateFigureArgsCanvas): void {\n const cx = x + size / 2;\n const cy = y + size / 2;\n\n context.translate(cx, cy);\n rotation && context.rotate(rotation);\n draw();\n context.closePath();\n rotation && context.rotate(-rotation);\n context.translate(-cx, -cy);\n }\n\n _basicDot(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.arc(0, 0, size / 2, 0, Math.PI * 2);\n }\n });\n }\n\n _basicSquare(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.rect(-size / 2, -size / 2, size, size);\n }\n });\n }\n\n _drawDot({ x, y, size, context, rotation }: DrawArgsCanvas): void {\n this._basicDot({ x, y, size, context, rotation });\n }\n\n _drawSquare({ x, y, size, context, rotation }: DrawArgsCanvas): void {\n this._basicSquare({ x, y, size, context, rotation });\n }\n}\n","import { GradientTypes } from \"../types\";\n\nexport default {\n radial: \"radial\",\n linear: \"linear\"\n} as GradientTypes;\n","import calculateImageSize from \"../tools/calculateImageSize\";\nimport errorCorrectionPercents from \"../constants/errorCorrectionPercents\";\nimport QRDot from \"../figures/dot/canvas/QRDot\";\nimport QRCornerSquare from \"../figures/cornerSquare/canvas/QRCornerSquare\";\nimport QRCornerDot from \"../figures/cornerDot/canvas/QRCornerDot\";\nimport { RequiredOptions } from \"./QROptions\";\nimport gradientTypes from \"../constants/gradientTypes\";\nimport { QRCode, Gradient, FilterFunction } from \"../types\";\n\nconst squareMask = [\n [1, 1, 1, 1, 1, 1, 1],\n [1, 0, 0, 0, 0, 0, 1],\n [1, 0, 0, 0, 0, 0, 1],\n [1, 0, 0, 0, 0, 0, 1],\n [1, 0, 0, 0, 0, 0, 1],\n [1, 0, 0, 0, 0, 0, 1],\n [1, 1, 1, 1, 1, 1, 1]\n];\n\nconst dotMask = [\n [0, 0, 0, 0, 0, 0, 0],\n [0, 0, 0, 0, 0, 0, 0],\n [0, 0, 1, 1, 1, 0, 0],\n [0, 0, 1, 1, 1, 0, 0],\n [0, 0, 1, 1, 1, 0, 0],\n [0, 0, 0, 0, 0, 0, 0],\n [0, 0, 0, 0, 0, 0, 0]\n];\n\nexport default class QRCanvas {\n _canvas: HTMLCanvasElement;\n _options: RequiredOptions;\n _qr?: QRCode;\n _image?: HTMLImageElement;\n\n //TODO don't pass all options to this class\n constructor(options: RequiredOptions) {\n this._canvas = document.createElement(\"canvas\");\n this._canvas.width = options.width;\n this._canvas.height = options.height;\n this._options = options;\n }\n\n get context(): CanvasRenderingContext2D | null {\n return this._canvas.getContext(\"2d\");\n }\n\n get width(): number {\n return this._canvas.width;\n }\n\n get height(): number {\n return this._canvas.height;\n }\n\n getCanvas(): HTMLCanvasElement {\n return this._canvas;\n }\n\n clear(): void {\n const canvasContext = this.context;\n\n if (canvasContext) {\n canvasContext.clearRect(0, 0, this._canvas.width, this._canvas.height);\n }\n }\n\n async drawQR(qr: QRCode): Promise {\n const count = qr.getModuleCount();\n const minSize = Math.min(this._options.width, this._options.height) - this._options.margin * 2;\n const dotSize = Math.floor(minSize / count);\n let drawImageSize = {\n hideXDots: 0,\n hideYDots: 0,\n width: 0,\n height: 0\n };\n\n this._qr = qr;\n\n if (this._options.image) {\n await this.loadImage();\n if (!this._image) return;\n const { imageOptions, qrOptions } = this._options;\n const coverLevel = imageOptions.imageSize * errorCorrectionPercents[qrOptions.errorCorrectionLevel];\n const maxHiddenDots = Math.floor(coverLevel * count * count);\n\n drawImageSize = calculateImageSize({\n originalWidth: this._image.width,\n originalHeight: this._image.height,\n maxHiddenDots,\n maxHiddenAxisDots: count - 14,\n dotSize\n });\n }\n\n this.clear();\n this.drawBackground();\n this.drawDots((i: number, j: number): boolean => {\n if (this._options.imageOptions.hideBackgroundDots) {\n if (\n i >= (count - drawImageSize.hideXDots) / 2 &&\n i < (count + drawImageSize.hideXDots) / 2 &&\n j >= (count - drawImageSize.hideYDots) / 2 &&\n j < (count + drawImageSize.hideYDots) / 2\n ) {\n return false;\n }\n }\n\n if (squareMask[i]?.[j] || squareMask[i - count + 7]?.[j] || squareMask[i]?.[j - count + 7]) {\n return false;\n }\n\n if (dotMask[i]?.[j] || dotMask[i - count + 7]?.[j] || dotMask[i]?.[j - count + 7]) {\n return false;\n }\n\n return true;\n });\n this.drawCorners();\n\n if (this._options.image) {\n this.drawImage({ width: drawImageSize.width, height: drawImageSize.height, count, dotSize });\n }\n }\n\n drawBackground(): void {\n const canvasContext = this.context;\n const options = this._options;\n\n if (canvasContext) {\n if (options.backgroundOptions.gradient) {\n const gradientOptions = options.backgroundOptions.gradient;\n const gradient = this._createGradient({\n context: canvasContext,\n options: gradientOptions,\n additionalRotation: 0,\n x: 0,\n y: 0,\n size: this._canvas.width > this._canvas.height ? this._canvas.width : this._canvas.height\n });\n\n gradientOptions.colorStops.forEach(({ offset, color }: { offset: number; color: string }) => {\n gradient.addColorStop(offset, color);\n });\n\n canvasContext.fillStyle = gradient;\n } else if (options.backgroundOptions.color) {\n canvasContext.fillStyle = options.backgroundOptions.color;\n }\n canvasContext.fillRect(0, 0, this._canvas.width, this._canvas.height);\n }\n }\n\n drawDots(filter?: FilterFunction): void {\n if (!this._qr) {\n throw \"QR code is not defined\";\n }\n\n const canvasContext = this.context;\n\n if (!canvasContext) {\n throw \"QR code is not defined\";\n }\n\n const options = this._options;\n const count = this._qr.getModuleCount();\n\n if (count > options.width || count > options.height) {\n throw \"The canvas is too small.\";\n }\n\n const minSize = Math.min(options.width, options.height) - options.margin * 2;\n const dotSize = Math.floor(minSize / count);\n const xBeginning = Math.floor((options.width - count * dotSize) / 2);\n const yBeginning = Math.floor((options.height - count * dotSize) / 2);\n const dot = new QRDot({ context: canvasContext, type: options.dotsOptions.type });\n\n canvasContext.beginPath();\n\n for (let i = 0; i < count; i++) {\n for (let j = 0; j < count; j++) {\n if (filter && !filter(i, j)) {\n continue;\n }\n if (!this._qr.isDark(i, j)) {\n continue;\n }\n dot.draw(\n yBeginning + j * dotSize,\n xBeginning + i * dotSize,\n dotSize,\n (xOffset: number, yOffset: number): boolean => {\n if (i + xOffset < 0 || j + yOffset < 0 || i + xOffset >= count || j + yOffset >= count) return false;\n if (filter && !filter(i + xOffset, j + yOffset)) return false;\n return !!this._qr && this._qr.isDark(i + xOffset, j + yOffset);\n }\n );\n }\n }\n\n if (options.dotsOptions.gradient) {\n const gradientOptions = options.dotsOptions.gradient;\n const gradient = this._createGradient({\n context: canvasContext,\n options: gradientOptions,\n additionalRotation: 0,\n x: xBeginning,\n y: yBeginning,\n size: count * dotSize\n });\n\n gradientOptions.colorStops.forEach(({ offset, color }: { offset: number; color: string }) => {\n gradient.addColorStop(offset, color);\n });\n\n canvasContext.fillStyle = canvasContext.strokeStyle = gradient;\n } else if (options.dotsOptions.color) {\n canvasContext.fillStyle = canvasContext.strokeStyle = options.dotsOptions.color;\n }\n\n canvasContext.fill(\"evenodd\");\n }\n\n drawCorners(filter?: FilterFunction): void {\n if (!this._qr) {\n throw \"QR code is not defined\";\n }\n\n const canvasContext = this.context;\n\n if (!canvasContext) {\n throw \"QR code is not defined\";\n }\n\n const options = this._options;\n\n const count = this._qr.getModuleCount();\n const minSize = Math.min(options.width, options.height) - options.margin * 2;\n const dotSize = Math.floor(minSize / count);\n const cornersSquareSize = dotSize * 7;\n const cornersDotSize = dotSize * 3;\n const xBeginning = Math.floor((options.width - count * dotSize) / 2);\n const yBeginning = Math.floor((options.height - count * dotSize) / 2);\n\n [\n [0, 0, 0],\n [1, 0, Math.PI / 2],\n [0, 1, -Math.PI / 2]\n ].forEach(([column, row, rotation]) => {\n if (filter && !filter(column, row)) {\n return;\n }\n\n const x = xBeginning + column * dotSize * (count - 7);\n const y = yBeginning + row * dotSize * (count - 7);\n\n if (options.cornersSquareOptions?.type) {\n const cornersSquare = new QRCornerSquare({ context: canvasContext, type: options.cornersSquareOptions?.type });\n\n canvasContext.beginPath();\n cornersSquare.draw(x, y, cornersSquareSize, rotation);\n } else {\n const dot = new QRDot({ context: canvasContext, type: options.dotsOptions.type });\n\n canvasContext.beginPath();\n\n for (let i = 0; i < squareMask.length; i++) {\n for (let j = 0; j < squareMask[i].length; j++) {\n if (!squareMask[i]?.[j]) {\n continue;\n }\n\n dot.draw(\n x + i * dotSize,\n y + j * dotSize,\n dotSize,\n (xOffset: number, yOffset: number): boolean => !!squareMask[i + xOffset]?.[j + yOffset]\n );\n }\n }\n }\n\n if (options.cornersSquareOptions?.gradient) {\n const gradientOptions = options.cornersSquareOptions.gradient;\n const gradient = this._createGradient({\n context: canvasContext,\n options: gradientOptions,\n additionalRotation: rotation,\n x,\n y,\n size: cornersSquareSize\n });\n\n gradientOptions.colorStops.forEach(({ offset, color }: { offset: number; color: string }) => {\n gradient.addColorStop(offset, color);\n });\n\n canvasContext.fillStyle = canvasContext.strokeStyle = gradient;\n } else if (options.cornersSquareOptions?.color) {\n canvasContext.fillStyle = canvasContext.strokeStyle = options.cornersSquareOptions.color;\n }\n\n canvasContext.fill(\"evenodd\");\n\n if (options.cornersDotOptions?.type) {\n const cornersDot = new QRCornerDot({ context: canvasContext, type: options.cornersDotOptions?.type });\n\n canvasContext.beginPath();\n cornersDot.draw(x + dotSize * 2, y + dotSize * 2, cornersDotSize, rotation);\n } else {\n const dot = new QRDot({ context: canvasContext, type: options.dotsOptions.type });\n\n canvasContext.beginPath();\n\n for (let i = 0; i < dotMask.length; i++) {\n for (let j = 0; j < dotMask[i].length; j++) {\n if (!dotMask[i]?.[j]) {\n continue;\n }\n\n dot.draw(\n x + i * dotSize,\n y + j * dotSize,\n dotSize,\n (xOffset: number, yOffset: number): boolean => !!dotMask[i + xOffset]?.[j + yOffset]\n );\n }\n }\n }\n\n if (options.cornersDotOptions?.gradient) {\n const gradientOptions = options.cornersDotOptions.gradient;\n const gradient = this._createGradient({\n context: canvasContext,\n options: gradientOptions,\n additionalRotation: rotation,\n x: x + dotSize * 2,\n y: y + dotSize * 2,\n size: cornersDotSize\n });\n\n gradientOptions.colorStops.forEach(({ offset, color }: { offset: number; color: string }) => {\n gradient.addColorStop(offset, color);\n });\n\n canvasContext.fillStyle = canvasContext.strokeStyle = gradient;\n } else if (options.cornersDotOptions?.color) {\n canvasContext.fillStyle = canvasContext.strokeStyle = options.cornersDotOptions.color;\n }\n\n canvasContext.fill(\"evenodd\");\n });\n }\n\n loadImage(): Promise {\n return new Promise((resolve, reject) => {\n const options = this._options;\n const image = new Image();\n\n if (!options.image) {\n return reject(\"Image is not defined\");\n }\n\n if (typeof options.imageOptions.crossOrigin === \"string\") {\n image.crossOrigin = options.imageOptions.crossOrigin;\n }\n\n this._image = image;\n image.onload = (): void => {\n resolve();\n };\n image.src = options.image;\n });\n }\n\n drawImage({\n width,\n height,\n count,\n dotSize\n }: {\n width: number;\n height: number;\n count: number;\n dotSize: number;\n }): void {\n const canvasContext = this.context;\n\n if (!canvasContext) {\n throw \"canvasContext is not defined\";\n }\n\n if (!this._image) {\n throw \"image is not defined\";\n }\n\n const options = this._options;\n const xBeginning = Math.floor((options.width - count * dotSize) / 2);\n const yBeginning = Math.floor((options.height - count * dotSize) / 2);\n const dx = xBeginning + options.imageOptions.margin + (count * dotSize - width) / 2;\n const dy = yBeginning + options.imageOptions.margin + (count * dotSize - height) / 2;\n const dw = width - options.imageOptions.margin * 2;\n const dh = height - options.imageOptions.margin * 2;\n\n canvasContext.drawImage(this._image, dx, dy, dw < 0 ? 0 : dw, dh < 0 ? 0 : dh);\n }\n\n _createGradient({\n context,\n options,\n additionalRotation,\n x,\n y,\n size\n }: {\n context: CanvasRenderingContext2D;\n options: Gradient;\n additionalRotation: number;\n x: number;\n y: number;\n size: number;\n }): CanvasGradient {\n let gradient;\n\n if (options.type === gradientTypes.radial) {\n gradient = context.createRadialGradient(x + size / 2, y + size / 2, 0, x + size / 2, y + size / 2, size / 2);\n } else {\n const rotation = ((options.rotation || 0) + additionalRotation) % (2 * Math.PI);\n const positiveRotation = (rotation + 2 * Math.PI) % (2 * Math.PI);\n let x0 = x + size / 2;\n let y0 = y + size / 2;\n let x1 = x + size / 2;\n let y1 = y + size / 2;\n\n if (\n (positiveRotation >= 0 && positiveRotation <= 0.25 * Math.PI) ||\n (positiveRotation > 1.75 * Math.PI && positiveRotation <= 2 * Math.PI)\n ) {\n x0 = x0 - size / 2;\n y0 = y0 - (size / 2) * Math.tan(rotation);\n x1 = x1 + size / 2;\n y1 = y1 + (size / 2) * Math.tan(rotation);\n } else if (positiveRotation > 0.25 * Math.PI && positiveRotation <= 0.75 * Math.PI) {\n y0 = y0 - size / 2;\n x0 = x0 - size / 2 / Math.tan(rotation);\n y1 = y1 + size / 2;\n x1 = x1 + size / 2 / Math.tan(rotation);\n } else if (positiveRotation > 0.75 * Math.PI && positiveRotation <= 1.25 * Math.PI) {\n x0 = x0 + size / 2;\n y0 = y0 + (size / 2) * Math.tan(rotation);\n x1 = x1 - size / 2;\n y1 = y1 - (size / 2) * Math.tan(rotation);\n } else if (positiveRotation > 1.25 * Math.PI && positiveRotation <= 1.75 * Math.PI) {\n y0 = y0 + size / 2;\n x0 = x0 + size / 2 / Math.tan(rotation);\n y1 = y1 - size / 2;\n x1 = x1 - size / 2 / Math.tan(rotation);\n }\n\n gradient = context.createLinearGradient(Math.round(x0), Math.round(y0), Math.round(x1), Math.round(y1));\n }\n\n return gradient;\n }\n}\n","import dotTypes from \"../../../constants/dotTypes\";\nimport { DotType, GetNeighbor, DrawArgs, BasicFigureDrawArgs, RotateFigureArgs } from \"../../../types\";\n\nexport default class QRDot {\n _element?: SVGElement;\n _svg: SVGElement;\n _type: DotType;\n\n constructor({ svg, type }: { svg: SVGElement; type: DotType }) {\n this._svg = svg;\n this._type = type;\n }\n\n draw(x: number, y: number, size: number, getNeighbor: GetNeighbor): void {\n const type = this._type;\n let drawFunction;\n\n switch (type) {\n case dotTypes.dots:\n drawFunction = this._drawDot;\n break;\n case dotTypes.classy:\n drawFunction = this._drawClassy;\n break;\n case dotTypes.classyRounded:\n drawFunction = this._drawClassyRounded;\n break;\n case dotTypes.rounded:\n drawFunction = this._drawRounded;\n break;\n case dotTypes.extraRounded:\n drawFunction = this._drawExtraRounded;\n break;\n case dotTypes.square:\n default:\n drawFunction = this._drawSquare;\n }\n\n drawFunction.call(this, { x, y, size, getNeighbor });\n }\n\n _rotateFigure({ x, y, size, rotation = 0, draw }: RotateFigureArgs): void {\n const cx = x + size / 2;\n const cy = y + size / 2;\n\n draw();\n this._element?.setAttribute(\"transform\", `rotate(${(180 * rotation) / Math.PI},${cx},${cy})`);\n }\n\n _basicDot(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"circle\");\n this._element.setAttribute(\"cx\", String(x + size / 2));\n this._element.setAttribute(\"cy\", String(y + size / 2));\n this._element.setAttribute(\"r\", String(size / 2));\n }\n });\n }\n\n _basicSquare(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"rect\");\n this._element.setAttribute(\"x\", String(x));\n this._element.setAttribute(\"y\", String(y));\n this._element.setAttribute(\"width\", String(size));\n this._element.setAttribute(\"height\", String(size));\n }\n });\n }\n\n //if rotation === 0 - right side is rounded\n _basicSideRounded(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n this._element.setAttribute(\n \"d\",\n `M ${x} ${y}` + //go to top left position\n `v ${size}` + //draw line to left bottom corner\n `h ${size / 2}` + //draw line to left bottom corner + half of size right\n `a ${size / 2} ${size / 2}, 0, 0, 0, 0 ${-size}` // draw rounded corner\n );\n }\n });\n }\n\n //if rotation === 0 - top right corner is rounded\n _basicCornerRounded(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n this._element.setAttribute(\n \"d\",\n `M ${x} ${y}` + //go to top left position\n `v ${size}` + //draw line to left bottom corner\n `h ${size}` + //draw line to right bottom corner\n `v ${-size / 2}` + //draw line to right bottom corner + half of size top\n `a ${size / 2} ${size / 2}, 0, 0, 0, ${-size / 2} ${-size / 2}` // draw rounded corner\n );\n }\n });\n }\n\n //if rotation === 0 - top right corner is rounded\n _basicCornerExtraRounded(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n this._element.setAttribute(\n \"d\",\n `M ${x} ${y}` + //go to top left position\n `v ${size}` + //draw line to left bottom corner\n `h ${size}` + //draw line to right bottom corner\n `a ${size} ${size}, 0, 0, 0, ${-size} ${-size}` // draw rounded top right corner\n );\n }\n });\n }\n\n //if rotation === 0 - left bottom and right top corners are rounded\n _basicCornersRounded(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n this._element.setAttribute(\n \"d\",\n `M ${x} ${y}` + //go to left top position\n `v ${size / 2}` + //draw line to left top corner + half of size bottom\n `a ${size / 2} ${size / 2}, 0, 0, 0, ${size / 2} ${size / 2}` + // draw rounded left bottom corner\n `h ${size / 2}` + //draw line to right bottom corner\n `v ${-size / 2}` + //draw line to right bottom corner + half of size top\n `a ${size / 2} ${size / 2}, 0, 0, 0, ${-size / 2} ${-size / 2}` // draw rounded right top corner\n );\n }\n });\n }\n\n _drawDot({ x, y, size }: DrawArgs): void {\n this._basicDot({ x, y, size, rotation: 0 });\n }\n\n _drawSquare({ x, y, size }: DrawArgs): void {\n this._basicSquare({ x, y, size, rotation: 0 });\n }\n\n _drawRounded({ x, y, size, getNeighbor }: DrawArgs): void {\n const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\n const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\n const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\n const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\n\n const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\n\n if (neighborsCount === 0) {\n this._basicDot({ x, y, size, rotation: 0 });\n return;\n }\n\n if (neighborsCount > 2 || (leftNeighbor && rightNeighbor) || (topNeighbor && bottomNeighbor)) {\n this._basicSquare({ x, y, size, rotation: 0 });\n return;\n }\n\n if (neighborsCount === 2) {\n let rotation = 0;\n\n if (leftNeighbor && topNeighbor) {\n rotation = Math.PI / 2;\n } else if (topNeighbor && rightNeighbor) {\n rotation = Math.PI;\n } else if (rightNeighbor && bottomNeighbor) {\n rotation = -Math.PI / 2;\n }\n\n this._basicCornerRounded({ x, y, size, rotation });\n return;\n }\n\n if (neighborsCount === 1) {\n let rotation = 0;\n\n if (topNeighbor) {\n rotation = Math.PI / 2;\n } else if (rightNeighbor) {\n rotation = Math.PI;\n } else if (bottomNeighbor) {\n rotation = -Math.PI / 2;\n }\n\n this._basicSideRounded({ x, y, size, rotation });\n return;\n }\n }\n\n _drawExtraRounded({ x, y, size, getNeighbor }: DrawArgs): void {\n const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\n const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\n const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\n const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\n\n const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\n\n if (neighborsCount === 0) {\n this._basicDot({ x, y, size, rotation: 0 });\n return;\n }\n\n if (neighborsCount > 2 || (leftNeighbor && rightNeighbor) || (topNeighbor && bottomNeighbor)) {\n this._basicSquare({ x, y, size, rotation: 0 });\n return;\n }\n\n if (neighborsCount === 2) {\n let rotation = 0;\n\n if (leftNeighbor && topNeighbor) {\n rotation = Math.PI / 2;\n } else if (topNeighbor && rightNeighbor) {\n rotation = Math.PI;\n } else if (rightNeighbor && bottomNeighbor) {\n rotation = -Math.PI / 2;\n }\n\n this._basicCornerExtraRounded({ x, y, size, rotation });\n return;\n }\n\n if (neighborsCount === 1) {\n let rotation = 0;\n\n if (topNeighbor) {\n rotation = Math.PI / 2;\n } else if (rightNeighbor) {\n rotation = Math.PI;\n } else if (bottomNeighbor) {\n rotation = -Math.PI / 2;\n }\n\n this._basicSideRounded({ x, y, size, rotation });\n return;\n }\n }\n\n _drawClassy({ x, y, size, getNeighbor }: DrawArgs): void {\n const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\n const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\n const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\n const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\n\n const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\n\n if (neighborsCount === 0) {\n this._basicCornersRounded({ x, y, size, rotation: Math.PI / 2 });\n return;\n }\n\n if (!leftNeighbor && !topNeighbor) {\n this._basicCornerRounded({ x, y, size, rotation: -Math.PI / 2 });\n return;\n }\n\n if (!rightNeighbor && !bottomNeighbor) {\n this._basicCornerRounded({ x, y, size, rotation: Math.PI / 2 });\n return;\n }\n\n this._basicSquare({ x, y, size, rotation: 0 });\n }\n\n _drawClassyRounded({ x, y, size, getNeighbor }: DrawArgs): void {\n const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\n const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\n const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\n const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\n\n const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\n\n if (neighborsCount === 0) {\n this._basicCornersRounded({ x, y, size, rotation: Math.PI / 2 });\n return;\n }\n\n if (!leftNeighbor && !topNeighbor) {\n this._basicCornerExtraRounded({ x, y, size, rotation: -Math.PI / 2 });\n return;\n }\n\n if (!rightNeighbor && !bottomNeighbor) {\n this._basicCornerExtraRounded({ x, y, size, rotation: Math.PI / 2 });\n return;\n }\n\n this._basicSquare({ x, y, size, rotation: 0 });\n }\n}\n","import cornerSquareTypes from \"../../../constants/cornerSquareTypes\";\nimport { CornerSquareType, DrawArgs, BasicFigureDrawArgs, RotateFigureArgs } from \"../../../types\";\n\nexport default class QRCornerSquare {\n _element?: SVGElement;\n _svg: SVGElement;\n _type: CornerSquareType;\n\n constructor({ svg, type }: { svg: SVGElement; type: CornerSquareType }) {\n this._svg = svg;\n this._type = type;\n }\n\n draw(x: number, y: number, size: number, rotation: number): void {\n const type = this._type;\n let drawFunction;\n\n switch (type) {\n case cornerSquareTypes.square:\n drawFunction = this._drawSquare;\n break;\n case cornerSquareTypes.extraRounded:\n drawFunction = this._drawExtraRounded;\n break;\n case cornerSquareTypes.dot:\n default:\n drawFunction = this._drawDot;\n }\n\n drawFunction.call(this, { x, y, size, rotation });\n }\n\n _rotateFigure({ x, y, size, rotation = 0, draw }: RotateFigureArgs): void {\n const cx = x + size / 2;\n const cy = y + size / 2;\n\n draw();\n this._element?.setAttribute(\"transform\", `rotate(${(180 * rotation) / Math.PI},${cx},${cy})`);\n }\n\n _basicDot(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n const dotSize = size / 7;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n this._element.setAttribute(\"clip-rule\", \"evenodd\");\n this._element.setAttribute(\n \"d\",\n `M ${x + size / 2} ${y}` + // M cx, y // Move to top of ring\n `a ${size / 2} ${size / 2} 0 1 0 0.1 0` + // a outerRadius, outerRadius, 0, 1, 0, 1, 0 // Draw outer arc, but don't close it\n `z` + // Z // Close the outer shape\n `m 0 ${dotSize}` + // m -1 outerRadius-innerRadius // Move to top point of inner radius\n `a ${size / 2 - dotSize} ${size / 2 - dotSize} 0 1 1 -0.1 0` + // a innerRadius, innerRadius, 0, 1, 1, -1, 0 // Draw inner arc, but don't close it\n `Z` // Z // Close the inner ring. Actually will still work without, but inner ring will have one unit missing in stroke\n );\n }\n });\n }\n\n _basicSquare(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n const dotSize = size / 7;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n this._element.setAttribute(\"clip-rule\", \"evenodd\");\n this._element.setAttribute(\n \"d\",\n `M ${x} ${y}` +\n `v ${size}` +\n `h ${size}` +\n `v ${-size}` +\n `z` +\n `M ${x + dotSize} ${y + dotSize}` +\n `h ${size - 2 * dotSize}` +\n `v ${size - 2 * dotSize}` +\n `h ${-size + 2 * dotSize}` +\n `z`\n );\n }\n });\n }\n\n _basicExtraRounded(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n const dotSize = size / 7;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n this._element.setAttribute(\"clip-rule\", \"evenodd\");\n this._element.setAttribute(\n \"d\",\n `M ${x} ${y + 2.5 * dotSize}` +\n `v ${2 * dotSize}` +\n `a ${2.5 * dotSize} ${2.5 * dotSize}, 0, 0, 0, ${dotSize * 2.5} ${dotSize * 2.5}` +\n `h ${2 * dotSize}` +\n `a ${2.5 * dotSize} ${2.5 * dotSize}, 0, 0, 0, ${dotSize * 2.5} ${-dotSize * 2.5}` +\n `v ${-2 * dotSize}` +\n `a ${2.5 * dotSize} ${2.5 * dotSize}, 0, 0, 0, ${-dotSize * 2.5} ${-dotSize * 2.5}` +\n `h ${-2 * dotSize}` +\n `a ${2.5 * dotSize} ${2.5 * dotSize}, 0, 0, 0, ${-dotSize * 2.5} ${dotSize * 2.5}` +\n `M ${x + 2.5 * dotSize} ${y + dotSize}` +\n `h ${2 * dotSize}` +\n `a ${1.5 * dotSize} ${1.5 * dotSize}, 0, 0, 1, ${dotSize * 1.5} ${dotSize * 1.5}` +\n `v ${2 * dotSize}` +\n `a ${1.5 * dotSize} ${1.5 * dotSize}, 0, 0, 1, ${-dotSize * 1.5} ${dotSize * 1.5}` +\n `h ${-2 * dotSize}` +\n `a ${1.5 * dotSize} ${1.5 * dotSize}, 0, 0, 1, ${-dotSize * 1.5} ${-dotSize * 1.5}` +\n `v ${-2 * dotSize}` +\n `a ${1.5 * dotSize} ${1.5 * dotSize}, 0, 0, 1, ${dotSize * 1.5} ${-dotSize * 1.5}`\n );\n }\n });\n }\n\n _drawDot({ x, y, size, rotation }: DrawArgs): void {\n this._basicDot({ x, y, size, rotation });\n }\n\n _drawSquare({ x, y, size, rotation }: DrawArgs): void {\n this._basicSquare({ x, y, size, rotation });\n }\n\n _drawExtraRounded({ x, y, size, rotation }: DrawArgs): void {\n this._basicExtraRounded({ x, y, size, rotation });\n }\n}\n","import cornerDotTypes from \"../../../constants/cornerDotTypes\";\nimport { CornerDotType, RotateFigureArgs, BasicFigureDrawArgs, DrawArgs } from \"../../../types\";\n\nexport default class QRCornerDot {\n _element?: SVGElement;\n _svg: SVGElement;\n _type: CornerDotType;\n\n constructor({ svg, type }: { svg: SVGElement; type: CornerDotType }) {\n this._svg = svg;\n this._type = type;\n }\n\n draw(x: number, y: number, size: number, rotation: number): void {\n const type = this._type;\n let drawFunction;\n\n switch (type) {\n case cornerDotTypes.square:\n drawFunction = this._drawSquare;\n break;\n case cornerDotTypes.dot:\n default:\n drawFunction = this._drawDot;\n }\n\n drawFunction.call(this, { x, y, size, rotation });\n }\n\n _rotateFigure({ x, y, size, rotation = 0, draw }: RotateFigureArgs): void {\n const cx = x + size / 2;\n const cy = y + size / 2;\n\n draw();\n this._element?.setAttribute(\"transform\", `rotate(${(180 * rotation) / Math.PI},${cx},${cy})`);\n }\n\n _basicDot(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"circle\");\n this._element.setAttribute(\"cx\", String(x + size / 2));\n this._element.setAttribute(\"cy\", String(y + size / 2));\n this._element.setAttribute(\"r\", String(size / 2));\n }\n });\n }\n\n _basicSquare(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"rect\");\n this._element.setAttribute(\"x\", String(x));\n this._element.setAttribute(\"y\", String(y));\n this._element.setAttribute(\"width\", String(size));\n this._element.setAttribute(\"height\", String(size));\n }\n });\n }\n\n _drawDot({ x, y, size, rotation }: DrawArgs): void {\n this._basicDot({ x, y, size, rotation });\n }\n\n _drawSquare({ x, y, size, rotation }: DrawArgs): void {\n this._basicSquare({ x, y, size, rotation });\n }\n}\n","import calculateImageSize from \"../tools/calculateImageSize\";\nimport errorCorrectionPercents from \"../constants/errorCorrectionPercents\";\nimport QRDot from \"../figures/dot/svg/QRDot\";\nimport QRCornerSquare from \"../figures/cornerSquare/svg/QRCornerSquare\";\nimport QRCornerDot from \"../figures/cornerDot/svg/QRCornerDot\";\nimport { RequiredOptions } from \"./QROptions\";\nimport gradientTypes from \"../constants/gradientTypes\";\nimport { QRCode, FilterFunction, Gradient } from \"../types\";\n\nconst squareMask = [\n [1, 1, 1, 1, 1, 1, 1],\n [1, 0, 0, 0, 0, 0, 1],\n [1, 0, 0, 0, 0, 0, 1],\n [1, 0, 0, 0, 0, 0, 1],\n [1, 0, 0, 0, 0, 0, 1],\n [1, 0, 0, 0, 0, 0, 1],\n [1, 1, 1, 1, 1, 1, 1]\n];\n\nconst dotMask = [\n [0, 0, 0, 0, 0, 0, 0],\n [0, 0, 0, 0, 0, 0, 0],\n [0, 0, 1, 1, 1, 0, 0],\n [0, 0, 1, 1, 1, 0, 0],\n [0, 0, 1, 1, 1, 0, 0],\n [0, 0, 0, 0, 0, 0, 0],\n [0, 0, 0, 0, 0, 0, 0]\n];\n\nexport default class QRSVG {\n _element: SVGElement;\n _style: SVGStyleElement;\n _defs: SVGElement;\n _dotsClipPath?: SVGElement;\n _cornersSquareClipPath?: SVGElement;\n _cornersDotClipPath?: SVGElement;\n _dots?: SVGElement;\n _cornerSquares?: SVGElement;\n _corners?: SVGElement;\n _cornerDots?: SVGElement;\n _options: RequiredOptions;\n _qr?: QRCode;\n _image?: HTMLImageElement;\n\n //TODO don't pass all options to this class\n constructor(options: RequiredOptions) {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\");\n this._element.setAttribute(\"width\", String(options.width));\n this._element.setAttribute(\"height\", String(options.height));\n this._element.setAttribute(\"xmlns:xlink\", \"http://www.w3.org/1999/xlink\");\n this._defs = document.createElementNS(\"http://www.w3.org/2000/svg\", \"defs\");\n this._style = document.createElementNS(\"http://www.w3.org/2000/svg\", \"style\");\n\n this._options = options;\n }\n\n get width(): number {\n return this._options.width;\n }\n\n get height(): number {\n return this._options.height;\n }\n\n getElement(): SVGElement {\n return this._element;\n }\n\n clear(): void {\n const oldElement = this._element;\n this._element = oldElement.cloneNode(false) as SVGElement;\n oldElement?.parentNode?.replaceChild(this._element, oldElement);\n this._defs = document.createElementNS(\"http://www.w3.org/2000/svg\", \"defs\");\n this._style = document.createElementNS(\"http://www.w3.org/2000/svg\", \"style\");\n this._element.appendChild(this._style);\n this._element.appendChild(this._defs);\n }\n\n async drawQR(qr: QRCode): Promise {\n const count = qr.getModuleCount();\n const minSize = Math.min(this._options.width, this._options.height) - this._options.margin * 2;\n const dotSize = Math.floor(minSize / count);\n let drawImageSize = {\n hideXDots: 0,\n hideYDots: 0,\n width: 0,\n height: 0\n };\n\n this._qr = qr;\n\n if (this._options.image) {\n //We need it to get image size\n await this.loadImage();\n if (!this._image) return;\n const { imageOptions, qrOptions } = this._options;\n const coverLevel = imageOptions.imageSize * errorCorrectionPercents[qrOptions.errorCorrectionLevel];\n const maxHiddenDots = Math.floor(coverLevel * count * count);\n\n drawImageSize = calculateImageSize({\n originalWidth: this._image.width,\n originalHeight: this._image.height,\n maxHiddenDots,\n maxHiddenAxisDots: count - 14,\n dotSize\n });\n }\n\n this._element.appendChild(this._style);\n this._element.appendChild(this._defs);\n\n this.clear();\n this.drawBackground();\n this.drawDots((i: number, j: number): boolean => {\n if (this._options.imageOptions.hideBackgroundDots) {\n if (\n i >= (count - drawImageSize.hideXDots) / 2 &&\n i < (count + drawImageSize.hideXDots) / 2 &&\n j >= (count - drawImageSize.hideYDots) / 2 &&\n j < (count + drawImageSize.hideYDots) / 2\n ) {\n return false;\n }\n }\n\n if (squareMask[i]?.[j] || squareMask[i - count + 7]?.[j] || squareMask[i]?.[j - count + 7]) {\n return false;\n }\n\n if (dotMask[i]?.[j] || dotMask[i - count + 7]?.[j] || dotMask[i]?.[j - count + 7]) {\n return false;\n }\n\n return true;\n });\n this.drawCorners();\n\n if (this._options.image) {\n await this.drawImage({ width: drawImageSize.width, height: drawImageSize.height, count, dotSize });\n }\n }\n\n drawBackground(): void {\n const element = this._element;\n const options = this._options;\n\n if (element) {\n const gradientOptions = options.backgroundOptions?.gradient;\n const color = options.backgroundOptions?.color;\n\n if (gradientOptions) {\n this._createColor({\n options: gradientOptions,\n color: color,\n additionalRotation: 0,\n x: 0,\n y: 0,\n height: options.height,\n width: options.width,\n name: \"background-color\"\n });\n } else if (options.backgroundOptions?.color) {\n this._createStyle({\n color: color,\n name: \"background-color\"\n });\n }\n }\n }\n\n drawDots(filter?: FilterFunction): void {\n if (!this._qr) {\n throw \"QR code is not defined\";\n }\n\n const options = this._options;\n const count = this._qr.getModuleCount();\n\n if (count > options.width || count > options.height) {\n throw \"The canvas is too small.\";\n }\n\n const minSize = Math.min(options.width, options.height) - options.margin * 2;\n const dotSize = Math.floor(minSize / count);\n const xBeginning = Math.floor((options.width - count * dotSize) / 2);\n const yBeginning = Math.floor((options.height - count * dotSize) / 2);\n const dot = new QRDot({ svg: this._element, type: options.dotsOptions.type });\n\n if (options.dotsOptions?.gradient) {\n this._dotsClipPath = document.createElementNS(\"http://www.w3.org/2000/svg\", \"clipPath\");\n this._dotsClipPath.setAttribute(\"id\", \"clip-path-dot-color\");\n this._defs.appendChild(this._dotsClipPath);\n this._createColor({\n options: options.dotsOptions?.gradient,\n color: options.dotsOptions.color,\n additionalRotation: 0,\n x: xBeginning,\n y: yBeginning,\n height: count * dotSize,\n width: count * dotSize,\n name: \"dot-color\"\n });\n } else if (options.dotsOptions.color) {\n this._dots = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n this._dots.setAttribute(\"class\", \"dot-color\");\n this._element.appendChild(this._dots);\n this._createStyle({\n color: options.dotsOptions.color,\n name: \"dot-color\"\n });\n }\n\n for (let i = 0; i < count; i++) {\n for (let j = 0; j < count; j++) {\n if (filter && !filter(i, j)) {\n continue;\n }\n if (!this._qr?.isDark(i, j)) {\n continue;\n }\n\n dot.draw(\n yBeginning + j * dotSize,\n xBeginning + i * dotSize,\n dotSize,\n (xOffset: number, yOffset: number): boolean => {\n if (i + xOffset < 0 || j + yOffset < 0 || i + xOffset >= count || j + yOffset >= count) return false;\n if (filter && !filter(i + xOffset, j + yOffset)) return false;\n return !!this._qr && this._qr.isDark(i + xOffset, j + yOffset);\n }\n );\n\n if (dot._element && this._dotsClipPath) {\n this._dotsClipPath.appendChild(dot._element);\n } else if (dot._element && this._dots) {\n this._dots.appendChild(dot._element);\n }\n }\n }\n }\n\n drawCorners(): void {\n if (!this._qr) {\n throw \"QR code is not defined\";\n }\n\n const element = this._element;\n const options = this._options;\n\n if (!element) {\n throw \"Element code is not defined\";\n }\n\n const count = this._qr.getModuleCount();\n const minSize = Math.min(options.width, options.height) - options.margin * 2;\n const dotSize = Math.floor(minSize / count);\n const cornersSquareSize = dotSize * 7;\n const cornersDotSize = dotSize * 3;\n const xBeginning = Math.floor((options.width - count * dotSize) / 2);\n const yBeginning = Math.floor((options.height - count * dotSize) / 2);\n\n [\n [0, 0, 0],\n [1, 0, Math.PI / 2],\n [0, 1, -Math.PI / 2]\n ].forEach(([column, row, rotation]) => {\n const x = xBeginning + column * dotSize * (count - 7);\n const y = yBeginning + row * dotSize * (count - 7);\n let cornersSquareClipPath = this._dotsClipPath;\n let cornersDotClipPath = this._dotsClipPath;\n\n if (options.cornersSquareOptions?.gradient) {\n cornersSquareClipPath = document.createElementNS(\"http://www.w3.org/2000/svg\", \"clipPath\");\n cornersSquareClipPath.setAttribute(\"id\", `clip-path-corners-square-color-${column}-${row}`);\n this._defs.appendChild(cornersSquareClipPath);\n this._cornersSquareClipPath = this._cornersDotClipPath = cornersDotClipPath = cornersSquareClipPath;\n\n this._createColor({\n options: options.cornersSquareOptions?.gradient,\n color: options.cornersSquareOptions?.color,\n additionalRotation: rotation,\n x,\n y,\n height: cornersSquareSize,\n width: cornersSquareSize,\n name: `corners-square-color-${column}-${row}`\n });\n } else {\n this._cornerSquares = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n this._cornerSquares.setAttribute(\"class\", `corners-square-color-${column}-${row}`);\n this._element.appendChild(this._cornerSquares);\n this._createStyle({\n color: options.cornersSquareOptions?.color,\n name: `corners-square-color-${column}-${row}`\n });\n }\n\n if (options.cornersSquareOptions?.type) {\n const cornersSquare = new QRCornerSquare({ svg: this._element, type: options.cornersSquareOptions.type });\n\n cornersSquare.draw(x, y, cornersSquareSize, rotation);\n\n if (options.cornersSquareOptions?.gradient && cornersSquare._element && cornersSquareClipPath) {\n cornersSquareClipPath.appendChild(cornersSquare._element);\n } else if (cornersSquare._element && this._cornerSquares) {\n this._cornerSquares.appendChild(cornersSquare._element);\n }\n } else {\n const dot = new QRDot({ svg: this._element, type: options.dotsOptions.type });\n\n for (let i = 0; i < squareMask.length; i++) {\n for (let j = 0; j < squareMask[i].length; j++) {\n if (!squareMask[i]?.[j]) {\n continue;\n }\n\n dot.draw(\n x + i * dotSize,\n y + j * dotSize,\n dotSize,\n (xOffset: number, yOffset: number): boolean => !!squareMask[i + xOffset]?.[j + yOffset]\n );\n\n if (dot._element && this._cornersSquareClipPath) {\n this._cornersSquareClipPath.appendChild(dot._element);\n } else if (dot._element && this._cornerSquares) {\n this._cornerSquares.appendChild(dot._element);\n }\n }\n }\n }\n\n if (options.cornersDotOptions?.gradient) {\n cornersDotClipPath = document.createElementNS(\"http://www.w3.org/2000/svg\", \"clipPath\");\n cornersDotClipPath.setAttribute(\"id\", `clip-path-corners-dot-color-${column}-${row}`);\n this._defs.appendChild(cornersDotClipPath);\n this._cornersDotClipPath = cornersDotClipPath;\n\n this._createColor({\n options: options.cornersDotOptions?.gradient,\n color: options.cornersDotOptions?.color,\n additionalRotation: rotation,\n x: x + dotSize * 2,\n y: y + dotSize * 2,\n height: cornersDotSize,\n width: cornersDotSize,\n name: `corners-dot-color-${column}-${row}`\n });\n } else {\n this._cornerDots = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n this._cornerDots.setAttribute(\"class\", `corners-dot-color-${column}-${row}`);\n this._element.appendChild(this._cornerDots);\n this._createStyle({\n color: options.cornersDotOptions?.color,\n name: `corners-dot-color-${column}-${row}`\n });\n }\n\n if (options.cornersDotOptions?.type) {\n const cornersDot = new QRCornerDot({ svg: this._element, type: options.cornersDotOptions.type });\n\n cornersDot.draw(x + dotSize * 2, y + dotSize * 2, cornersDotSize, rotation);\n\n if (options.cornersDotOptions?.gradient && cornersDot._element && cornersDotClipPath) {\n cornersDotClipPath.appendChild(cornersDot._element);\n } else if (cornersDot._element && this._cornerDots) {\n this._cornerDots.appendChild(cornersDot._element);\n }\n } else {\n const dot = new QRDot({ svg: this._element, type: options.dotsOptions.type });\n\n for (let i = 0; i < dotMask.length; i++) {\n for (let j = 0; j < dotMask[i].length; j++) {\n if (!dotMask[i]?.[j]) {\n continue;\n }\n\n dot.draw(\n x + i * dotSize,\n y + j * dotSize,\n dotSize,\n (xOffset: number, yOffset: number): boolean => !!dotMask[i + xOffset]?.[j + yOffset]\n );\n\n if (dot._element && this._cornersDotClipPath) {\n this._cornersDotClipPath.appendChild(dot._element);\n } else if (dot._element && this._cornerDots) {\n this._cornerDots.appendChild(dot._element);\n }\n }\n }\n }\n });\n }\n\n loadImage(): Promise {\n return new Promise((resolve, reject) => {\n const options = this._options;\n const image = new Image();\n\n if (!options.image) {\n return reject(\"Image is not defined\");\n }\n\n if (typeof options.imageOptions.crossOrigin === \"string\") {\n image.crossOrigin = options.imageOptions.crossOrigin;\n }\n\n this._image = image;\n image.onload = (): void => {\n resolve();\n };\n image.src = options.image;\n });\n }\n\n async drawImage({\n width,\n height,\n count,\n dotSize\n }: {\n width: number;\n height: number;\n count: number;\n dotSize: number;\n }): Promise {\n const options = this._options;\n const xBeginning = Math.floor((options.width - count * dotSize) / 2);\n const yBeginning = Math.floor((options.height - count * dotSize) / 2);\n const dx = xBeginning + options.imageOptions.margin + (count * dotSize - width) / 2;\n const dy = yBeginning + options.imageOptions.margin + (count * dotSize - height) / 2;\n const dw = width - options.imageOptions.margin * 2;\n const dh = height - options.imageOptions.margin * 2;\n\n const image = document.createElementNS(\"http://www.w3.org/2000/svg\", \"image\");\n\n const base64Image = await this._getBase64Image(options.image || \"\");\n\n image.setAttribute(\"href\", base64Image);\n image.setAttribute(\"xlink:href\", base64Image);\n image.setAttribute(\"x\", String(dx));\n image.setAttribute(\"y\", String(dy));\n image.setAttribute(\"width\", `${dw}px`);\n image.setAttribute(\"height\", `${dh}px`);\n\n this._element.appendChild(image);\n }\n\n async _getImageBlob(url: string): Promise {\n const resp = await fetch(url);\n return resp.blob();\n }\n\n // convert a blob to base64\n _blobToBase64(blob: Blob): Promise {\n return new Promise((resolve) => {\n const reader = new FileReader();\n reader.onload = function () {\n const dataUrl = reader.result;\n resolve(dataUrl as string);\n };\n reader.readAsDataURL(blob);\n });\n }\n\n async _getBase64Image(url: string): Promise {\n if (url === \"\") {\n return new Promise((resolve) => {\n resolve(\"\");\n });\n }\n\n const blob = await this._getImageBlob(url);\n const base64 = await this._blobToBase64(blob);\n return base64;\n }\n\n _createColor({\n options,\n color,\n additionalRotation,\n x,\n y,\n height,\n width,\n name\n }: {\n options?: Gradient;\n color?: string;\n additionalRotation: number;\n x: number;\n y: number;\n height: number;\n width: number;\n name: string;\n }): void {\n const size = width > height ? width : height;\n const rect = document.createElementNS(\"http://www.w3.org/2000/svg\", \"rect\");\n rect.setAttribute(\"x\", String(x));\n rect.setAttribute(\"y\", String(y));\n rect.setAttribute(\"height\", String(height));\n rect.setAttribute(\"width\", String(width));\n rect.setAttribute(\"clip-path\", `url('#clip-path-${name}')`);\n\n if (options) {\n let gradient: SVGElement;\n if (options.type === gradientTypes.radial) {\n gradient = document.createElementNS(\"http://www.w3.org/2000/svg\", \"radialGradient\");\n gradient.setAttribute(\"id\", name);\n gradient.setAttribute(\"gradientUnits\", \"userSpaceOnUse\");\n gradient.setAttribute(\"fx\", String(x + width / 2));\n gradient.setAttribute(\"fy\", String(y + height / 2));\n gradient.setAttribute(\"cx\", String(x + width / 2));\n gradient.setAttribute(\"cy\", String(y + height / 2));\n gradient.setAttribute(\"r\", String(size / 2));\n } else {\n const rotation = ((options.rotation || 0) + additionalRotation) % (2 * Math.PI);\n const positiveRotation = (rotation + 2 * Math.PI) % (2 * Math.PI);\n let x0 = x + width / 2;\n let y0 = y + height / 2;\n let x1 = x + width / 2;\n let y1 = y + height / 2;\n\n if (\n (positiveRotation >= 0 && positiveRotation <= 0.25 * Math.PI) ||\n (positiveRotation > 1.75 * Math.PI && positiveRotation <= 2 * Math.PI)\n ) {\n x0 = x0 - width / 2;\n y0 = y0 - (height / 2) * Math.tan(rotation);\n x1 = x1 + width / 2;\n y1 = y1 + (height / 2) * Math.tan(rotation);\n } else if (positiveRotation > 0.25 * Math.PI && positiveRotation <= 0.75 * Math.PI) {\n y0 = y0 - height / 2;\n x0 = x0 - width / 2 / Math.tan(rotation);\n y1 = y1 + height / 2;\n x1 = x1 + width / 2 / Math.tan(rotation);\n } else if (positiveRotation > 0.75 * Math.PI && positiveRotation <= 1.25 * Math.PI) {\n x0 = x0 + width / 2;\n y0 = y0 + (height / 2) * Math.tan(rotation);\n x1 = x1 - width / 2;\n y1 = y1 - (height / 2) * Math.tan(rotation);\n } else if (positiveRotation > 1.25 * Math.PI && positiveRotation <= 1.75 * Math.PI) {\n y0 = y0 + height / 2;\n x0 = x0 + width / 2 / Math.tan(rotation);\n y1 = y1 - height / 2;\n x1 = x1 - width / 2 / Math.tan(rotation);\n }\n\n gradient = document.createElementNS(\"http://www.w3.org/2000/svg\", \"linearGradient\");\n gradient.setAttribute(\"id\", name);\n gradient.setAttribute(\"gradientUnits\", \"userSpaceOnUse\");\n gradient.setAttribute(\"x1\", String(Math.round(x0)));\n gradient.setAttribute(\"y1\", String(Math.round(y0)));\n gradient.setAttribute(\"x2\", String(Math.round(x1)));\n gradient.setAttribute(\"y2\", String(Math.round(y1)));\n }\n\n options.colorStops.forEach(({ offset, color }: { offset: number; color: string }) => {\n const stop = document.createElementNS(\"http://www.w3.org/2000/svg\", \"stop\");\n stop.setAttribute(\"offset\", `${100 * offset}%`);\n stop.setAttribute(\"stop-color\", color);\n gradient.appendChild(stop);\n });\n\n rect.setAttribute(\"fill\", `url('#${name}')`);\n this._defs.appendChild(gradient);\n } else if (color) {\n rect.setAttribute(\"fill\", color);\n }\n\n this._element.appendChild(rect);\n }\n\n _createStyle({ color, name }: { color?: string; name: string }): void {\n this._style.innerHTML += `.${name}{ fill: ${color}; }`;\n }\n}\n","import { DrawTypes } from \"../types\";\n\nexport default {\n canvas: \"canvas\",\n svg: \"svg\"\n} as DrawTypes;\n","import { TypeNumber } from \"../types\";\n\ninterface TypesMap {\n [key: number]: TypeNumber;\n}\n\nconst qrTypes: TypesMap = {};\n\nfor (let type = 0; type <= 40; type++) {\n qrTypes[type] = type as TypeNumber;\n}\n\n// 0 types is autodetect\n\n// types = {\n// 0: 0,\n// 1: 1,\n// ...\n// 40: 40\n// }\n\nexport default qrTypes;\n","import qrTypes from \"../constants/qrTypes\";\nimport drawTypes from \"../constants/drawTypes\";\nimport errorCorrectionLevels from \"../constants/errorCorrectionLevels\";\nimport { DotType, Options, TypeNumber, ErrorCorrectionLevel, Mode, DrawType, Gradient } from \"../types\";\n\nexport interface RequiredOptions extends Options {\n type: DrawType;\n width: number;\n height: number;\n margin: number;\n data: string;\n qrOptions: {\n typeNumber: TypeNumber;\n mode?: Mode;\n errorCorrectionLevel: ErrorCorrectionLevel;\n };\n imageOptions: {\n hideBackgroundDots: boolean;\n imageSize: number;\n crossOrigin?: string;\n margin: number;\n };\n dotsOptions: {\n type: DotType;\n color: string;\n gradient?: Gradient;\n };\n backgroundOptions: {\n color: string;\n gradient?: Gradient;\n };\n}\n\nconst defaultOptions: RequiredOptions = {\n type: drawTypes.canvas,\n width: 300,\n height: 300,\n data: \"\",\n margin: 0,\n qrOptions: {\n typeNumber: qrTypes[0],\n mode: undefined,\n errorCorrectionLevel: errorCorrectionLevels.Q\n },\n imageOptions: {\n hideBackgroundDots: true,\n imageSize: 0.4,\n crossOrigin: \"anonymous\",\n margin: 0\n },\n dotsOptions: {\n type: \"square\",\n color: \"#000\"\n },\n backgroundOptions: {\n color: \"#fff\"\n }\n};\n\nexport default defaultOptions;\n","import { ErrorCorrectionLevel } from \"../types\";\n\ninterface ErrorCorrectionLevels {\n [key: string]: ErrorCorrectionLevel;\n}\n\nexport default {\n L: \"L\",\n M: \"M\",\n Q: \"Q\",\n H: \"H\"\n} as ErrorCorrectionLevels;\n","import { RequiredOptions } from \"../core/QROptions\";\nimport { Gradient } from \"../types\";\n\nfunction sanitizeGradient(gradient: Gradient): Gradient {\n const newGradient = { ...gradient };\n\n if (!newGradient.colorStops || !newGradient.colorStops.length) {\n throw \"Field 'colorStops' is required in gradient\";\n }\n\n if (newGradient.rotation) {\n newGradient.rotation = Number(newGradient.rotation);\n } else {\n newGradient.rotation = 0;\n }\n\n newGradient.colorStops = newGradient.colorStops.map((colorStop: { offset: number; color: string }) => ({\n ...colorStop,\n offset: Number(colorStop.offset)\n }));\n\n return newGradient;\n}\n\nexport default function sanitizeOptions(options: RequiredOptions): RequiredOptions {\n const newOptions = { ...options };\n\n newOptions.width = Number(newOptions.width);\n newOptions.height = Number(newOptions.height);\n newOptions.margin = Number(newOptions.margin);\n newOptions.imageOptions = {\n ...newOptions.imageOptions,\n hideBackgroundDots: Boolean(newOptions.imageOptions.hideBackgroundDots),\n imageSize: Number(newOptions.imageOptions.imageSize),\n margin: Number(newOptions.imageOptions.margin)\n };\n\n if (newOptions.margin > Math.min(newOptions.width, newOptions.height)) {\n newOptions.margin = Math.min(newOptions.width, newOptions.height);\n }\n\n newOptions.dotsOptions = {\n ...newOptions.dotsOptions\n };\n if (newOptions.dotsOptions.gradient) {\n newOptions.dotsOptions.gradient = sanitizeGradient(newOptions.dotsOptions.gradient);\n }\n\n if (newOptions.cornersSquareOptions) {\n newOptions.cornersSquareOptions = {\n ...newOptions.cornersSquareOptions\n };\n if (newOptions.cornersSquareOptions.gradient) {\n newOptions.cornersSquareOptions.gradient = sanitizeGradient(newOptions.cornersSquareOptions.gradient);\n }\n }\n\n if (newOptions.cornersDotOptions) {\n newOptions.cornersDotOptions = {\n ...newOptions.cornersDotOptions\n };\n if (newOptions.cornersDotOptions.gradient) {\n newOptions.cornersDotOptions.gradient = sanitizeGradient(newOptions.cornersDotOptions.gradient);\n }\n }\n\n if (newOptions.backgroundOptions) {\n newOptions.backgroundOptions = {\n ...newOptions.backgroundOptions\n };\n if (newOptions.backgroundOptions.gradient) {\n newOptions.backgroundOptions.gradient = sanitizeGradient(newOptions.backgroundOptions.gradient);\n }\n }\n\n return newOptions;\n}\n","import QRCodeStyling from \"./core/QRCodeStyling\";\nimport dotTypes from \"./constants/dotTypes\";\nimport cornerDotTypes from \"./constants/cornerDotTypes\";\nimport cornerSquareTypes from \"./constants/cornerSquareTypes\";\nimport errorCorrectionLevels from \"./constants/errorCorrectionLevels\";\nimport errorCorrectionPercents from \"./constants/errorCorrectionPercents\";\nimport modes from \"./constants/modes\";\nimport qrTypes from \"./constants/qrTypes\";\nimport drawTypes from \"./constants/drawTypes\";\n\nexport * from \"./types\";\n\nexport {\n dotTypes,\n cornerDotTypes,\n cornerSquareTypes,\n errorCorrectionLevels,\n errorCorrectionPercents,\n modes,\n qrTypes,\n drawTypes\n};\n\nexport default QRCodeStyling;\n","import getMode from \"../tools/getMode\";\nimport mergeDeep from \"../tools/merge\";\nimport downloadURI from \"../tools/downloadURI\";\nimport QRCanvas from \"./QRCanvas\";\nimport QRSVG from \"./QRSVG\";\nimport drawTypes from \"../constants/drawTypes\";\n\nimport defaultOptions, { RequiredOptions } from \"./QROptions\";\nimport sanitizeOptions from \"../tools/sanitizeOptions\";\nimport { Extension, QRCode, Options, DownloadOptions } from \"../types\";\nimport qrcode from \"qrcode-generator\";\n\nexport default class QRCodeStyling {\n _options: RequiredOptions;\n _container?: HTMLElement;\n _canvas?: QRCanvas;\n _svg?: QRSVG;\n _qr?: QRCode;\n _canvasDrawingPromise?: Promise;\n _svgDrawingPromise?: Promise;\n\n constructor(options?: Partial) {\n this._options = options ? sanitizeOptions(mergeDeep(defaultOptions, options) as RequiredOptions) : defaultOptions;\n this.update();\n }\n\n static _clearContainer(container?: HTMLElement): void {\n if (container) {\n container.innerHTML = \"\";\n }\n }\n\n async _getQRStylingElement(extension: Extension = \"png\"): Promise {\n if (!this._qr) throw \"QR code is empty\";\n\n if (extension.toLowerCase() === \"svg\") {\n let promise, svg: QRSVG;\n\n if (this._svg && this._svgDrawingPromise) {\n svg = this._svg;\n promise = this._svgDrawingPromise;\n } else {\n svg = new QRSVG(this._options);\n promise = svg.drawQR(this._qr);\n }\n\n await promise;\n\n return svg;\n } else {\n let promise, canvas: QRCanvas;\n\n if (this._canvas && this._canvasDrawingPromise) {\n canvas = this._canvas;\n promise = this._canvasDrawingPromise;\n } else {\n canvas = new QRCanvas(this._options);\n promise = canvas.drawQR(this._qr);\n }\n\n await promise;\n\n return canvas;\n }\n }\n\n update(options?: Partial): void {\n QRCodeStyling._clearContainer(this._container);\n this._options = options ? sanitizeOptions(mergeDeep(this._options, options) as RequiredOptions) : this._options;\n\n if (!this._options.data) {\n return;\n }\n\n this._qr = qrcode(this._options.qrOptions.typeNumber, this._options.qrOptions.errorCorrectionLevel);\n this._qr.addData(this._options.data, this._options.qrOptions.mode || getMode(this._options.data));\n this._qr.make();\n\n if (this._options.type === drawTypes.canvas) {\n this._canvas = new QRCanvas(this._options);\n this._canvasDrawingPromise = this._canvas.drawQR(this._qr);\n this._svgDrawingPromise = undefined;\n this._svg = undefined;\n } else {\n this._svg = new QRSVG(this._options);\n this._svgDrawingPromise = this._svg.drawQR(this._qr);\n this._canvasDrawingPromise = undefined;\n this._canvas = undefined;\n }\n\n this.append(this._container);\n }\n\n append(container?: HTMLElement): void {\n if (!container) {\n return;\n }\n\n if (typeof container.appendChild !== \"function\") {\n throw \"Container should be a single DOM node\";\n }\n\n if (this._options.type === drawTypes.canvas) {\n if (this._canvas) {\n container.appendChild(this._canvas.getCanvas());\n }\n } else {\n if (this._svg) {\n container.appendChild(this._svg.getElement());\n }\n }\n\n this._container = container;\n }\n\n async getRawData(extension: Extension = \"png\"): Promise {\n if (!this._qr) throw \"QR code is empty\";\n const element = await this._getQRStylingElement(extension);\n\n if (extension.toLowerCase() === \"svg\") {\n const serializer = new XMLSerializer();\n const source = serializer.serializeToString(((element as unknown) as QRSVG).getElement());\n\n return new Blob(['\\r\\n' + source], { type: \"image/svg+xml\" });\n } else {\n return new Promise((resolve) =>\n ((element as unknown) as QRCanvas).getCanvas().toBlob(resolve, `image/${extension}`, 1)\n );\n }\n }\n\n async download(downloadOptions?: Partial | string): Promise {\n if (!this._qr) throw \"QR code is empty\";\n let extension = \"png\" as Extension;\n let name = \"qr\";\n\n //TODO remove deprecated code in the v2\n if (typeof downloadOptions === \"string\") {\n extension = downloadOptions as Extension;\n console.warn(\n \"Extension is deprecated as argument for 'download' method, please pass object { name: '...', extension: '...' } as argument\"\n );\n } else if (typeof downloadOptions === \"object\" && downloadOptions !== null) {\n if (downloadOptions.name) {\n name = downloadOptions.name;\n }\n if (downloadOptions.extension) {\n extension = downloadOptions.extension;\n }\n }\n\n const element = await this._getQRStylingElement(extension);\n\n if (extension.toLowerCase() === \"svg\") {\n const serializer = new XMLSerializer();\n let source = serializer.serializeToString(((element as unknown) as QRSVG).getElement());\n\n source = '\\r\\n' + source;\n const url = \"data:image/svg+xml;charset=utf-8,\" + encodeURIComponent(source);\n downloadURI(url, `${name}.svg`);\n } else {\n const url = ((element as unknown) as QRCanvas).getCanvas().toDataURL(`image/${extension}`);\n downloadURI(url, `${name}.${extension}`);\n }\n }\n}\n","import modes from \"../constants/modes\";\nimport { Mode } from \"../types\";\n\nexport default function getMode(data: string): Mode {\n switch (true) {\n case /^[0-9]*$/.test(data):\n return modes.numeric;\n case /^[0-9A-Z $%*+\\-./:]*$/.test(data):\n return modes.alphanumeric;\n default:\n return modes.byte;\n }\n}\n","import { Mode } from \"../types\";\n\ninterface Modes {\n [key: string]: Mode;\n}\n\nexport default {\n numeric: \"Numeric\",\n alphanumeric: \"Alphanumeric\",\n byte: \"Byte\",\n kanji: \"Kanji\"\n} as Modes;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tif(__webpack_module_cache__[moduleId]) {\n\t\treturn __webpack_module_cache__[moduleId].exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// module exports must be returned from runtime so entry inlining is disabled\n// startup\n// Load entry module and return exports\nreturn __webpack_require__(796);\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => module['default'] :\n\t\t() => module;\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop)"],"sourceRoot":""} \ No newline at end of file From a9886abb2e2a1c079d3b09153fa7dc8e4cb19a8a Mon Sep 17 00:00:00 2001 From: Henk van Maanen <36051232+HenkVanMaanen@users.noreply.github.com> Date: Thu, 8 Sep 2022 16:30:39 +0200 Subject: [PATCH 16/25] Add parsing of hex colors with opacity --- package.json | 2 +- src/core/QROptions.ts | 6 +++--- src/core/QRSVG.ts | 18 +++++++++++++++++- src/index.html | 12 ++++++++---- 4 files changed, 29 insertions(+), 9 deletions(-) diff --git a/package.json b/package.json index 58ce8cab..631aabee 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,7 @@ "build": "webpack --mode=production --config webpack.config.build.js", "build:dev": "webpack --mode=development --config webpack.config.build.js", "test": "jest", - "start": "webpack serve --open --config webpack.config.dev-server.js" + "start": "webpack serve --port 8081 --open --config webpack.config.dev-server.js" }, "repository": { "type": "git", diff --git a/src/core/QROptions.ts b/src/core/QROptions.ts index 69fac09c..bed6cf66 100644 --- a/src/core/QROptions.ts +++ b/src/core/QROptions.ts @@ -33,8 +33,8 @@ export interface RequiredOptions extends Options { const defaultOptions: RequiredOptions = { type: drawTypes.canvas, - width: 300, - height: 300, + width: 512, + height: 512, data: "", margin: 0, qrOptions: { @@ -53,7 +53,7 @@ const defaultOptions: RequiredOptions = { color: "#000" }, backgroundOptions: { - color: "#fff" + color: "#FFFFFF00" } }; diff --git a/src/core/QRSVG.ts b/src/core/QRSVG.ts index dd572be6..e2023073 100644 --- a/src/core/QRSVG.ts +++ b/src/core/QRSVG.ts @@ -573,6 +573,22 @@ export default class QRSVG { } _createStyle({ color, name }: { color?: string; name: string }): void { - this._style.innerHTML += `.${name}{ fill: ${color}; }`; + if (color === undefined) { + return; + } + + console.log(color, name); + + if (color[0] !== "#" || (color.length !== 7 && color.length !== 9)) { + console.error("unsupported color format. At the moment only Hex color codes are supported."); + return; + } + + let opacity = 1.0; + if (color.length === 9) { + opacity = parseInt(color.substring(7, 9), 16) / 255.0; + } + + this._style.innerHTML += `.${name}{ fill: ${color.substring(0, 7)}; fill-opacity: ${opacity} }`; } } diff --git a/src/index.html b/src/index.html index f6b844a4..fa2f1dea 100644 --- a/src/index.html +++ b/src/index.html @@ -11,17 +11,21 @@
From 36a41c71575b0d6da1573a75ddb843a1055410b4 Mon Sep 17 00:00:00 2001 From: Jordan Sexton Date: Wed, 8 Mar 2023 14:39:45 -0600 Subject: [PATCH 21/25] ran npm audit fix --- package-lock.json | 2081 +++++++++++++++++++++++++++------------------ 1 file changed, 1235 insertions(+), 846 deletions(-) diff --git a/package-lock.json b/package-lock.json index 4057bf31..65d53a90 100644 --- a/package-lock.json +++ b/package-lock.json @@ -74,13 +74,10 @@ } }, "node_modules/@babel/core/node_modules/json5": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", - "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true, - "dependencies": { - "minimist": "^1.2.5" - }, "bin": { "json5": "lib/cli.js" }, @@ -547,28 +544,6 @@ "node": ">=8" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", @@ -714,9 +689,9 @@ } }, "node_modules/@jest/core/node_modules/ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, "engines": { "node": ">=8" @@ -1200,6 +1175,64 @@ "node": ">=8" } }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", + "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", + "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + } + }, "node_modules/@mapbox/node-pre-gyp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.5.tgz", @@ -1288,6 +1321,15 @@ "@sinonjs/commons": "^1.7.0" } }, + "node_modules/@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, "node_modules/@types/anymatch": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/@types/anymatch/-/anymatch-1.3.1.tgz", @@ -1910,13 +1952,13 @@ "dev": true }, "node_modules/accepts": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", - "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", "dev": true, "dependencies": { - "mime-types": "~2.1.24", - "negotiator": "0.6.2" + "mime-types": "~2.1.34", + "negotiator": "0.6.3" }, "engines": { "node": ">= 0.6" @@ -2044,10 +2086,10 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/ansi-html": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", - "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=", + "node_modules/ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", "dev": true, "engines": [ "node >= 0.8.0" @@ -2221,9 +2263,9 @@ } }, "node_modules/async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", "dev": true, "dependencies": { "lodash": "^4.17.14" @@ -2554,30 +2596,33 @@ } }, "node_modules/body-parser": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", - "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", "dev": true, "dependencies": { - "bytes": "3.1.0", + "bytes": "3.1.2", "content-type": "~1.0.4", "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "1.7.2", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", - "qs": "6.7.0", - "raw-body": "2.4.0", - "type-is": "~1.6.17" + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" }, "engines": { - "node": ">= 0.8" + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" } }, "node_modules/body-parser/node_modules/bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", "dev": true, "engines": { "node": ">= 0.8" @@ -2592,19 +2637,34 @@ "ms": "2.0.0" } }, + "node_modules/body-parser/node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/body-parser/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, "node_modules/body-parser/node_modules/qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", "dev": true, + "dependencies": { + "side-channel": "^1.0.4" + }, "engines": { "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/bonjour": { @@ -2998,7 +3058,7 @@ "node_modules/chokidar/node_modules/glob-parent": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", "dev": true, "dependencies": { "is-glob": "^3.1.0", @@ -3178,9 +3238,9 @@ } }, "node_modules/cliui/node_modules/ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, "engines": { "node": ">=8" @@ -3394,21 +3454,41 @@ "dev": true }, "node_modules/content-disposition": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", - "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", "dev": true, "dependencies": { - "safe-buffer": "5.1.2" + "safe-buffer": "5.2.1" }, "engines": { "node": ">= 0.6" } }, + "node_modules/content-disposition/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, "node_modules/content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", "dev": true, "engines": { "node": ">= 0.6" @@ -3424,9 +3504,9 @@ } }, "node_modules/cookie": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", - "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", "dev": true, "engines": { "node": ">= 0.6" @@ -3589,9 +3669,9 @@ "dev": true }, "node_modules/decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", + "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", "dev": true, "engines": { "node": ">=0.10" @@ -3760,10 +3840,14 @@ } }, "node_modules/destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", - "dev": true + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "dev": true, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } }, "node_modules/detect-libc": { "version": "1.0.3", @@ -3973,7 +4057,7 @@ "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", "dev": true }, "node_modules/emittery": { @@ -4006,7 +4090,7 @@ "node_modules/encodeurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", "dev": true, "engines": { "node": ">= 0.8" @@ -4275,13 +4359,10 @@ } }, "node_modules/eslint-loader/node_modules/json5": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", - "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true, - "dependencies": { - "minimist": "^1.2.5" - }, "bin": { "json5": "lib/cli.js" }, @@ -4290,9 +4371,9 @@ } }, "node_modules/eslint-loader/node_modules/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": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", "dev": true, "dependencies": { "big.js": "^5.2.2", @@ -4404,9 +4485,9 @@ } }, "node_modules/eslint/node_modules/ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, "engines": { "node": ">=8" @@ -4724,7 +4805,7 @@ "node_modules/etag": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", "dev": true, "engines": { "node": ">= 0.6" @@ -4746,13 +4827,10 @@ } }, "node_modules/eventsource": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.0.7.tgz", - "integrity": "sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.1.2.tgz", + "integrity": "sha512-xAH3zWhgO2/3KIniEKYPr8plNSzlGINOUqYj0m0u7AB81iRw8b/3E73W6AuU+6klLbaSFmZnaETQ2lXPfAydrA==", "dev": true, - "dependencies": { - "original": "^1.0.0" - }, "engines": { "node": ">=0.12.0" } @@ -4898,38 +4976,39 @@ "dev": true }, "node_modules/express": { - "version": "4.17.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", - "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", "dev": true, "dependencies": { - "accepts": "~1.3.7", + "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.19.0", - "content-disposition": "0.5.3", + "body-parser": "1.20.1", + "content-disposition": "0.5.4", "content-type": "~1.0.4", - "cookie": "0.4.0", + "cookie": "0.5.0", "cookie-signature": "1.0.6", "debug": "2.6.9", - "depd": "~1.1.2", + "depd": "2.0.0", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "etag": "~1.8.1", - "finalhandler": "~1.1.2", + "finalhandler": "1.2.0", "fresh": "0.5.2", + "http-errors": "2.0.0", "merge-descriptors": "1.0.1", "methods": "~1.1.2", - "on-finished": "~2.3.0", + "on-finished": "2.4.1", "parseurl": "~1.3.3", "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.5", - "qs": "6.7.0", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", "range-parser": "~1.2.1", - "safe-buffer": "5.1.2", - "send": "0.17.1", - "serve-static": "1.14.1", - "setprototypeof": "1.1.1", - "statuses": "~1.5.0", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", "type-is": "~1.6.18", "utils-merge": "1.0.1", "vary": "~1.1.2" @@ -4953,6 +5032,15 @@ "ms": "2.0.0" } }, + "node_modules/express/node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/express/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -4960,12 +5048,47 @@ "dev": true }, "node_modules/express/node_modules/qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", "dev": true, + "dependencies": { + "side-channel": "^1.0.4" + }, "engines": { "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/express/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/express/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "engines": { + "node": ">= 0.8" } }, "node_modules/extend": { @@ -5198,17 +5321,17 @@ } }, "node_modules/finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", "dev": true, "dependencies": { "debug": "2.6.9", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", - "on-finished": "~2.3.0", + "on-finished": "2.4.1", "parseurl": "~1.3.3", - "statuses": "~1.5.0", + "statuses": "2.0.1", "unpipe": "~1.0.0" }, "engines": { @@ -5227,9 +5350,18 @@ "node_modules/finalhandler/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, + "node_modules/finalhandler/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/find-cache-dir": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz", @@ -5295,9 +5427,9 @@ "dev": true }, "node_modules/follow-redirects": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.1.tgz", - "integrity": "sha512-SSG5xmZh1mkPGyKzjZP8zLjltIfpW32Y5QpdNJyjcfGxK3qo3NDDkZOZSFiGn1A6SclQxY9GzEwAHQ3dmYRWpg==", + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", "dev": true, "funding": [ { @@ -5347,9 +5479,9 @@ } }, "node_modules/forwarded": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", - "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", "dev": true, "engines": { "node": ">= 0.6" @@ -5370,7 +5502,7 @@ "node_modules/fresh": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", "dev": true, "engines": { "node": ">= 0.6" @@ -5864,26 +5996,38 @@ "dev": true }, "node_modules/http-errors": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", - "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", "dev": true, "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" }, "engines": { - "node": ">= 0.6" + "node": ">= 0.8" } }, - "node_modules/http-errors/node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true + "node_modules/http-errors/node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-errors/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } }, "node_modules/http-parser-js": { "version": "0.5.3", @@ -5905,6 +6049,20 @@ "node": ">=8.0.0" } }, + "node_modules/http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "dev": true, + "dependencies": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/http-proxy-middleware": { "version": "0.19.1", "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz", @@ -6131,40 +6289,6 @@ "node": ">=8" } }, - "node_modules/import-local/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/import-local/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/import-local/node_modules/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==", - "dev": true, - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", @@ -6546,9 +6670,9 @@ } }, "node_modules/is-potential-custom-element-name": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.0.tgz", - "integrity": "sha1-DFLlS8yjkbssSUsh6GJtczbG45c=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", "dev": true }, "node_modules/is-regex": { @@ -9208,36 +9332,37 @@ "dev": true }, "node_modules/jsdom": { - "version": "16.4.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.4.0.tgz", - "integrity": "sha512-lYMm3wYdgPhrl7pDcRmvzPhhrGVBeVhPIqeHjzeiHN3DFmD1RBpbExbi8vU7BJdH8VAZYovR8DMt0PNNDM7k8w==", + "version": "16.7.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", + "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", "dev": true, "dependencies": { - "abab": "^2.0.3", - "acorn": "^7.1.1", + "abab": "^2.0.5", + "acorn": "^8.2.4", "acorn-globals": "^6.0.0", "cssom": "^0.4.4", - "cssstyle": "^2.2.0", + "cssstyle": "^2.3.0", "data-urls": "^2.0.0", - "decimal.js": "^10.2.0", + "decimal.js": "^10.2.1", "domexception": "^2.0.1", - "escodegen": "^1.14.1", + "escodegen": "^2.0.0", + "form-data": "^3.0.0", "html-encoding-sniffer": "^2.0.1", - "is-potential-custom-element-name": "^1.0.0", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-potential-custom-element-name": "^1.0.1", "nwsapi": "^2.2.0", - "parse5": "5.1.1", - "request": "^2.88.2", - "request-promise-native": "^1.0.8", - "saxes": "^5.0.0", + "parse5": "6.0.1", + "saxes": "^5.0.1", "symbol-tree": "^3.2.4", - "tough-cookie": "^3.0.1", + "tough-cookie": "^4.0.0", "w3c-hr-time": "^1.0.2", "w3c-xmlserializer": "^2.0.0", "webidl-conversions": "^6.1.0", "whatwg-encoding": "^1.0.5", "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.0.0", - "ws": "^7.2.3", + "whatwg-url": "^8.5.0", + "ws": "^7.4.6", "xml-name-validator": "^3.0.0" }, "engines": { @@ -9252,34 +9377,141 @@ } } }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "node_modules/jsdom/node_modules/acorn": { + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", + "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", "dev": true, "bin": { - "jsesc": "bin/jsesc" + "acorn": "bin/acorn" }, "engines": { - "node": ">=4" + "node": ">=0.4.0" } }, - "node_modules/json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "node_modules/jsdom/node_modules/escodegen": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", + "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", + "dev": true, + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/jsdom/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/jsdom/node_modules/form-data": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/jsdom/node_modules/tough-cookie": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.2.tgz", + "integrity": "sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==", + "dev": true, + "dependencies": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsdom/node_modules/tr46": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", + "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", + "dev": true, + "dependencies": { + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jsdom/node_modules/universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/jsdom/node_modules/whatwg-url": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", + "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", + "dev": true, + "dependencies": { + "lodash": "^4.7.0", + "tr46": "^2.1.0", + "webidl-conversions": "^6.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", "dev": true }, "node_modules/json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", "dev": true }, "node_modules/json-schema-traverse": { @@ -9307,9 +9539,9 @@ "dev": true }, "node_modules/json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", "dev": true, "dependencies": { "minimist": "^1.2.0" @@ -9328,18 +9560,18 @@ } }, "node_modules/jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", "dev": true, - "engines": [ - "node >=0.6.0" - ], "dependencies": { "assert-plus": "1.0.0", "extsprintf": "1.3.0", - "json-schema": "0.2.3", + "json-schema": "0.4.0", "verror": "1.10.0" + }, + "engines": { + "node": ">=0.6.0" } }, "node_modules/killable": { @@ -9450,9 +9682,9 @@ } }, "node_modules/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==", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", + "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", "dev": true, "dependencies": { "big.js": "^5.2.2", @@ -9608,7 +9840,7 @@ "node_modules/media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", "dev": true, "engines": { "node": ">= 0.6" @@ -9683,21 +9915,21 @@ } }, "node_modules/mime-db": { - "version": "1.44.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", - "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==", + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "dev": true, "engines": { "node": ">= 0.6" } }, "node_modules/mime-types": { - "version": "2.1.27", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", - "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, "dependencies": { - "mime-db": "1.44.0" + "mime-db": "1.52.0" }, "engines": { "node": ">= 0.6" @@ -9731,9 +9963,9 @@ "dev": true }, "node_modules/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "dependencies": { "brace-expansion": "^1.1.7" @@ -9743,10 +9975,13 @@ } }, "node_modules/minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/minipass": { "version": "3.1.3", @@ -9870,9 +10105,9 @@ "dev": true }, "node_modules/negotiator": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", - "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", "dev": true, "engines": { "node": ">= 0.6" @@ -9907,12 +10142,45 @@ "dev": true }, "node_modules/node-fetch": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", - "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz", + "integrity": "sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==", "dev": true, + "dependencies": { + "whatwg-url": "^5.0.0" + }, "engines": { "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-fetch/node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true + }, + "node_modules/node-fetch/node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true + }, + "node_modules/node-fetch/node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" } }, "node_modules/node-forge": { @@ -10040,9 +10308,9 @@ } }, "node_modules/nth-check": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.0.tgz", - "integrity": "sha512-i4sc/Kj8htBrAiH1viZ0TgU8Y5XqCaV/FziYK6TBczxmeKm3AEFWqqF3195yKudrarqy7Zu80Ra5dobFjn9X/Q==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", "dev": true, "dependencies": { "boolbase": "^1.0.0" @@ -10231,9 +10499,9 @@ "dev": true }, "node_modules/on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", "dev": true, "dependencies": { "ee-first": "1.1.1" @@ -10313,15 +10581,6 @@ "node": ">= 0.8.0" } }, - "node_modules/original": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz", - "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==", - "dev": true, - "dependencies": { - "url-parse": "^1.4.3" - } - }, "node_modules/p-each-series": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-2.2.0.tgz", @@ -10447,9 +10706,9 @@ } }, "node_modules/parse5": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", - "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", "dev": true }, "node_modules/parseurl": { @@ -10526,9 +10785,9 @@ } }, "node_modules/path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, "node_modules/path-to-regexp": { @@ -10727,9 +10986,9 @@ } }, "node_modules/pretty-format/node_modules/ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, "engines": { "node": ">=8" @@ -10797,12 +11056,12 @@ } }, "node_modules/proxy-addr": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", - "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", "dev": true, "dependencies": { - "forwarded": "~0.1.2", + "forwarded": "0.2.0", "ipaddr.js": "1.9.1" }, "engines": { @@ -10846,9 +11105,9 @@ "integrity": "sha512-HM7yY8O2ilqhmULxGMpcHSF1EhJJ9yBj8gvDEuZ6M+KGJ0YY2hKpnXvRD+hZPLrDVck3ExIGhmPtSdcjC+guuw==" }, "node_modules/qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", "dev": true, "engines": { "node": ">=0.6" @@ -10889,13 +11148,13 @@ } }, "node_modules/raw-body": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", - "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", "dev": true, "dependencies": { - "bytes": "3.1.0", - "http-errors": "1.7.2", + "bytes": "3.1.2", + "http-errors": "2.0.0", "iconv-lite": "0.4.24", "unpipe": "1.0.0" }, @@ -10904,9 +11163,9 @@ } }, "node_modules/raw-body/node_modules/bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", "dev": true, "engines": { "node": ">= 0.8" @@ -10950,28 +11209,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/read-pkg-up/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg-up/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/read-pkg/node_modules/type-fest": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", @@ -11742,9 +11979,9 @@ "dev": true }, "node_modules/selfsigned": { - "version": "1.10.8", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.8.tgz", - "integrity": "sha512-2P4PtieJeEwVgTU9QEcwIRDQ/mXJLX8/+I3ur+Pg16nS8oNbrGxEso9NyYWy8NAmXiNl4dlAp5MwoNeCWzON4w==", + "version": "1.10.14", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.14.tgz", + "integrity": "sha512-lkjaiAye+wBZDCBsu5BGi0XiLRxeUlsGod5ZP924CRSEoGuZAw/f7y9RKu28rwTfiHVhdavhB0qH0INV6P1lEA==", "dev": true, "dependencies": { "node-forge": "^0.10.0" @@ -11766,24 +12003,24 @@ } }, "node_modules/send": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", - "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", "dev": true, "dependencies": { "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", + "depd": "2.0.0", + "destroy": "1.2.0", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "etag": "~1.8.1", "fresh": "0.5.2", - "http-errors": "~1.7.2", + "http-errors": "2.0.0", "mime": "1.6.0", - "ms": "2.1.1", - "on-finished": "~2.3.0", + "ms": "2.1.3", + "on-finished": "2.4.1", "range-parser": "~1.2.1", - "statuses": "~1.5.0" + "statuses": "2.0.1" }, "engines": { "node": ">= 0.8.0" @@ -11801,15 +12038,33 @@ "node_modules/send/node_modules/debug/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, + "node_modules/send/node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/send/node_modules/ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true }, + "node_modules/send/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/serialize-javascript": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", @@ -11880,15 +12135,15 @@ "dev": true }, "node_modules/serve-static": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", - "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", "dev": true, "dependencies": { "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "parseurl": "~1.3.3", - "send": "0.17.1" + "send": "0.18.0" }, "engines": { "node": ">= 0.8.0" @@ -11928,9 +12183,9 @@ } }, "node_modules/setprototypeof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", - "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", "dev": true }, "node_modules/shallow-clone": { @@ -11973,6 +12228,20 @@ "dev": true, "optional": true }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/signal-exit": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", @@ -12000,9 +12269,9 @@ ] }, "node_modules/simple-get": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.0.tgz", - "integrity": "sha512-bCR6cP+aTdScaQCnQKbPKtJOKDp/hj9EDLJo3Nw4y1QksqaovlW/bnptB6/c1e+qmNIDHRK+oXFDdEqBT8WzUA==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.1.tgz", + "integrity": "sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA==", "dev": true, "dependencies": { "decompress-response": "^4.2.0", @@ -12313,9 +12582,9 @@ } }, "node_modules/source-map-support": { - "version": "0.5.19", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", - "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "dev": true, "dependencies": { "buffer-from": "^1.0.0", @@ -12535,9 +12804,9 @@ } }, "node_modules/string-length/node_modules/ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, "engines": { "node": ">=8" @@ -12718,9 +12987,9 @@ } }, "node_modules/table/node_modules/ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, "engines": { "node": ">=8" @@ -12777,20 +13046,29 @@ } }, "node_modules/tar": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.0.tgz", - "integrity": "sha512-DUCttfhsnLCjwoDoFcI+B2iJgYa93vBnDUATYEeRx6sntCTdN01VnqsIuTlALXla/LWooNg0yEGeB+Y8WdFxGA==", + "version": "6.1.13", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.13.tgz", + "integrity": "sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw==", "dev": true, "dependencies": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", - "minipass": "^3.0.0", + "minipass": "^4.0.0", "minizlib": "^2.1.1", "mkdirp": "^1.0.3", "yallist": "^4.0.0" }, "engines": { - "node": ">= 10" + "node": ">=10" + } + }, + "node_modules/tar/node_modules/minipass": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.4.tgz", + "integrity": "sha512-lwycX3cBMTvcejsHITUgYj6Gy6A7Nh4Q6h9NP4sTHY1ccJlC7yKzDmiShEHsJ16Jf1nKGDEaiHxiltsJEvk0nQ==", + "dev": true, + "engines": { + "node": ">=8" } }, "node_modules/tar/node_modules/mkdirp": { @@ -12822,9 +13100,9 @@ } }, "node_modules/terser": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", - "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.1.tgz", + "integrity": "sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==", "dev": true, "dependencies": { "commander": "^2.20.0", @@ -12862,6 +13140,18 @@ "webpack": "^5.1.0" } }, + "node_modules/terser-webpack-plugin/node_modules/acorn": { + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", + "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/terser-webpack-plugin/node_modules/commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", @@ -12884,14 +13174,15 @@ } }, "node_modules/terser-webpack-plugin/node_modules/terser": { - "version": "5.5.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.5.1.tgz", - "integrity": "sha512-6VGWZNVP2KTUcltUQJ25TtNjx/XgdDsBDKGt8nN0MpydU36LmbPPcMBd2kmtZNNGVVDLg44k7GKeHHj+4zPIBQ==", + "version": "5.16.5", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.16.5.tgz", + "integrity": "sha512-qcwfg4+RZa3YvlFh0qjifnzBHjKGNbtDo9yivMqMFDy9Q6FSaQWSB/j1xKhsoUFJIqDOM3TsN6D5xbrMrFcHbg==", "dev": true, "dependencies": { + "@jridgewell/source-map": "^0.3.2", + "acorn": "^8.5.0", "commander": "^2.20.0", - "source-map": "~0.7.2", - "source-map-support": "~0.5.19" + "source-map-support": "~0.5.20" }, "bin": { "terser": "bin/terser" @@ -12900,15 +13191,6 @@ "node": ">=10" } }, - "node_modules/terser-webpack-plugin/node_modules/terser/node_modules/source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, "node_modules/terser/node_modules/commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", @@ -12948,9 +13230,9 @@ "dev": true }, "node_modules/tmpl": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", - "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", "dev": true }, "node_modules/to-fast-properties": { @@ -13014,9 +13296,9 @@ } }, "node_modules/toidentifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", - "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", "dev": true, "engines": { "node": ">=0.6" @@ -13078,13 +13360,10 @@ } }, "node_modules/ts-jest/node_modules/json5": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", - "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true, - "dependencies": { - "minimist": "^1.2.5" - }, "bin": { "json5": "lib/cli.js" }, @@ -13192,13 +13471,10 @@ } }, "node_modules/ts-loader/node_modules/json5": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", - "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true, - "dependencies": { - "minimist": "^1.2.5" - }, "bin": { "json5": "lib/cli.js" }, @@ -13207,9 +13483,9 @@ } }, "node_modules/ts-loader/node_modules/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": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", "dev": true, "dependencies": { "big.js": "^5.2.2", @@ -13363,7 +13639,7 @@ "node_modules/unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", "dev": true, "engines": { "node": ">= 0.8" @@ -13454,9 +13730,9 @@ } }, "node_modules/url-parse": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.1.tgz", - "integrity": "sha512-HOfCOUJt7iSYzEx/UqgtwKRMC6EU91NFhsCHMv9oM03VJcVo2Qrp8T8kI9D7amFf1cu+/3CEhgb3rF9zL7k85Q==", + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", "dev": true, "dependencies": { "querystringify": "^2.1.1", @@ -13920,12 +14196,12 @@ } }, "node_modules/webpack-dev-server": { - "version": "3.11.1", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.1.tgz", - "integrity": "sha512-u4R3mRzZkbxQVa+MBWi2uVpB5W59H3ekZAJsQlKUTdl7Elcah2EhygTPLmeFXybQkf9i2+L0kn7ik9SnXa6ihQ==", + "version": "3.11.3", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.3.tgz", + "integrity": "sha512-3x31rjbEQWKMNzacUZRE6wXvUFuGpH7vr0lIEbYpMAG9BOxi0928QU1BBswOAP3kg3H1O4hiS+sq4YyAn6ANnA==", "dev": true, "dependencies": { - "ansi-html": "0.0.7", + "ansi-html-community": "0.0.8", "bonjour": "^3.5.0", "chokidar": "^2.1.8", "compression": "^1.7.4", @@ -13975,9 +14251,9 @@ } }, "node_modules/webpack-dev-server/node_modules/ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", "dev": true, "engines": { "node": ">=6" @@ -14204,9 +14480,9 @@ } }, "node_modules/webpack-dev-server/node_modules/ws": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", - "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz", + "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==", "dev": true, "dependencies": { "async-limiter": "~1.0.0" @@ -14375,15 +14651,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/webpack/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/webpack/node_modules/pkg-dir": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-5.0.0.tgz", @@ -14514,9 +14781,9 @@ } }, "node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, "engines": { "node": ">=8" @@ -14689,23 +14956,10 @@ } }, "node_modules/yargs/node_modules/ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/yargs/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, "engines": { "node": ">=8" } @@ -14719,15 +14973,6 @@ "node": ">=8" } }, - "node_modules/yargs/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/yargs/node_modules/string-width": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", @@ -14801,13 +15046,10 @@ }, "dependencies": { "json5": { - "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" - } + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true }, "semver": { "version": "5.7.1", @@ -15198,22 +15440,6 @@ "resolve-from": "^5.0.0" }, "dependencies": { - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, "resolve-from": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", @@ -15330,9 +15556,9 @@ }, "dependencies": { "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true }, "ansi-styles": { @@ -15699,6 +15925,55 @@ } } }, + "@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true + }, + "@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true + }, + "@jridgewell/source-map": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", + "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", + "dev": true, + "requires": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true + }, + "@jridgewell/trace-mapping": { + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", + "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + } + }, "@mapbox/node-pre-gyp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.5.tgz", @@ -15771,6 +16046,12 @@ "@sinonjs/commons": "^1.7.0" } }, + "@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "dev": true + }, "@types/anymatch": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/@types/anymatch/-/anymatch-1.3.1.tgz", @@ -16301,13 +16582,13 @@ "dev": true }, "accepts": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", - "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", "dev": true, "requires": { - "mime-types": "~2.1.24", - "negotiator": "0.6.2" + "mime-types": "~2.1.34", + "negotiator": "0.6.3" } }, "acorn": { @@ -16397,10 +16678,10 @@ } } }, - "ansi-html": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", - "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=", + "ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", "dev": true }, "ansi-regex": { @@ -16532,9 +16813,9 @@ "dev": true }, "async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", "dev": true, "requires": { "lodash": "^4.17.14" @@ -16797,27 +17078,29 @@ } }, "body-parser": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", - "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", "dev": true, "requires": { - "bytes": "3.1.0", + "bytes": "3.1.2", "content-type": "~1.0.4", "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "1.7.2", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", - "qs": "6.7.0", - "raw-body": "2.4.0", - "type-is": "~1.6.17" + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" }, "dependencies": { "bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", "dev": true }, "debug": { @@ -16829,17 +17112,26 @@ "ms": "2.0.0" } }, + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true + }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, "qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", - "dev": true + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dev": true, + "requires": { + "side-channel": "^1.0.4" + } } } }, @@ -17170,7 +17462,7 @@ "glob-parent": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", "dev": true, "requires": { "is-glob": "^3.1.0", @@ -17322,9 +17614,9 @@ }, "dependencies": { "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true }, "is-fullwidth-code-point": { @@ -17502,18 +17794,26 @@ "dev": true }, "content-disposition": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", - "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", "dev": true, "requires": { - "safe-buffer": "5.1.2" + "safe-buffer": "5.2.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } } }, "content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", "dev": true }, "convert-source-map": { @@ -17526,9 +17826,9 @@ } }, "cookie": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", - "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", "dev": true }, "cookie-signature": { @@ -17654,9 +17954,9 @@ "dev": true }, "decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", + "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", "dev": true }, "decompress-response": { @@ -17788,9 +18088,9 @@ "dev": true }, "destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", "dev": true }, "detect-libc": { @@ -17962,7 +18262,7 @@ "ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", "dev": true }, "emittery": { @@ -17986,7 +18286,7 @@ "encodeurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", "dev": true }, "end-of-stream": { @@ -18164,9 +18464,9 @@ }, "dependencies": { "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true }, "ansi-styles": { @@ -18342,18 +18642,15 @@ }, "dependencies": { "json5": { - "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" - } + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "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": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", "dev": true, "requires": { "big.js": "^5.2.2", @@ -18499,7 +18796,7 @@ "etag": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", "dev": true }, "eventemitter3": { @@ -18515,13 +18812,10 @@ "dev": true }, "eventsource": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.0.7.tgz", - "integrity": "sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ==", - "dev": true, - "requires": { - "original": "^1.0.0" - } + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.1.2.tgz", + "integrity": "sha512-xAH3zWhgO2/3KIniEKYPr8plNSzlGINOUqYj0m0u7AB81iRw8b/3E73W6AuU+6klLbaSFmZnaETQ2lXPfAydrA==", + "dev": true }, "exec-sh": { "version": "0.3.4", @@ -18641,38 +18935,39 @@ } }, "express": { - "version": "4.17.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", - "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", "dev": true, "requires": { - "accepts": "~1.3.7", + "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.19.0", - "content-disposition": "0.5.3", + "body-parser": "1.20.1", + "content-disposition": "0.5.4", "content-type": "~1.0.4", - "cookie": "0.4.0", + "cookie": "0.5.0", "cookie-signature": "1.0.6", "debug": "2.6.9", - "depd": "~1.1.2", + "depd": "2.0.0", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "etag": "~1.8.1", - "finalhandler": "~1.1.2", + "finalhandler": "1.2.0", "fresh": "0.5.2", + "http-errors": "2.0.0", "merge-descriptors": "1.0.1", "methods": "~1.1.2", - "on-finished": "~2.3.0", + "on-finished": "2.4.1", "parseurl": "~1.3.3", "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.5", - "qs": "6.7.0", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", "range-parser": "~1.2.1", - "safe-buffer": "5.1.2", - "send": "0.17.1", - "serve-static": "1.14.1", - "setprototypeof": "1.1.1", - "statuses": "~1.5.0", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", "type-is": "~1.6.18", "utils-merge": "1.0.1", "vary": "~1.1.2" @@ -18693,6 +18988,12 @@ "ms": "2.0.0" } }, + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true + }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -18700,9 +19001,24 @@ "dev": true }, "qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dev": true, + "requires": { + "side-channel": "^1.0.4" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + }, + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "dev": true } } @@ -18902,17 +19218,17 @@ } }, "finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", "dev": true, "requires": { "debug": "2.6.9", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", - "on-finished": "~2.3.0", + "on-finished": "2.4.1", "parseurl": "~1.3.3", - "statuses": "~1.5.0", + "statuses": "2.0.1", "unpipe": "~1.0.0" }, "dependencies": { @@ -18928,7 +19244,13 @@ "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "dev": true } } @@ -18982,9 +19304,9 @@ "dev": true }, "follow-redirects": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.1.tgz", - "integrity": "sha512-SSG5xmZh1mkPGyKzjZP8zLjltIfpW32Y5QpdNJyjcfGxK3qo3NDDkZOZSFiGn1A6SclQxY9GzEwAHQ3dmYRWpg==", + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", "dev": true }, "for-in": { @@ -19011,9 +19333,9 @@ } }, "forwarded": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", - "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", "dev": true }, "fragment-cache": { @@ -19028,7 +19350,7 @@ "fresh": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", "dev": true }, "fs-extra": { @@ -19414,22 +19736,28 @@ "dev": true }, "http-errors": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", - "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", "dev": true, "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" }, "dependencies": { - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true + }, + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "dev": true } } @@ -19451,6 +19779,17 @@ "requires-port": "^1.0.0" } }, + "http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "dev": true, + "requires": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + } + }, "http-proxy-middleware": { "version": "0.19.1", "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz", @@ -19628,33 +19967,6 @@ "requires": { "pkg-dir": "^4.2.0", "resolve-cwd": "^3.0.0" - }, - "dependencies": { - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, - "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==", - "dev": true, - "requires": { - "find-up": "^4.0.0" - } - } } }, "imurmurhash": { @@ -19936,9 +20248,9 @@ } }, "is-potential-custom-element-name": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.0.tgz", - "integrity": "sha1-DFLlS8yjkbssSUsh6GJtczbG45c=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", "dev": true }, "is-regex": { @@ -21994,37 +22306,114 @@ "dev": true }, "jsdom": { - "version": "16.4.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.4.0.tgz", - "integrity": "sha512-lYMm3wYdgPhrl7pDcRmvzPhhrGVBeVhPIqeHjzeiHN3DFmD1RBpbExbi8vU7BJdH8VAZYovR8DMt0PNNDM7k8w==", + "version": "16.7.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", + "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", "dev": true, "requires": { - "abab": "^2.0.3", - "acorn": "^7.1.1", + "abab": "^2.0.5", + "acorn": "^8.2.4", "acorn-globals": "^6.0.0", "cssom": "^0.4.4", - "cssstyle": "^2.2.0", + "cssstyle": "^2.3.0", "data-urls": "^2.0.0", - "decimal.js": "^10.2.0", + "decimal.js": "^10.2.1", "domexception": "^2.0.1", - "escodegen": "^1.14.1", + "escodegen": "^2.0.0", + "form-data": "^3.0.0", "html-encoding-sniffer": "^2.0.1", - "is-potential-custom-element-name": "^1.0.0", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-potential-custom-element-name": "^1.0.1", "nwsapi": "^2.2.0", - "parse5": "5.1.1", - "request": "^2.88.2", - "request-promise-native": "^1.0.8", - "saxes": "^5.0.0", + "parse5": "6.0.1", + "saxes": "^5.0.1", "symbol-tree": "^3.2.4", - "tough-cookie": "^3.0.1", + "tough-cookie": "^4.0.0", "w3c-hr-time": "^1.0.2", "w3c-xmlserializer": "^2.0.0", "webidl-conversions": "^6.1.0", "whatwg-encoding": "^1.0.5", "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.0.0", - "ws": "^7.2.3", + "whatwg-url": "^8.5.0", + "ws": "^7.4.6", "xml-name-validator": "^3.0.0" + }, + "dependencies": { + "acorn": { + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", + "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", + "dev": true + }, + "escodegen": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", + "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", + "dev": true, + "requires": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + } + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + }, + "form-data": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, + "tough-cookie": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.2.tgz", + "integrity": "sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==", + "dev": true, + "requires": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + } + }, + "tr46": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", + "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", + "dev": true, + "requires": { + "punycode": "^2.1.1" + } + }, + "universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "dev": true + }, + "whatwg-url": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", + "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", + "dev": true, + "requires": { + "lodash": "^4.7.0", + "tr46": "^2.1.0", + "webidl-conversions": "^6.1.0" + } + } } }, "jsesc": { @@ -22046,9 +22435,9 @@ "dev": true }, "json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", "dev": true }, "json-schema-traverse": { @@ -22076,9 +22465,9 @@ "dev": true }, "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", "dev": true, "requires": { "minimist": "^1.2.0" @@ -22094,14 +22483,14 @@ } }, "jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", "dev": true, "requires": { "assert-plus": "1.0.0", "extsprintf": "1.3.0", - "json-schema": "0.2.3", + "json-schema": "0.4.0", "verror": "1.10.0" } }, @@ -22188,9 +22577,9 @@ "dev": true }, "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==", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", + "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", "dev": true, "requires": { "big.js": "^5.2.2", @@ -22316,7 +22705,7 @@ "media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", "dev": true }, "memory-fs": { @@ -22370,18 +22759,18 @@ "dev": true }, "mime-db": { - "version": "1.44.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", - "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==", + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "dev": true }, "mime-types": { - "version": "2.1.27", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", - "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, "requires": { - "mime-db": "1.44.0" + "mime-db": "1.52.0" } }, "mimic-fn": { @@ -22403,18 +22792,18 @@ "dev": true }, "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "requires": { "brace-expansion": "^1.1.7" } }, "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "dev": true }, "minipass": { @@ -22520,9 +22909,9 @@ "dev": true }, "negotiator": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", - "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", "dev": true }, "neo-async": { @@ -22556,10 +22945,37 @@ } }, "node-fetch": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", - "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", - "dev": true + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz", + "integrity": "sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==", + "dev": true, + "requires": { + "whatwg-url": "^5.0.0" + }, + "dependencies": { + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true + }, + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true + }, + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + } + } }, "node-forge": { "version": "0.10.0", @@ -22663,9 +23079,9 @@ } }, "nth-check": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.0.tgz", - "integrity": "sha512-i4sc/Kj8htBrAiH1viZ0TgU8Y5XqCaV/FziYK6TBczxmeKm3AEFWqqF3195yKudrarqy7Zu80Ra5dobFjn9X/Q==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", "dev": true, "requires": { "boolbase": "^1.0.0" @@ -22802,9 +23218,9 @@ "dev": true }, "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", "dev": true, "requires": { "ee-first": "1.1.1" @@ -22865,15 +23281,6 @@ "word-wrap": "~1.2.3" } }, - "original": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz", - "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==", - "dev": true, - "requires": { - "url-parse": "^1.4.3" - } - }, "p-each-series": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-2.2.0.tgz", @@ -22965,9 +23372,9 @@ } }, "parse5": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", - "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", "dev": true }, "parseurl": { @@ -23031,9 +23438,9 @@ "dev": true }, "path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, "path-to-regexp": { @@ -23188,9 +23595,9 @@ }, "dependencies": { "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true }, "ansi-styles": { @@ -23242,12 +23649,12 @@ } }, "proxy-addr": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", - "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", "dev": true, "requires": { - "forwarded": "~0.1.2", + "forwarded": "0.2.0", "ipaddr.js": "1.9.1" } }, @@ -23285,9 +23692,9 @@ "integrity": "sha512-HM7yY8O2ilqhmULxGMpcHSF1EhJJ9yBj8gvDEuZ6M+KGJ0YY2hKpnXvRD+hZPLrDVck3ExIGhmPtSdcjC+guuw==" }, "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", "dev": true }, "querystring": { @@ -23318,21 +23725,21 @@ "dev": true }, "raw-body": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", - "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", "dev": true, "requires": { - "bytes": "3.1.0", - "http-errors": "1.7.2", + "bytes": "3.1.2", + "http-errors": "2.0.0", "iconv-lite": "0.4.24", "unpipe": "1.0.0" }, "dependencies": { "bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", "dev": true } } @@ -23372,24 +23779,6 @@ "find-up": "^4.1.0", "read-pkg": "^5.2.0", "type-fest": "^0.8.1" - }, - "dependencies": { - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - } } }, "readable-stream": { @@ -23994,9 +24383,9 @@ "dev": true }, "selfsigned": { - "version": "1.10.8", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.8.tgz", - "integrity": "sha512-2P4PtieJeEwVgTU9QEcwIRDQ/mXJLX8/+I3ur+Pg16nS8oNbrGxEso9NyYWy8NAmXiNl4dlAp5MwoNeCWzON4w==", + "version": "1.10.14", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.14.tgz", + "integrity": "sha512-lkjaiAye+wBZDCBsu5BGi0XiLRxeUlsGod5ZP924CRSEoGuZAw/f7y9RKu28rwTfiHVhdavhB0qH0INV6P1lEA==", "dev": true, "requires": { "node-forge": "^0.10.0" @@ -24012,24 +24401,24 @@ } }, "send": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", - "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", "dev": true, "requires": { "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", + "depd": "2.0.0", + "destroy": "1.2.0", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "etag": "~1.8.1", "fresh": "0.5.2", - "http-errors": "~1.7.2", + "http-errors": "2.0.0", "mime": "1.6.0", - "ms": "2.1.1", - "on-finished": "~2.3.0", + "ms": "2.1.3", + "on-finished": "2.4.1", "range-parser": "~1.2.1", - "statuses": "~1.5.0" + "statuses": "2.0.1" }, "dependencies": { "debug": { @@ -24044,15 +24433,27 @@ "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true } } }, + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true + }, "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "dev": true } } @@ -24123,15 +24524,15 @@ } }, "serve-static": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", - "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", "dev": true, "requires": { "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "parseurl": "~1.3.3", - "send": "0.17.1" + "send": "0.18.0" } }, "set-blocking": { @@ -24164,9 +24565,9 @@ } }, "setprototypeof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", - "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", "dev": true }, "shallow-clone": { @@ -24200,6 +24601,17 @@ "dev": true, "optional": true }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, "signal-exit": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", @@ -24213,9 +24625,9 @@ "dev": true }, "simple-get": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.0.tgz", - "integrity": "sha512-bCR6cP+aTdScaQCnQKbPKtJOKDp/hj9EDLJo3Nw4y1QksqaovlW/bnptB6/c1e+qmNIDHRK+oXFDdEqBT8WzUA==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.1.tgz", + "integrity": "sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA==", "dev": true, "requires": { "decompress-response": "^4.2.0", @@ -24476,9 +24888,9 @@ } }, "source-map-support": { - "version": "0.5.19", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", - "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "dev": true, "requires": { "buffer-from": "^1.0.0", @@ -24665,9 +25077,9 @@ }, "dependencies": { "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true }, "strip-ansi": { @@ -24806,9 +25218,9 @@ } }, "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true }, "is-fullwidth-code-point": { @@ -24852,19 +25264,25 @@ "dev": true }, "tar": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.0.tgz", - "integrity": "sha512-DUCttfhsnLCjwoDoFcI+B2iJgYa93vBnDUATYEeRx6sntCTdN01VnqsIuTlALXla/LWooNg0yEGeB+Y8WdFxGA==", + "version": "6.1.13", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.13.tgz", + "integrity": "sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw==", "dev": true, "requires": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", - "minipass": "^3.0.0", + "minipass": "^4.0.0", "minizlib": "^2.1.1", "mkdirp": "^1.0.3", "yallist": "^4.0.0" }, "dependencies": { + "minipass": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.4.tgz", + "integrity": "sha512-lwycX3cBMTvcejsHITUgYj6Gy6A7Nh4Q6h9NP4sTHY1ccJlC7yKzDmiShEHsJ16Jf1nKGDEaiHxiltsJEvk0nQ==", + "dev": true + }, "mkdirp": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", @@ -24884,9 +25302,9 @@ } }, "terser": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", - "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.1.tgz", + "integrity": "sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==", "dev": true, "requires": { "commander": "^2.20.0", @@ -24916,6 +25334,12 @@ "terser": "^5.5.1" }, "dependencies": { + "acorn": { + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", + "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", + "dev": true + }, "commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", @@ -24932,22 +25356,15 @@ } }, "terser": { - "version": "5.5.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.5.1.tgz", - "integrity": "sha512-6VGWZNVP2KTUcltUQJ25TtNjx/XgdDsBDKGt8nN0MpydU36LmbPPcMBd2kmtZNNGVVDLg44k7GKeHHj+4zPIBQ==", + "version": "5.16.5", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.16.5.tgz", + "integrity": "sha512-qcwfg4+RZa3YvlFh0qjifnzBHjKGNbtDo9yivMqMFDy9Q6FSaQWSB/j1xKhsoUFJIqDOM3TsN6D5xbrMrFcHbg==", "dev": true, "requires": { + "@jridgewell/source-map": "^0.3.2", + "acorn": "^8.5.0", "commander": "^2.20.0", - "source-map": "~0.7.2", - "source-map-support": "~0.5.19" - }, - "dependencies": { - "source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true - } + "source-map-support": "~0.5.20" } } } @@ -24982,9 +25399,9 @@ "dev": true }, "tmpl": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", - "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", "dev": true }, "to-fast-properties": { @@ -25035,9 +25452,9 @@ } }, "toidentifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", - "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", "dev": true }, "tough-cookie": { @@ -25080,13 +25497,10 @@ }, "dependencies": { "json5": { - "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" - } + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true }, "mkdirp": { "version": "1.0.4", @@ -25156,18 +25570,15 @@ "dev": true }, "json5": { - "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" - } + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "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": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", "dev": true, "requires": { "big.js": "^5.2.2", @@ -25283,7 +25694,7 @@ "unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", "dev": true }, "unset-value": { @@ -25366,9 +25777,9 @@ } }, "url-parse": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.1.tgz", - "integrity": "sha512-HOfCOUJt7iSYzEx/UqgtwKRMC6EU91NFhsCHMv9oM03VJcVo2Qrp8T8kI9D7amFf1cu+/3CEhgb3rF9zL7k85Q==", + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", "dev": true, "requires": { "querystringify": "^2.1.1", @@ -25604,12 +26015,6 @@ "p-limit": "^3.0.2" } }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, "pkg-dir": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-5.0.0.tgz", @@ -25782,12 +26187,12 @@ } }, "webpack-dev-server": { - "version": "3.11.1", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.1.tgz", - "integrity": "sha512-u4R3mRzZkbxQVa+MBWi2uVpB5W59H3ekZAJsQlKUTdl7Elcah2EhygTPLmeFXybQkf9i2+L0kn7ik9SnXa6ihQ==", + "version": "3.11.3", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.3.tgz", + "integrity": "sha512-3x31rjbEQWKMNzacUZRE6wXvUFuGpH7vr0lIEbYpMAG9BOxi0928QU1BBswOAP3kg3H1O4hiS+sq4YyAn6ANnA==", "dev": true, "requires": { - "ansi-html": "0.0.7", + "ansi-html-community": "0.0.8", "bonjour": "^3.5.0", "chokidar": "^2.1.8", "compression": "^1.7.4", @@ -25823,9 +26228,9 @@ }, "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==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", "dev": true }, "cliui": { @@ -26001,9 +26406,9 @@ } }, "ws": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", - "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz", + "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==", "dev": true, "requires": { "async-limiter": "~1.0.0" @@ -26168,9 +26573,9 @@ }, "dependencies": { "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true }, "ansi-styles": { @@ -26294,33 +26699,17 @@ }, "dependencies": { "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, "is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, "string-width": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", From f85f7096f726804d75d00f023cb649465129f7bf Mon Sep 17 00:00:00 2001 From: Jordan Sexton Date: Wed, 8 Mar 2023 14:41:22 -0600 Subject: [PATCH 22/25] version 1.6.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 8e9c71ba..632b4f6b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@solana/qr-code-styling", - "version": "1.6.0-beta.0", + "version": "1.6.0", "publishConfig": { "access": "public" }, From ad84541bc287b40331a804de92d8a4072607edc2 Mon Sep 17 00:00:00 2001 From: Callum McIntyre Date: Thu, 9 Mar 2023 11:20:51 +0000 Subject: [PATCH 23/25] Add a .node-version file to document supported node version --- .node-version | 1 + README.md | 4 ++++ package.json | 5 ++++- 3 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 .node-version diff --git a/.node-version b/.node-version new file mode 100644 index 00000000..19c7bdba --- /dev/null +++ b/.node-version @@ -0,0 +1 @@ +16 \ No newline at end of file diff --git a/README.md b/README.md index ac4f8e5f..b604b0cd 100644 --- a/README.md +++ b/README.md @@ -247,6 +247,10 @@ extension|string (`'png' 'jpeg' 'webp' 'svg'`)|`'png'` |File extension If you get an error running `npm install` referring to `node-pre-gyp`, this is caused by an attempt to compile the [`canvas` dependency](https://github.com/Automattic/node-canvas#compiling). See Compiling instructions in the README. For example on MacOS you need to install dependencies: `brew install pkg-config cairo pango libpng jpeg giflib librsvg pixman`. +Currently this repo will not build (`npm run build`) on Node v18, recommended version is v16. See https://stackoverflow.com/q/69692842/1375972 + + + ### License [MIT License](https://raw.githubusercontent.com/kozakdenys/qr-code-styling/master/LICENSE). Copyright (c) 2021 Denys Kozak diff --git a/package.json b/package.json index 632b4f6b..904ba86c 100644 --- a/package.json +++ b/package.json @@ -10,6 +10,9 @@ "files": [ "lib" ], + "engines": { + "node": ">=16, <17" + }, "dependencies": { "qrcode-generator": "^1.4.3" }, @@ -67,4 +70,4 @@ "url": "https://github.com/kozakdenys/qr-code-styling/issues" }, "homepage": "https://qr-code-styling.com" -} +} \ No newline at end of file From c7612d681568f0ad63aaeae16bf78515256a2b38 Mon Sep 17 00:00:00 2001 From: Jordan Sexton Date: Thu, 4 May 2023 14:46:56 -0600 Subject: [PATCH 24/25] Update package.json --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 904ba86c..6e72aa1d 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,7 @@ "lib" ], "engines": { - "node": ">=16, <17" + "node": "16.x" }, "dependencies": { "qrcode-generator": "^1.4.3" From 1f3fded12eb8010d1a2db896c1eb43305c81072f Mon Sep 17 00:00:00 2001 From: Chiel Timmermans Date: Thu, 11 Jul 2024 13:13:54 +0200 Subject: [PATCH 25/25] Chore merge kilian b (#3) * update dependencies * make examples runnable again * proper fix for mirrored qr code and all styles fixes kozakdenys/qr-code-styling#105, fixes kozakdenys/qr-code-styling#49, fixes kozakdenys/qr-code-styling#110 * do not distribute packages via git anymore. prepare npm release * target es2017 * added toDataUrl function and improved typescript types * prepare and publish version 1.0.0 * security patch --------- Co-authored-by: Kilian Brachtendorf --- .editorconfig | 3 +- .eslintrc.js | 11 +- .gitignore | 4 +- CHANGELOG | 32 + README.md | 171 +- jest.config.js | 2 +- lib/constants/dotTypes.test.d.ts | 1 + lib/constants/errorCorrectionLevels.test.d.ts | 1 + .../errorCorrectionPercents.test.d.ts | 1 + lib/constants/modes.test.d.ts | 1 + lib/constants/qrTypes.test.d.ts | 1 + lib/core/QRCanvas.test.d.ts | 1 + lib/core/QRCodeStyling.d.ts | 14 +- lib/core/QRCodeStyling.test.d.ts | 1 + lib/core/QROptions.d.ts | 1 + lib/core/QROptions.test.d.ts | 1 + lib/figures/dot/canvas/QRDot.test.d.ts | 1 + lib/index.test.d.ts | 1 + lib/qr-code-styling.js | 2 +- lib/qr-code-styling.js.map | 2 +- lib/tools/calculateImageSize.test.d.ts | 1 + lib/tools/getMode.test.d.ts | 1 + lib/tools/merge.test.d.ts | 1 + package-lock.json | 24074 +++++----------- package.json | 43 +- src/core/QRCanvas.ts | 25 +- src/core/QRCodeStyling.ts | 55 +- src/core/QROptions.ts | 4 +- src/core/QRSVG.ts | 16 +- src/figures/dot/canvas/QRDot.test.js | 2 +- src/index.html | 113 +- src/tools/merge.ts | 1 + tsconfig.json | 2 +- webpack.config.common.js | 9 +- webpack.config.dev-server.js | 17 +- 35 files changed, 8248 insertions(+), 16368 deletions(-) create mode 100644 CHANGELOG create mode 100644 lib/constants/dotTypes.test.d.ts create mode 100644 lib/constants/errorCorrectionLevels.test.d.ts create mode 100644 lib/constants/errorCorrectionPercents.test.d.ts create mode 100644 lib/constants/modes.test.d.ts create mode 100644 lib/constants/qrTypes.test.d.ts create mode 100644 lib/core/QRCanvas.test.d.ts create mode 100644 lib/core/QRCodeStyling.test.d.ts create mode 100644 lib/core/QROptions.test.d.ts create mode 100644 lib/figures/dot/canvas/QRDot.test.d.ts create mode 100644 lib/index.test.d.ts create mode 100644 lib/tools/calculateImageSize.test.d.ts create mode 100644 lib/tools/getMode.test.d.ts create mode 100644 lib/tools/merge.test.d.ts diff --git a/.editorconfig b/.editorconfig index 2e9ea972..dad3b573 100644 --- a/.editorconfig +++ b/.editorconfig @@ -1,3 +1,4 @@ [*.{js, ts}] indent_style = space -indent_size = 2 \ No newline at end of file +indent_size = 2 +end_of_line = lf diff --git a/.eslintrc.js b/.eslintrc.js index 218ed932..3efdb030 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -2,15 +2,22 @@ module.exports = { env: { node: true }, - parser: '@typescript-eslint/parser', + parser: "@typescript-eslint/parser", extends: [ "eslint:recommended", "plugin:prettier/recommended", - "plugin:jest/recommended", "plugin:@typescript-eslint/recommended", "plugin:@typescript-eslint/eslint-recommended" ], parserOptions: { sourceType: "module" + }, + rules: { + "prettier/prettier": [ + "error", + { + endOfLine: "auto" + } + ] } }; diff --git a/.gitignore b/.gitignore index 45645129..2ebbf1fe 100644 --- a/.gitignore +++ b/.gitignore @@ -5,4 +5,6 @@ /node_modules # Tests coverage results -/coverage \ No newline at end of file +/coverage + +.DS_Store \ No newline at end of file diff --git a/CHANGELOG b/CHANGELOG new file mode 100644 index 00000000..5f06efb2 --- /dev/null +++ b/CHANGELOG @@ -0,0 +1,32 @@ +# Version 1.0.0 - 27.08.2022 + +This is the first release of the package with various bug fixes and dependencies updates from the original repo. +This package can be installed by running. + +`npm install styled-qr-code` or `yarn add styled-qr-code` + +## Breaking change + +- removed the deprecated method signature `download(extension: string)`. Now only `download({name: 'qr', extension: 'png')` is supported +- The orientation of the generated qr code has been fixed to generate qr codes compatible with all known scanners see [#49](https://github.com/kozakdenys/qr-code-styling/issues/105) [#105 QR code is not valid by some scanners](https://github.com/kozakdenys/qr-code-styling/issues/105). + An configuration option `useLegacyDotRotation` has been added to restore the previous behavior. +- images options `crossOrigin` are now set to anonymous by default + +## Feat + +- added optional quality parameter to get getRawData to control the size and quality of the returned image +- added convenience method `toDataUrl` to return a base64 encoded string of the qr code instead of making a detour via a blob +- improved typescript types + +- updated lockfile to v2 [1d91c08fabe430911f68e15cc108c5f015b5329c](1d91c08fabe430911f68e15cc108c5f015b5329c) +- fix svg: [1d91c08fabe430911f68e15cc108c5f015b5329c](1d91c08fabe430911f68e15cc108c5f015b5329c) +- svg now includes images as base64 link: [78070cf808e0b60bb2f6ac310083688f1c27cf99](78070cf808e0b60bb2f6ac310083688f1c27cf99) +- images are now correctly cropped [f400491fe13c5969b8a9d8c1e2e7c90b7067c5a59](f400491fe13c5969b8a9d8c1e2e7c90b7067c5a5) + +## Dependencies + +Updated multiple dependencies and resolved security vulnerabilities. For a full list see: [https://github.com/KilianB/styled-qr-code/commit/535017b1e8dba2eb66666e42eb61e15f8a9866b9#diff-7ae45ad102eab3b6d7e7896acd08c427a9b25b346470d7bc6507b6481575d519](package diff) + +## Misc + +- update example to include legacy and new qr code generation codes diff --git a/README.md b/README.md index 7f9acc19..a387e771 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,16 @@ # QR Code Styling -[![Version](https://img.shields.io/npm/v/qr-code-styling.svg)](https://www.npmjs.org/package/qr-code-styling) +[![Version](https://img.shields.io/npm/v/styled-qr-code.svg)](https://www.npmjs.org/package/styled-qr-code) JavaScript library for generating QR codes with a logo and styling. -Try it here https://qr-code-styling.com +This is a fork of the currently unmaintained [repository by kozakdenys](https://github.com/kozakdenys/qr-code-styling) fixing multiple issues: + +- [#49](https://github.com/kozakdenys/qr-code-styling/issues/105) [#105 QR code is not valid by some scanners](https://github.com/kozakdenys/qr-code-styling/issues/105) +- outdated dependencies +- release for es2017 + +Try the old version here https://qr-code-styling.com to get a feel -If you have issues / suggestions / notes / questions, please open an issue or contact me. Let's create a cool library together. ### Examples

@@ -16,7 +21,7 @@ If you have issues / suggestions / notes / questions, please open an issue or co ### Installation ``` -npm install qr-code-styling +npm install qr-code-styling ``` ### Usage @@ -58,6 +63,7 @@ npm install qr-code-styling ``` + --- [**React example (Codesandbox)**](https://codesandbox.io/s/qr-code-styling-react-example-l8rwl?file=/src/App.js) @@ -77,76 +83,78 @@ npm install qr-code-styling ### API Documentation #### QRCodeStyling instance + `new QRCodeStyling(options) => QRCodeStyling` -Param |Type |Description --------|------|------------ -options|object|Init object +| Param | Type | Description | +| ------- | ------ | ----------- | +| options | object | Init object | `options` structure -Property |Type |Default Value|Description ------------------------|-------------------------|-------------|----------------------------------------------------- -width |number |`300` |Size of canvas -height |number |`300` |Size of canvas -type |string (`'canvas' 'svg'`)|`canvas` |The type of the element that will be rendered -data |string | |The date will be encoded to the QR code -image |string | |The image will be copied to the center of the QR code -margin |number |`0` |Margin around canvas -qrOptions |object | |Options will be passed to `qrcode-generator` lib -imageOptions |object | |Specific image options, details see below -dotsOptions |object | |Dots styling options -cornersSquareOptions |object | |Square in the corners styling options -cornersDotOptionsHelper|object | |Dots in the corners styling options -backgroundOptions |object | |QR background styling options +| Property | Type | Default Value | Description | +| ----------------------- | ------------------------- | ------------- | --------------------------------------------------------------------------------------------- | +| width | number | `300` | Size of canvas | +| height | number | `300` | Size of canvas | +| type | string (`'canvas' 'svg'`) | `canvas` | The type of the element that will be rendered | +| data | string | | The date will be encoded to the QR code | +| image | string | | The image will be copied to the center of the QR code | +| margin | number | `0` | Margin around canvas | +| qrOptions | object | | Options will be passed to `qrcode-generator` lib | +| imageOptions | object | | Specific image options, details see below | +| dotsOptions | object | | Dots styling options | +| cornersSquareOptions | object | | Square in the corners styling options | +| cornersDotOptionsHelper | object | | Dots in the corners styling options | +| backgroundOptions | object | | QR background styling options | +| useLegacyDotRotation | boolean | false | Use the mirrored qr creation strategy of the original library. (Some scanners might not work) | `options.qrOptions` structure -Property |Type |Default Value ---------------------|--------------------------------------------------|------------- -typeNumber |number (`0 - 40`) |`0` -mode |string (`'Numeric' 'Alphanumeric' 'Byte' 'Kanji'`)| -errorCorrectionLevel|string (`'L' 'M' 'Q' 'H'`) |`'Q'` +| Property | Type | Default Value | +| -------------------- | -------------------------------------------------- | ------------- | +| typeNumber | number (`0 - 40`) | `0` | +| mode | string (`'Numeric' 'Alphanumeric' 'Byte' 'Kanji'`) | +| errorCorrectionLevel | string (`'L' 'M' 'Q' 'H'`) | `'Q'` | `options.imageOptions` structure -Property |Type |Default Value|Description -------------------|---------------------------------------|-------------|------------------------------------------------------------------------------ -hideBackgroundDots|boolean |`true` |Hide all dots covered by the image -imageSize |number |`0.4` |Coefficient of the image size. Not recommended to use ove 0.5. Lower is better -margin |number |`0` |Margin of the image in px -crossOrigin |string(`'anonymous' 'use-credentials'`)| |Set "anonymous" if you want to download QR code from other origins. +| Property | Type | Default Value | Description | +| ------------------ | --------------------------------------- | ------------- | ------------------------------------------------------------------------------ | +| hideBackgroundDots | boolean | `true` | Hide all dots covered by the image | +| imageSize | number | `0.4` | Coefficient of the image size. Not recommended to use ove 0.5. Lower is better | +| margin | number | `0` | Margin of the image in px | +| crossOrigin | string(`'anonymous' 'use-credentials'`) | `anonymous` | | `options.dotsOptions` structure -Property|Type |Default Value|Description ---------|------------------------------------------------------------------------------|-------------|------------------- -color |string |`'#000'` |Color of QR dots -gradient|object | |Gradient of QR dots -type |string (`'rounded' 'dots' 'classy' 'classy-rounded' 'square' 'extra-rounded'`)|`'square'` |Style of QR dots +| Property | Type | Default Value | Description | +| -------- | ------------------------------------------------------------------------------ | ------------- | ------------------- | +| color | string | `'#000'` | Color of QR dots | +| gradient | object | | Gradient of QR dots | +| type | string (`'rounded' 'dots' 'classy' 'classy-rounded' 'square' 'extra-rounded'`) | `'square'` | Style of QR dots | `options.backgroundOptions` structure -Property|Type |Default Value ---------|------|------------- -color |string|`'#fff'` -gradient|object| +| Property | Type | Default Value | +| -------- | ------ | ------------- | +| color | string | `'#fff'` | +| gradient | object | `options.cornersSquareOptions` structure -Property|Type |Default Value|Description ---------|-----------------------------------------|-------------|----------------- -color |string | |Color of Corners Square -gradient|object | |Gradient of Corners Square -type |string (`'dot' 'square' 'extra-rounded'`)| |Style of Corners Square +| Property | Type | Default Value | Description | +| -------- | ----------------------------------------- | ------------- | -------------------------- | +| color | string | | Color of Corners Square | +| gradient | object | | Gradient of Corners Square | +| type | string (`'dot' 'square' 'extra-rounded'`) | | Style of Corners Square | `options.cornersDotOptions` structure -Property|Type |Default Value|Description ---------|-------------------------|-------------|----------------- -color |string | |Color of Corners Dot -gradient|object | |Gradient of Corners Dot -type |string (`'dot' 'square'`)| |Style of Corners Dot +| Property | Type | Default Value | Description | +| -------- | ------------------------- | ------------- | ----------------------- | +| color | string | | Color of Corners Dot | +| gradient | object | | Gradient of Corners Dot | +| type | string (`'dot' 'square'`) | | Style of Corners Dot | Gradient structure @@ -158,11 +166,11 @@ Gradient structure `options.cornersDotOptions.gradient` -Property |Type |Default Value|Description -----------|----------------------------|-------------|--------------------------------------------------------- -type |string (`'linear' 'radial'`)|"linear" |Type of gradient spread -rotation |number |0 |Rotation of gradient in radians (Math.PI === 180 degrees) -colorStops|array of objects | |Gradient colors. Example `[{ offset: 0, color: 'blue' }, { offset: 1, color: 'red' }]` +| Property | Type | Default Value | Description | +| ---------- | ---------------------------- | ------------- | -------------------------------------------------------------------------------------- | +| type | string (`'linear' 'radial'`) | "linear" | Type of gradient spread | +| rotation | number | 0 | Rotation of gradient in radians (Math.PI === 180 degrees) | +| colorStops | array of objects | | Gradient colors. Example `[{ offset: 0, color: 'blue' }, { offset: 1, color: 'red' }]` | Gradient colorStops structure @@ -174,45 +182,52 @@ Gradient colorStops structure `options.cornersDotOptions.gradient.colorStops[]` -Property|Type |Default Value|Description ---------|----------------|-------------|----------------------------------- -offset |number (`0 - 1`)| |Position of color in gradient range -color |string | |Color of stop in gradient range +| Property | Type | Default Value | Description | +| -------- | ---------------- | ------------- | ----------------------------------- | +| offset | number (`0 - 1`) | | Position of color in gradient range | +| color | string | | Color of stop in gradient range | #### QRCodeStyling methods + `QRCodeStyling.append(container) => void` -Param |Type |Description ----------|-----------|----------- -container|DOM element|This container will be used for appending of the QR code +| Param | Type | Description | +| --------- | ----------- | -------------------------------------------------------- | +| container | DOM element | This container will be used for appending of the QR code | `QRCodeStyling.getRawData(extension) => Promise` -Param |Type |Default Value|Description ----------|------------------------------------|-------------|------------ -extension|string (`'png' 'jpeg' 'webp' 'svg'`)|`'png'` |Blob type +| Param | Type | Default Value | Description | +| --------- | ------------------------------------ | ------------- | ----------- | +| extension | string (`'png' 'jpeg' 'webp' 'svg'`) | `'png'` | Blob type | `QRCodeStyling.update(options) => void` -Param |Type |Description --------|------|-------------------------------------- -options|object|The same options as for initialization +| Param | Type | Description | +| ------- | ------ | -------------------------------------- | +| options | object | The same options as for initialization | -`QRCodeStyling.download(downloadOptions) => Promise` +`QRCodeStyling.download(downloadOptions, quality) => Promise` -Param |Type |Description ----------------|------|------------ -downloadOptions|object|Options with extension and name of file (not required) +| Param | Type | Description | +| --------------- | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| downloadOptions | object | Options with extension and name of file (not required) | +| quality | number | A Number between 0 and 1 indicating the image quality to be used when creating images using file formats that support lossy compression (such as image/jpeg or image/webp). A user agent will use its default quality value if this option is not specified, or if the number is outside the allowed range. | `downloadOptions` structure -Property |Type |Default Value|Description ----------|------------------------------------|-------------|----------------------------------------------------- -name |string |`'qr'` |Name of the downloaded file -extension|string (`'png' 'jpeg' 'webp' 'svg'`)|`'png'` |File extension +| Property | Type | Default Value | Description | +| --------- | ------------------------------------ | ------------- | --------------------------- | +| name | string | `'qr'` | Name of the downloaded file | +| extension | string (`'png' 'jpeg' 'webp' 'svg'`) | `'png'` | File extension | + +`QRCodeStyling.toDataUrl(extension, quality) => Promise` +| Param | Type | Default Value | Description | +| --------- | ------------------------------ | ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| extension | string (`'png' 'jpeg' 'webp')` | 'png' | Blob type | +| quality | number | undefined | [A Number between 0 and 1 indicating the image quality to be used when creating images using file formats that support lossy compression (such as image/jpeg or image/webp). A user agent will use its default quality value if this option is not specified, or if the number is outside the allowed range. | ### License [MIT License](https://raw.githubusercontent.com/kozakdenys/qr-code-styling/master/LICENSE). Copyright (c) 2021 Denys Kozak - diff --git a/jest.config.js b/jest.config.js index 196db6ca..864e336c 100644 --- a/jest.config.js +++ b/jest.config.js @@ -125,7 +125,7 @@ module.exports = { // snapshotSerializers: [], // The test environment that will be used for testing - testEnvironment: "jest-environment-jsdom-fifteen", + // testEnvironment: "jest-environment-jsdom-fifteen", // Options that will be passed to the testEnvironment testEnvironmentOptions: { diff --git a/lib/constants/dotTypes.test.d.ts b/lib/constants/dotTypes.test.d.ts new file mode 100644 index 00000000..cb0ff5c3 --- /dev/null +++ b/lib/constants/dotTypes.test.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/lib/constants/errorCorrectionLevels.test.d.ts b/lib/constants/errorCorrectionLevels.test.d.ts new file mode 100644 index 00000000..cb0ff5c3 --- /dev/null +++ b/lib/constants/errorCorrectionLevels.test.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/lib/constants/errorCorrectionPercents.test.d.ts b/lib/constants/errorCorrectionPercents.test.d.ts new file mode 100644 index 00000000..cb0ff5c3 --- /dev/null +++ b/lib/constants/errorCorrectionPercents.test.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/lib/constants/modes.test.d.ts b/lib/constants/modes.test.d.ts new file mode 100644 index 00000000..cb0ff5c3 --- /dev/null +++ b/lib/constants/modes.test.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/lib/constants/qrTypes.test.d.ts b/lib/constants/qrTypes.test.d.ts new file mode 100644 index 00000000..cb0ff5c3 --- /dev/null +++ b/lib/constants/qrTypes.test.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/lib/core/QRCanvas.test.d.ts b/lib/core/QRCanvas.test.d.ts new file mode 100644 index 00000000..cb0ff5c3 --- /dev/null +++ b/lib/core/QRCanvas.test.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/lib/core/QRCodeStyling.d.ts b/lib/core/QRCodeStyling.d.ts index df1af7a5..503adf04 100644 --- a/lib/core/QRCodeStyling.d.ts +++ b/lib/core/QRCodeStyling.d.ts @@ -12,9 +12,17 @@ export default class QRCodeStyling { _svgDrawingPromise?: Promise; constructor(options?: Partial); static _clearContainer(container?: HTMLElement): void; - _getQRStylingElement(extension?: Extension): Promise; + _getQRStylingElement(extension: "svg"): Promise; + _getQRStylingElement(extension: Omit): Promise; update(options?: Partial): void; append(container?: HTMLElement): void; - getRawData(extension?: Extension): Promise; - download(downloadOptions?: Partial | string): Promise; + getRawData(extension?: Extension, quality?: number): Promise; + /** + * + * @param extension file format of the returned image + * @param quality [0-1] with 1 being the highest quality + * @returns + */ + toDataUrl(extension?: Omit, quality?: number): Promise; + download(downloadOptions?: Partial): Promise; } diff --git a/lib/core/QRCodeStyling.test.d.ts b/lib/core/QRCodeStyling.test.d.ts new file mode 100644 index 00000000..cb0ff5c3 --- /dev/null +++ b/lib/core/QRCodeStyling.test.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/lib/core/QROptions.d.ts b/lib/core/QROptions.d.ts index 23e73631..5f443393 100644 --- a/lib/core/QROptions.d.ts +++ b/lib/core/QROptions.d.ts @@ -25,6 +25,7 @@ export interface RequiredOptions extends Options { color: string; gradient?: Gradient; }; + useLegacyDotRotation: boolean; } declare const defaultOptions: RequiredOptions; export default defaultOptions; diff --git a/lib/core/QROptions.test.d.ts b/lib/core/QROptions.test.d.ts new file mode 100644 index 00000000..cb0ff5c3 --- /dev/null +++ b/lib/core/QROptions.test.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/lib/figures/dot/canvas/QRDot.test.d.ts b/lib/figures/dot/canvas/QRDot.test.d.ts new file mode 100644 index 00000000..cb0ff5c3 --- /dev/null +++ b/lib/figures/dot/canvas/QRDot.test.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/lib/index.test.d.ts b/lib/index.test.d.ts new file mode 100644 index 00000000..cb0ff5c3 --- /dev/null +++ b/lib/index.test.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/lib/qr-code-styling.js b/lib/qr-code-styling.js index 5cc42af8..5e8de417 100644 --- a/lib/qr-code-styling.js +++ b/lib/qr-code-styling.js @@ -1,2 +1,2 @@ -!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.QRCodeStyling=e():t.QRCodeStyling=e()}(self,(function(){return(()=>{var t={192:(t,e)=>{var r,n,o=function(){var t=function(t,e){var r=t,n=a[e],o=null,i=0,u=null,v=[],w={},_=function(t,e){o=function(t){for(var e=new Array(t),r=0;r=7&&M(t),null==u&&(u=P(r,n,v)),C(u,e)},m=function(t,e){for(var r=-1;r<=7;r+=1)if(!(t+r<=-1||i<=t+r))for(var n=-1;n<=7;n+=1)e+n<=-1||i<=e+n||(o[t+r][e+n]=0<=r&&r<=6&&(0==n||6==n)||0<=n&&n<=6&&(0==r||6==r)||2<=r&&r<=4&&2<=n&&n<=4)},b=function(){for(var t=8;t>n&1);o[Math.floor(n/3)][n%3+i-8-3]=a}for(n=0;n<18;n+=1)a=!t&&1==(e>>n&1),o[n%3+i-8-3][Math.floor(n/3)]=a},S=function(t,e){for(var r=n<<3|e,a=s.getBCHTypeInfo(r),u=0;u<15;u+=1){var c=!t&&1==(a>>u&1);u<6?o[u][8]=c:u<8?o[u+1][8]=c:o[i-15+u][8]=c}for(u=0;u<15;u+=1)c=!t&&1==(a>>u&1),u<8?o[8][i-u-1]=c:u<9?o[8][15-u-1+1]=c:o[8][15-u-1]=c;o[i-8][8]=!t},C=function(t,e){for(var r=-1,n=i-1,a=7,u=0,c=s.getMaskFunction(e),h=i-1;h>0;h-=2)for(6==h&&(h-=1);;){for(var l=0;l<2;l+=1)if(null==o[n][h-l]){var d=!1;u>>a&1)),c(n,h-l)&&(d=!d),o[n][h-l]=d,-1==(a-=1)&&(u+=1,a=7)}if((n+=r)<0||i<=n){n-=r,r=-r;break}}},P=function(t,e,r){for(var n=h.getRSBlocks(t,e),o=l(),i=0;i8*u)throw"code length overflow. ("+o.getLengthInBits()+">"+8*u+")";for(o.getLengthInBits()+4<=8*u&&o.put(0,4);o.getLengthInBits()%8!=0;)o.putBit(!1);for(;!(o.getLengthInBits()>=8*u||(o.put(236,8),o.getLengthInBits()>=8*u));)o.put(17,8);return function(t,e){for(var r=0,n=0,o=0,i=new Array(e.length),a=new Array(e.length),u=0;u=0?p.getAt(g):0}}var v=0;for(d=0;dn)&&(t=n,e=r)}return e}())},w.createTableTag=function(t,e){t=t||2;var r="";r+='

',r+="";for(var n=0;n";for(var o=0;o';r+=""}return(r+="")+"
"},w.createSvgTag=function(t,e,r,n){var o={};"object"==typeof arguments[0]&&(t=(o=arguments[0]).cellSize,e=o.margin,r=o.alt,n=o.title),t=t||2,e=void 0===e?4*t:e,(r="string"==typeof r?{text:r}:r||{}).text=r.text||null,r.id=r.text?r.id||"qrcode-description":null,(n="string"==typeof n?{text:n}:n||{}).text=n.text||null,n.id=n.text?n.id||"qrcode-title":null;var i,a,s,u,c=w.getModuleCount()*t+2*e,h="";for(u="l"+t+",0 0,"+t+" -"+t+",0 0,-"+t+"z ",h+=''+O(n.text)+"":"",h+=r.text?''+O(r.text)+"":"",h+='',h+='"},w.createDataURL=function(t,e){t=t||2,e=void 0===e?4*t:e;var r=w.getModuleCount()*t+2*e,n=e,o=r-e;return y(r,r,(function(e,r){if(n<=e&&e"};var O=function(t){for(var e="",r=0;r":e+=">";break;case"&":e+="&";break;case'"':e+=""";break;default:e+=n}}return e};return w.createASCII=function(t,e){if((t=t||1)<2)return function(t){t=void 0===t?2:t;var e,r,n,o,i,a=1*w.getModuleCount()+2*t,s=t,u=a-t,c={"██":"█","█ ":"▀"," █":"▄"," ":" "},h={"██":"▀","█ ":"▀"," █":" "," ":" "},l="";for(e=0;e=u?h[i]:c[i];l+="\n"}return a%2&&t>0?l.substring(0,l.length-a-1)+Array(a+1).join("▀"):l.substring(0,l.length-1)}(e);t-=1,e=void 0===e?2*t:e;var r,n,o,i,a=w.getModuleCount()*t+2*e,s=e,u=a-e,c=Array(t+1).join("██"),h=Array(t+1).join(" "),l="",d="";for(r=0;r>>8),e.push(255&a)):e.push(n)}}return e}};var e,r,n,o,i,a={L:1,M:0,Q:3,H:2},s=(e=[[],[6,18],[6,22],[6,26],[6,30],[6,34],[6,22,38],[6,24,42],[6,26,46],[6,28,50],[6,30,54],[6,32,58],[6,34,62],[6,26,46,66],[6,26,48,70],[6,26,50,74],[6,30,54,78],[6,30,56,82],[6,30,58,86],[6,34,62,90],[6,28,50,72,94],[6,26,50,74,98],[6,30,54,78,102],[6,28,54,80,106],[6,32,58,84,110],[6,30,58,86,114],[6,34,62,90,118],[6,26,50,74,98,122],[6,30,54,78,102,126],[6,26,52,78,104,130],[6,30,56,82,108,134],[6,34,60,86,112,138],[6,30,58,86,114,142],[6,34,62,90,118,146],[6,30,54,78,102,126,150],[6,24,50,76,102,128,154],[6,28,54,80,106,132,158],[6,32,58,84,110,136,162],[6,26,54,82,110,138,166],[6,30,58,86,114,142,170]],r=1335,n=7973,i=function(t){for(var e=0;0!=t;)e+=1,t>>>=1;return e},(o={}).getBCHTypeInfo=function(t){for(var e=t<<10;i(e)-i(r)>=0;)e^=r<=0;)e^=n<5&&(r+=3+i-5)}for(n=0;n=256;)e-=255;return t[e]}}}();function c(t,e){if(void 0===t.length)throw t.length+"/"+e;var r=function(){for(var r=0;r>>7-e%8&1)},put:function(t,e){for(var n=0;n>>e-n-1&1))},getLengthInBits:function(){return e},putBit:function(r){var n=Math.floor(e/8);t.length<=n&&t.push(0),r&&(t[n]|=128>>>e%8),e+=1}};return r},d=function(t){var e=t,r={getMode:function(){return 1},getLength:function(t){return e.length},write:function(t){for(var r=e,o=0;o+2>>8&255)+(255&o),t.put(o,13),r+=2}if(r>>8)},writeBytes:function(t,r,n){r=r||0,n=n||t.length;for(var o=0;o0&&(e+=","),e+=t[r];return e+"]"}};return e},w=function(t){var e=t,r=0,n=0,o=0,i={read:function(){for(;o<8;){if(r>=e.length){if(0==o)return-1;throw"unexpected end of file./"+o}var t=e.charAt(r);if(r+=1,"="==t)return o=0,-1;t.match(/^\s$/)||(n=n<<6|a(t.charCodeAt(0)),o+=6)}var i=n>>>o-8&255;return o-=8,i}},a=function(t){if(65<=t&&t<=90)return t-65;if(97<=t&&t<=122)return t-97+26;if(48<=t&&t<=57)return t-48+52;if(43==t)return 62;if(47==t)return 63;throw"c:"+t};return i},y=function(t,e,r){for(var n=function(t,e){var r=t,n=e,o=new Array(t*e),i={setPixel:function(t,e,n){o[e*r+t]=n},write:function(t){t.writeString("GIF87a"),t.writeShort(r),t.writeShort(n),t.writeByte(128),t.writeByte(0),t.writeByte(0),t.writeByte(0),t.writeByte(0),t.writeByte(0),t.writeByte(255),t.writeByte(255),t.writeByte(255),t.writeString(","),t.writeShort(0),t.writeShort(0),t.writeShort(r),t.writeShort(n),t.writeByte(0);var e=a(2);t.writeByte(2);for(var o=0;e.length-o>255;)t.writeByte(255),t.writeBytes(e,o,255),o+=255;t.writeByte(e.length-o),t.writeBytes(e,o,e.length-o),t.writeByte(0),t.writeString(";")}},a=function(t){for(var e=1<>>e!=0)throw"length over";for(;c+e>=8;)u.writeByte(255&(t<>>=8-c,h=0,c=0;h|=t<0&&u.writeByte(h)}});d.write(e,n);var f=0,p=String.fromCharCode(o[f]);for(f+=1;f=6;)i(t>>>e-6),e-=6},o.flush=function(){if(e>0&&(i(t<<6-e),t=0,e=0),r%3!=0)for(var o=3-r%3,a=0;a>6,128|63&n):n<55296||n>=57344?e.push(224|n>>12,128|n>>6&63,128|63&n):(r++,n=65536+((1023&n)<<10|1023&t.charCodeAt(r)),e.push(240|n>>18,128|n>>12&63,128|n>>6&63,128|63&n))}return e}(t)},void 0===(n="function"==typeof(r=function(){return o})?r.apply(e,[]):r)||(t.exports=n)},796:(t,e,r)=>{"use strict";r.d(e,{default:()=>J});var n=function(){return(n=Object.assign||function(t){for(var e,r=1,n=arguments.length;rn||o&&o2||a&&s||u&&c)this._basicSquare({x:e,y:r,size:n,context:o,rotation:0});else{if(2===h){var l=0;return a&&u?l=Math.PI/2:u&&s?l=Math.PI:s&&c&&(l=-Math.PI/2),void this._basicCornerRounded({x:e,y:r,size:n,context:o,rotation:l})}if(1===h)return l=0,u?l=Math.PI/2:s?l=Math.PI:c&&(l=-Math.PI/2),void this._basicSideRounded({x:e,y:r,size:n,context:o,rotation:l})}else this._basicDot({x:e,y:r,size:n,context:o,rotation:0})},t.prototype._drawExtraRounded=function(t){var e=t.x,r=t.y,n=t.size,o=t.context,i=t.getNeighbor,a=i?+i(-1,0):0,s=i?+i(1,0):0,u=i?+i(0,-1):0,c=i?+i(0,1):0,h=a+s+u+c;if(0!==h)if(h>2||a&&s||u&&c)this._basicSquare({x:e,y:r,size:n,context:o,rotation:0});else{if(2===h){var l=0;return a&&u?l=Math.PI/2:u&&s?l=Math.PI:s&&c&&(l=-Math.PI/2),void this._basicCornerExtraRounded({x:e,y:r,size:n,context:o,rotation:l})}if(1===h)return l=0,u?l=Math.PI/2:s?l=Math.PI:c&&(l=-Math.PI/2),void this._basicSideRounded({x:e,y:r,size:n,context:o,rotation:l})}else this._basicDot({x:e,y:r,size:n,context:o,rotation:0})},t.prototype._drawClassy=function(t){var e=t.x,r=t.y,n=t.size,o=t.context,i=t.getNeighbor,a=i?+i(-1,0):0,s=i?+i(1,0):0,u=i?+i(0,-1):0,c=i?+i(0,1):0;0!==a+s+u+c?a||u?s||c?this._basicSquare({x:e,y:r,size:n,context:o,rotation:0}):this._basicCornerRounded({x:e,y:r,size:n,context:o,rotation:Math.PI/2}):this._basicCornerRounded({x:e,y:r,size:n,context:o,rotation:-Math.PI/2}):this._basicCornersRounded({x:e,y:r,size:n,context:o,rotation:Math.PI/2})},t.prototype._drawClassyRounded=function(t){var e=t.x,r=t.y,n=t.size,o=t.context,i=t.getNeighbor,a=i?+i(-1,0):0,s=i?+i(1,0):0,u=i?+i(0,-1):0,c=i?+i(0,1):0;0!==a+s+u+c?a||u?s||c?this._basicSquare({x:e,y:r,size:n,context:o,rotation:0}):this._basicCornerExtraRounded({x:e,y:r,size:n,context:o,rotation:Math.PI/2}):this._basicCornerExtraRounded({x:e,y:r,size:n,context:o,rotation:-Math.PI/2}):this._basicCornersRounded({x:e,y:r,size:n,context:o,rotation:Math.PI/2})},t}(),y="square",_="extra-rounded";var m=function(){return(m=Object.assign||function(t){for(var e,r=1,n=arguments.length;r0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]=(e-o.hideXDots)/2&&t<(e+o.hideXDots)/2&&r>=(e-o.hideYDots)/2&&r<(e+o.hideYDots)/2||(null===(n=P[t])||void 0===n?void 0:n[r])||(null===(i=P[t-e+7])||void 0===i?void 0:i[r])||(null===(a=P[t])||void 0===a?void 0:a[r-e+7])||(null===(s=O[t])||void 0===s?void 0:s[r])||(null===(u=O[t-e+7])||void 0===u?void 0:u[r])||(null===(c=O[t])||void 0===c?void 0:c[r-e+7]))})),this.drawCorners(),this._options.image&&this.drawImage({width:o.width,height:o.height,count:e,dotSize:n}),[2]}}))},new((n=void 0)||(n=Promise))((function(t,i){function a(t){try{u(o.next(t))}catch(t){i(t)}}function s(t){try{u(o.throw(t))}catch(t){i(t)}}function u(e){var r;e.done?t(e.value):(r=e.value,r instanceof n?r:new n((function(t){t(r)}))).then(a,s)}u((o=o.apply(e,r||[])).next())}));var e,r,n,o},t.prototype.drawBackground=function(){var t=this.context,e=this._options;if(t){if(e.backgroundOptions.gradient){var r=e.backgroundOptions.gradient,n=this._createGradient({context:t,options:r,additionalRotation:0,x:0,y:0,size:this._canvas.width>this._canvas.height?this._canvas.width:this._canvas.height});r.colorStops.forEach((function(t){var e=t.offset,r=t.color;n.addColorStop(e,r)})),t.fillStyle=n}else e.backgroundOptions.color&&(t.fillStyle=e.backgroundOptions.color);t.fillRect(0,0,this._canvas.width,this._canvas.height)}},t.prototype.drawDots=function(t){var e=this;if(!this._qr)throw"QR code is not defined";var r=this.context;if(!r)throw"QR code is not defined";var n=this._options,o=this._qr.getModuleCount();if(o>n.width||o>n.height)throw"The canvas is too small.";var i=Math.min(n.width,n.height)-2*n.margin,a=Math.floor(i/o),s=Math.floor((n.width-o*a)/2),u=Math.floor((n.height-o*a)/2),c=new w({context:r,type:n.dotsOptions.type});r.beginPath();for(var h=function(r){for(var n=function(n){return t&&!t(r,n)?"continue":l._qr.isDark(r,n)?void c.draw(u+n*a,s+r*a,a,(function(i,a){return!(r+i<0||n+a<0||r+i>=o||n+a>=o)&&!(t&&!t(r+i,n+a))&&!!e._qr&&e._qr.isDark(r+i,n+a)})):"continue"},i=0;i=0&&c<=.25*Math.PI||c>1.75*Math.PI&&c<=2*Math.PI?(h-=s/2,l-=s/2*Math.tan(u),d+=s/2,f+=s/2*Math.tan(u)):c>.25*Math.PI&&c<=.75*Math.PI?(l-=s/2,h-=s/2/Math.tan(u),f+=s/2,d+=s/2/Math.tan(u)):c>.75*Math.PI&&c<=1.25*Math.PI?(h+=s/2,l+=s/2*Math.tan(u),d-=s/2,f-=s/2*Math.tan(u)):c>1.25*Math.PI&&c<=1.75*Math.PI&&(l+=s/2,h+=s/2/Math.tan(u),f-=s/2,d-=s/2/Math.tan(u)),e=r.createLinearGradient(Math.round(h),Math.round(l),Math.round(d),Math.round(f))}return e},t}();var z=function(){return(z=Object.assign||function(t){for(var e,r=1,n=arguments.length;r2||i&&a||s&&u)this._basicSquare({x:e,y:r,size:n,rotation:0});else{if(2===c){var h=0;return i&&s?h=Math.PI/2:s&&a?h=Math.PI:a&&u&&(h=-Math.PI/2),void this._basicCornerRounded({x:e,y:r,size:n,rotation:h})}if(1===c)return h=0,s?h=Math.PI/2:a?h=Math.PI:u&&(h=-Math.PI/2),void this._basicSideRounded({x:e,y:r,size:n,rotation:h})}else this._basicDot({x:e,y:r,size:n,rotation:0})},t.prototype._drawExtraRounded=function(t){var e=t.x,r=t.y,n=t.size,o=t.getNeighbor,i=o?+o(-1,0):0,a=o?+o(1,0):0,s=o?+o(0,-1):0,u=o?+o(0,1):0,c=i+a+s+u;if(0!==c)if(c>2||i&&a||s&&u)this._basicSquare({x:e,y:r,size:n,rotation:0});else{if(2===c){var h=0;return i&&s?h=Math.PI/2:s&&a?h=Math.PI:a&&u&&(h=-Math.PI/2),void this._basicCornerExtraRounded({x:e,y:r,size:n,rotation:h})}if(1===c)return h=0,s?h=Math.PI/2:a?h=Math.PI:u&&(h=-Math.PI/2),void this._basicSideRounded({x:e,y:r,size:n,rotation:h})}else this._basicDot({x:e,y:r,size:n,rotation:0})},t.prototype._drawClassy=function(t){var e=t.x,r=t.y,n=t.size,o=t.getNeighbor,i=o?+o(-1,0):0,a=o?+o(1,0):0,s=o?+o(0,-1):0,u=o?+o(0,1):0;0!==i+a+s+u?i||s?a||u?this._basicSquare({x:e,y:r,size:n,rotation:0}):this._basicCornerRounded({x:e,y:r,size:n,rotation:Math.PI/2}):this._basicCornerRounded({x:e,y:r,size:n,rotation:-Math.PI/2}):this._basicCornersRounded({x:e,y:r,size:n,rotation:Math.PI/2})},t.prototype._drawClassyRounded=function(t){var e=t.x,r=t.y,n=t.size,o=t.getNeighbor,i=o?+o(-1,0):0,a=o?+o(1,0):0,s=o?+o(0,-1):0,u=o?+o(0,1):0;0!==i+a+s+u?i||s?a||u?this._basicSquare({x:e,y:r,size:n,rotation:0}):this._basicCornerExtraRounded({x:e,y:r,size:n,rotation:Math.PI/2}):this._basicCornerExtraRounded({x:e,y:r,size:n,rotation:-Math.PI/2}):this._basicCornersRounded({x:e,y:r,size:n,rotation:Math.PI/2})},t}();var I=function(){return(I=Object.assign||function(t){for(var e,r=1,n=arguments.length;r0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]=(e-o.hideXDots)/2&&t<(e+o.hideXDots)/2&&r>=(e-o.hideYDots)/2&&r<(e+o.hideYDots)/2||(null===(n=N[t])||void 0===n?void 0:n[r])||(null===(i=N[t-e+7])||void 0===i?void 0:i[r])||(null===(a=N[t])||void 0===a?void 0:a[r-e+7])||(null===(s=L[t])||void 0===s?void 0:s[r])||(null===(u=L[t-e+7])||void 0===u?void 0:u[r])||(null===(c=L[t])||void 0===c?void 0:c[r-e+7]))})),this.drawCorners(),this._options.image?[4,this.drawImage({width:o.width,height:o.height,count:e,dotSize:n})]:[3,4];case 3:f.sent(),f.label=4;case 4:return[2]}}))}))},t.prototype.drawBackground=function(){var t,e,r,n=this._element,o=this._options;if(n){var i=null===(t=o.backgroundOptions)||void 0===t?void 0:t.gradient,a=null===(e=o.backgroundOptions)||void 0===e?void 0:e.color;i?this._createColor({options:i,color:a,additionalRotation:0,x:0,y:0,height:o.height,width:o.width,name:"background-color"}):(null===(r=o.backgroundOptions)||void 0===r?void 0:r.color)&&this._createStyle({color:a,name:"background-color"})}},t.prototype.drawDots=function(t){var e,r,n,o=this;if(!this._qr)throw"QR code is not defined";var i=this._options,a=this._qr.getModuleCount();if(a>i.width||a>i.height)throw"The canvas is too small.";var s=Math.min(i.width,i.height)-2*i.margin,u=Math.floor(s/a),c=Math.floor((i.width-a*u)/2),h=Math.floor((i.height-a*u)/2),l=new A({svg:this._element,type:i.dotsOptions.type});(null===(e=i.dotsOptions)||void 0===e?void 0:e.gradient)?(this._dotsClipPath=document.createElementNS("http://www.w3.org/2000/svg","clipPath"),this._dotsClipPath.setAttribute("id","clip-path-dot-color"),this._defs.appendChild(this._dotsClipPath),this._createColor({options:null===(r=i.dotsOptions)||void 0===r?void 0:r.gradient,color:i.dotsOptions.color,additionalRotation:0,x:c,y:h,height:a*u,width:a*u,name:"dot-color"})):i.dotsOptions.color&&(this._dots=document.createElementNS("http://www.w3.org/2000/svg","g"),this._dots.setAttribute("class","dot-color"),this._element.appendChild(this._dots),this._createStyle({color:i.dotsOptions.color,name:"dot-color"}));for(var d=function(e){for(var r=function(r){return t&&!t(e,r)?"continue":(null===(n=f._qr)||void 0===n?void 0:n.isDark(e,r))?(l.draw(h+r*u,c+e*u,u,(function(n,i){return!(e+n<0||r+i<0||e+n>=a||r+i>=a)&&!(t&&!t(e+n,r+i))&&!!o._qr&&o._qr.isDark(e+n,r+i)})),void(l._element&&f._dotsClipPath?f._dotsClipPath.appendChild(l._element):l._element&&f._dots&&f._dots.appendChild(l._element))):"continue"},i=0;ia?s:a,h=document.createElementNS("http://www.w3.org/2000/svg","rect");if(h.setAttribute("x",String(o)),h.setAttribute("y",String(i)),h.setAttribute("height",String(a)),h.setAttribute("width",String(s)),h.setAttribute("clip-path","url('#clip-path-"+u+"')"),e){var l;if(e.type===C)(l=document.createElementNS("http://www.w3.org/2000/svg","radialGradient")).setAttribute("id",u),l.setAttribute("gradientUnits","userSpaceOnUse"),l.setAttribute("fx",String(o+s/2)),l.setAttribute("fy",String(i+a/2)),l.setAttribute("cx",String(o+s/2)),l.setAttribute("cy",String(i+a/2)),l.setAttribute("r",String(c/2));else{var d=((e.rotation||0)+n)%(2*Math.PI),f=(d+2*Math.PI)%(2*Math.PI),p=o+s/2,g=i+a/2,v=o+s/2,w=i+a/2;f>=0&&f<=.25*Math.PI||f>1.75*Math.PI&&f<=2*Math.PI?(p-=s/2,g-=a/2*Math.tan(d),v+=s/2,w+=a/2*Math.tan(d)):f>.25*Math.PI&&f<=.75*Math.PI?(g-=a/2,p-=s/2/Math.tan(d),w+=a/2,v+=s/2/Math.tan(d)):f>.75*Math.PI&&f<=1.25*Math.PI?(p+=s/2,g+=a/2*Math.tan(d),v-=s/2,w-=a/2*Math.tan(d)):f>1.25*Math.PI&&f<=1.75*Math.PI&&(g+=a/2,p+=s/2/Math.tan(d),w-=a/2,v-=s/2/Math.tan(d)),(l=document.createElementNS("http://www.w3.org/2000/svg","linearGradient")).setAttribute("id",u),l.setAttribute("gradientUnits","userSpaceOnUse"),l.setAttribute("x1",String(Math.round(p))),l.setAttribute("y1",String(Math.round(g))),l.setAttribute("x2",String(Math.round(v))),l.setAttribute("y2",String(Math.round(w)))}e.colorStops.forEach((function(t){var e=t.offset,r=t.color,n=document.createElementNS("http://www.w3.org/2000/svg","stop");n.setAttribute("offset",100*e+"%"),n.setAttribute("stop-color",r),l.appendChild(n)})),h.setAttribute("fill","url('#"+u+"')"),this._defs.appendChild(l)}else r&&h.setAttribute("fill",r);this._element.appendChild(h)},t.prototype._createStyle=function(t){var e=t.color,r=t.name;if(void 0!==e)if("#"!==e[0]||7!==e.length&&9!==e.length)console.error("unsupported color format. At the moment only Hex color codes are supported.");else{var n=1;9===e.length&&(n=parseInt(e.substring(7,9),16)/255),this._style.innerHTML+="."+r+"{ fill: "+e.substring(0,7)+"; fill-opacity: "+n+" }"}},t}(),F="canvas";for(var j={},Q=0;Q<=40;Q++)j[Q]=Q;const H={type:F,width:512,height:512,data:"",margin:0,qrOptions:{typeNumber:j[0],mode:void 0,errorCorrectionLevel:"Q"},imageOptions:{hideBackgroundDots:!0,imageSize:.4,crossOrigin:"anonymous",margin:0},dotsOptions:{type:"square",color:"#000"},backgroundOptions:{color:"#FFFFFF00"}};var G=function(){return(G=Object.assign||function(t){for(var e,r=1,n=arguments.length;rMath.min(e.width,e.height)&&(e.margin=Math.min(e.width,e.height)),e.dotsOptions=G({},e.dotsOptions),e.dotsOptions.gradient&&(e.dotsOptions.gradient=U(e.dotsOptions.gradient)),e.cornersSquareOptions&&(e.cornersSquareOptions=G({},e.cornersSquareOptions),e.cornersSquareOptions.gradient&&(e.cornersSquareOptions.gradient=U(e.cornersSquareOptions.gradient))),e.cornersDotOptions&&(e.cornersDotOptions=G({},e.cornersDotOptions),e.cornersDotOptions.gradient&&(e.cornersDotOptions.gradient=U(e.cornersDotOptions.gradient))),e.backgroundOptions&&(e.backgroundOptions=G({},e.backgroundOptions),e.backgroundOptions.gradient&&(e.backgroundOptions.gradient=U(e.backgroundOptions.gradient))),e}var Y=r(192),$=r.n(Y),W=function(t,e,r,n){return new(r||(r=Promise))((function(o,i){function a(t){try{u(n.next(t))}catch(t){i(t)}}function s(t){try{u(n.throw(t))}catch(t){i(t)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof r?e:new r((function(t){t(e)}))).then(a,s)}u((n=n.apply(t,e||[])).next())}))},Z=function(t,e){var r,n,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(i){return function(s){return function(i){if(r)throw new TypeError("Generator is already executing.");for(;a;)try{if(r=1,n&&(o=2&i[0]?n.return:i[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,i[1])).done)return o;switch(n=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,n=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!((o=(o=a.trys).length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]\r\n'+n],{type:"image/svg+xml"})]):[2,new Promise((function(r){return e.getCanvas().toBlob(r,"image/"+t,1)}))]}}))}))},t.prototype.download=function(t){return W(this,void 0,void 0,(function(){var e,r,n,o,i;return Z(this,(function(a){switch(a.label){case 0:if(!this._qr)throw"QR code is empty";return e="png",r="qr","string"==typeof t?(e=t,console.warn("Extension is deprecated as argument for 'download' method, please pass object { name: '...', extension: '...' } as argument")):"object"==typeof t&&null!==t&&(t.name&&(r=t.name),t.extension&&(e=t.extension)),[4,this._getQRStylingElement(e)];case 1:return n=a.sent(),"svg"===e.toLowerCase()?(o=new XMLSerializer,i='\r\n'+(i=o.serializeToString(n.getElement())),s("data:image/svg+xml;charset=utf-8,"+encodeURIComponent(i),r+".svg")):s(n.getCanvas().toDataURL("image/"+e),r+"."+e),[2]}}))}))},t}()}},e={};function r(n){if(e[n])return e[n].exports;var o=e[n]={exports:{}};return t[n](o,o.exports,r),o.exports}return r.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return r.d(e,{a:e}),e},r.d=(t,e)=>{for(var n in e)r.o(e,n)&&!r.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},r.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r(796)})().default})); +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.QRCodeStyling=e():t.QRCodeStyling=e()}(self,(()=>(()=>{var t={873:(t,e)=>{var i,r,o=function(){var t=function(t,e){var i=t,r=s[e],o=null,n=0,h=null,w=[],_={},m=function(t,e){o=function(t){for(var e=new Array(t),i=0;i=7&&M(t),null==h&&(h=C(i,r,w)),O(h,e)},y=function(t,e){for(var i=-1;i<=7;i+=1)if(!(t+i<=-1||n<=t+i))for(var r=-1;r<=7;r+=1)e+r<=-1||n<=e+r||(o[t+i][e+r]=0<=i&&i<=6&&(0==r||6==r)||0<=r&&r<=6&&(0==i||6==i)||2<=i&&i<=4&&2<=r&&r<=4)},b=function(){for(var t=8;t>r&1);o[Math.floor(r/3)][r%3+n-8-3]=s}for(r=0;r<18;r+=1)s=!t&&1==(e>>r&1),o[r%3+n-8-3][Math.floor(r/3)]=s},S=function(t,e){for(var i=r<<3|e,s=a.getBCHTypeInfo(i),h=0;h<15;h+=1){var c=!t&&1==(s>>h&1);h<6?o[h][8]=c:h<8?o[h+1][8]=c:o[n-15+h][8]=c}for(h=0;h<15;h+=1)c=!t&&1==(s>>h&1),h<8?o[8][n-h-1]=c:h<9?o[8][15-h-1+1]=c:o[8][15-h-1]=c;o[n-8][8]=!t},O=function(t,e){for(var i=-1,r=n-1,s=7,h=0,c=a.getMaskFunction(e),d=n-1;d>0;d-=2)for(6==d&&(d-=1);;){for(var l=0;l<2;l+=1)if(null==o[r][d-l]){var u=!1;h>>s&1)),c(r,d-l)&&(u=!u),o[r][d-l]=u,-1==(s-=1)&&(h+=1,s=7)}if((r+=i)<0||n<=r){r-=i,i=-i;break}}},C=function(t,e,i){for(var r=d.getRSBlocks(t,e),o=l(),n=0;n8*h)throw"code length overflow. ("+o.getLengthInBits()+">"+8*h+")";for(o.getLengthInBits()+4<=8*h&&o.put(0,4);o.getLengthInBits()%8!=0;)o.putBit(!1);for(;!(o.getLengthInBits()>=8*h||(o.put(236,8),o.getLengthInBits()>=8*h));)o.put(17,8);return function(t,e){for(var i=0,r=0,o=0,n=new Array(e.length),s=new Array(e.length),h=0;h=0?f.getAt(p):0}}var w=0;for(u=0;ur)&&(t=r,e=i)}return e}())},_.createTableTag=function(t,e){t=t||2;var i="";i+='',i+="";for(var r=0;r<_.getModuleCount();r+=1){i+="";for(var o=0;o<_.getModuleCount();o+=1)i+='"}return(i+="")+"
';i+="
"},_.createSvgTag=function(t,e,i,r){var o={};"object"==typeof arguments[0]&&(t=(o=arguments[0]).cellSize,e=o.margin,i=o.alt,r=o.title),t=t||2,e=void 0===e?4*t:e,(i="string"==typeof i?{text:i}:i||{}).text=i.text||null,i.id=i.text?i.id||"qrcode-description":null,(r="string"==typeof r?{text:r}:r||{}).text=r.text||null,r.id=r.text?r.id||"qrcode-title":null;var n,s,a,h,c=_.getModuleCount()*t+2*e,d="";for(h="l"+t+",0 0,"+t+" -"+t+",0 0,-"+t+"z ",d+=''+D(r.text)+"":"",d+=i.text?''+D(i.text)+"":"",d+='',d+='"},_.createDataURL=function(t,e){t=t||2,e=void 0===e?4*t:e;var i=_.getModuleCount()*t+2*e,r=e,o=i-e;return v(i,i,(function(e,i){if(r<=e&&e"};var D=function(t){for(var e="",i=0;i":e+=">";break;case"&":e+="&";break;case'"':e+=""";break;default:e+=r}}return e};return _.createASCII=function(t,e){if((t=t||1)<2)return function(t){t=void 0===t?2:t;var e,i,r,o,n,s=1*_.getModuleCount()+2*t,a=t,h=s-t,c={"██":"█","█ ":"▀"," █":"▄"," ":" "},d={"██":"▀","█ ":"▀"," █":" "," ":" "},l="";for(e=0;e=h?d[n]:c[n];l+="\n"}return s%2&&t>0?l.substring(0,l.length-s-1)+Array(s+1).join("▀"):l.substring(0,l.length-1)}(e);t-=1,e=void 0===e?2*t:e;var i,r,o,n,s=_.getModuleCount()*t+2*e,a=e,h=s-e,c=Array(t+1).join("██"),d=Array(t+1).join(" "),l="",u="";for(i=0;i>>8),e.push(255&s)):e.push(r)}}return e}};var e,i,r,o,n,s={L:1,M:0,Q:3,H:2},a=(e=[[],[6,18],[6,22],[6,26],[6,30],[6,34],[6,22,38],[6,24,42],[6,26,46],[6,28,50],[6,30,54],[6,32,58],[6,34,62],[6,26,46,66],[6,26,48,70],[6,26,50,74],[6,30,54,78],[6,30,56,82],[6,30,58,86],[6,34,62,90],[6,28,50,72,94],[6,26,50,74,98],[6,30,54,78,102],[6,28,54,80,106],[6,32,58,84,110],[6,30,58,86,114],[6,34,62,90,118],[6,26,50,74,98,122],[6,30,54,78,102,126],[6,26,52,78,104,130],[6,30,56,82,108,134],[6,34,60,86,112,138],[6,30,58,86,114,142],[6,34,62,90,118,146],[6,30,54,78,102,126,150],[6,24,50,76,102,128,154],[6,28,54,80,106,132,158],[6,32,58,84,110,136,162],[6,26,54,82,110,138,166],[6,30,58,86,114,142,170]],i=1335,r=7973,n=function(t){for(var e=0;0!=t;)e+=1,t>>>=1;return e},(o={}).getBCHTypeInfo=function(t){for(var e=t<<10;n(e)-n(i)>=0;)e^=i<=0;)e^=r<5&&(i+=3+n-5)}for(r=0;r=256;)e-=255;return t[e]}}}();function c(t,e){if(void 0===t.length)throw t.length+"/"+e;var i=function(){for(var i=0;i>>7-e%8&1)},put:function(t,e){for(var r=0;r>>e-r-1&1))},getLengthInBits:function(){return e},putBit:function(i){var r=Math.floor(e/8);t.length<=r&&t.push(0),i&&(t[r]|=128>>>e%8),e+=1}};return i},u=function(t){var e=t,i={getMode:function(){return 1},getLength:function(t){return e.length},write:function(t){for(var i=e,o=0;o+2>>8&255)+(255&o),t.put(o,13),i+=2}if(i>>8)},writeBytes:function(t,i,r){i=i||0,r=r||t.length;for(var o=0;o0&&(e+=","),e+=t[i];return e+"]"}};return e},_=function(t){var e=t,i=0,r=0,o=0,n={read:function(){for(;o<8;){if(i>=e.length){if(0==o)return-1;throw"unexpected end of file./"+o}var t=e.charAt(i);if(i+=1,"="==t)return o=0,-1;t.match(/^\s$/)||(r=r<<6|s(t.charCodeAt(0)),o+=6)}var n=r>>>o-8&255;return o-=8,n}},s=function(t){if(65<=t&&t<=90)return t-65;if(97<=t&&t<=122)return t-97+26;if(48<=t&&t<=57)return t-48+52;if(43==t)return 62;if(47==t)return 63;throw"c:"+t};return n},v=function(t,e,i){for(var r=function(t,e){var i=t,r=e,o=new Array(t*e),n={setPixel:function(t,e,r){o[e*i+t]=r},write:function(t){t.writeString("GIF87a"),t.writeShort(i),t.writeShort(r),t.writeByte(128),t.writeByte(0),t.writeByte(0),t.writeByte(0),t.writeByte(0),t.writeByte(0),t.writeByte(255),t.writeByte(255),t.writeByte(255),t.writeString(","),t.writeShort(0),t.writeShort(0),t.writeShort(i),t.writeShort(r),t.writeByte(0);var e=s(2);t.writeByte(2);for(var o=0;e.length-o>255;)t.writeByte(255),t.writeBytes(e,o,255),o+=255;t.writeByte(e.length-o),t.writeBytes(e,o,e.length-o),t.writeByte(0),t.writeString(";")}},s=function(t){for(var e=1<>>e!=0)throw"length over";for(;c+e>=8;)h.writeByte(255&(t<>>=8-c,d=0,c=0;d|=t<0&&h.writeByte(d)}});u.write(e,r);var g=0,f=String.fromCharCode(o[g]);for(g+=1;g=6;)n(t>>>e-6),e-=6},o.flush=function(){if(e>0&&(n(t<<6-e),t=0,e=0),i%3!=0)for(var o=3-i%3,s=0;s>6,128|63&r):r<55296||r>=57344?e.push(224|r>>12,128|r>>6&63,128|63&r):(i++,r=65536+((1023&r)<<10|1023&t.charCodeAt(i)),e.push(240|r>>18,128|r>>12&63,128|r>>6&63,128|63&r))}return e}(t)},void 0===(r="function"==typeof(i=function(){return o})?i.apply(e,[]):i)||(t.exports=r)}},e={};function i(r){var o=e[r];if(void 0!==o)return o.exports;var n=e[r]={exports:{}};return t[r](n,n.exports,i),n.exports}i.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return i.d(e,{a:e}),e},i.d=(t,e)=>{for(var r in e)i.o(e,r)&&!i.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:e[r]})},i.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var r={};return(()=>{"use strict";i.d(r,{default:()=>B});const t=t=>!!t&&"object"==typeof t&&!Array.isArray(t);function e(i,...r){if(!r.length)return i;const o=r.shift();return void 0!==o&&t(i)&&t(o)?(i=Object.assign({},i),Object.keys(o).forEach((r=>{const n=i[r],s=o[r];Array.isArray(n)&&Array.isArray(s)?i[r]=s:t(n)&&t(s)?i[r]=e(Object.assign({},n),s):i[r]=s})),e(i,...r)):i}function o(t,e){const i=document.createElement("a");i.download=e,i.href=t,document.body.appendChild(i),i.click(),document.body.removeChild(i)}function n({originalHeight:t,originalWidth:e,maxHiddenDots:i,maxHiddenAxisDots:r,dotSize:o}){const n={x:0,y:0},s={x:0,y:0};if(t<=0||e<=0||i<=0||o<=0)return{height:0,width:0,hideYDots:0,hideXDots:0};const a=t/e;return n.x=Math.floor(Math.sqrt(i/a)),n.x<=0&&(n.x=1),r&&ri||r&&r{i.arc(0,0,e/2,0,2*Math.PI)}}))}_basicSquare(t){const{size:e,context:i}=t;this._rotateFigure(Object.assign(Object.assign({},t),{draw:()=>{i.rect(-e/2,-e/2,e,e)}}))}_basicSideRounded(t){const{size:e,context:i}=t;this._rotateFigure(Object.assign(Object.assign({},t),{draw:()=>{i.arc(0,0,e/2,-Math.PI/2,Math.PI/2),i.lineTo(-e/2,e/2),i.lineTo(-e/2,-e/2),i.lineTo(0,-e/2)}}))}_basicCornerRounded(t){const{size:e,context:i}=t;this._rotateFigure(Object.assign(Object.assign({},t),{draw:()=>{i.arc(0,0,e/2,-Math.PI/2,0),i.lineTo(e/2,e/2),i.lineTo(-e/2,e/2),i.lineTo(-e/2,-e/2),i.lineTo(0,-e/2)}}))}_basicCornerExtraRounded(t){const{size:e,context:i}=t;this._rotateFigure(Object.assign(Object.assign({},t),{draw:()=>{i.arc(-e/2,e/2,e,-Math.PI/2,0),i.lineTo(-e/2,e/2),i.lineTo(-e/2,-e/2)}}))}_basicCornersRounded(t){const{size:e,context:i}=t;this._rotateFigure(Object.assign(Object.assign({},t),{draw:()=>{i.arc(0,0,e/2,-Math.PI/2,0),i.lineTo(e/2,e/2),i.lineTo(0,e/2),i.arc(0,0,e/2,Math.PI/2,Math.PI),i.lineTo(-e/2,-e/2),i.lineTo(0,-e/2)}}))}_basicCornersExtraRounded(t){const{size:e,context:i}=t;this._rotateFigure(Object.assign(Object.assign({},t),{draw:()=>{i.arc(-e/2,e/2,e,-Math.PI/2,0),i.arc(e/2,-e/2,e,Math.PI/2,Math.PI)}}))}_drawDot({x:t,y:e,size:i,context:r}){this._basicDot({x:t,y:e,size:i,context:r,rotation:0})}_drawSquare({x:t,y:e,size:i,context:r}){this._basicSquare({x:t,y:e,size:i,context:r,rotation:0})}_drawRounded({x:t,y:e,size:i,context:r,getNeighbor:o}){const n=o?+o(-1,0):0,s=o?+o(1,0):0,a=o?+o(0,-1):0,h=o?+o(0,1):0,c=n+s+a+h;if(0!==c)if(c>2||n&&s||a&&h)this._basicSquare({x:t,y:e,size:i,context:r,rotation:0});else{if(2===c){let o=0;return n&&a?o=Math.PI/2:a&&s?o=Math.PI:s&&h&&(o=-Math.PI/2),void this._basicCornerRounded({x:t,y:e,size:i,context:r,rotation:o})}if(1===c){let o=0;return a?o=Math.PI/2:s?o=Math.PI:h&&(o=-Math.PI/2),void this._basicSideRounded({x:t,y:e,size:i,context:r,rotation:o})}}else this._basicDot({x:t,y:e,size:i,context:r,rotation:0})}_drawExtraRounded({x:t,y:e,size:i,context:r,getNeighbor:o}){const n=o?+o(-1,0):0,s=o?+o(1,0):0,a=o?+o(0,-1):0,h=o?+o(0,1):0,c=n+s+a+h;if(0!==c)if(c>2||n&&s||a&&h)this._basicSquare({x:t,y:e,size:i,context:r,rotation:0});else{if(2===c){let o=0;return n&&a?o=Math.PI/2:a&&s?o=Math.PI:s&&h&&(o=-Math.PI/2),void this._basicCornerExtraRounded({x:t,y:e,size:i,context:r,rotation:o})}if(1===c){let o=0;return a?o=Math.PI/2:s?o=Math.PI:h&&(o=-Math.PI/2),void this._basicSideRounded({x:t,y:e,size:i,context:r,rotation:o})}}else this._basicDot({x:t,y:e,size:i,context:r,rotation:0})}_drawClassy({x:t,y:e,size:i,context:r,getNeighbor:o}){const n=o?+o(-1,0):0,s=o?+o(1,0):0,a=o?+o(0,-1):0,h=o?+o(0,1):0;0!==n+s+a+h?n||a?s||h?this._basicSquare({x:t,y:e,size:i,context:r,rotation:0}):this._basicCornerRounded({x:t,y:e,size:i,context:r,rotation:Math.PI/2}):this._basicCornerRounded({x:t,y:e,size:i,context:r,rotation:-Math.PI/2}):this._basicCornersRounded({x:t,y:e,size:i,context:r,rotation:Math.PI/2})}_drawClassyRounded({x:t,y:e,size:i,context:r,getNeighbor:o}){const n=o?+o(-1,0):0,s=o?+o(1,0):0,a=o?+o(0,-1):0,h=o?+o(0,1):0;0!==n+s+a+h?n||a?s||h?this._basicSquare({x:t,y:e,size:i,context:r,rotation:0}):this._basicCornerExtraRounded({x:t,y:e,size:i,context:r,rotation:Math.PI/2}):this._basicCornerExtraRounded({x:t,y:e,size:i,context:r,rotation:-Math.PI/2}):this._basicCornersRounded({x:t,y:e,size:i,context:r,rotation:Math.PI/2})}}const g="square",f="extra-rounded";class p{constructor({context:t,type:e}){this._context=t,this._type=e}draw(t,e,i,r){const o=this._context;let n;switch(this._type){case g:n=this._drawSquare;break;case f:n=this._drawExtraRounded;break;default:n=this._drawDot}n.call(this,{x:t,y:e,size:i,context:o,rotation:r})}_rotateFigure({x:t,y:e,size:i,context:r,rotation:o=0,draw:n}){const s=t+i/2,a=e+i/2;r.translate(s,a),o&&r.rotate(o),n(),r.closePath(),o&&r.rotate(-o),r.translate(-s,-a)}_basicDot(t){const{size:e,context:i}=t,r=e/7;this._rotateFigure(Object.assign(Object.assign({},t),{draw:()=>{i.arc(0,0,e/2,0,2*Math.PI),i.arc(0,0,e/2-r,0,2*Math.PI)}}))}_basicSquare(t){const{size:e,context:i}=t,r=e/7;this._rotateFigure(Object.assign(Object.assign({},t),{draw:()=>{i.rect(-e/2,-e/2,e,e),i.rect(-e/2+r,-e/2+r,e-2*r,e-2*r)}}))}_basicExtraRounded(t){const{size:e,context:i}=t,r=e/7;this._rotateFigure(Object.assign(Object.assign({},t),{draw:()=>{i.arc(-r,-r,2.5*r,Math.PI,-Math.PI/2),i.lineTo(r,-3.5*r),i.arc(r,-r,2.5*r,-Math.PI/2,0),i.lineTo(3.5*r,-r),i.arc(r,r,2.5*r,0,Math.PI/2),i.lineTo(-r,3.5*r),i.arc(-r,r,2.5*r,Math.PI/2,Math.PI),i.lineTo(-3.5*r,-r),i.arc(-r,-r,1.5*r,Math.PI,-Math.PI/2),i.lineTo(r,-2.5*r),i.arc(r,-r,1.5*r,-Math.PI/2,0),i.lineTo(2.5*r,-r),i.arc(r,r,1.5*r,0,Math.PI/2),i.lineTo(-r,2.5*r),i.arc(-r,r,1.5*r,Math.PI/2,Math.PI),i.lineTo(-2.5*r,-r)}}))}_drawDot({x:t,y:e,size:i,context:r,rotation:o}){this._basicDot({x:t,y:e,size:i,context:r,rotation:o})}_drawSquare({x:t,y:e,size:i,context:r,rotation:o}){this._basicSquare({x:t,y:e,size:i,context:r,rotation:o})}_drawExtraRounded({x:t,y:e,size:i,context:r,rotation:o}){this._basicExtraRounded({x:t,y:e,size:i,context:r,rotation:o})}}const w="square";class _{constructor({context:t,type:e}){this._context=t,this._type=e}draw(t,e,i,r){const o=this._context;let n;n=this._type===w?this._drawSquare:this._drawDot,n.call(this,{x:t,y:e,size:i,context:o,rotation:r})}_rotateFigure({x:t,y:e,size:i,context:r,rotation:o=0,draw:n}){const s=t+i/2,a=e+i/2;r.translate(s,a),o&&r.rotate(o),n(),r.closePath(),o&&r.rotate(-o),r.translate(-s,-a)}_basicDot(t){const{size:e,context:i}=t;this._rotateFigure(Object.assign(Object.assign({},t),{draw:()=>{i.arc(0,0,e/2,0,2*Math.PI)}}))}_basicSquare(t){const{size:e,context:i}=t;this._rotateFigure(Object.assign(Object.assign({},t),{draw:()=>{i.rect(-e/2,-e/2,e,e)}}))}_drawDot({x:t,y:e,size:i,context:r,rotation:o}){this._basicDot({x:t,y:e,size:i,context:r,rotation:o})}_drawSquare({x:t,y:e,size:i,context:r,rotation:o}){this._basicSquare({x:t,y:e,size:i,context:r,rotation:o})}}const v="radial",m=[[1,1,1,1,1,1,1],[1,0,0,0,0,0,1],[1,0,0,0,0,0,1],[1,0,0,0,0,0,1],[1,0,0,0,0,0,1],[1,0,0,0,0,0,1],[1,1,1,1,1,1,1]],y=[[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[0,0,1,1,1,0,0],[0,0,1,1,1,0,0],[0,0,1,1,1,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0]];class b{constructor(t){this._canvas=document.createElement("canvas"),this._canvas.width=t.width,this._canvas.height=t.height,this._options=t}get context(){return this._canvas.getContext("2d")}get width(){return this._canvas.width}get height(){return this._canvas.height}getCanvas(){return this._canvas}clear(){const t=this.context;t&&t.clearRect(0,0,this._canvas.width,this._canvas.height)}async drawQR(t){const e=t.getModuleCount(),i=Math.min(this._options.width,this._options.height)-2*this._options.margin,r=Math.floor(i/e);let o={hideXDots:0,hideYDots:0,width:0,height:0};if(this._qr=t,this._options.image){if(await this.loadImage(),!this._image)return;const{imageOptions:t,qrOptions:i}=this._options,a=t.imageSize*s[i.errorCorrectionLevel],h=Math.floor(a*e*e);o=n({originalWidth:this._image.width,originalHeight:this._image.height,maxHiddenDots:h,maxHiddenAxisDots:e-14,dotSize:r})}this.clear(),this.drawBackground(),this.drawDots(((t,i)=>{var r,n,s,a,h,c;return!(this._options.imageOptions.hideBackgroundDots&&t>=(e-o.hideXDots)/2&&t<(e+o.hideXDots)/2&&i>=(e-o.hideYDots)/2&&i<(e+o.hideYDots)/2||(null===(r=m[t])||void 0===r?void 0:r[i])||(null===(n=m[t-e+7])||void 0===n?void 0:n[i])||(null===(s=m[t])||void 0===s?void 0:s[i-e+7])||(null===(a=y[t])||void 0===a?void 0:a[i])||(null===(h=y[t-e+7])||void 0===h?void 0:h[i])||(null===(c=y[t])||void 0===c?void 0:c[i-e+7]))})),this.drawCorners(),this._options.image&&this.drawImage({width:o.width,height:o.height,count:e,dotSize:r})}drawBackground(){const t=this.context,e=this._options;if(t){if(e.backgroundOptions.gradient){const i=e.backgroundOptions.gradient,r=this._createGradient({context:t,options:i,additionalRotation:0,x:0,y:0,size:this._canvas.width>this._canvas.height?this._canvas.width:this._canvas.height});i.colorStops.forEach((({offset:t,color:e})=>{r.addColorStop(t,e)})),t.fillStyle=r}else e.backgroundOptions.color&&(t.fillStyle=e.backgroundOptions.color);t.fillRect(0,0,this._canvas.width,this._canvas.height)}}drawDots(t){if(!this._qr)throw"QR code is not defined";const e=this.context;if(!e)throw"QR code is not defined";const i=this._options,r=this._qr.getModuleCount();if(r>i.width||r>i.height)throw"The canvas is too small.";const o=Math.min(i.width,i.height)-2*i.margin,n=Math.floor(o/r),s=Math.floor((i.width-r*n)/2),a=Math.floor((i.height-r*n)/2),h=new u({context:e,type:i.dotsOptions.type});e.beginPath();for(let e=0;ethis._options.useLegacyDotRotation?!(e+o<0||i+n<0||e+o>=r||i+n>=r)&&!(t&&!t(e+o,i+n))&&!!this._qr&&this._qr.isDark(e+o,i+n):!(i+o<0||e+n<0||i+o>=r||e+n>=r)&&!(t&&!t(i+o,e+n))&&!!this._qr&&this._qr.isDark(e+n,i+o)))}if(i.dotsOptions.gradient){const t=i.dotsOptions.gradient,o=this._createGradient({context:e,options:t,additionalRotation:0,x:s,y:a,size:r*n});t.colorStops.forEach((({offset:t,color:e})=>{o.addColorStop(t,e)})),e.fillStyle=e.strokeStyle=o}else i.dotsOptions.color&&(e.fillStyle=e.strokeStyle=i.dotsOptions.color);e.fill("evenodd")}drawCorners(t){if(!this._qr)throw"QR code is not defined";const e=this.context;if(!e)throw"QR code is not defined";const i=this._options,r=this._qr.getModuleCount(),o=Math.min(i.width,i.height)-2*i.margin,n=Math.floor(o/r),s=7*n,a=3*n,h=Math.floor((i.width-r*n)/2),c=Math.floor((i.height-r*n)/2);[[0,0,0],[1,0,Math.PI/2],[0,1,-Math.PI/2]].forEach((([o,d,l])=>{var g,f,w,v,b,x,M,S,O,C;if(t&&!t(o,d))return;const D=h+o*n*(r-7),P=c+d*n*(r-7);if(null===(g=i.cornersSquareOptions)||void 0===g?void 0:g.type){const t=new p({context:e,type:null===(f=i.cornersSquareOptions)||void 0===f?void 0:f.type});e.beginPath(),t.draw(D,P,s,l)}else{const t=new u({context:e,type:i.dotsOptions.type});e.beginPath();for(let e=0;e{var o;return!!(null===(o=m[e+t])||void 0===o?void 0:o[i+r])}))}if(null===(v=i.cornersSquareOptions)||void 0===v?void 0:v.gradient){const t=i.cornersSquareOptions.gradient,r=this._createGradient({context:e,options:t,additionalRotation:l,x:D,y:P,size:s});t.colorStops.forEach((({offset:t,color:e})=>{r.addColorStop(t,e)})),e.fillStyle=e.strokeStyle=r}else(null===(b=i.cornersSquareOptions)||void 0===b?void 0:b.color)&&(e.fillStyle=e.strokeStyle=i.cornersSquareOptions.color);if(e.fill("evenodd"),null===(x=i.cornersDotOptions)||void 0===x?void 0:x.type){const t=new _({context:e,type:null===(M=i.cornersDotOptions)||void 0===M?void 0:M.type});e.beginPath(),t.draw(D+2*n,P+2*n,a,l)}else{const t=new u({context:e,type:i.dotsOptions.type});e.beginPath();for(let e=0;e{var o;return!!(null===(o=y[e+t])||void 0===o?void 0:o[i+r])}))}if(null===(O=i.cornersDotOptions)||void 0===O?void 0:O.gradient){const t=i.cornersDotOptions.gradient,r=this._createGradient({context:e,options:t,additionalRotation:l,x:D+2*n,y:P+2*n,size:a});t.colorStops.forEach((({offset:t,color:e})=>{r.addColorStop(t,e)})),e.fillStyle=e.strokeStyle=r}else(null===(C=i.cornersDotOptions)||void 0===C?void 0:C.color)&&(e.fillStyle=e.strokeStyle=i.cornersDotOptions.color);e.fill("evenodd")}))}loadImage(){return new Promise(((t,e)=>{const i=this._options,r=new Image;if(!i.image)return e("Image is not defined");"string"==typeof i.imageOptions.crossOrigin&&(r.crossOrigin=i.imageOptions.crossOrigin),this._image=r,r.onload=()=>{t()},r.src=i.image}))}drawImage({width:t,height:e,count:i,dotSize:r}){const o=this.context;if(!o)throw"canvasContext is not defined";if(!this._image)throw"image is not defined";const n=this._options,s=Math.floor((n.width-i*r)/2),a=Math.floor((n.height-i*r)/2),h=s+n.imageOptions.margin+(i*r-t)/2,c=a+n.imageOptions.margin+(i*r-e)/2,d=t-2*n.imageOptions.margin,l=e-2*n.imageOptions.margin;o.drawImage(this._image,h,c,d<0?0:d,l<0?0:l)}_createGradient({context:t,options:e,additionalRotation:i,x:r,y:o,size:n}){let s;if(e.type===v)s=t.createRadialGradient(r+n/2,o+n/2,0,r+n/2,o+n/2,n/2);else{const a=((e.rotation||0)+i)%(2*Math.PI),h=(a+2*Math.PI)%(2*Math.PI);let c=r+n/2,d=o+n/2,l=r+n/2,u=o+n/2;h>=0&&h<=.25*Math.PI||h>1.75*Math.PI&&h<=2*Math.PI?(c-=n/2,d-=n/2*Math.tan(a),l+=n/2,u+=n/2*Math.tan(a)):h>.25*Math.PI&&h<=.75*Math.PI?(d-=n/2,c-=n/2/Math.tan(a),u+=n/2,l+=n/2/Math.tan(a)):h>.75*Math.PI&&h<=1.25*Math.PI?(c+=n/2,d+=n/2*Math.tan(a),l-=n/2,u-=n/2*Math.tan(a)):h>1.25*Math.PI&&h<=1.75*Math.PI&&(d+=n/2,c+=n/2/Math.tan(a),u-=n/2,l-=n/2/Math.tan(a)),s=t.createLinearGradient(Math.round(c),Math.round(d),Math.round(l),Math.round(u))}return s}}class x{constructor({svg:t,type:e}){this._svg=t,this._type=e}draw(t,e,i,r){let o;switch(this._type){case a:o=this._drawDot;break;case c:o=this._drawClassy;break;case d:o=this._drawClassyRounded;break;case h:o=this._drawRounded;break;case l:o=this._drawExtraRounded;break;default:o=this._drawSquare}o.call(this,{x:t,y:e,size:i,getNeighbor:r})}_rotateFigure({x:t,y:e,size:i,rotation:r=0,draw:o}){var n;const s=t+i/2,a=e+i/2;o(),null===(n=this._element)||void 0===n||n.setAttribute("transform",`rotate(${180*r/Math.PI},${s},${a})`)}_basicDot(t){const{size:e,x:i,y:r}=t;this._rotateFigure(Object.assign(Object.assign({},t),{draw:()=>{this._element=document.createElementNS("http://www.w3.org/2000/svg","circle"),this._element.setAttribute("cx",String(i+e/2)),this._element.setAttribute("cy",String(r+e/2)),this._element.setAttribute("r",String(e/2))}}))}_basicSquare(t){const{size:e,x:i,y:r}=t;this._rotateFigure(Object.assign(Object.assign({},t),{draw:()=>{this._element=document.createElementNS("http://www.w3.org/2000/svg","rect"),this._element.setAttribute("x",String(i)),this._element.setAttribute("y",String(r)),this._element.setAttribute("width",String(e)),this._element.setAttribute("height",String(e))}}))}_basicSideRounded(t){const{size:e,x:i,y:r}=t;this._rotateFigure(Object.assign(Object.assign({},t),{draw:()=>{this._element=document.createElementNS("http://www.w3.org/2000/svg","path"),this._element.setAttribute("d",`M ${i} ${r}v ${e}h `+e/2+`a ${e/2} ${e/2}, 0, 0, 0, 0 ${-e}`)}}))}_basicCornerRounded(t){const{size:e,x:i,y:r}=t;this._rotateFigure(Object.assign(Object.assign({},t),{draw:()=>{this._element=document.createElementNS("http://www.w3.org/2000/svg","path"),this._element.setAttribute("d",`M ${i} ${r}v ${e}h ${e}v `+-e/2+`a ${e/2} ${e/2}, 0, 0, 0, ${-e/2} ${-e/2}`)}}))}_basicCornerExtraRounded(t){const{size:e,x:i,y:r}=t;this._rotateFigure(Object.assign(Object.assign({},t),{draw:()=>{this._element=document.createElementNS("http://www.w3.org/2000/svg","path"),this._element.setAttribute("d",`M ${i} ${r}v ${e}h ${e}a ${e} ${e}, 0, 0, 0, ${-e} ${-e}`)}}))}_basicCornersRounded(t){const{size:e,x:i,y:r}=t;this._rotateFigure(Object.assign(Object.assign({},t),{draw:()=>{this._element=document.createElementNS("http://www.w3.org/2000/svg","path"),this._element.setAttribute("d",`M ${i} ${r}v `+e/2+`a ${e/2} ${e/2}, 0, 0, 0, ${e/2} ${e/2}h `+e/2+"v "+-e/2+`a ${e/2} ${e/2}, 0, 0, 0, ${-e/2} ${-e/2}`)}}))}_drawDot({x:t,y:e,size:i}){this._basicDot({x:t,y:e,size:i,rotation:0})}_drawSquare({x:t,y:e,size:i}){this._basicSquare({x:t,y:e,size:i,rotation:0})}_drawRounded({x:t,y:e,size:i,getNeighbor:r}){const o=r?+r(-1,0):0,n=r?+r(1,0):0,s=r?+r(0,-1):0,a=r?+r(0,1):0,h=o+n+s+a;if(0!==h)if(h>2||o&&n||s&&a)this._basicSquare({x:t,y:e,size:i,rotation:0});else{if(2===h){let r=0;return o&&s?r=Math.PI/2:s&&n?r=Math.PI:n&&a&&(r=-Math.PI/2),void this._basicCornerRounded({x:t,y:e,size:i,rotation:r})}if(1===h){let r=0;return s?r=Math.PI/2:n?r=Math.PI:a&&(r=-Math.PI/2),void this._basicSideRounded({x:t,y:e,size:i,rotation:r})}}else this._basicDot({x:t,y:e,size:i,rotation:0})}_drawExtraRounded({x:t,y:e,size:i,getNeighbor:r}){const o=r?+r(-1,0):0,n=r?+r(1,0):0,s=r?+r(0,-1):0,a=r?+r(0,1):0,h=o+n+s+a;if(0!==h)if(h>2||o&&n||s&&a)this._basicSquare({x:t,y:e,size:i,rotation:0});else{if(2===h){let r=0;return o&&s?r=Math.PI/2:s&&n?r=Math.PI:n&&a&&(r=-Math.PI/2),void this._basicCornerExtraRounded({x:t,y:e,size:i,rotation:r})}if(1===h){let r=0;return s?r=Math.PI/2:n?r=Math.PI:a&&(r=-Math.PI/2),void this._basicSideRounded({x:t,y:e,size:i,rotation:r})}}else this._basicDot({x:t,y:e,size:i,rotation:0})}_drawClassy({x:t,y:e,size:i,getNeighbor:r}){const o=r?+r(-1,0):0,n=r?+r(1,0):0,s=r?+r(0,-1):0,a=r?+r(0,1):0;0!==o+n+s+a?o||s?n||a?this._basicSquare({x:t,y:e,size:i,rotation:0}):this._basicCornerRounded({x:t,y:e,size:i,rotation:Math.PI/2}):this._basicCornerRounded({x:t,y:e,size:i,rotation:-Math.PI/2}):this._basicCornersRounded({x:t,y:e,size:i,rotation:Math.PI/2})}_drawClassyRounded({x:t,y:e,size:i,getNeighbor:r}){const o=r?+r(-1,0):0,n=r?+r(1,0):0,s=r?+r(0,-1):0,a=r?+r(0,1):0;0!==o+n+s+a?o||s?n||a?this._basicSquare({x:t,y:e,size:i,rotation:0}):this._basicCornerExtraRounded({x:t,y:e,size:i,rotation:Math.PI/2}):this._basicCornerExtraRounded({x:t,y:e,size:i,rotation:-Math.PI/2}):this._basicCornersRounded({x:t,y:e,size:i,rotation:Math.PI/2})}}class M{constructor({svg:t,type:e}){this._svg=t,this._type=e}draw(t,e,i,r){let o;switch(this._type){case g:o=this._drawSquare;break;case f:o=this._drawExtraRounded;break;default:o=this._drawDot}o.call(this,{x:t,y:e,size:i,rotation:r})}_rotateFigure({x:t,y:e,size:i,rotation:r=0,draw:o}){var n;const s=t+i/2,a=e+i/2;o(),null===(n=this._element)||void 0===n||n.setAttribute("transform",`rotate(${180*r/Math.PI},${s},${a})`)}_basicDot(t){const{size:e,x:i,y:r}=t,o=e/7;this._rotateFigure(Object.assign(Object.assign({},t),{draw:()=>{this._element=document.createElementNS("http://www.w3.org/2000/svg","path"),this._element.setAttribute("clip-rule","evenodd"),this._element.setAttribute("d",`M ${i+e/2} ${r}a ${e/2} ${e/2} 0 1 0 0.1 0zm 0 ${o}a ${e/2-o} ${e/2-o} 0 1 1 -0.1 0Z`)}}))}_basicSquare(t){const{size:e,x:i,y:r}=t,o=e/7;this._rotateFigure(Object.assign(Object.assign({},t),{draw:()=>{this._element=document.createElementNS("http://www.w3.org/2000/svg","path"),this._element.setAttribute("clip-rule","evenodd"),this._element.setAttribute("d",`M ${i} ${r}v ${e}h ${e}v `+-e+"z"+`M ${i+o} ${r+o}h `+(e-2*o)+"v "+(e-2*o)+"h "+(2*o-e)+"z")}}))}_basicExtraRounded(t){const{size:e,x:i,y:r}=t,o=e/7;this._rotateFigure(Object.assign(Object.assign({},t),{draw:()=>{this._element=document.createElementNS("http://www.w3.org/2000/svg","path"),this._element.setAttribute("clip-rule","evenodd"),this._element.setAttribute("d",`M ${i} ${r+2.5*o}v `+2*o+`a ${2.5*o} ${2.5*o}, 0, 0, 0, ${2.5*o} ${2.5*o}h `+2*o+`a ${2.5*o} ${2.5*o}, 0, 0, 0, ${2.5*o} ${2.5*-o}v `+-2*o+`a ${2.5*o} ${2.5*o}, 0, 0, 0, ${2.5*-o} ${2.5*-o}h `+-2*o+`a ${2.5*o} ${2.5*o}, 0, 0, 0, ${2.5*-o} ${2.5*o}`+`M ${i+2.5*o} ${r+o}h `+2*o+`a ${1.5*o} ${1.5*o}, 0, 0, 1, ${1.5*o} ${1.5*o}v `+2*o+`a ${1.5*o} ${1.5*o}, 0, 0, 1, ${1.5*-o} ${1.5*o}h `+-2*o+`a ${1.5*o} ${1.5*o}, 0, 0, 1, ${1.5*-o} ${1.5*-o}v `+-2*o+`a ${1.5*o} ${1.5*o}, 0, 0, 1, ${1.5*o} ${1.5*-o}`)}}))}_drawDot({x:t,y:e,size:i,rotation:r}){this._basicDot({x:t,y:e,size:i,rotation:r})}_drawSquare({x:t,y:e,size:i,rotation:r}){this._basicSquare({x:t,y:e,size:i,rotation:r})}_drawExtraRounded({x:t,y:e,size:i,rotation:r}){this._basicExtraRounded({x:t,y:e,size:i,rotation:r})}}class S{constructor({svg:t,type:e}){this._svg=t,this._type=e}draw(t,e,i,r){let o;o=this._type===w?this._drawSquare:this._drawDot,o.call(this,{x:t,y:e,size:i,rotation:r})}_rotateFigure({x:t,y:e,size:i,rotation:r=0,draw:o}){var n;const s=t+i/2,a=e+i/2;o(),null===(n=this._element)||void 0===n||n.setAttribute("transform",`rotate(${180*r/Math.PI},${s},${a})`)}_basicDot(t){const{size:e,x:i,y:r}=t;this._rotateFigure(Object.assign(Object.assign({},t),{draw:()=>{this._element=document.createElementNS("http://www.w3.org/2000/svg","circle"),this._element.setAttribute("cx",String(i+e/2)),this._element.setAttribute("cy",String(r+e/2)),this._element.setAttribute("r",String(e/2))}}))}_basicSquare(t){const{size:e,x:i,y:r}=t;this._rotateFigure(Object.assign(Object.assign({},t),{draw:()=>{this._element=document.createElementNS("http://www.w3.org/2000/svg","rect"),this._element.setAttribute("x",String(i)),this._element.setAttribute("y",String(r)),this._element.setAttribute("width",String(e)),this._element.setAttribute("height",String(e))}}))}_drawDot({x:t,y:e,size:i,rotation:r}){this._basicDot({x:t,y:e,size:i,rotation:r})}_drawSquare({x:t,y:e,size:i,rotation:r}){this._basicSquare({x:t,y:e,size:i,rotation:r})}}const O=[[1,1,1,1,1,1,1],[1,0,0,0,0,0,1],[1,0,0,0,0,0,1],[1,0,0,0,0,0,1],[1,0,0,0,0,0,1],[1,0,0,0,0,0,1],[1,1,1,1,1,1,1]],C=[[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[0,0,1,1,1,0,0],[0,0,1,1,1,0,0],[0,0,1,1,1,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0]];class D{constructor(t){this._element=document.createElementNS("http://www.w3.org/2000/svg","svg"),this._element.setAttribute("width",String(t.width)),this._element.setAttribute("height",String(t.height)),this._element.setAttribute("xmlns:xlink","http://www.w3.org/1999/xlink"),this._defs=document.createElementNS("http://www.w3.org/2000/svg","defs"),this._style=document.createElementNS("http://www.w3.org/2000/svg","style"),this._options=t}get width(){return this._options.width}get height(){return this._options.height}getElement(){return this._element}clear(){var t;const e=this._element;this._element=e.cloneNode(!1),null===(t=null==e?void 0:e.parentNode)||void 0===t||t.replaceChild(this._element,e),this._defs=document.createElementNS("http://www.w3.org/2000/svg","defs"),this._style=document.createElementNS("http://www.w3.org/2000/svg","style"),this._element.appendChild(this._style),this._element.appendChild(this._defs)}async drawQR(t){const e=t.getModuleCount(),i=Math.min(this._options.width,this._options.height)-2*this._options.margin,r=Math.floor(i/e);let o={hideXDots:0,hideYDots:0,width:0,height:0};if(this._qr=t,this._options.image){if(await this.loadImage(),!this._image)return;const{imageOptions:t,qrOptions:i}=this._options,a=t.imageSize*s[i.errorCorrectionLevel],h=Math.floor(a*e*e);o=n({originalWidth:this._image.width,originalHeight:this._image.height,maxHiddenDots:h,maxHiddenAxisDots:e-14,dotSize:r})}this._element.appendChild(this._style),this._element.appendChild(this._defs),this.clear(),this.drawBackground(),this.drawDots(((t,i)=>{var r,n,s,a,h,c;return!(this._options.imageOptions.hideBackgroundDots&&t>=(e-o.hideXDots)/2&&t<(e+o.hideXDots)/2&&i>=(e-o.hideYDots)/2&&i<(e+o.hideYDots)/2||(null===(r=O[t])||void 0===r?void 0:r[i])||(null===(n=O[t-e+7])||void 0===n?void 0:n[i])||(null===(s=O[t])||void 0===s?void 0:s[i-e+7])||(null===(a=C[t])||void 0===a?void 0:a[i])||(null===(h=C[t-e+7])||void 0===h?void 0:h[i])||(null===(c=C[t])||void 0===c?void 0:c[i-e+7]))})),this.drawCorners(),this._options.image&&await this.drawImage({width:o.width,height:o.height,count:e,dotSize:r})}drawBackground(){var t,e,i;const r=this._element,o=this._options;if(r){const r=null===(t=o.backgroundOptions)||void 0===t?void 0:t.gradient,n=null===(e=o.backgroundOptions)||void 0===e?void 0:e.color;r?this._createColor({options:r,color:n,additionalRotation:0,x:0,y:0,height:o.height,width:o.width,name:"background-color"}):(null===(i=o.backgroundOptions)||void 0===i?void 0:i.color)&&this._createStyle({color:n,name:"background-color"})}}drawDots(t){var e,i,r;if(!this._qr)throw"QR code is not defined";const o=this._options,n=this._qr.getModuleCount();if(n>o.width||n>o.height)throw"The canvas is too small.";const s=Math.min(o.width,o.height)-2*o.margin,a=Math.floor(s/n),h=Math.floor((o.width-n*a)/2),c=Math.floor((o.height-n*a)/2),d=new x({svg:this._element,type:o.dotsOptions.type});(null===(e=o.dotsOptions)||void 0===e?void 0:e.gradient)?(this._dotsClipPath=document.createElementNS("http://www.w3.org/2000/svg","clipPath"),this._dotsClipPath.setAttribute("id","clip-path-dot-color"),this._defs.appendChild(this._dotsClipPath),this._createColor({options:null===(i=o.dotsOptions)||void 0===i?void 0:i.gradient,color:o.dotsOptions.color,additionalRotation:0,x:h,y:c,height:n*a,width:n*a,name:"dot-color"})):o.dotsOptions.color&&(this._dots=document.createElementNS("http://www.w3.org/2000/svg","g"),this._dots.setAttribute("class","dot-color"),this._element.appendChild(this._dots),this._createStyle({color:o.dotsOptions.color,name:"dot-color"}));for(let e=0;ethis._options.useLegacyDotRotation?!(e+r<0||i+o<0||e+r>=n||i+o>=n)&&!(t&&!t(e+r,i+o))&&!!this._qr&&this._qr.isDark(e+r,i+o):!(i+r<0||e+o<0||i+r>=n||e+o>=n)&&!(t&&!t(i+r,e+o))&&!!this._qr&&this._qr.isDark(e+o,i+r))),d._element&&this._dotsClipPath?this._dotsClipPath.appendChild(d._element):d._element&&this._dots&&this._dots.appendChild(d._element)}}drawCorners(){if(!this._qr)throw"QR code is not defined";const t=this._element,e=this._options;if(!t)throw"Element code is not defined";const i=this._qr.getModuleCount(),r=Math.min(e.width,e.height)-2*e.margin,o=Math.floor(r/i),n=7*o,s=3*o,a=Math.floor((e.width-i*o)/2),h=Math.floor((e.height-i*o)/2);[[0,0,0],[1,0,Math.PI/2],[0,1,-Math.PI/2]].forEach((([t,r,c])=>{var d,l,u,g,f,p,w,_,v,m,y,b,D,P;const z=a+t*o*(i-7),A=h+r*o*(i-7);let I=this._dotsClipPath,$=this._dotsClipPath;if((null===(d=e.cornersSquareOptions)||void 0===d?void 0:d.gradient)?(I=document.createElementNS("http://www.w3.org/2000/svg","clipPath"),I.setAttribute("id",`clip-path-corners-square-color-${t}-${r}`),this._defs.appendChild(I),this._cornersSquareClipPath=this._cornersDotClipPath=$=I,this._createColor({options:null===(l=e.cornersSquareOptions)||void 0===l?void 0:l.gradient,color:null===(u=e.cornersSquareOptions)||void 0===u?void 0:u.color,additionalRotation:c,x:z,y:A,height:n,width:n,name:`corners-square-color-${t}-${r}`})):(this._cornerSquares=document.createElementNS("http://www.w3.org/2000/svg","g"),this._cornerSquares.setAttribute("class",`corners-square-color-${t}-${r}`),this._element.appendChild(this._cornerSquares),this._createStyle({color:null===(g=e.cornersSquareOptions)||void 0===g?void 0:g.color,name:`corners-square-color-${t}-${r}`})),null===(f=e.cornersSquareOptions)||void 0===f?void 0:f.type){const t=new M({svg:this._element,type:e.cornersSquareOptions.type});t.draw(z,A,n,c),(null===(p=e.cornersSquareOptions)||void 0===p?void 0:p.gradient)&&t._element&&I?I.appendChild(t._element):t._element&&this._cornerSquares&&this._cornerSquares.appendChild(t._element)}else{const t=new x({svg:this._element,type:e.dotsOptions.type});for(let e=0;e{var o;return!!(null===(o=O[e+t])||void 0===o?void 0:o[i+r])})),t._element&&this._cornersSquareClipPath?this._cornersSquareClipPath.appendChild(t._element):t._element&&this._cornerSquares&&this._cornerSquares.appendChild(t._element))}if((null===(_=e.cornersDotOptions)||void 0===_?void 0:_.gradient)?($=document.createElementNS("http://www.w3.org/2000/svg","clipPath"),$.setAttribute("id",`clip-path-corners-dot-color-${t}-${r}`),this._defs.appendChild($),this._cornersDotClipPath=$,this._createColor({options:null===(v=e.cornersDotOptions)||void 0===v?void 0:v.gradient,color:null===(m=e.cornersDotOptions)||void 0===m?void 0:m.color,additionalRotation:c,x:z+2*o,y:A+2*o,height:s,width:s,name:`corners-dot-color-${t}-${r}`})):(this._cornerDots=document.createElementNS("http://www.w3.org/2000/svg","g"),this._cornerDots.setAttribute("class",`corners-dot-color-${t}-${r}`),this._element.appendChild(this._cornerDots),this._createStyle({color:null===(y=e.cornersDotOptions)||void 0===y?void 0:y.color,name:`corners-dot-color-${t}-${r}`})),null===(b=e.cornersDotOptions)||void 0===b?void 0:b.type){const t=new S({svg:this._element,type:e.cornersDotOptions.type});t.draw(z+2*o,A+2*o,s,c),(null===(D=e.cornersDotOptions)||void 0===D?void 0:D.gradient)&&t._element&&$?$.appendChild(t._element):t._element&&this._cornerDots&&this._cornerDots.appendChild(t._element)}else{const t=new x({svg:this._element,type:e.dotsOptions.type});for(let e=0;e{var o;return!!(null===(o=C[e+t])||void 0===o?void 0:o[i+r])})),t._element&&this._cornersDotClipPath?this._cornersDotClipPath.appendChild(t._element):t._element&&this._cornerDots&&this._cornerDots.appendChild(t._element))}}))}loadImage(){return new Promise(((t,e)=>{const i=this._options,r=new Image;if(!i.image)return e("Image is not defined");"string"==typeof i.imageOptions.crossOrigin&&(r.crossOrigin=i.imageOptions.crossOrigin),this._image=r,r.onload=()=>{t()},r.src=i.image}))}async drawImage({width:t,height:e,count:i,dotSize:r}){const o=this._options,n=Math.floor((o.width-i*r)/2),s=Math.floor((o.height-i*r)/2),a=n+o.imageOptions.margin+(i*r-t)/2,h=s+o.imageOptions.margin+(i*r-e)/2,c=t-2*o.imageOptions.margin,d=e-2*o.imageOptions.margin,l=document.createElementNS("http://www.w3.org/2000/svg","image"),u=await this._getBase64Image(o.image||"");l.setAttribute("href",u),l.setAttribute("xlink:href",u),l.setAttribute("x",String(a)),l.setAttribute("y",String(h)),l.setAttribute("width",`${c}px`),l.setAttribute("height",`${d}px`),this._element.appendChild(l)}async _getImageBlob(t){return(await fetch(t)).blob()}_blobToBase64(t){return new Promise((e=>{const i=new FileReader;i.onload=function(){const t=i.result;e(t)},i.readAsDataURL(t)}))}async _getBase64Image(t){if(""===t)return new Promise((t=>{t("")}));const e=await this._getImageBlob(t);return await this._blobToBase64(e)}_createColor({options:t,color:e,additionalRotation:i,x:r,y:o,height:n,width:s,name:a}){const h=s>n?s:n,c=document.createElementNS("http://www.w3.org/2000/svg","rect");if(c.setAttribute("x",String(r)),c.setAttribute("y",String(o)),c.setAttribute("height",String(n)),c.setAttribute("width",String(s)),c.setAttribute("clip-path",`url('#clip-path-${a}')`),t){let e;if(t.type===v)e=document.createElementNS("http://www.w3.org/2000/svg","radialGradient"),e.setAttribute("id",a),e.setAttribute("gradientUnits","userSpaceOnUse"),e.setAttribute("fx",String(r+s/2)),e.setAttribute("fy",String(o+n/2)),e.setAttribute("cx",String(r+s/2)),e.setAttribute("cy",String(o+n/2)),e.setAttribute("r",String(h/2));else{const h=((t.rotation||0)+i)%(2*Math.PI),c=(h+2*Math.PI)%(2*Math.PI);let d=r+s/2,l=o+n/2,u=r+s/2,g=o+n/2;c>=0&&c<=.25*Math.PI||c>1.75*Math.PI&&c<=2*Math.PI?(d-=s/2,l-=n/2*Math.tan(h),u+=s/2,g+=n/2*Math.tan(h)):c>.25*Math.PI&&c<=.75*Math.PI?(l-=n/2,d-=s/2/Math.tan(h),g+=n/2,u+=s/2/Math.tan(h)):c>.75*Math.PI&&c<=1.25*Math.PI?(d+=s/2,l+=n/2*Math.tan(h),u-=s/2,g-=n/2*Math.tan(h)):c>1.25*Math.PI&&c<=1.75*Math.PI&&(l+=n/2,d+=s/2/Math.tan(h),g-=n/2,u-=s/2/Math.tan(h)),e=document.createElementNS("http://www.w3.org/2000/svg","linearGradient"),e.setAttribute("id",a),e.setAttribute("gradientUnits","userSpaceOnUse"),e.setAttribute("x1",String(Math.round(d))),e.setAttribute("y1",String(Math.round(l))),e.setAttribute("x2",String(Math.round(u))),e.setAttribute("y2",String(Math.round(g)))}t.colorStops.forEach((({offset:t,color:i})=>{const r=document.createElementNS("http://www.w3.org/2000/svg","stop");r.setAttribute("offset",100*t+"%"),r.setAttribute("stop-color",i),e.appendChild(r)})),c.setAttribute("fill",`url('#${a}')`),this._defs.appendChild(e)}else e&&c.setAttribute("fill",e);this._element.appendChild(c)}_createStyle({color:t,name:e}){if(void 0===t)return;if("#"!==t[0]||7!==t.length&&9!==t.length)return void console.error("unsupported color format. At the moment only Hex color codes are supported.");let i=1;9===t.length&&(i=parseInt(t.substring(7,9),16)/255),this._style.innerHTML+=`.${e}{ fill: ${t.substring(0,7)}; fill-opacity: ${i} }`}}const P="canvas",z={};for(let t=0;t<=40;t++)z[t]=t;const A={type:P,width:512,height:512,data:"",margin:0,qrOptions:{typeNumber:z[0],mode:void 0,errorCorrectionLevel:"Q"},imageOptions:{hideBackgroundDots:!0,imageSize:.4,crossOrigin:"anonymous",margin:0},dotsOptions:{type:"square",color:"#000"},backgroundOptions:{color:"#FFFFFF00"},useLegacyDotRotation:!1};function I(t){const e=Object.assign({},t);if(!e.colorStops||!e.colorStops.length)throw"Field 'colorStops' is required in gradient";return e.rotation?e.rotation=Number(e.rotation):e.rotation=0,e.colorStops=e.colorStops.map((t=>Object.assign(Object.assign({},t),{offset:Number(t.offset)}))),e}function $(t){const e=Object.assign({},t);return e.width=Number(e.width),e.height=Number(e.height),e.margin=Number(e.margin),e.imageOptions=Object.assign(Object.assign({},e.imageOptions),{hideBackgroundDots:Boolean(e.imageOptions.hideBackgroundDots),imageSize:Number(e.imageOptions.imageSize),margin:Number(e.imageOptions.margin)}),e.margin>Math.min(e.width,e.height)&&(e.margin=Math.min(e.width,e.height)),e.dotsOptions=Object.assign({},e.dotsOptions),e.dotsOptions.gradient&&(e.dotsOptions.gradient=I(e.dotsOptions.gradient)),e.cornersSquareOptions&&(e.cornersSquareOptions=Object.assign({},e.cornersSquareOptions),e.cornersSquareOptions.gradient&&(e.cornersSquareOptions.gradient=I(e.cornersSquareOptions.gradient))),e.cornersDotOptions&&(e.cornersDotOptions=Object.assign({},e.cornersDotOptions),e.cornersDotOptions.gradient&&(e.cornersDotOptions.gradient=I(e.cornersDotOptions.gradient))),e.backgroundOptions&&(e.backgroundOptions=Object.assign({},e.backgroundOptions),e.backgroundOptions.gradient&&(e.backgroundOptions.gradient=I(e.backgroundOptions.gradient))),e}var q=i(873),k=i.n(q);class R{constructor(t){this._options=t?$(e(A,t)):A,this.update()}static _clearContainer(t){t&&(t.innerHTML="")}async _getQRStylingElement(t){if(!this._qr)throw"QR code is empty";if("svg"===t.toLowerCase()){let t,e;return this._svg&&this._svgDrawingPromise?(e=this._svg,t=this._svgDrawingPromise):(e=new D(this._options),t=e.drawQR(this._qr)),await t,e}{let t,e;return this._canvas&&this._canvasDrawingPromise?(e=this._canvas,t=this._canvasDrawingPromise):(e=new b(this._options),t=e.drawQR(this._qr)),await t,e}}update(t){R._clearContainer(this._container),this._options=t?$(e(this._options,t)):this._options,this._options.data&&(this._qr=k()(this._options.qrOptions.typeNumber,this._options.qrOptions.errorCorrectionLevel),this._qr.addData(this._options.data,this._options.qrOptions.mode||function(t){switch(!0){case/^[0-9]*$/.test(t):return"Numeric";case/^[0-9A-Z $%*+\-./:]*$/.test(t):return"Alphanumeric";default:return"Byte"}}(this._options.data)),this._qr.make(),this._options.type===P?(this._canvas=new b(this._options),this._canvasDrawingPromise=this._canvas.drawQR(this._qr),this._svgDrawingPromise=void 0,this._svg=void 0):(this._svg=new D(this._options),this._svgDrawingPromise=this._svg.drawQR(this._qr),this._canvasDrawingPromise=void 0,this._canvas=void 0),this.append(this._container))}append(t){if(t){if("function"!=typeof t.appendChild)throw"Container should be a single DOM node";this._options.type===P?this._canvas&&t.appendChild(this._canvas.getCanvas()):this._svg&&t.appendChild(this._svg.getElement()),this._container=t}}async getRawData(t="png",e){if(!this._qr)throw"QR code is empty";const i=t.toLocaleLowerCase();if("svg"===i){const t=await this._getQRStylingElement(i),e=(new XMLSerializer).serializeToString(t.getElement());return new Blob(['\r\n'+e],{type:"image/svg+xml"})}{const t=await this._getQRStylingElement(i);return new Promise((r=>t.getCanvas().toBlob(r,`image/${i}`,e)))}}async toDataUrl(t="png",e){if(!this._qr)throw"QR code is empty";const i=t.toLocaleLowerCase();return(await this._getQRStylingElement(i)).getCanvas().toDataURL(`image/${i}`,e)}async download(t){if(!this._qr)throw"QR code is empty";let e="png",i="qr";"object"==typeof t&&null!==t&&(t.name&&(i=t.name),t.extension&&(e=t.extension));const r=e.toLocaleLowerCase();if("svg"===r){const t=await this._getQRStylingElement(r);let e=(new XMLSerializer).serializeToString(t.getElement());e='\r\n'+e,o("data:image/svg+xml;charset=utf-8,"+encodeURIComponent(e),`${i}.svg`)}else o((await this._getQRStylingElement(r)).getCanvas().toDataURL(`image/${e}`),`${i}.${e}`)}}const B=R})(),r.default})())); //# sourceMappingURL=qr-code-styling.js.map \ No newline at end of file diff --git a/lib/qr-code-styling.js.map b/lib/qr-code-styling.js.map index d0b69435..75731b44 100644 --- a/lib/qr-code-styling.js.map +++ b/lib/qr-code-styling.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://QRCodeStyling/webpack/universalModuleDefinition","webpack://QRCodeStyling/./node_modules/qrcode-generator/qrcode.js","webpack://QRCodeStyling/./src/tools/merge.ts","webpack://QRCodeStyling/./src/tools/downloadURI.ts","webpack://QRCodeStyling/./src/tools/calculateImageSize.ts","webpack://QRCodeStyling/./src/constants/errorCorrectionPercents.ts","webpack://QRCodeStyling/./src/constants/dotTypes.ts","webpack://QRCodeStyling/./src/figures/dot/canvas/QRDot.ts","webpack://QRCodeStyling/./src/constants/cornerSquareTypes.ts","webpack://QRCodeStyling/./src/figures/cornerSquare/canvas/QRCornerSquare.ts","webpack://QRCodeStyling/./src/constants/cornerDotTypes.ts","webpack://QRCodeStyling/./src/figures/cornerDot/canvas/QRCornerDot.ts","webpack://QRCodeStyling/./src/constants/gradientTypes.ts","webpack://QRCodeStyling/./src/core/QRCanvas.ts","webpack://QRCodeStyling/./src/figures/dot/svg/QRDot.ts","webpack://QRCodeStyling/./src/figures/cornerSquare/svg/QRCornerSquare.ts","webpack://QRCodeStyling/./src/figures/cornerDot/svg/QRCornerDot.ts","webpack://QRCodeStyling/./src/core/QRSVG.ts","webpack://QRCodeStyling/./src/constants/drawTypes.ts","webpack://QRCodeStyling/./src/constants/qrTypes.ts","webpack://QRCodeStyling/./src/core/QROptions.ts","webpack://QRCodeStyling/./src/constants/errorCorrectionLevels.ts","webpack://QRCodeStyling/./src/tools/sanitizeOptions.ts","webpack://QRCodeStyling/./src/index.ts","webpack://QRCodeStyling/./src/core/QRCodeStyling.ts","webpack://QRCodeStyling/./src/tools/getMode.ts","webpack://QRCodeStyling/./src/constants/modes.ts","webpack://QRCodeStyling/webpack/bootstrap","webpack://QRCodeStyling/webpack/startup","webpack://QRCodeStyling/webpack/runtime/compat get default export","webpack://QRCodeStyling/webpack/runtime/define property getters","webpack://QRCodeStyling/webpack/runtime/hasOwnProperty shorthand"],"names":["root","factory","exports","module","define","amd","self","qrcode","typeNumber","errorCorrectionLevel","_typeNumber","_errorCorrectionLevel","QRErrorCorrectionLevel","_modules","_moduleCount","_dataCache","_dataList","_this","makeImpl","test","maskPattern","moduleCount","modules","Array","row","col","setupPositionProbePattern","setupPositionAdjustPattern","setupTimingPattern","setupTypeInfo","setupTypeNumber","createData","mapData","r","c","pos","QRUtil","getPatternPosition","i","length","j","bits","getBCHTypeNumber","mod","Math","floor","data","getBCHTypeInfo","inc","bitIndex","byteIndex","maskFunc","getMaskFunction","dark","dataList","rsBlocks","QRRSBlock","getRSBlocks","buffer","qrBitBuffer","put","getMode","getLength","getLengthInBits","write","totalDataCount","dataCount","putBit","offset","maxDcCount","maxEcCount","dcdata","ecdata","dcCount","ecCount","totalCount","max","getBuffer","rsPoly","getErrorCorrectPolynomial","modPoly","qrPolynomial","modIndex","getAt","totalCodeCount","index","createBytes","addData","mode","newData","qrNumber","qrAlphaNum","qr8BitByte","qrKanji","push","isDark","getModuleCount","make","minLostPoint","pattern","lostPoint","getLostPoint","getBestMaskPattern","createTableTag","cellSize","margin","qrHtml","createSvgTag","alt","title","opts","arguments","text","id","mr","rect","size","qrSvg","scalable","escapeXml","join","trim","createDataURL","min","x","y","createImgTag","img","s","escaped","charAt","createASCII","r1","r2","p","blocks","blocksLastLineNoMargin","ascii","substring","_createHalfASCII","white","black","line","renderTo2dContext","context","fillStyle","fillRect","stringToBytes","stringToBytesFuncs","bytes","charCodeAt","createStringToBytes","unicodeData","numChars","unicodeMap","bin","base64DecodeInputStream","read","b","count","b0","b1","v","String","fromCharCode","unknownChar","PATTERN_POSITION_TABLE","G15","G18","getBCHDigit","L","M","Q","H","digit","d","errorCorrectLength","a","multiply","QRMath","gexp","type","sameCount","darkCount","abs","EXP_TABLE","LOG_TABLE","n","num","shift","_num","e","glog","ratio","RS_BLOCK_TABLE","qrRSBlock","rsBlock","getRsBlockTable","list","_buffer","_length","bufIndex","bit","_data","strToNum","chatToNum","getCode","_bytes","code","byteArrayOutputStream","writeByte","off","len","str","_str","_pos","_buflen","match","decode","width","height","getPixel","gif","_width","_height","pixel","out","writeString","writeShort","raster","getLZWRaster","writeBytes","lzwMinCodeSize","clearCode","endCode","bitLength","table","lzwTable","add","_out","_bitLength","_bitBuffer","byteOut","bitOut","dataIndex","contains","indexOf","flush","toByteArray","_map","_size","key","gifImage","setPixel","base64","_base64","writeEncoded","encode","padlen","toString","base64EncodeOutputStream","utf8","charcode","toUTF8Array","isObject","obj","isArray","mergeDeep","target","sources","source","undefined","Object","keys","forEach","targetValue","sourceValue","assign","downloadURI","uri","name","link","document","createElement","download","href","body","appendChild","click","removeChild","calculateImageSize","originalHeight","originalWidth","maxHiddenDots","maxHiddenAxisDots","dotSize","hideDots","imageSize","hideYDots","hideXDots","k","sqrt","ceil","round","this","_context","_type","draw","getNeighbor","drawFunction","dotTypes","_drawDot","_drawClassy","_drawClassyRounded","_drawRounded","_drawExtraRounded","_drawSquare","call","_rotateFigure","rotation","cx","cy","translate","rotate","closePath","_basicDot","args","arc","PI","_basicSquare","_basicSideRounded","lineTo","_basicCornerRounded","_basicCornerExtraRounded","_basicCornersRounded","_basicCornersExtraRounded","leftNeighbor","rightNeighbor","topNeighbor","bottomNeighbor","neighborsCount","cornerSquareTypes","_basicExtraRounded","cornerDotTypes","squareMask","dotMask","options","_canvas","_options","getContext","getCanvas","clear","canvasContext","clearRect","drawQR","qr","minSize","drawImageSize","_qr","image","loadImage","_image","imageOptions","qrOptions","coverLevel","errorCorrectionPercents","drawBackground","drawDots","hideBackgroundDots","drawCorners","drawImage","backgroundOptions","gradient","gradientOptions","_createGradient","additionalRotation","colorStops","color","addColorStop","filter","xBeginning","yBeginning","dot","dotsOptions","beginPath","xOffset","yOffset","strokeStyle","fill","cornersSquareSize","cornersDotSize","column","cornersSquareOptions","cornersSquare","cornersDotOptions","cornersDot","Promise","resolve","reject","Image","crossOrigin","onload","src","dx","dy","dw","dh","gradientTypes","createRadialGradient","positiveRotation","x0","y0","x1","y1","tan","createLinearGradient","svg","_svg","_element","setAttribute","createElementNS","_defs","_style","getElement","oldElement","cloneNode","parentNode","replaceChild","element","_createColor","_createStyle","_dotsClipPath","_dots","cornersSquareClipPath","cornersDotClipPath","_cornersSquareClipPath","_cornersDotClipPath","_cornerSquares","_cornerDots","_getBase64Image","base64Image","_getImageBlob","url","fetch","blob","_blobToBase64","reader","FileReader","dataUrl","result","readAsDataURL","stop","console","error","opacity","parseInt","innerHTML","qrTypes","drawTypes","sanitizeGradient","newGradient","Number","map","colorStop","sanitizeOptions","newOptions","Boolean","update","_clearContainer","container","_getQRStylingElement","extension","toLowerCase","promise","_svgDrawingPromise","canvas","_canvasDrawingPromise","QRCodeStyling","_container","append","getRawData","serializer","XMLSerializer","serializeToString","Blob","toBlob","downloadOptions","warn","encodeURIComponent","toDataURL","__webpack_module_cache__","__webpack_require__","moduleId","__webpack_modules__","getter","__esModule","definition","o","defineProperty","enumerable","get","prop","prototype","hasOwnProperty"],"mappings":"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","file":"qr-code-styling.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"QRCodeStyling\"] = factory();\n\telse\n\t\troot[\"QRCodeStyling\"] = factory();\n})(self, function() {\nreturn ","//---------------------------------------------------------------------\n//\n// QR Code Generator for JavaScript\n//\n// Copyright (c) 2009 Kazuhiko Arase\n//\n// URL: http://www.d-project.com/\n//\n// Licensed under the MIT license:\n// http://www.opensource.org/licenses/mit-license.php\n//\n// The word 'QR Code' is registered trademark of\n// DENSO WAVE INCORPORATED\n// http://www.denso-wave.com/qrcode/faqpatent-e.html\n//\n//---------------------------------------------------------------------\n\nvar qrcode = function() {\n\n //---------------------------------------------------------------------\n // qrcode\n //---------------------------------------------------------------------\n\n /**\n * qrcode\n * @param typeNumber 1 to 40\n * @param errorCorrectionLevel 'L','M','Q','H'\n */\n var qrcode = function(typeNumber, errorCorrectionLevel) {\n\n var PAD0 = 0xEC;\n var PAD1 = 0x11;\n\n var _typeNumber = typeNumber;\n var _errorCorrectionLevel = QRErrorCorrectionLevel[errorCorrectionLevel];\n var _modules = null;\n var _moduleCount = 0;\n var _dataCache = null;\n var _dataList = [];\n\n var _this = {};\n\n var makeImpl = function(test, maskPattern) {\n\n _moduleCount = _typeNumber * 4 + 17;\n _modules = function(moduleCount) {\n var modules = new Array(moduleCount);\n for (var row = 0; row < moduleCount; row += 1) {\n modules[row] = new Array(moduleCount);\n for (var col = 0; col < moduleCount; col += 1) {\n modules[row][col] = null;\n }\n }\n return modules;\n }(_moduleCount);\n\n setupPositionProbePattern(0, 0);\n setupPositionProbePattern(_moduleCount - 7, 0);\n setupPositionProbePattern(0, _moduleCount - 7);\n setupPositionAdjustPattern();\n setupTimingPattern();\n setupTypeInfo(test, maskPattern);\n\n if (_typeNumber >= 7) {\n setupTypeNumber(test);\n }\n\n if (_dataCache == null) {\n _dataCache = createData(_typeNumber, _errorCorrectionLevel, _dataList);\n }\n\n mapData(_dataCache, maskPattern);\n };\n\n var setupPositionProbePattern = function(row, col) {\n\n for (var r = -1; r <= 7; r += 1) {\n\n if (row + r <= -1 || _moduleCount <= row + r) continue;\n\n for (var c = -1; c <= 7; c += 1) {\n\n if (col + c <= -1 || _moduleCount <= col + c) continue;\n\n if ( (0 <= r && r <= 6 && (c == 0 || c == 6) )\n || (0 <= c && c <= 6 && (r == 0 || r == 6) )\n || (2 <= r && r <= 4 && 2 <= c && c <= 4) ) {\n _modules[row + r][col + c] = true;\n } else {\n _modules[row + r][col + c] = false;\n }\n }\n }\n };\n\n var getBestMaskPattern = function() {\n\n var minLostPoint = 0;\n var pattern = 0;\n\n for (var i = 0; i < 8; i += 1) {\n\n makeImpl(true, i);\n\n var lostPoint = QRUtil.getLostPoint(_this);\n\n if (i == 0 || minLostPoint > lostPoint) {\n minLostPoint = lostPoint;\n pattern = i;\n }\n }\n\n return pattern;\n };\n\n var setupTimingPattern = function() {\n\n for (var r = 8; r < _moduleCount - 8; r += 1) {\n if (_modules[r][6] != null) {\n continue;\n }\n _modules[r][6] = (r % 2 == 0);\n }\n\n for (var c = 8; c < _moduleCount - 8; c += 1) {\n if (_modules[6][c] != null) {\n continue;\n }\n _modules[6][c] = (c % 2 == 0);\n }\n };\n\n var setupPositionAdjustPattern = function() {\n\n var pos = QRUtil.getPatternPosition(_typeNumber);\n\n for (var i = 0; i < pos.length; i += 1) {\n\n for (var j = 0; j < pos.length; j += 1) {\n\n var row = pos[i];\n var col = pos[j];\n\n if (_modules[row][col] != null) {\n continue;\n }\n\n for (var r = -2; r <= 2; r += 1) {\n\n for (var c = -2; c <= 2; c += 1) {\n\n if (r == -2 || r == 2 || c == -2 || c == 2\n || (r == 0 && c == 0) ) {\n _modules[row + r][col + c] = true;\n } else {\n _modules[row + r][col + c] = false;\n }\n }\n }\n }\n }\n };\n\n var setupTypeNumber = function(test) {\n\n var bits = QRUtil.getBCHTypeNumber(_typeNumber);\n\n for (var i = 0; i < 18; i += 1) {\n var mod = (!test && ( (bits >> i) & 1) == 1);\n _modules[Math.floor(i / 3)][i % 3 + _moduleCount - 8 - 3] = mod;\n }\n\n for (var i = 0; i < 18; i += 1) {\n var mod = (!test && ( (bits >> i) & 1) == 1);\n _modules[i % 3 + _moduleCount - 8 - 3][Math.floor(i / 3)] = mod;\n }\n };\n\n var setupTypeInfo = function(test, maskPattern) {\n\n var data = (_errorCorrectionLevel << 3) | maskPattern;\n var bits = QRUtil.getBCHTypeInfo(data);\n\n // vertical\n for (var i = 0; i < 15; i += 1) {\n\n var mod = (!test && ( (bits >> i) & 1) == 1);\n\n if (i < 6) {\n _modules[i][8] = mod;\n } else if (i < 8) {\n _modules[i + 1][8] = mod;\n } else {\n _modules[_moduleCount - 15 + i][8] = mod;\n }\n }\n\n // horizontal\n for (var i = 0; i < 15; i += 1) {\n\n var mod = (!test && ( (bits >> i) & 1) == 1);\n\n if (i < 8) {\n _modules[8][_moduleCount - i - 1] = mod;\n } else if (i < 9) {\n _modules[8][15 - i - 1 + 1] = mod;\n } else {\n _modules[8][15 - i - 1] = mod;\n }\n }\n\n // fixed module\n _modules[_moduleCount - 8][8] = (!test);\n };\n\n var mapData = function(data, maskPattern) {\n\n var inc = -1;\n var row = _moduleCount - 1;\n var bitIndex = 7;\n var byteIndex = 0;\n var maskFunc = QRUtil.getMaskFunction(maskPattern);\n\n for (var col = _moduleCount - 1; col > 0; col -= 2) {\n\n if (col == 6) col -= 1;\n\n while (true) {\n\n for (var c = 0; c < 2; c += 1) {\n\n if (_modules[row][col - c] == null) {\n\n var dark = false;\n\n if (byteIndex < data.length) {\n dark = ( ( (data[byteIndex] >>> bitIndex) & 1) == 1);\n }\n\n var mask = maskFunc(row, col - c);\n\n if (mask) {\n dark = !dark;\n }\n\n _modules[row][col - c] = dark;\n bitIndex -= 1;\n\n if (bitIndex == -1) {\n byteIndex += 1;\n bitIndex = 7;\n }\n }\n }\n\n row += inc;\n\n if (row < 0 || _moduleCount <= row) {\n row -= inc;\n inc = -inc;\n break;\n }\n }\n }\n };\n\n var createBytes = function(buffer, rsBlocks) {\n\n var offset = 0;\n\n var maxDcCount = 0;\n var maxEcCount = 0;\n\n var dcdata = new Array(rsBlocks.length);\n var ecdata = new Array(rsBlocks.length);\n\n for (var r = 0; r < rsBlocks.length; r += 1) {\n\n var dcCount = rsBlocks[r].dataCount;\n var ecCount = rsBlocks[r].totalCount - dcCount;\n\n maxDcCount = Math.max(maxDcCount, dcCount);\n maxEcCount = Math.max(maxEcCount, ecCount);\n\n dcdata[r] = new Array(dcCount);\n\n for (var i = 0; i < dcdata[r].length; i += 1) {\n dcdata[r][i] = 0xff & buffer.getBuffer()[i + offset];\n }\n offset += dcCount;\n\n var rsPoly = QRUtil.getErrorCorrectPolynomial(ecCount);\n var rawPoly = qrPolynomial(dcdata[r], rsPoly.getLength() - 1);\n\n var modPoly = rawPoly.mod(rsPoly);\n ecdata[r] = new Array(rsPoly.getLength() - 1);\n for (var i = 0; i < ecdata[r].length; i += 1) {\n var modIndex = i + modPoly.getLength() - ecdata[r].length;\n ecdata[r][i] = (modIndex >= 0)? modPoly.getAt(modIndex) : 0;\n }\n }\n\n var totalCodeCount = 0;\n for (var i = 0; i < rsBlocks.length; i += 1) {\n totalCodeCount += rsBlocks[i].totalCount;\n }\n\n var data = new Array(totalCodeCount);\n var index = 0;\n\n for (var i = 0; i < maxDcCount; i += 1) {\n for (var r = 0; r < rsBlocks.length; r += 1) {\n if (i < dcdata[r].length) {\n data[index] = dcdata[r][i];\n index += 1;\n }\n }\n }\n\n for (var i = 0; i < maxEcCount; i += 1) {\n for (var r = 0; r < rsBlocks.length; r += 1) {\n if (i < ecdata[r].length) {\n data[index] = ecdata[r][i];\n index += 1;\n }\n }\n }\n\n return data;\n };\n\n var createData = function(typeNumber, errorCorrectionLevel, dataList) {\n\n var rsBlocks = QRRSBlock.getRSBlocks(typeNumber, errorCorrectionLevel);\n\n var buffer = qrBitBuffer();\n\n for (var i = 0; i < dataList.length; i += 1) {\n var data = dataList[i];\n buffer.put(data.getMode(), 4);\n buffer.put(data.getLength(), QRUtil.getLengthInBits(data.getMode(), typeNumber) );\n data.write(buffer);\n }\n\n // calc num max data.\n var totalDataCount = 0;\n for (var i = 0; i < rsBlocks.length; i += 1) {\n totalDataCount += rsBlocks[i].dataCount;\n }\n\n if (buffer.getLengthInBits() > totalDataCount * 8) {\n throw 'code length overflow. ('\n + buffer.getLengthInBits()\n + '>'\n + totalDataCount * 8\n + ')';\n }\n\n // end code\n if (buffer.getLengthInBits() + 4 <= totalDataCount * 8) {\n buffer.put(0, 4);\n }\n\n // padding\n while (buffer.getLengthInBits() % 8 != 0) {\n buffer.putBit(false);\n }\n\n // padding\n while (true) {\n\n if (buffer.getLengthInBits() >= totalDataCount * 8) {\n break;\n }\n buffer.put(PAD0, 8);\n\n if (buffer.getLengthInBits() >= totalDataCount * 8) {\n break;\n }\n buffer.put(PAD1, 8);\n }\n\n return createBytes(buffer, rsBlocks);\n };\n\n _this.addData = function(data, mode) {\n\n mode = mode || 'Byte';\n\n var newData = null;\n\n switch(mode) {\n case 'Numeric' :\n newData = qrNumber(data);\n break;\n case 'Alphanumeric' :\n newData = qrAlphaNum(data);\n break;\n case 'Byte' :\n newData = qr8BitByte(data);\n break;\n case 'Kanji' :\n newData = qrKanji(data);\n break;\n default :\n throw 'mode:' + mode;\n }\n\n _dataList.push(newData);\n _dataCache = null;\n };\n\n _this.isDark = function(row, col) {\n if (row < 0 || _moduleCount <= row || col < 0 || _moduleCount <= col) {\n throw row + ',' + col;\n }\n return _modules[row][col];\n };\n\n _this.getModuleCount = function() {\n return _moduleCount;\n };\n\n _this.make = function() {\n if (_typeNumber < 1) {\n var typeNumber = 1;\n\n for (; typeNumber < 40; typeNumber++) {\n var rsBlocks = QRRSBlock.getRSBlocks(typeNumber, _errorCorrectionLevel);\n var buffer = qrBitBuffer();\n\n for (var i = 0; i < _dataList.length; i++) {\n var data = _dataList[i];\n buffer.put(data.getMode(), 4);\n buffer.put(data.getLength(), QRUtil.getLengthInBits(data.getMode(), typeNumber) );\n data.write(buffer);\n }\n\n var totalDataCount = 0;\n for (var i = 0; i < rsBlocks.length; i++) {\n totalDataCount += rsBlocks[i].dataCount;\n }\n\n if (buffer.getLengthInBits() <= totalDataCount * 8) {\n break;\n }\n }\n\n _typeNumber = typeNumber;\n }\n\n makeImpl(false, getBestMaskPattern() );\n };\n\n _this.createTableTag = function(cellSize, margin) {\n\n cellSize = cellSize || 2;\n margin = (typeof margin == 'undefined')? cellSize * 4 : margin;\n\n var qrHtml = '';\n\n qrHtml += '' +\n escapeXml(title.text) + '' : '';\n qrSvg += (alt.text) ? '' +\n escapeXml(alt.text) + '' : '';\n qrSvg += '';\n qrSvg += '': escaped += '>'; break;\n case '&': escaped += '&'; break;\n case '\"': escaped += '"'; break;\n default : escaped += c; break;\n }\n }\n return escaped;\n };\n\n var _createHalfASCII = function(margin) {\n var cellSize = 1;\n margin = (typeof margin == 'undefined')? cellSize * 2 : margin;\n\n var size = _this.getModuleCount() * cellSize + margin * 2;\n var min = margin;\n var max = size - margin;\n\n var y, x, r1, r2, p;\n\n var blocks = {\n '██': '█',\n '█ ': '▀',\n ' █': '▄',\n ' ': ' '\n };\n\n var blocksLastLineNoMargin = {\n '██': '▀',\n '█ ': '▀',\n ' █': ' ',\n ' ': ' '\n };\n\n var ascii = '';\n for (y = 0; y < size; y += 2) {\n r1 = Math.floor((y - min) / cellSize);\n r2 = Math.floor((y + 1 - min) / cellSize);\n for (x = 0; x < size; x += 1) {\n p = '█';\n\n if (min <= x && x < max && min <= y && y < max && _this.isDark(r1, Math.floor((x - min) / cellSize))) {\n p = ' ';\n }\n\n if (min <= x && x < max && min <= y+1 && y+1 < max && _this.isDark(r2, Math.floor((x - min) / cellSize))) {\n p += ' ';\n }\n else {\n p += '█';\n }\n\n // Output 2 characters per pixel, to create full square. 1 character per pixels gives only half width of square.\n ascii += (margin < 1 && y+1 >= max) ? blocksLastLineNoMargin[p] : blocks[p];\n }\n\n ascii += '\\n';\n }\n\n if (size % 2 && margin > 0) {\n return ascii.substring(0, ascii.length - size - 1) + Array(size+1).join('▀');\n }\n\n return ascii.substring(0, ascii.length-1);\n };\n\n _this.createASCII = function(cellSize, margin) {\n cellSize = cellSize || 1;\n\n if (cellSize < 2) {\n return _createHalfASCII(margin);\n }\n\n cellSize -= 1;\n margin = (typeof margin == 'undefined')? cellSize * 2 : margin;\n\n var size = _this.getModuleCount() * cellSize + margin * 2;\n var min = margin;\n var max = size - margin;\n\n var y, x, r, p;\n\n var white = Array(cellSize+1).join('██');\n var black = Array(cellSize+1).join(' ');\n\n var ascii = '';\n var line = '';\n for (y = 0; y < size; y += 1) {\n r = Math.floor( (y - min) / cellSize);\n line = '';\n for (x = 0; x < size; x += 1) {\n p = 1;\n\n if (min <= x && x < max && min <= y && y < max && _this.isDark(r, Math.floor((x - min) / cellSize))) {\n p = 0;\n }\n\n // Output 2 characters per pixel, to create full square. 1 character per pixels gives only half width of square.\n line += p ? white : black;\n }\n\n for (r = 0; r < cellSize; r += 1) {\n ascii += line + '\\n';\n }\n }\n\n return ascii.substring(0, ascii.length-1);\n };\n\n _this.renderTo2dContext = function(context, cellSize) {\n cellSize = cellSize || 2;\n var length = _this.getModuleCount();\n for (var row = 0; row < length; row++) {\n for (var col = 0; col < length; col++) {\n context.fillStyle = _this.isDark(row, col) ? 'black' : 'white';\n context.fillRect(row * cellSize, col * cellSize, cellSize, cellSize);\n }\n }\n }\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qrcode.stringToBytes\n //---------------------------------------------------------------------\n\n qrcode.stringToBytesFuncs = {\n 'default' : function(s) {\n var bytes = [];\n for (var i = 0; i < s.length; i += 1) {\n var c = s.charCodeAt(i);\n bytes.push(c & 0xff);\n }\n return bytes;\n }\n };\n\n qrcode.stringToBytes = qrcode.stringToBytesFuncs['default'];\n\n //---------------------------------------------------------------------\n // qrcode.createStringToBytes\n //---------------------------------------------------------------------\n\n /**\n * @param unicodeData base64 string of byte array.\n * [16bit Unicode],[16bit Bytes], ...\n * @param numChars\n */\n qrcode.createStringToBytes = function(unicodeData, numChars) {\n\n // create conversion map.\n\n var unicodeMap = function() {\n\n var bin = base64DecodeInputStream(unicodeData);\n var read = function() {\n var b = bin.read();\n if (b == -1) throw 'eof';\n return b;\n };\n\n var count = 0;\n var unicodeMap = {};\n while (true) {\n var b0 = bin.read();\n if (b0 == -1) break;\n var b1 = read();\n var b2 = read();\n var b3 = read();\n var k = String.fromCharCode( (b0 << 8) | b1);\n var v = (b2 << 8) | b3;\n unicodeMap[k] = v;\n count += 1;\n }\n if (count != numChars) {\n throw count + ' != ' + numChars;\n }\n\n return unicodeMap;\n }();\n\n var unknownChar = '?'.charCodeAt(0);\n\n return function(s) {\n var bytes = [];\n for (var i = 0; i < s.length; i += 1) {\n var c = s.charCodeAt(i);\n if (c < 128) {\n bytes.push(c);\n } else {\n var b = unicodeMap[s.charAt(i)];\n if (typeof b == 'number') {\n if ( (b & 0xff) == b) {\n // 1byte\n bytes.push(b);\n } else {\n // 2bytes\n bytes.push(b >>> 8);\n bytes.push(b & 0xff);\n }\n } else {\n bytes.push(unknownChar);\n }\n }\n }\n return bytes;\n };\n };\n\n //---------------------------------------------------------------------\n // QRMode\n //---------------------------------------------------------------------\n\n var QRMode = {\n MODE_NUMBER : 1 << 0,\n MODE_ALPHA_NUM : 1 << 1,\n MODE_8BIT_BYTE : 1 << 2,\n MODE_KANJI : 1 << 3\n };\n\n //---------------------------------------------------------------------\n // QRErrorCorrectionLevel\n //---------------------------------------------------------------------\n\n var QRErrorCorrectionLevel = {\n L : 1,\n M : 0,\n Q : 3,\n H : 2\n };\n\n //---------------------------------------------------------------------\n // QRMaskPattern\n //---------------------------------------------------------------------\n\n var QRMaskPattern = {\n PATTERN000 : 0,\n PATTERN001 : 1,\n PATTERN010 : 2,\n PATTERN011 : 3,\n PATTERN100 : 4,\n PATTERN101 : 5,\n PATTERN110 : 6,\n PATTERN111 : 7\n };\n\n //---------------------------------------------------------------------\n // QRUtil\n //---------------------------------------------------------------------\n\n var QRUtil = function() {\n\n var PATTERN_POSITION_TABLE = [\n [],\n [6, 18],\n [6, 22],\n [6, 26],\n [6, 30],\n [6, 34],\n [6, 22, 38],\n [6, 24, 42],\n [6, 26, 46],\n [6, 28, 50],\n [6, 30, 54],\n [6, 32, 58],\n [6, 34, 62],\n [6, 26, 46, 66],\n [6, 26, 48, 70],\n [6, 26, 50, 74],\n [6, 30, 54, 78],\n [6, 30, 56, 82],\n [6, 30, 58, 86],\n [6, 34, 62, 90],\n [6, 28, 50, 72, 94],\n [6, 26, 50, 74, 98],\n [6, 30, 54, 78, 102],\n [6, 28, 54, 80, 106],\n [6, 32, 58, 84, 110],\n [6, 30, 58, 86, 114],\n [6, 34, 62, 90, 118],\n [6, 26, 50, 74, 98, 122],\n [6, 30, 54, 78, 102, 126],\n [6, 26, 52, 78, 104, 130],\n [6, 30, 56, 82, 108, 134],\n [6, 34, 60, 86, 112, 138],\n [6, 30, 58, 86, 114, 142],\n [6, 34, 62, 90, 118, 146],\n [6, 30, 54, 78, 102, 126, 150],\n [6, 24, 50, 76, 102, 128, 154],\n [6, 28, 54, 80, 106, 132, 158],\n [6, 32, 58, 84, 110, 136, 162],\n [6, 26, 54, 82, 110, 138, 166],\n [6, 30, 58, 86, 114, 142, 170]\n ];\n var G15 = (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0);\n var G18 = (1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | (1 << 2) | (1 << 0);\n var G15_MASK = (1 << 14) | (1 << 12) | (1 << 10) | (1 << 4) | (1 << 1);\n\n var _this = {};\n\n var getBCHDigit = function(data) {\n var digit = 0;\n while (data != 0) {\n digit += 1;\n data >>>= 1;\n }\n return digit;\n };\n\n _this.getBCHTypeInfo = function(data) {\n var d = data << 10;\n while (getBCHDigit(d) - getBCHDigit(G15) >= 0) {\n d ^= (G15 << (getBCHDigit(d) - getBCHDigit(G15) ) );\n }\n return ( (data << 10) | d) ^ G15_MASK;\n };\n\n _this.getBCHTypeNumber = function(data) {\n var d = data << 12;\n while (getBCHDigit(d) - getBCHDigit(G18) >= 0) {\n d ^= (G18 << (getBCHDigit(d) - getBCHDigit(G18) ) );\n }\n return (data << 12) | d;\n };\n\n _this.getPatternPosition = function(typeNumber) {\n return PATTERN_POSITION_TABLE[typeNumber - 1];\n };\n\n _this.getMaskFunction = function(maskPattern) {\n\n switch (maskPattern) {\n\n case QRMaskPattern.PATTERN000 :\n return function(i, j) { return (i + j) % 2 == 0; };\n case QRMaskPattern.PATTERN001 :\n return function(i, j) { return i % 2 == 0; };\n case QRMaskPattern.PATTERN010 :\n return function(i, j) { return j % 3 == 0; };\n case QRMaskPattern.PATTERN011 :\n return function(i, j) { return (i + j) % 3 == 0; };\n case QRMaskPattern.PATTERN100 :\n return function(i, j) { return (Math.floor(i / 2) + Math.floor(j / 3) ) % 2 == 0; };\n case QRMaskPattern.PATTERN101 :\n return function(i, j) { return (i * j) % 2 + (i * j) % 3 == 0; };\n case QRMaskPattern.PATTERN110 :\n return function(i, j) { return ( (i * j) % 2 + (i * j) % 3) % 2 == 0; };\n case QRMaskPattern.PATTERN111 :\n return function(i, j) { return ( (i * j) % 3 + (i + j) % 2) % 2 == 0; };\n\n default :\n throw 'bad maskPattern:' + maskPattern;\n }\n };\n\n _this.getErrorCorrectPolynomial = function(errorCorrectLength) {\n var a = qrPolynomial([1], 0);\n for (var i = 0; i < errorCorrectLength; i += 1) {\n a = a.multiply(qrPolynomial([1, QRMath.gexp(i)], 0) );\n }\n return a;\n };\n\n _this.getLengthInBits = function(mode, type) {\n\n if (1 <= type && type < 10) {\n\n // 1 - 9\n\n switch(mode) {\n case QRMode.MODE_NUMBER : return 10;\n case QRMode.MODE_ALPHA_NUM : return 9;\n case QRMode.MODE_8BIT_BYTE : return 8;\n case QRMode.MODE_KANJI : return 8;\n default :\n throw 'mode:' + mode;\n }\n\n } else if (type < 27) {\n\n // 10 - 26\n\n switch(mode) {\n case QRMode.MODE_NUMBER : return 12;\n case QRMode.MODE_ALPHA_NUM : return 11;\n case QRMode.MODE_8BIT_BYTE : return 16;\n case QRMode.MODE_KANJI : return 10;\n default :\n throw 'mode:' + mode;\n }\n\n } else if (type < 41) {\n\n // 27 - 40\n\n switch(mode) {\n case QRMode.MODE_NUMBER : return 14;\n case QRMode.MODE_ALPHA_NUM : return 13;\n case QRMode.MODE_8BIT_BYTE : return 16;\n case QRMode.MODE_KANJI : return 12;\n default :\n throw 'mode:' + mode;\n }\n\n } else {\n throw 'type:' + type;\n }\n };\n\n _this.getLostPoint = function(qrcode) {\n\n var moduleCount = qrcode.getModuleCount();\n\n var lostPoint = 0;\n\n // LEVEL1\n\n for (var row = 0; row < moduleCount; row += 1) {\n for (var col = 0; col < moduleCount; col += 1) {\n\n var sameCount = 0;\n var dark = qrcode.isDark(row, col);\n\n for (var r = -1; r <= 1; r += 1) {\n\n if (row + r < 0 || moduleCount <= row + r) {\n continue;\n }\n\n for (var c = -1; c <= 1; c += 1) {\n\n if (col + c < 0 || moduleCount <= col + c) {\n continue;\n }\n\n if (r == 0 && c == 0) {\n continue;\n }\n\n if (dark == qrcode.isDark(row + r, col + c) ) {\n sameCount += 1;\n }\n }\n }\n\n if (sameCount > 5) {\n lostPoint += (3 + sameCount - 5);\n }\n }\n };\n\n // LEVEL2\n\n for (var row = 0; row < moduleCount - 1; row += 1) {\n for (var col = 0; col < moduleCount - 1; col += 1) {\n var count = 0;\n if (qrcode.isDark(row, col) ) count += 1;\n if (qrcode.isDark(row + 1, col) ) count += 1;\n if (qrcode.isDark(row, col + 1) ) count += 1;\n if (qrcode.isDark(row + 1, col + 1) ) count += 1;\n if (count == 0 || count == 4) {\n lostPoint += 3;\n }\n }\n }\n\n // LEVEL3\n\n for (var row = 0; row < moduleCount; row += 1) {\n for (var col = 0; col < moduleCount - 6; col += 1) {\n if (qrcode.isDark(row, col)\n && !qrcode.isDark(row, col + 1)\n && qrcode.isDark(row, col + 2)\n && qrcode.isDark(row, col + 3)\n && qrcode.isDark(row, col + 4)\n && !qrcode.isDark(row, col + 5)\n && qrcode.isDark(row, col + 6) ) {\n lostPoint += 40;\n }\n }\n }\n\n for (var col = 0; col < moduleCount; col += 1) {\n for (var row = 0; row < moduleCount - 6; row += 1) {\n if (qrcode.isDark(row, col)\n && !qrcode.isDark(row + 1, col)\n && qrcode.isDark(row + 2, col)\n && qrcode.isDark(row + 3, col)\n && qrcode.isDark(row + 4, col)\n && !qrcode.isDark(row + 5, col)\n && qrcode.isDark(row + 6, col) ) {\n lostPoint += 40;\n }\n }\n }\n\n // LEVEL4\n\n var darkCount = 0;\n\n for (var col = 0; col < moduleCount; col += 1) {\n for (var row = 0; row < moduleCount; row += 1) {\n if (qrcode.isDark(row, col) ) {\n darkCount += 1;\n }\n }\n }\n\n var ratio = Math.abs(100 * darkCount / moduleCount / moduleCount - 50) / 5;\n lostPoint += ratio * 10;\n\n return lostPoint;\n };\n\n return _this;\n }();\n\n //---------------------------------------------------------------------\n // QRMath\n //---------------------------------------------------------------------\n\n var QRMath = function() {\n\n var EXP_TABLE = new Array(256);\n var LOG_TABLE = new Array(256);\n\n // initialize tables\n for (var i = 0; i < 8; i += 1) {\n EXP_TABLE[i] = 1 << i;\n }\n for (var i = 8; i < 256; i += 1) {\n EXP_TABLE[i] = EXP_TABLE[i - 4]\n ^ EXP_TABLE[i - 5]\n ^ EXP_TABLE[i - 6]\n ^ EXP_TABLE[i - 8];\n }\n for (var i = 0; i < 255; i += 1) {\n LOG_TABLE[EXP_TABLE[i] ] = i;\n }\n\n var _this = {};\n\n _this.glog = function(n) {\n\n if (n < 1) {\n throw 'glog(' + n + ')';\n }\n\n return LOG_TABLE[n];\n };\n\n _this.gexp = function(n) {\n\n while (n < 0) {\n n += 255;\n }\n\n while (n >= 256) {\n n -= 255;\n }\n\n return EXP_TABLE[n];\n };\n\n return _this;\n }();\n\n //---------------------------------------------------------------------\n // qrPolynomial\n //---------------------------------------------------------------------\n\n function qrPolynomial(num, shift) {\n\n if (typeof num.length == 'undefined') {\n throw num.length + '/' + shift;\n }\n\n var _num = function() {\n var offset = 0;\n while (offset < num.length && num[offset] == 0) {\n offset += 1;\n }\n var _num = new Array(num.length - offset + shift);\n for (var i = 0; i < num.length - offset; i += 1) {\n _num[i] = num[i + offset];\n }\n return _num;\n }();\n\n var _this = {};\n\n _this.getAt = function(index) {\n return _num[index];\n };\n\n _this.getLength = function() {\n return _num.length;\n };\n\n _this.multiply = function(e) {\n\n var num = new Array(_this.getLength() + e.getLength() - 1);\n\n for (var i = 0; i < _this.getLength(); i += 1) {\n for (var j = 0; j < e.getLength(); j += 1) {\n num[i + j] ^= QRMath.gexp(QRMath.glog(_this.getAt(i) ) + QRMath.glog(e.getAt(j) ) );\n }\n }\n\n return qrPolynomial(num, 0);\n };\n\n _this.mod = function(e) {\n\n if (_this.getLength() - e.getLength() < 0) {\n return _this;\n }\n\n var ratio = QRMath.glog(_this.getAt(0) ) - QRMath.glog(e.getAt(0) );\n\n var num = new Array(_this.getLength() );\n for (var i = 0; i < _this.getLength(); i += 1) {\n num[i] = _this.getAt(i);\n }\n\n for (var i = 0; i < e.getLength(); i += 1) {\n num[i] ^= QRMath.gexp(QRMath.glog(e.getAt(i) ) + ratio);\n }\n\n // recursive call\n return qrPolynomial(num, 0).mod(e);\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // QRRSBlock\n //---------------------------------------------------------------------\n\n var QRRSBlock = function() {\n\n var RS_BLOCK_TABLE = [\n\n // L\n // M\n // Q\n // H\n\n // 1\n [1, 26, 19],\n [1, 26, 16],\n [1, 26, 13],\n [1, 26, 9],\n\n // 2\n [1, 44, 34],\n [1, 44, 28],\n [1, 44, 22],\n [1, 44, 16],\n\n // 3\n [1, 70, 55],\n [1, 70, 44],\n [2, 35, 17],\n [2, 35, 13],\n\n // 4\n [1, 100, 80],\n [2, 50, 32],\n [2, 50, 24],\n [4, 25, 9],\n\n // 5\n [1, 134, 108],\n [2, 67, 43],\n [2, 33, 15, 2, 34, 16],\n [2, 33, 11, 2, 34, 12],\n\n // 6\n [2, 86, 68],\n [4, 43, 27],\n [4, 43, 19],\n [4, 43, 15],\n\n // 7\n [2, 98, 78],\n [4, 49, 31],\n [2, 32, 14, 4, 33, 15],\n [4, 39, 13, 1, 40, 14],\n\n // 8\n [2, 121, 97],\n [2, 60, 38, 2, 61, 39],\n [4, 40, 18, 2, 41, 19],\n [4, 40, 14, 2, 41, 15],\n\n // 9\n [2, 146, 116],\n [3, 58, 36, 2, 59, 37],\n [4, 36, 16, 4, 37, 17],\n [4, 36, 12, 4, 37, 13],\n\n // 10\n [2, 86, 68, 2, 87, 69],\n [4, 69, 43, 1, 70, 44],\n [6, 43, 19, 2, 44, 20],\n [6, 43, 15, 2, 44, 16],\n\n // 11\n [4, 101, 81],\n [1, 80, 50, 4, 81, 51],\n [4, 50, 22, 4, 51, 23],\n [3, 36, 12, 8, 37, 13],\n\n // 12\n [2, 116, 92, 2, 117, 93],\n [6, 58, 36, 2, 59, 37],\n [4, 46, 20, 6, 47, 21],\n [7, 42, 14, 4, 43, 15],\n\n // 13\n [4, 133, 107],\n [8, 59, 37, 1, 60, 38],\n [8, 44, 20, 4, 45, 21],\n [12, 33, 11, 4, 34, 12],\n\n // 14\n [3, 145, 115, 1, 146, 116],\n [4, 64, 40, 5, 65, 41],\n [11, 36, 16, 5, 37, 17],\n [11, 36, 12, 5, 37, 13],\n\n // 15\n [5, 109, 87, 1, 110, 88],\n [5, 65, 41, 5, 66, 42],\n [5, 54, 24, 7, 55, 25],\n [11, 36, 12, 7, 37, 13],\n\n // 16\n [5, 122, 98, 1, 123, 99],\n [7, 73, 45, 3, 74, 46],\n [15, 43, 19, 2, 44, 20],\n [3, 45, 15, 13, 46, 16],\n\n // 17\n [1, 135, 107, 5, 136, 108],\n [10, 74, 46, 1, 75, 47],\n [1, 50, 22, 15, 51, 23],\n [2, 42, 14, 17, 43, 15],\n\n // 18\n [5, 150, 120, 1, 151, 121],\n [9, 69, 43, 4, 70, 44],\n [17, 50, 22, 1, 51, 23],\n [2, 42, 14, 19, 43, 15],\n\n // 19\n [3, 141, 113, 4, 142, 114],\n [3, 70, 44, 11, 71, 45],\n [17, 47, 21, 4, 48, 22],\n [9, 39, 13, 16, 40, 14],\n\n // 20\n [3, 135, 107, 5, 136, 108],\n [3, 67, 41, 13, 68, 42],\n [15, 54, 24, 5, 55, 25],\n [15, 43, 15, 10, 44, 16],\n\n // 21\n [4, 144, 116, 4, 145, 117],\n [17, 68, 42],\n [17, 50, 22, 6, 51, 23],\n [19, 46, 16, 6, 47, 17],\n\n // 22\n [2, 139, 111, 7, 140, 112],\n [17, 74, 46],\n [7, 54, 24, 16, 55, 25],\n [34, 37, 13],\n\n // 23\n [4, 151, 121, 5, 152, 122],\n [4, 75, 47, 14, 76, 48],\n [11, 54, 24, 14, 55, 25],\n [16, 45, 15, 14, 46, 16],\n\n // 24\n [6, 147, 117, 4, 148, 118],\n [6, 73, 45, 14, 74, 46],\n [11, 54, 24, 16, 55, 25],\n [30, 46, 16, 2, 47, 17],\n\n // 25\n [8, 132, 106, 4, 133, 107],\n [8, 75, 47, 13, 76, 48],\n [7, 54, 24, 22, 55, 25],\n [22, 45, 15, 13, 46, 16],\n\n // 26\n [10, 142, 114, 2, 143, 115],\n [19, 74, 46, 4, 75, 47],\n [28, 50, 22, 6, 51, 23],\n [33, 46, 16, 4, 47, 17],\n\n // 27\n [8, 152, 122, 4, 153, 123],\n [22, 73, 45, 3, 74, 46],\n [8, 53, 23, 26, 54, 24],\n [12, 45, 15, 28, 46, 16],\n\n // 28\n [3, 147, 117, 10, 148, 118],\n [3, 73, 45, 23, 74, 46],\n [4, 54, 24, 31, 55, 25],\n [11, 45, 15, 31, 46, 16],\n\n // 29\n [7, 146, 116, 7, 147, 117],\n [21, 73, 45, 7, 74, 46],\n [1, 53, 23, 37, 54, 24],\n [19, 45, 15, 26, 46, 16],\n\n // 30\n [5, 145, 115, 10, 146, 116],\n [19, 75, 47, 10, 76, 48],\n [15, 54, 24, 25, 55, 25],\n [23, 45, 15, 25, 46, 16],\n\n // 31\n [13, 145, 115, 3, 146, 116],\n [2, 74, 46, 29, 75, 47],\n [42, 54, 24, 1, 55, 25],\n [23, 45, 15, 28, 46, 16],\n\n // 32\n [17, 145, 115],\n [10, 74, 46, 23, 75, 47],\n [10, 54, 24, 35, 55, 25],\n [19, 45, 15, 35, 46, 16],\n\n // 33\n [17, 145, 115, 1, 146, 116],\n [14, 74, 46, 21, 75, 47],\n [29, 54, 24, 19, 55, 25],\n [11, 45, 15, 46, 46, 16],\n\n // 34\n [13, 145, 115, 6, 146, 116],\n [14, 74, 46, 23, 75, 47],\n [44, 54, 24, 7, 55, 25],\n [59, 46, 16, 1, 47, 17],\n\n // 35\n [12, 151, 121, 7, 152, 122],\n [12, 75, 47, 26, 76, 48],\n [39, 54, 24, 14, 55, 25],\n [22, 45, 15, 41, 46, 16],\n\n // 36\n [6, 151, 121, 14, 152, 122],\n [6, 75, 47, 34, 76, 48],\n [46, 54, 24, 10, 55, 25],\n [2, 45, 15, 64, 46, 16],\n\n // 37\n [17, 152, 122, 4, 153, 123],\n [29, 74, 46, 14, 75, 47],\n [49, 54, 24, 10, 55, 25],\n [24, 45, 15, 46, 46, 16],\n\n // 38\n [4, 152, 122, 18, 153, 123],\n [13, 74, 46, 32, 75, 47],\n [48, 54, 24, 14, 55, 25],\n [42, 45, 15, 32, 46, 16],\n\n // 39\n [20, 147, 117, 4, 148, 118],\n [40, 75, 47, 7, 76, 48],\n [43, 54, 24, 22, 55, 25],\n [10, 45, 15, 67, 46, 16],\n\n // 40\n [19, 148, 118, 6, 149, 119],\n [18, 75, 47, 31, 76, 48],\n [34, 54, 24, 34, 55, 25],\n [20, 45, 15, 61, 46, 16]\n ];\n\n var qrRSBlock = function(totalCount, dataCount) {\n var _this = {};\n _this.totalCount = totalCount;\n _this.dataCount = dataCount;\n return _this;\n };\n\n var _this = {};\n\n var getRsBlockTable = function(typeNumber, errorCorrectionLevel) {\n\n switch(errorCorrectionLevel) {\n case QRErrorCorrectionLevel.L :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 0];\n case QRErrorCorrectionLevel.M :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 1];\n case QRErrorCorrectionLevel.Q :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 2];\n case QRErrorCorrectionLevel.H :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 3];\n default :\n return undefined;\n }\n };\n\n _this.getRSBlocks = function(typeNumber, errorCorrectionLevel) {\n\n var rsBlock = getRsBlockTable(typeNumber, errorCorrectionLevel);\n\n if (typeof rsBlock == 'undefined') {\n throw 'bad rs block @ typeNumber:' + typeNumber +\n '/errorCorrectionLevel:' + errorCorrectionLevel;\n }\n\n var length = rsBlock.length / 3;\n\n var list = [];\n\n for (var i = 0; i < length; i += 1) {\n\n var count = rsBlock[i * 3 + 0];\n var totalCount = rsBlock[i * 3 + 1];\n var dataCount = rsBlock[i * 3 + 2];\n\n for (var j = 0; j < count; j += 1) {\n list.push(qrRSBlock(totalCount, dataCount) );\n }\n }\n\n return list;\n };\n\n return _this;\n }();\n\n //---------------------------------------------------------------------\n // qrBitBuffer\n //---------------------------------------------------------------------\n\n var qrBitBuffer = function() {\n\n var _buffer = [];\n var _length = 0;\n\n var _this = {};\n\n _this.getBuffer = function() {\n return _buffer;\n };\n\n _this.getAt = function(index) {\n var bufIndex = Math.floor(index / 8);\n return ( (_buffer[bufIndex] >>> (7 - index % 8) ) & 1) == 1;\n };\n\n _this.put = function(num, length) {\n for (var i = 0; i < length; i += 1) {\n _this.putBit( ( (num >>> (length - i - 1) ) & 1) == 1);\n }\n };\n\n _this.getLengthInBits = function() {\n return _length;\n };\n\n _this.putBit = function(bit) {\n\n var bufIndex = Math.floor(_length / 8);\n if (_buffer.length <= bufIndex) {\n _buffer.push(0);\n }\n\n if (bit) {\n _buffer[bufIndex] |= (0x80 >>> (_length % 8) );\n }\n\n _length += 1;\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qrNumber\n //---------------------------------------------------------------------\n\n var qrNumber = function(data) {\n\n var _mode = QRMode.MODE_NUMBER;\n var _data = data;\n\n var _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return _data.length;\n };\n\n _this.write = function(buffer) {\n\n var data = _data;\n\n var i = 0;\n\n while (i + 2 < data.length) {\n buffer.put(strToNum(data.substring(i, i + 3) ), 10);\n i += 3;\n }\n\n if (i < data.length) {\n if (data.length - i == 1) {\n buffer.put(strToNum(data.substring(i, i + 1) ), 4);\n } else if (data.length - i == 2) {\n buffer.put(strToNum(data.substring(i, i + 2) ), 7);\n }\n }\n };\n\n var strToNum = function(s) {\n var num = 0;\n for (var i = 0; i < s.length; i += 1) {\n num = num * 10 + chatToNum(s.charAt(i) );\n }\n return num;\n };\n\n var chatToNum = function(c) {\n if ('0' <= c && c <= '9') {\n return c.charCodeAt(0) - '0'.charCodeAt(0);\n }\n throw 'illegal char :' + c;\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qrAlphaNum\n //---------------------------------------------------------------------\n\n var qrAlphaNum = function(data) {\n\n var _mode = QRMode.MODE_ALPHA_NUM;\n var _data = data;\n\n var _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return _data.length;\n };\n\n _this.write = function(buffer) {\n\n var s = _data;\n\n var i = 0;\n\n while (i + 1 < s.length) {\n buffer.put(\n getCode(s.charAt(i) ) * 45 +\n getCode(s.charAt(i + 1) ), 11);\n i += 2;\n }\n\n if (i < s.length) {\n buffer.put(getCode(s.charAt(i) ), 6);\n }\n };\n\n var getCode = function(c) {\n\n if ('0' <= c && c <= '9') {\n return c.charCodeAt(0) - '0'.charCodeAt(0);\n } else if ('A' <= c && c <= 'Z') {\n return c.charCodeAt(0) - 'A'.charCodeAt(0) + 10;\n } else {\n switch (c) {\n case ' ' : return 36;\n case '$' : return 37;\n case '%' : return 38;\n case '*' : return 39;\n case '+' : return 40;\n case '-' : return 41;\n case '.' : return 42;\n case '/' : return 43;\n case ':' : return 44;\n default :\n throw 'illegal char :' + c;\n }\n }\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qr8BitByte\n //---------------------------------------------------------------------\n\n var qr8BitByte = function(data) {\n\n var _mode = QRMode.MODE_8BIT_BYTE;\n var _data = data;\n var _bytes = qrcode.stringToBytes(data);\n\n var _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return _bytes.length;\n };\n\n _this.write = function(buffer) {\n for (var i = 0; i < _bytes.length; i += 1) {\n buffer.put(_bytes[i], 8);\n }\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qrKanji\n //---------------------------------------------------------------------\n\n var qrKanji = function(data) {\n\n var _mode = QRMode.MODE_KANJI;\n var _data = data;\n\n var stringToBytes = qrcode.stringToBytesFuncs['SJIS'];\n if (!stringToBytes) {\n throw 'sjis not supported.';\n }\n !function(c, code) {\n // self test for sjis support.\n var test = stringToBytes(c);\n if (test.length != 2 || ( (test[0] << 8) | test[1]) != code) {\n throw 'sjis not supported.';\n }\n }('\\u53cb', 0x9746);\n\n var _bytes = stringToBytes(data);\n\n var _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return ~~(_bytes.length / 2);\n };\n\n _this.write = function(buffer) {\n\n var data = _bytes;\n\n var i = 0;\n\n while (i + 1 < data.length) {\n\n var c = ( (0xff & data[i]) << 8) | (0xff & data[i + 1]);\n\n if (0x8140 <= c && c <= 0x9FFC) {\n c -= 0x8140;\n } else if (0xE040 <= c && c <= 0xEBBF) {\n c -= 0xC140;\n } else {\n throw 'illegal char at ' + (i + 1) + '/' + c;\n }\n\n c = ( (c >>> 8) & 0xff) * 0xC0 + (c & 0xff);\n\n buffer.put(c, 13);\n\n i += 2;\n }\n\n if (i < data.length) {\n throw 'illegal char at ' + (i + 1);\n }\n };\n\n return _this;\n };\n\n //=====================================================================\n // GIF Support etc.\n //\n\n //---------------------------------------------------------------------\n // byteArrayOutputStream\n //---------------------------------------------------------------------\n\n var byteArrayOutputStream = function() {\n\n var _bytes = [];\n\n var _this = {};\n\n _this.writeByte = function(b) {\n _bytes.push(b & 0xff);\n };\n\n _this.writeShort = function(i) {\n _this.writeByte(i);\n _this.writeByte(i >>> 8);\n };\n\n _this.writeBytes = function(b, off, len) {\n off = off || 0;\n len = len || b.length;\n for (var i = 0; i < len; i += 1) {\n _this.writeByte(b[i + off]);\n }\n };\n\n _this.writeString = function(s) {\n for (var i = 0; i < s.length; i += 1) {\n _this.writeByte(s.charCodeAt(i) );\n }\n };\n\n _this.toByteArray = function() {\n return _bytes;\n };\n\n _this.toString = function() {\n var s = '';\n s += '[';\n for (var i = 0; i < _bytes.length; i += 1) {\n if (i > 0) {\n s += ',';\n }\n s += _bytes[i];\n }\n s += ']';\n return s;\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // base64EncodeOutputStream\n //---------------------------------------------------------------------\n\n var base64EncodeOutputStream = function() {\n\n var _buffer = 0;\n var _buflen = 0;\n var _length = 0;\n var _base64 = '';\n\n var _this = {};\n\n var writeEncoded = function(b) {\n _base64 += String.fromCharCode(encode(b & 0x3f) );\n };\n\n var encode = function(n) {\n if (n < 0) {\n // error.\n } else if (n < 26) {\n return 0x41 + n;\n } else if (n < 52) {\n return 0x61 + (n - 26);\n } else if (n < 62) {\n return 0x30 + (n - 52);\n } else if (n == 62) {\n return 0x2b;\n } else if (n == 63) {\n return 0x2f;\n }\n throw 'n:' + n;\n };\n\n _this.writeByte = function(n) {\n\n _buffer = (_buffer << 8) | (n & 0xff);\n _buflen += 8;\n _length += 1;\n\n while (_buflen >= 6) {\n writeEncoded(_buffer >>> (_buflen - 6) );\n _buflen -= 6;\n }\n };\n\n _this.flush = function() {\n\n if (_buflen > 0) {\n writeEncoded(_buffer << (6 - _buflen) );\n _buffer = 0;\n _buflen = 0;\n }\n\n if (_length % 3 != 0) {\n // padding\n var padlen = 3 - _length % 3;\n for (var i = 0; i < padlen; i += 1) {\n _base64 += '=';\n }\n }\n };\n\n _this.toString = function() {\n return _base64;\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // base64DecodeInputStream\n //---------------------------------------------------------------------\n\n var base64DecodeInputStream = function(str) {\n\n var _str = str;\n var _pos = 0;\n var _buffer = 0;\n var _buflen = 0;\n\n var _this = {};\n\n _this.read = function() {\n\n while (_buflen < 8) {\n\n if (_pos >= _str.length) {\n if (_buflen == 0) {\n return -1;\n }\n throw 'unexpected end of file./' + _buflen;\n }\n\n var c = _str.charAt(_pos);\n _pos += 1;\n\n if (c == '=') {\n _buflen = 0;\n return -1;\n } else if (c.match(/^\\s$/) ) {\n // ignore if whitespace.\n continue;\n }\n\n _buffer = (_buffer << 6) | decode(c.charCodeAt(0) );\n _buflen += 6;\n }\n\n var n = (_buffer >>> (_buflen - 8) ) & 0xff;\n _buflen -= 8;\n return n;\n };\n\n var decode = function(c) {\n if (0x41 <= c && c <= 0x5a) {\n return c - 0x41;\n } else if (0x61 <= c && c <= 0x7a) {\n return c - 0x61 + 26;\n } else if (0x30 <= c && c <= 0x39) {\n return c - 0x30 + 52;\n } else if (c == 0x2b) {\n return 62;\n } else if (c == 0x2f) {\n return 63;\n } else {\n throw 'c:' + c;\n }\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // gifImage (B/W)\n //---------------------------------------------------------------------\n\n var gifImage = function(width, height) {\n\n var _width = width;\n var _height = height;\n var _data = new Array(width * height);\n\n var _this = {};\n\n _this.setPixel = function(x, y, pixel) {\n _data[y * _width + x] = pixel;\n };\n\n _this.write = function(out) {\n\n //---------------------------------\n // GIF Signature\n\n out.writeString('GIF87a');\n\n //---------------------------------\n // Screen Descriptor\n\n out.writeShort(_width);\n out.writeShort(_height);\n\n out.writeByte(0x80); // 2bit\n out.writeByte(0);\n out.writeByte(0);\n\n //---------------------------------\n // Global Color Map\n\n // black\n out.writeByte(0x00);\n out.writeByte(0x00);\n out.writeByte(0x00);\n\n // white\n out.writeByte(0xff);\n out.writeByte(0xff);\n out.writeByte(0xff);\n\n //---------------------------------\n // Image Descriptor\n\n out.writeString(',');\n out.writeShort(0);\n out.writeShort(0);\n out.writeShort(_width);\n out.writeShort(_height);\n out.writeByte(0);\n\n //---------------------------------\n // Local Color Map\n\n //---------------------------------\n // Raster Data\n\n var lzwMinCodeSize = 2;\n var raster = getLZWRaster(lzwMinCodeSize);\n\n out.writeByte(lzwMinCodeSize);\n\n var offset = 0;\n\n while (raster.length - offset > 255) {\n out.writeByte(255);\n out.writeBytes(raster, offset, 255);\n offset += 255;\n }\n\n out.writeByte(raster.length - offset);\n out.writeBytes(raster, offset, raster.length - offset);\n out.writeByte(0x00);\n\n //---------------------------------\n // GIF Terminator\n out.writeString(';');\n };\n\n var bitOutputStream = function(out) {\n\n var _out = out;\n var _bitLength = 0;\n var _bitBuffer = 0;\n\n var _this = {};\n\n _this.write = function(data, length) {\n\n if ( (data >>> length) != 0) {\n throw 'length over';\n }\n\n while (_bitLength + length >= 8) {\n _out.writeByte(0xff & ( (data << _bitLength) | _bitBuffer) );\n length -= (8 - _bitLength);\n data >>>= (8 - _bitLength);\n _bitBuffer = 0;\n _bitLength = 0;\n }\n\n _bitBuffer = (data << _bitLength) | _bitBuffer;\n _bitLength = _bitLength + length;\n };\n\n _this.flush = function() {\n if (_bitLength > 0) {\n _out.writeByte(_bitBuffer);\n }\n };\n\n return _this;\n };\n\n var getLZWRaster = function(lzwMinCodeSize) {\n\n var clearCode = 1 << lzwMinCodeSize;\n var endCode = (1 << lzwMinCodeSize) + 1;\n var bitLength = lzwMinCodeSize + 1;\n\n // Setup LZWTable\n var table = lzwTable();\n\n for (var i = 0; i < clearCode; i += 1) {\n table.add(String.fromCharCode(i) );\n }\n table.add(String.fromCharCode(clearCode) );\n table.add(String.fromCharCode(endCode) );\n\n var byteOut = byteArrayOutputStream();\n var bitOut = bitOutputStream(byteOut);\n\n // clear code\n bitOut.write(clearCode, bitLength);\n\n var dataIndex = 0;\n\n var s = String.fromCharCode(_data[dataIndex]);\n dataIndex += 1;\n\n while (dataIndex < _data.length) {\n\n var c = String.fromCharCode(_data[dataIndex]);\n dataIndex += 1;\n\n if (table.contains(s + c) ) {\n\n s = s + c;\n\n } else {\n\n bitOut.write(table.indexOf(s), bitLength);\n\n if (table.size() < 0xfff) {\n\n if (table.size() == (1 << bitLength) ) {\n bitLength += 1;\n }\n\n table.add(s + c);\n }\n\n s = c;\n }\n }\n\n bitOut.write(table.indexOf(s), bitLength);\n\n // end code\n bitOut.write(endCode, bitLength);\n\n bitOut.flush();\n\n return byteOut.toByteArray();\n };\n\n var lzwTable = function() {\n\n var _map = {};\n var _size = 0;\n\n var _this = {};\n\n _this.add = function(key) {\n if (_this.contains(key) ) {\n throw 'dup key:' + key;\n }\n _map[key] = _size;\n _size += 1;\n };\n\n _this.size = function() {\n return _size;\n };\n\n _this.indexOf = function(key) {\n return _map[key];\n };\n\n _this.contains = function(key) {\n return typeof _map[key] != 'undefined';\n };\n\n return _this;\n };\n\n return _this;\n };\n\n var createDataURL = function(width, height, getPixel) {\n var gif = gifImage(width, height);\n for (var y = 0; y < height; y += 1) {\n for (var x = 0; x < width; x += 1) {\n gif.setPixel(x, y, getPixel(x, y) );\n }\n }\n\n var b = byteArrayOutputStream();\n gif.write(b);\n\n var base64 = base64EncodeOutputStream();\n var bytes = b.toByteArray();\n for (var i = 0; i < bytes.length; i += 1) {\n base64.writeByte(bytes[i]);\n }\n base64.flush();\n\n return 'data:image/gif;base64,' + base64;\n };\n\n //---------------------------------------------------------------------\n // returns qrcode function.\n\n return qrcode;\n}();\n\n// multibyte support\n!function() {\n\n qrcode.stringToBytesFuncs['UTF-8'] = function(s) {\n // http://stackoverflow.com/questions/18729405/how-to-convert-utf8-string-to-byte-array\n function toUTF8Array(str) {\n var utf8 = [];\n for (var i=0; i < str.length; i++) {\n var charcode = str.charCodeAt(i);\n if (charcode < 0x80) utf8.push(charcode);\n else if (charcode < 0x800) {\n utf8.push(0xc0 | (charcode >> 6),\n 0x80 | (charcode & 0x3f));\n }\n else if (charcode < 0xd800 || charcode >= 0xe000) {\n utf8.push(0xe0 | (charcode >> 12),\n 0x80 | ((charcode>>6) & 0x3f),\n 0x80 | (charcode & 0x3f));\n }\n // surrogate pair\n else {\n i++;\n // UTF-16 encodes 0x10000-0x10FFFF by\n // subtracting 0x10000 and splitting the\n // 20 bits of 0x0-0xFFFFF into two halves\n charcode = 0x10000 + (((charcode & 0x3ff)<<10)\n | (str.charCodeAt(i) & 0x3ff));\n utf8.push(0xf0 | (charcode >>18),\n 0x80 | ((charcode>>12) & 0x3f),\n 0x80 | ((charcode>>6) & 0x3f),\n 0x80 | (charcode & 0x3f));\n }\n }\n return utf8;\n }\n return toUTF8Array(s);\n };\n\n}();\n\n(function (factory) {\n if (typeof define === 'function' && define.amd) {\n define([], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory();\n }\n}(function () {\n return qrcode;\n}));\n","import { UnknownObject } from \"../types\";\n\nconst isObject = (obj: Record): boolean => !!obj && typeof obj === \"object\" && !Array.isArray(obj);\n\nexport default function mergeDeep(target: UnknownObject, ...sources: UnknownObject[]): UnknownObject {\n if (!sources.length) return target;\n const source = sources.shift();\n if (source === undefined || !isObject(target) || !isObject(source)) return target;\n target = { ...target };\n Object.keys(source).forEach((key: string): void => {\n const targetValue = target[key];\n const sourceValue = source[key];\n\n if (Array.isArray(targetValue) && Array.isArray(sourceValue)) {\n target[key] = sourceValue;\n } else if (isObject(targetValue) && isObject(sourceValue)) {\n target[key] = mergeDeep(Object.assign({}, targetValue), sourceValue);\n } else {\n target[key] = sourceValue;\n }\n });\n\n return mergeDeep(target, ...sources);\n}\n","export default function downloadURI(uri: string, name: string): void {\n const link = document.createElement(\"a\");\n link.download = name;\n link.href = uri;\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n}\n","interface ImageSizeOptions {\n originalHeight: number;\n originalWidth: number;\n maxHiddenDots: number;\n maxHiddenAxisDots?: number;\n dotSize: number;\n}\n\ninterface ImageSizeResult {\n height: number;\n width: number;\n hideYDots: number;\n hideXDots: number;\n}\n\nexport default function calculateImageSize({\n originalHeight,\n originalWidth,\n maxHiddenDots,\n maxHiddenAxisDots,\n dotSize\n}: ImageSizeOptions): ImageSizeResult {\n const hideDots = { x: 0, y: 0 };\n const imageSize = { x: 0, y: 0 };\n\n if (originalHeight <= 0 || originalWidth <= 0 || maxHiddenDots <= 0 || dotSize <= 0) {\n return {\n height: 0,\n width: 0,\n hideYDots: 0,\n hideXDots: 0\n };\n }\n\n const k = originalHeight / originalWidth;\n\n //Getting the maximum possible axis hidden dots\n hideDots.x = Math.floor(Math.sqrt(maxHiddenDots / k));\n //The count of hidden dot's can't be less than 1\n if (hideDots.x <= 0) hideDots.x = 1;\n //Check the limit of the maximum allowed axis hidden dots\n if (maxHiddenAxisDots && maxHiddenAxisDots < hideDots.x) hideDots.x = maxHiddenAxisDots;\n //The count of dots should be odd\n if (hideDots.x % 2 === 0) hideDots.x--;\n imageSize.x = hideDots.x * dotSize;\n //Calculate opposite axis hidden dots based on axis value.\n //The value will be odd.\n //We use ceil to prevent dots covering by the image.\n hideDots.y = 1 + 2 * Math.ceil((hideDots.x * k - 1) / 2);\n imageSize.y = Math.round(imageSize.x * k);\n //If the result dots count is bigger than max - then decrease size and calculate again\n if (hideDots.y * hideDots.x > maxHiddenDots || (maxHiddenAxisDots && maxHiddenAxisDots < hideDots.y)) {\n if (maxHiddenAxisDots && maxHiddenAxisDots < hideDots.y) {\n hideDots.y = maxHiddenAxisDots;\n if (hideDots.y % 2 === 0) hideDots.x--;\n } else {\n hideDots.y -= 2;\n }\n imageSize.y = hideDots.y * dotSize;\n hideDots.x = 1 + 2 * Math.ceil((hideDots.y / k - 1) / 2);\n imageSize.x = Math.round(imageSize.y / k);\n }\n\n return {\n height: imageSize.y,\n width: imageSize.x,\n hideYDots: hideDots.x,\n hideXDots: hideDots.y\n };\n}\n","interface ErrorCorrectionPercents {\n [key: string]: number;\n}\n\nexport default {\n L: 0.07,\n M: 0.15,\n Q: 0.25,\n H: 0.3\n} as ErrorCorrectionPercents;\n","import { DotTypes } from \"../types\";\n\nexport default {\n dots: \"dots\",\n rounded: \"rounded\",\n classy: \"classy\",\n classyRounded: \"classy-rounded\",\n square: \"square\",\n extraRounded: \"extra-rounded\"\n} as DotTypes;\n","import dotTypes from \"../../../constants/dotTypes\";\nimport {\n DotType,\n GetNeighbor,\n RotateFigureArgsCanvas,\n BasicFigureDrawArgsCanvas,\n DrawArgsCanvas\n} from \"../../../types\";\n\nexport default class QRDot {\n _context: CanvasRenderingContext2D;\n _type: DotType;\n\n constructor({ context, type }: { context: CanvasRenderingContext2D; type: DotType }) {\n this._context = context;\n this._type = type;\n }\n\n draw(x: number, y: number, size: number, getNeighbor: GetNeighbor): void {\n const context = this._context;\n const type = this._type;\n let drawFunction;\n\n switch (type) {\n case dotTypes.dots:\n drawFunction = this._drawDot;\n break;\n case dotTypes.classy:\n drawFunction = this._drawClassy;\n break;\n case dotTypes.classyRounded:\n drawFunction = this._drawClassyRounded;\n break;\n case dotTypes.rounded:\n drawFunction = this._drawRounded;\n break;\n case dotTypes.extraRounded:\n drawFunction = this._drawExtraRounded;\n break;\n case dotTypes.square:\n default:\n drawFunction = this._drawSquare;\n }\n\n drawFunction.call(this, { x, y, size, context, getNeighbor });\n }\n\n _rotateFigure({ x, y, size, context, rotation = 0, draw }: RotateFigureArgsCanvas): void {\n const cx = x + size / 2;\n const cy = y + size / 2;\n\n context.translate(cx, cy);\n rotation && context.rotate(rotation);\n draw();\n context.closePath();\n rotation && context.rotate(-rotation);\n context.translate(-cx, -cy);\n }\n\n _basicDot(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.arc(0, 0, size / 2, 0, Math.PI * 2);\n }\n });\n }\n\n _basicSquare(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.rect(-size / 2, -size / 2, size, size);\n }\n });\n }\n\n //if rotation === 0 - right side is rounded\n _basicSideRounded(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.arc(0, 0, size / 2, -Math.PI / 2, Math.PI / 2);\n context.lineTo(-size / 2, size / 2);\n context.lineTo(-size / 2, -size / 2);\n context.lineTo(0, -size / 2);\n }\n });\n }\n\n //if rotation === 0 - top right corner is rounded\n _basicCornerRounded(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.arc(0, 0, size / 2, -Math.PI / 2, 0);\n context.lineTo(size / 2, size / 2);\n context.lineTo(-size / 2, size / 2);\n context.lineTo(-size / 2, -size / 2);\n context.lineTo(0, -size / 2);\n }\n });\n }\n\n //if rotation === 0 - top right corner is rounded\n _basicCornerExtraRounded(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.arc(-size / 2, size / 2, size, -Math.PI / 2, 0);\n context.lineTo(-size / 2, size / 2);\n context.lineTo(-size / 2, -size / 2);\n }\n });\n }\n\n _basicCornersRounded(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.arc(0, 0, size / 2, -Math.PI / 2, 0);\n context.lineTo(size / 2, size / 2);\n context.lineTo(0, size / 2);\n context.arc(0, 0, size / 2, Math.PI / 2, Math.PI);\n context.lineTo(-size / 2, -size / 2);\n context.lineTo(0, -size / 2);\n }\n });\n }\n\n _basicCornersExtraRounded(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.arc(-size / 2, size / 2, size, -Math.PI / 2, 0);\n context.arc(size / 2, -size / 2, size, Math.PI / 2, Math.PI);\n }\n });\n }\n\n _drawDot({ x, y, size, context }: DrawArgsCanvas): void {\n this._basicDot({ x, y, size, context, rotation: 0 });\n }\n\n _drawSquare({ x, y, size, context }: DrawArgsCanvas): void {\n this._basicSquare({ x, y, size, context, rotation: 0 });\n }\n\n _drawRounded({ x, y, size, context, getNeighbor }: DrawArgsCanvas): void {\n const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\n const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\n const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\n const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\n\n const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\n\n if (neighborsCount === 0) {\n this._basicDot({ x, y, size, context, rotation: 0 });\n return;\n }\n\n if (neighborsCount > 2 || (leftNeighbor && rightNeighbor) || (topNeighbor && bottomNeighbor)) {\n this._basicSquare({ x, y, size, context, rotation: 0 });\n return;\n }\n\n if (neighborsCount === 2) {\n let rotation = 0;\n\n if (leftNeighbor && topNeighbor) {\n rotation = Math.PI / 2;\n } else if (topNeighbor && rightNeighbor) {\n rotation = Math.PI;\n } else if (rightNeighbor && bottomNeighbor) {\n rotation = -Math.PI / 2;\n }\n\n this._basicCornerRounded({ x, y, size, context, rotation });\n return;\n }\n\n if (neighborsCount === 1) {\n let rotation = 0;\n\n if (topNeighbor) {\n rotation = Math.PI / 2;\n } else if (rightNeighbor) {\n rotation = Math.PI;\n } else if (bottomNeighbor) {\n rotation = -Math.PI / 2;\n }\n\n this._basicSideRounded({ x, y, size, context, rotation });\n return;\n }\n }\n\n _drawExtraRounded({ x, y, size, context, getNeighbor }: DrawArgsCanvas): void {\n const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\n const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\n const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\n const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\n\n const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\n\n if (neighborsCount === 0) {\n this._basicDot({ x, y, size, context, rotation: 0 });\n return;\n }\n\n if (neighborsCount > 2 || (leftNeighbor && rightNeighbor) || (topNeighbor && bottomNeighbor)) {\n this._basicSquare({ x, y, size, context, rotation: 0 });\n return;\n }\n\n if (neighborsCount === 2) {\n let rotation = 0;\n\n if (leftNeighbor && topNeighbor) {\n rotation = Math.PI / 2;\n } else if (topNeighbor && rightNeighbor) {\n rotation = Math.PI;\n } else if (rightNeighbor && bottomNeighbor) {\n rotation = -Math.PI / 2;\n }\n\n this._basicCornerExtraRounded({ x, y, size, context, rotation });\n return;\n }\n\n if (neighborsCount === 1) {\n let rotation = 0;\n\n if (topNeighbor) {\n rotation = Math.PI / 2;\n } else if (rightNeighbor) {\n rotation = Math.PI;\n } else if (bottomNeighbor) {\n rotation = -Math.PI / 2;\n }\n\n this._basicSideRounded({ x, y, size, context, rotation });\n return;\n }\n }\n\n _drawClassy({ x, y, size, context, getNeighbor }: DrawArgsCanvas): void {\n const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\n const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\n const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\n const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\n\n const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\n\n if (neighborsCount === 0) {\n this._basicCornersRounded({ x, y, size, context, rotation: Math.PI / 2 });\n return;\n }\n\n if (!leftNeighbor && !topNeighbor) {\n this._basicCornerRounded({ x, y, size, context, rotation: -Math.PI / 2 });\n return;\n }\n\n if (!rightNeighbor && !bottomNeighbor) {\n this._basicCornerRounded({ x, y, size, context, rotation: Math.PI / 2 });\n return;\n }\n\n this._basicSquare({ x, y, size, context, rotation: 0 });\n }\n\n _drawClassyRounded({ x, y, size, context, getNeighbor }: DrawArgsCanvas): void {\n const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\n const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\n const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\n const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\n\n const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\n\n if (neighborsCount === 0) {\n this._basicCornersRounded({ x, y, size, context, rotation: Math.PI / 2 });\n return;\n }\n\n if (!leftNeighbor && !topNeighbor) {\n this._basicCornerExtraRounded({ x, y, size, context, rotation: -Math.PI / 2 });\n return;\n }\n\n if (!rightNeighbor && !bottomNeighbor) {\n this._basicCornerExtraRounded({ x, y, size, context, rotation: Math.PI / 2 });\n return;\n }\n\n this._basicSquare({ x, y, size, context, rotation: 0 });\n }\n}\n","import { CornerSquareTypes } from \"../types\";\n\nexport default {\n dot: \"dot\",\n square: \"square\",\n extraRounded: \"extra-rounded\"\n} as CornerSquareTypes;\n","import cornerSquareTypes from \"../../../constants/cornerSquareTypes\";\nimport { CornerSquareType, RotateFigureArgsCanvas, BasicFigureDrawArgsCanvas, DrawArgsCanvas } from \"../../../types\";\n\nexport default class QRCornerSquare {\n _context: CanvasRenderingContext2D;\n _type: CornerSquareType;\n\n constructor({ context, type }: { context: CanvasRenderingContext2D; type: CornerSquareType }) {\n this._context = context;\n this._type = type;\n }\n\n draw(x: number, y: number, size: number, rotation: number): void {\n const context = this._context;\n const type = this._type;\n let drawFunction;\n\n switch (type) {\n case cornerSquareTypes.square:\n drawFunction = this._drawSquare;\n break;\n case cornerSquareTypes.extraRounded:\n drawFunction = this._drawExtraRounded;\n break;\n case cornerSquareTypes.dot:\n default:\n drawFunction = this._drawDot;\n }\n\n drawFunction.call(this, { x, y, size, context, rotation });\n }\n\n _rotateFigure({ x, y, size, context, rotation = 0, draw }: RotateFigureArgsCanvas): void {\n const cx = x + size / 2;\n const cy = y + size / 2;\n\n context.translate(cx, cy);\n rotation && context.rotate(rotation);\n draw();\n context.closePath();\n rotation && context.rotate(-rotation);\n context.translate(-cx, -cy);\n }\n\n _basicDot(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n const dotSize = size / 7;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.arc(0, 0, size / 2, 0, Math.PI * 2);\n context.arc(0, 0, size / 2 - dotSize, 0, Math.PI * 2);\n }\n });\n }\n\n _basicSquare(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n const dotSize = size / 7;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.rect(-size / 2, -size / 2, size, size);\n context.rect(-size / 2 + dotSize, -size / 2 + dotSize, size - 2 * dotSize, size - 2 * dotSize);\n }\n });\n }\n\n _basicExtraRounded(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n const dotSize = size / 7;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.arc(-dotSize, -dotSize, 2.5 * dotSize, Math.PI, -Math.PI / 2);\n context.lineTo(dotSize, -3.5 * dotSize);\n context.arc(dotSize, -dotSize, 2.5 * dotSize, -Math.PI / 2, 0);\n context.lineTo(3.5 * dotSize, -dotSize);\n context.arc(dotSize, dotSize, 2.5 * dotSize, 0, Math.PI / 2);\n context.lineTo(-dotSize, 3.5 * dotSize);\n context.arc(-dotSize, dotSize, 2.5 * dotSize, Math.PI / 2, Math.PI);\n context.lineTo(-3.5 * dotSize, -dotSize);\n\n context.arc(-dotSize, -dotSize, 1.5 * dotSize, Math.PI, -Math.PI / 2);\n context.lineTo(dotSize, -2.5 * dotSize);\n context.arc(dotSize, -dotSize, 1.5 * dotSize, -Math.PI / 2, 0);\n context.lineTo(2.5 * dotSize, -dotSize);\n context.arc(dotSize, dotSize, 1.5 * dotSize, 0, Math.PI / 2);\n context.lineTo(-dotSize, 2.5 * dotSize);\n context.arc(-dotSize, dotSize, 1.5 * dotSize, Math.PI / 2, Math.PI);\n context.lineTo(-2.5 * dotSize, -dotSize);\n }\n });\n }\n\n _drawDot({ x, y, size, context, rotation }: DrawArgsCanvas): void {\n this._basicDot({ x, y, size, context, rotation });\n }\n\n _drawSquare({ x, y, size, context, rotation }: DrawArgsCanvas): void {\n this._basicSquare({ x, y, size, context, rotation });\n }\n\n _drawExtraRounded({ x, y, size, context, rotation }: DrawArgsCanvas): void {\n this._basicExtraRounded({ x, y, size, context, rotation });\n }\n}\n","import { CornerDotTypes } from \"../types\";\n\nexport default {\n dot: \"dot\",\n square: \"square\"\n} as CornerDotTypes;\n","import cornerDotTypes from \"../../../constants/cornerDotTypes\";\nimport { CornerDotType, RotateFigureArgsCanvas, BasicFigureDrawArgsCanvas, DrawArgsCanvas } from \"../../../types\";\n\nexport default class QRCornerDot {\n _context: CanvasRenderingContext2D;\n _type: CornerDotType;\n\n constructor({ context, type }: { context: CanvasRenderingContext2D; type: CornerDotType }) {\n this._context = context;\n this._type = type;\n }\n\n draw(x: number, y: number, size: number, rotation: number): void {\n const context = this._context;\n const type = this._type;\n let drawFunction;\n\n switch (type) {\n case cornerDotTypes.square:\n drawFunction = this._drawSquare;\n break;\n case cornerDotTypes.dot:\n default:\n drawFunction = this._drawDot;\n }\n\n drawFunction.call(this, { x, y, size, context, rotation });\n }\n\n _rotateFigure({ x, y, size, context, rotation = 0, draw }: RotateFigureArgsCanvas): void {\n const cx = x + size / 2;\n const cy = y + size / 2;\n\n context.translate(cx, cy);\n rotation && context.rotate(rotation);\n draw();\n context.closePath();\n rotation && context.rotate(-rotation);\n context.translate(-cx, -cy);\n }\n\n _basicDot(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.arc(0, 0, size / 2, 0, Math.PI * 2);\n }\n });\n }\n\n _basicSquare(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.rect(-size / 2, -size / 2, size, size);\n }\n });\n }\n\n _drawDot({ x, y, size, context, rotation }: DrawArgsCanvas): void {\n this._basicDot({ x, y, size, context, rotation });\n }\n\n _drawSquare({ x, y, size, context, rotation }: DrawArgsCanvas): void {\n this._basicSquare({ x, y, size, context, rotation });\n }\n}\n","import { GradientTypes } from \"../types\";\n\nexport default {\n radial: \"radial\",\n linear: \"linear\"\n} as GradientTypes;\n","import calculateImageSize from \"../tools/calculateImageSize\";\nimport errorCorrectionPercents from \"../constants/errorCorrectionPercents\";\nimport QRDot from \"../figures/dot/canvas/QRDot\";\nimport QRCornerSquare from \"../figures/cornerSquare/canvas/QRCornerSquare\";\nimport QRCornerDot from \"../figures/cornerDot/canvas/QRCornerDot\";\nimport { RequiredOptions } from \"./QROptions\";\nimport gradientTypes from \"../constants/gradientTypes\";\nimport { QRCode, Gradient, FilterFunction } from \"../types\";\n\nconst squareMask = [\n [1, 1, 1, 1, 1, 1, 1],\n [1, 0, 0, 0, 0, 0, 1],\n [1, 0, 0, 0, 0, 0, 1],\n [1, 0, 0, 0, 0, 0, 1],\n [1, 0, 0, 0, 0, 0, 1],\n [1, 0, 0, 0, 0, 0, 1],\n [1, 1, 1, 1, 1, 1, 1]\n];\n\nconst dotMask = [\n [0, 0, 0, 0, 0, 0, 0],\n [0, 0, 0, 0, 0, 0, 0],\n [0, 0, 1, 1, 1, 0, 0],\n [0, 0, 1, 1, 1, 0, 0],\n [0, 0, 1, 1, 1, 0, 0],\n [0, 0, 0, 0, 0, 0, 0],\n [0, 0, 0, 0, 0, 0, 0]\n];\n\nexport default class QRCanvas {\n _canvas: HTMLCanvasElement;\n _options: RequiredOptions;\n _qr?: QRCode;\n _image?: HTMLImageElement;\n\n //TODO don't pass all options to this class\n constructor(options: RequiredOptions) {\n this._canvas = document.createElement(\"canvas\");\n this._canvas.width = options.width;\n this._canvas.height = options.height;\n this._options = options;\n }\n\n get context(): CanvasRenderingContext2D | null {\n return this._canvas.getContext(\"2d\");\n }\n\n get width(): number {\n return this._canvas.width;\n }\n\n get height(): number {\n return this._canvas.height;\n }\n\n getCanvas(): HTMLCanvasElement {\n return this._canvas;\n }\n\n clear(): void {\n const canvasContext = this.context;\n\n if (canvasContext) {\n canvasContext.clearRect(0, 0, this._canvas.width, this._canvas.height);\n }\n }\n\n async drawQR(qr: QRCode): Promise {\n const count = qr.getModuleCount();\n const minSize = Math.min(this._options.width, this._options.height) - this._options.margin * 2;\n const dotSize = Math.floor(minSize / count);\n let drawImageSize = {\n hideXDots: 0,\n hideYDots: 0,\n width: 0,\n height: 0\n };\n\n this._qr = qr;\n\n if (this._options.image) {\n await this.loadImage();\n if (!this._image) return;\n const { imageOptions, qrOptions } = this._options;\n const coverLevel = imageOptions.imageSize * errorCorrectionPercents[qrOptions.errorCorrectionLevel];\n const maxHiddenDots = Math.floor(coverLevel * count * count);\n\n drawImageSize = calculateImageSize({\n originalWidth: this._image.width,\n originalHeight: this._image.height,\n maxHiddenDots,\n maxHiddenAxisDots: count - 14,\n dotSize\n });\n }\n\n this.clear();\n this.drawBackground();\n this.drawDots((i: number, j: number): boolean => {\n if (this._options.imageOptions.hideBackgroundDots) {\n if (\n i >= (count - drawImageSize.hideXDots) / 2 &&\n i < (count + drawImageSize.hideXDots) / 2 &&\n j >= (count - drawImageSize.hideYDots) / 2 &&\n j < (count + drawImageSize.hideYDots) / 2\n ) {\n return false;\n }\n }\n\n if (squareMask[i]?.[j] || squareMask[i - count + 7]?.[j] || squareMask[i]?.[j - count + 7]) {\n return false;\n }\n\n if (dotMask[i]?.[j] || dotMask[i - count + 7]?.[j] || dotMask[i]?.[j - count + 7]) {\n return false;\n }\n\n return true;\n });\n this.drawCorners();\n\n if (this._options.image) {\n this.drawImage({ width: drawImageSize.width, height: drawImageSize.height, count, dotSize });\n }\n }\n\n drawBackground(): void {\n const canvasContext = this.context;\n const options = this._options;\n\n if (canvasContext) {\n if (options.backgroundOptions.gradient) {\n const gradientOptions = options.backgroundOptions.gradient;\n const gradient = this._createGradient({\n context: canvasContext,\n options: gradientOptions,\n additionalRotation: 0,\n x: 0,\n y: 0,\n size: this._canvas.width > this._canvas.height ? this._canvas.width : this._canvas.height\n });\n\n gradientOptions.colorStops.forEach(({ offset, color }: { offset: number; color: string }) => {\n gradient.addColorStop(offset, color);\n });\n\n canvasContext.fillStyle = gradient;\n } else if (options.backgroundOptions.color) {\n canvasContext.fillStyle = options.backgroundOptions.color;\n }\n canvasContext.fillRect(0, 0, this._canvas.width, this._canvas.height);\n }\n }\n\n drawDots(filter?: FilterFunction): void {\n if (!this._qr) {\n throw \"QR code is not defined\";\n }\n\n const canvasContext = this.context;\n\n if (!canvasContext) {\n throw \"QR code is not defined\";\n }\n\n const options = this._options;\n const count = this._qr.getModuleCount();\n\n if (count > options.width || count > options.height) {\n throw \"The canvas is too small.\";\n }\n\n const minSize = Math.min(options.width, options.height) - options.margin * 2;\n const dotSize = Math.floor(minSize / count);\n const xBeginning = Math.floor((options.width - count * dotSize) / 2);\n const yBeginning = Math.floor((options.height - count * dotSize) / 2);\n const dot = new QRDot({ context: canvasContext, type: options.dotsOptions.type });\n\n canvasContext.beginPath();\n\n for (let i = 0; i < count; i++) {\n for (let j = 0; j < count; j++) {\n if (filter && !filter(i, j)) {\n continue;\n }\n if (!this._qr.isDark(i, j)) {\n continue;\n }\n dot.draw(\n yBeginning + j * dotSize,\n xBeginning + i * dotSize,\n dotSize,\n (xOffset: number, yOffset: number): boolean => {\n if (i + xOffset < 0 || j + yOffset < 0 || i + xOffset >= count || j + yOffset >= count) return false;\n if (filter && !filter(i + xOffset, j + yOffset)) return false;\n return !!this._qr && this._qr.isDark(i + xOffset, j + yOffset);\n }\n );\n }\n }\n\n if (options.dotsOptions.gradient) {\n const gradientOptions = options.dotsOptions.gradient;\n const gradient = this._createGradient({\n context: canvasContext,\n options: gradientOptions,\n additionalRotation: 0,\n x: xBeginning,\n y: yBeginning,\n size: count * dotSize\n });\n\n gradientOptions.colorStops.forEach(({ offset, color }: { offset: number; color: string }) => {\n gradient.addColorStop(offset, color);\n });\n\n canvasContext.fillStyle = canvasContext.strokeStyle = gradient;\n } else if (options.dotsOptions.color) {\n canvasContext.fillStyle = canvasContext.strokeStyle = options.dotsOptions.color;\n }\n\n canvasContext.fill(\"evenodd\");\n }\n\n drawCorners(filter?: FilterFunction): void {\n if (!this._qr) {\n throw \"QR code is not defined\";\n }\n\n const canvasContext = this.context;\n\n if (!canvasContext) {\n throw \"QR code is not defined\";\n }\n\n const options = this._options;\n\n const count = this._qr.getModuleCount();\n const minSize = Math.min(options.width, options.height) - options.margin * 2;\n const dotSize = Math.floor(minSize / count);\n const cornersSquareSize = dotSize * 7;\n const cornersDotSize = dotSize * 3;\n const xBeginning = Math.floor((options.width - count * dotSize) / 2);\n const yBeginning = Math.floor((options.height - count * dotSize) / 2);\n\n [\n [0, 0, 0],\n [1, 0, Math.PI / 2],\n [0, 1, -Math.PI / 2]\n ].forEach(([column, row, rotation]) => {\n if (filter && !filter(column, row)) {\n return;\n }\n\n const x = xBeginning + column * dotSize * (count - 7);\n const y = yBeginning + row * dotSize * (count - 7);\n\n if (options.cornersSquareOptions?.type) {\n const cornersSquare = new QRCornerSquare({ context: canvasContext, type: options.cornersSquareOptions?.type });\n\n canvasContext.beginPath();\n cornersSquare.draw(x, y, cornersSquareSize, rotation);\n } else {\n const dot = new QRDot({ context: canvasContext, type: options.dotsOptions.type });\n\n canvasContext.beginPath();\n\n for (let i = 0; i < squareMask.length; i++) {\n for (let j = 0; j < squareMask[i].length; j++) {\n if (!squareMask[i]?.[j]) {\n continue;\n }\n\n dot.draw(\n x + i * dotSize,\n y + j * dotSize,\n dotSize,\n (xOffset: number, yOffset: number): boolean => !!squareMask[i + xOffset]?.[j + yOffset]\n );\n }\n }\n }\n\n if (options.cornersSquareOptions?.gradient) {\n const gradientOptions = options.cornersSquareOptions.gradient;\n const gradient = this._createGradient({\n context: canvasContext,\n options: gradientOptions,\n additionalRotation: rotation,\n x,\n y,\n size: cornersSquareSize\n });\n\n gradientOptions.colorStops.forEach(({ offset, color }: { offset: number; color: string }) => {\n gradient.addColorStop(offset, color);\n });\n\n canvasContext.fillStyle = canvasContext.strokeStyle = gradient;\n } else if (options.cornersSquareOptions?.color) {\n canvasContext.fillStyle = canvasContext.strokeStyle = options.cornersSquareOptions.color;\n }\n\n canvasContext.fill(\"evenodd\");\n\n if (options.cornersDotOptions?.type) {\n const cornersDot = new QRCornerDot({ context: canvasContext, type: options.cornersDotOptions?.type });\n\n canvasContext.beginPath();\n cornersDot.draw(x + dotSize * 2, y + dotSize * 2, cornersDotSize, rotation);\n } else {\n const dot = new QRDot({ context: canvasContext, type: options.dotsOptions.type });\n\n canvasContext.beginPath();\n\n for (let i = 0; i < dotMask.length; i++) {\n for (let j = 0; j < dotMask[i].length; j++) {\n if (!dotMask[i]?.[j]) {\n continue;\n }\n\n dot.draw(\n x + i * dotSize,\n y + j * dotSize,\n dotSize,\n (xOffset: number, yOffset: number): boolean => !!dotMask[i + xOffset]?.[j + yOffset]\n );\n }\n }\n }\n\n if (options.cornersDotOptions?.gradient) {\n const gradientOptions = options.cornersDotOptions.gradient;\n const gradient = this._createGradient({\n context: canvasContext,\n options: gradientOptions,\n additionalRotation: rotation,\n x: x + dotSize * 2,\n y: y + dotSize * 2,\n size: cornersDotSize\n });\n\n gradientOptions.colorStops.forEach(({ offset, color }: { offset: number; color: string }) => {\n gradient.addColorStop(offset, color);\n });\n\n canvasContext.fillStyle = canvasContext.strokeStyle = gradient;\n } else if (options.cornersDotOptions?.color) {\n canvasContext.fillStyle = canvasContext.strokeStyle = options.cornersDotOptions.color;\n }\n\n canvasContext.fill(\"evenodd\");\n });\n }\n\n loadImage(): Promise {\n return new Promise((resolve, reject) => {\n const options = this._options;\n const image = new Image();\n\n if (!options.image) {\n return reject(\"Image is not defined\");\n }\n\n if (typeof options.imageOptions.crossOrigin === \"string\") {\n image.crossOrigin = options.imageOptions.crossOrigin;\n }\n\n this._image = image;\n image.onload = (): void => {\n resolve();\n };\n image.src = options.image;\n });\n }\n\n drawImage({\n width,\n height,\n count,\n dotSize\n }: {\n width: number;\n height: number;\n count: number;\n dotSize: number;\n }): void {\n const canvasContext = this.context;\n\n if (!canvasContext) {\n throw \"canvasContext is not defined\";\n }\n\n if (!this._image) {\n throw \"image is not defined\";\n }\n\n const options = this._options;\n const xBeginning = Math.floor((options.width - count * dotSize) / 2);\n const yBeginning = Math.floor((options.height - count * dotSize) / 2);\n const dx = xBeginning + options.imageOptions.margin + (count * dotSize - width) / 2;\n const dy = yBeginning + options.imageOptions.margin + (count * dotSize - height) / 2;\n const dw = width - options.imageOptions.margin * 2;\n const dh = height - options.imageOptions.margin * 2;\n\n canvasContext.drawImage(this._image, dx, dy, dw < 0 ? 0 : dw, dh < 0 ? 0 : dh);\n }\n\n _createGradient({\n context,\n options,\n additionalRotation,\n x,\n y,\n size\n }: {\n context: CanvasRenderingContext2D;\n options: Gradient;\n additionalRotation: number;\n x: number;\n y: number;\n size: number;\n }): CanvasGradient {\n let gradient;\n\n if (options.type === gradientTypes.radial) {\n gradient = context.createRadialGradient(x + size / 2, y + size / 2, 0, x + size / 2, y + size / 2, size / 2);\n } else {\n const rotation = ((options.rotation || 0) + additionalRotation) % (2 * Math.PI);\n const positiveRotation = (rotation + 2 * Math.PI) % (2 * Math.PI);\n let x0 = x + size / 2;\n let y0 = y + size / 2;\n let x1 = x + size / 2;\n let y1 = y + size / 2;\n\n if (\n (positiveRotation >= 0 && positiveRotation <= 0.25 * Math.PI) ||\n (positiveRotation > 1.75 * Math.PI && positiveRotation <= 2 * Math.PI)\n ) {\n x0 = x0 - size / 2;\n y0 = y0 - (size / 2) * Math.tan(rotation);\n x1 = x1 + size / 2;\n y1 = y1 + (size / 2) * Math.tan(rotation);\n } else if (positiveRotation > 0.25 * Math.PI && positiveRotation <= 0.75 * Math.PI) {\n y0 = y0 - size / 2;\n x0 = x0 - size / 2 / Math.tan(rotation);\n y1 = y1 + size / 2;\n x1 = x1 + size / 2 / Math.tan(rotation);\n } else if (positiveRotation > 0.75 * Math.PI && positiveRotation <= 1.25 * Math.PI) {\n x0 = x0 + size / 2;\n y0 = y0 + (size / 2) * Math.tan(rotation);\n x1 = x1 - size / 2;\n y1 = y1 - (size / 2) * Math.tan(rotation);\n } else if (positiveRotation > 1.25 * Math.PI && positiveRotation <= 1.75 * Math.PI) {\n y0 = y0 + size / 2;\n x0 = x0 + size / 2 / Math.tan(rotation);\n y1 = y1 - size / 2;\n x1 = x1 - size / 2 / Math.tan(rotation);\n }\n\n gradient = context.createLinearGradient(Math.round(x0), Math.round(y0), Math.round(x1), Math.round(y1));\n }\n\n return gradient;\n }\n}\n","import dotTypes from \"../../../constants/dotTypes\";\nimport { DotType, GetNeighbor, DrawArgs, BasicFigureDrawArgs, RotateFigureArgs } from \"../../../types\";\n\nexport default class QRDot {\n _element?: SVGElement;\n _svg: SVGElement;\n _type: DotType;\n\n constructor({ svg, type }: { svg: SVGElement; type: DotType }) {\n this._svg = svg;\n this._type = type;\n }\n\n draw(x: number, y: number, size: number, getNeighbor: GetNeighbor): void {\n const type = this._type;\n let drawFunction;\n\n switch (type) {\n case dotTypes.dots:\n drawFunction = this._drawDot;\n break;\n case dotTypes.classy:\n drawFunction = this._drawClassy;\n break;\n case dotTypes.classyRounded:\n drawFunction = this._drawClassyRounded;\n break;\n case dotTypes.rounded:\n drawFunction = this._drawRounded;\n break;\n case dotTypes.extraRounded:\n drawFunction = this._drawExtraRounded;\n break;\n case dotTypes.square:\n default:\n drawFunction = this._drawSquare;\n }\n\n drawFunction.call(this, { x, y, size, getNeighbor });\n }\n\n _rotateFigure({ x, y, size, rotation = 0, draw }: RotateFigureArgs): void {\n const cx = x + size / 2;\n const cy = y + size / 2;\n\n draw();\n this._element?.setAttribute(\"transform\", `rotate(${(180 * rotation) / Math.PI},${cx},${cy})`);\n }\n\n _basicDot(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"circle\");\n this._element.setAttribute(\"cx\", String(x + size / 2));\n this._element.setAttribute(\"cy\", String(y + size / 2));\n this._element.setAttribute(\"r\", String(size / 2));\n }\n });\n }\n\n _basicSquare(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"rect\");\n this._element.setAttribute(\"x\", String(x));\n this._element.setAttribute(\"y\", String(y));\n this._element.setAttribute(\"width\", String(size));\n this._element.setAttribute(\"height\", String(size));\n }\n });\n }\n\n //if rotation === 0 - right side is rounded\n _basicSideRounded(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n this._element.setAttribute(\n \"d\",\n `M ${x} ${y}` + //go to top left position\n `v ${size}` + //draw line to left bottom corner\n `h ${size / 2}` + //draw line to left bottom corner + half of size right\n `a ${size / 2} ${size / 2}, 0, 0, 0, 0 ${-size}` // draw rounded corner\n );\n }\n });\n }\n\n //if rotation === 0 - top right corner is rounded\n _basicCornerRounded(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n this._element.setAttribute(\n \"d\",\n `M ${x} ${y}` + //go to top left position\n `v ${size}` + //draw line to left bottom corner\n `h ${size}` + //draw line to right bottom corner\n `v ${-size / 2}` + //draw line to right bottom corner + half of size top\n `a ${size / 2} ${size / 2}, 0, 0, 0, ${-size / 2} ${-size / 2}` // draw rounded corner\n );\n }\n });\n }\n\n //if rotation === 0 - top right corner is rounded\n _basicCornerExtraRounded(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n this._element.setAttribute(\n \"d\",\n `M ${x} ${y}` + //go to top left position\n `v ${size}` + //draw line to left bottom corner\n `h ${size}` + //draw line to right bottom corner\n `a ${size} ${size}, 0, 0, 0, ${-size} ${-size}` // draw rounded top right corner\n );\n }\n });\n }\n\n //if rotation === 0 - left bottom and right top corners are rounded\n _basicCornersRounded(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n this._element.setAttribute(\n \"d\",\n `M ${x} ${y}` + //go to left top position\n `v ${size / 2}` + //draw line to left top corner + half of size bottom\n `a ${size / 2} ${size / 2}, 0, 0, 0, ${size / 2} ${size / 2}` + // draw rounded left bottom corner\n `h ${size / 2}` + //draw line to right bottom corner\n `v ${-size / 2}` + //draw line to right bottom corner + half of size top\n `a ${size / 2} ${size / 2}, 0, 0, 0, ${-size / 2} ${-size / 2}` // draw rounded right top corner\n );\n }\n });\n }\n\n _drawDot({ x, y, size }: DrawArgs): void {\n this._basicDot({ x, y, size, rotation: 0 });\n }\n\n _drawSquare({ x, y, size }: DrawArgs): void {\n this._basicSquare({ x, y, size, rotation: 0 });\n }\n\n _drawRounded({ x, y, size, getNeighbor }: DrawArgs): void {\n const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\n const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\n const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\n const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\n\n const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\n\n if (neighborsCount === 0) {\n this._basicDot({ x, y, size, rotation: 0 });\n return;\n }\n\n if (neighborsCount > 2 || (leftNeighbor && rightNeighbor) || (topNeighbor && bottomNeighbor)) {\n this._basicSquare({ x, y, size, rotation: 0 });\n return;\n }\n\n if (neighborsCount === 2) {\n let rotation = 0;\n\n if (leftNeighbor && topNeighbor) {\n rotation = Math.PI / 2;\n } else if (topNeighbor && rightNeighbor) {\n rotation = Math.PI;\n } else if (rightNeighbor && bottomNeighbor) {\n rotation = -Math.PI / 2;\n }\n\n this._basicCornerRounded({ x, y, size, rotation });\n return;\n }\n\n if (neighborsCount === 1) {\n let rotation = 0;\n\n if (topNeighbor) {\n rotation = Math.PI / 2;\n } else if (rightNeighbor) {\n rotation = Math.PI;\n } else if (bottomNeighbor) {\n rotation = -Math.PI / 2;\n }\n\n this._basicSideRounded({ x, y, size, rotation });\n return;\n }\n }\n\n _drawExtraRounded({ x, y, size, getNeighbor }: DrawArgs): void {\n const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\n const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\n const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\n const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\n\n const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\n\n if (neighborsCount === 0) {\n this._basicDot({ x, y, size, rotation: 0 });\n return;\n }\n\n if (neighborsCount > 2 || (leftNeighbor && rightNeighbor) || (topNeighbor && bottomNeighbor)) {\n this._basicSquare({ x, y, size, rotation: 0 });\n return;\n }\n\n if (neighborsCount === 2) {\n let rotation = 0;\n\n if (leftNeighbor && topNeighbor) {\n rotation = Math.PI / 2;\n } else if (topNeighbor && rightNeighbor) {\n rotation = Math.PI;\n } else if (rightNeighbor && bottomNeighbor) {\n rotation = -Math.PI / 2;\n }\n\n this._basicCornerExtraRounded({ x, y, size, rotation });\n return;\n }\n\n if (neighborsCount === 1) {\n let rotation = 0;\n\n if (topNeighbor) {\n rotation = Math.PI / 2;\n } else if (rightNeighbor) {\n rotation = Math.PI;\n } else if (bottomNeighbor) {\n rotation = -Math.PI / 2;\n }\n\n this._basicSideRounded({ x, y, size, rotation });\n return;\n }\n }\n\n _drawClassy({ x, y, size, getNeighbor }: DrawArgs): void {\n const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\n const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\n const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\n const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\n\n const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\n\n if (neighborsCount === 0) {\n this._basicCornersRounded({ x, y, size, rotation: Math.PI / 2 });\n return;\n }\n\n if (!leftNeighbor && !topNeighbor) {\n this._basicCornerRounded({ x, y, size, rotation: -Math.PI / 2 });\n return;\n }\n\n if (!rightNeighbor && !bottomNeighbor) {\n this._basicCornerRounded({ x, y, size, rotation: Math.PI / 2 });\n return;\n }\n\n this._basicSquare({ x, y, size, rotation: 0 });\n }\n\n _drawClassyRounded({ x, y, size, getNeighbor }: DrawArgs): void {\n const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\n const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\n const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\n const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\n\n const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\n\n if (neighborsCount === 0) {\n this._basicCornersRounded({ x, y, size, rotation: Math.PI / 2 });\n return;\n }\n\n if (!leftNeighbor && !topNeighbor) {\n this._basicCornerExtraRounded({ x, y, size, rotation: -Math.PI / 2 });\n return;\n }\n\n if (!rightNeighbor && !bottomNeighbor) {\n this._basicCornerExtraRounded({ x, y, size, rotation: Math.PI / 2 });\n return;\n }\n\n this._basicSquare({ x, y, size, rotation: 0 });\n }\n}\n","import cornerSquareTypes from \"../../../constants/cornerSquareTypes\";\nimport { CornerSquareType, DrawArgs, BasicFigureDrawArgs, RotateFigureArgs } from \"../../../types\";\n\nexport default class QRCornerSquare {\n _element?: SVGElement;\n _svg: SVGElement;\n _type: CornerSquareType;\n\n constructor({ svg, type }: { svg: SVGElement; type: CornerSquareType }) {\n this._svg = svg;\n this._type = type;\n }\n\n draw(x: number, y: number, size: number, rotation: number): void {\n const type = this._type;\n let drawFunction;\n\n switch (type) {\n case cornerSquareTypes.square:\n drawFunction = this._drawSquare;\n break;\n case cornerSquareTypes.extraRounded:\n drawFunction = this._drawExtraRounded;\n break;\n case cornerSquareTypes.dot:\n default:\n drawFunction = this._drawDot;\n }\n\n drawFunction.call(this, { x, y, size, rotation });\n }\n\n _rotateFigure({ x, y, size, rotation = 0, draw }: RotateFigureArgs): void {\n const cx = x + size / 2;\n const cy = y + size / 2;\n\n draw();\n this._element?.setAttribute(\"transform\", `rotate(${(180 * rotation) / Math.PI},${cx},${cy})`);\n }\n\n _basicDot(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n const dotSize = size / 7;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n this._element.setAttribute(\"clip-rule\", \"evenodd\");\n this._element.setAttribute(\n \"d\",\n `M ${x + size / 2} ${y}` + // M cx, y // Move to top of ring\n `a ${size / 2} ${size / 2} 0 1 0 0.1 0` + // a outerRadius, outerRadius, 0, 1, 0, 1, 0 // Draw outer arc, but don't close it\n `z` + // Z // Close the outer shape\n `m 0 ${dotSize}` + // m -1 outerRadius-innerRadius // Move to top point of inner radius\n `a ${size / 2 - dotSize} ${size / 2 - dotSize} 0 1 1 -0.1 0` + // a innerRadius, innerRadius, 0, 1, 1, -1, 0 // Draw inner arc, but don't close it\n `Z` // Z // Close the inner ring. Actually will still work without, but inner ring will have one unit missing in stroke\n );\n }\n });\n }\n\n _basicSquare(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n const dotSize = size / 7;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n this._element.setAttribute(\"clip-rule\", \"evenodd\");\n this._element.setAttribute(\n \"d\",\n `M ${x} ${y}` +\n `v ${size}` +\n `h ${size}` +\n `v ${-size}` +\n `z` +\n `M ${x + dotSize} ${y + dotSize}` +\n `h ${size - 2 * dotSize}` +\n `v ${size - 2 * dotSize}` +\n `h ${-size + 2 * dotSize}` +\n `z`\n );\n }\n });\n }\n\n _basicExtraRounded(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n const dotSize = size / 7;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n this._element.setAttribute(\"clip-rule\", \"evenodd\");\n this._element.setAttribute(\n \"d\",\n `M ${x} ${y + 2.5 * dotSize}` +\n `v ${2 * dotSize}` +\n `a ${2.5 * dotSize} ${2.5 * dotSize}, 0, 0, 0, ${dotSize * 2.5} ${dotSize * 2.5}` +\n `h ${2 * dotSize}` +\n `a ${2.5 * dotSize} ${2.5 * dotSize}, 0, 0, 0, ${dotSize * 2.5} ${-dotSize * 2.5}` +\n `v ${-2 * dotSize}` +\n `a ${2.5 * dotSize} ${2.5 * dotSize}, 0, 0, 0, ${-dotSize * 2.5} ${-dotSize * 2.5}` +\n `h ${-2 * dotSize}` +\n `a ${2.5 * dotSize} ${2.5 * dotSize}, 0, 0, 0, ${-dotSize * 2.5} ${dotSize * 2.5}` +\n `M ${x + 2.5 * dotSize} ${y + dotSize}` +\n `h ${2 * dotSize}` +\n `a ${1.5 * dotSize} ${1.5 * dotSize}, 0, 0, 1, ${dotSize * 1.5} ${dotSize * 1.5}` +\n `v ${2 * dotSize}` +\n `a ${1.5 * dotSize} ${1.5 * dotSize}, 0, 0, 1, ${-dotSize * 1.5} ${dotSize * 1.5}` +\n `h ${-2 * dotSize}` +\n `a ${1.5 * dotSize} ${1.5 * dotSize}, 0, 0, 1, ${-dotSize * 1.5} ${-dotSize * 1.5}` +\n `v ${-2 * dotSize}` +\n `a ${1.5 * dotSize} ${1.5 * dotSize}, 0, 0, 1, ${dotSize * 1.5} ${-dotSize * 1.5}`\n );\n }\n });\n }\n\n _drawDot({ x, y, size, rotation }: DrawArgs): void {\n this._basicDot({ x, y, size, rotation });\n }\n\n _drawSquare({ x, y, size, rotation }: DrawArgs): void {\n this._basicSquare({ x, y, size, rotation });\n }\n\n _drawExtraRounded({ x, y, size, rotation }: DrawArgs): void {\n this._basicExtraRounded({ x, y, size, rotation });\n }\n}\n","import cornerDotTypes from \"../../../constants/cornerDotTypes\";\nimport { CornerDotType, RotateFigureArgs, BasicFigureDrawArgs, DrawArgs } from \"../../../types\";\n\nexport default class QRCornerDot {\n _element?: SVGElement;\n _svg: SVGElement;\n _type: CornerDotType;\n\n constructor({ svg, type }: { svg: SVGElement; type: CornerDotType }) {\n this._svg = svg;\n this._type = type;\n }\n\n draw(x: number, y: number, size: number, rotation: number): void {\n const type = this._type;\n let drawFunction;\n\n switch (type) {\n case cornerDotTypes.square:\n drawFunction = this._drawSquare;\n break;\n case cornerDotTypes.dot:\n default:\n drawFunction = this._drawDot;\n }\n\n drawFunction.call(this, { x, y, size, rotation });\n }\n\n _rotateFigure({ x, y, size, rotation = 0, draw }: RotateFigureArgs): void {\n const cx = x + size / 2;\n const cy = y + size / 2;\n\n draw();\n this._element?.setAttribute(\"transform\", `rotate(${(180 * rotation) / Math.PI},${cx},${cy})`);\n }\n\n _basicDot(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"circle\");\n this._element.setAttribute(\"cx\", String(x + size / 2));\n this._element.setAttribute(\"cy\", String(y + size / 2));\n this._element.setAttribute(\"r\", String(size / 2));\n }\n });\n }\n\n _basicSquare(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"rect\");\n this._element.setAttribute(\"x\", String(x));\n this._element.setAttribute(\"y\", String(y));\n this._element.setAttribute(\"width\", String(size));\n this._element.setAttribute(\"height\", String(size));\n }\n });\n }\n\n _drawDot({ x, y, size, rotation }: DrawArgs): void {\n this._basicDot({ x, y, size, rotation });\n }\n\n _drawSquare({ x, y, size, rotation }: DrawArgs): void {\n this._basicSquare({ x, y, size, rotation });\n }\n}\n","import calculateImageSize from \"../tools/calculateImageSize\";\nimport errorCorrectionPercents from \"../constants/errorCorrectionPercents\";\nimport QRDot from \"../figures/dot/svg/QRDot\";\nimport QRCornerSquare from \"../figures/cornerSquare/svg/QRCornerSquare\";\nimport QRCornerDot from \"../figures/cornerDot/svg/QRCornerDot\";\nimport { RequiredOptions } from \"./QROptions\";\nimport gradientTypes from \"../constants/gradientTypes\";\nimport { QRCode, FilterFunction, Gradient } from \"../types\";\n\nconst squareMask = [\n [1, 1, 1, 1, 1, 1, 1],\n [1, 0, 0, 0, 0, 0, 1],\n [1, 0, 0, 0, 0, 0, 1],\n [1, 0, 0, 0, 0, 0, 1],\n [1, 0, 0, 0, 0, 0, 1],\n [1, 0, 0, 0, 0, 0, 1],\n [1, 1, 1, 1, 1, 1, 1]\n];\n\nconst dotMask = [\n [0, 0, 0, 0, 0, 0, 0],\n [0, 0, 0, 0, 0, 0, 0],\n [0, 0, 1, 1, 1, 0, 0],\n [0, 0, 1, 1, 1, 0, 0],\n [0, 0, 1, 1, 1, 0, 0],\n [0, 0, 0, 0, 0, 0, 0],\n [0, 0, 0, 0, 0, 0, 0]\n];\n\nexport default class QRSVG {\n _element: SVGElement;\n _style: SVGStyleElement;\n _defs: SVGElement;\n _dotsClipPath?: SVGElement;\n _cornersSquareClipPath?: SVGElement;\n _cornersDotClipPath?: SVGElement;\n _dots?: SVGElement;\n _cornerSquares?: SVGElement;\n _corners?: SVGElement;\n _cornerDots?: SVGElement;\n _options: RequiredOptions;\n _qr?: QRCode;\n _image?: HTMLImageElement;\n\n //TODO don't pass all options to this class\n constructor(options: RequiredOptions) {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\");\n this._element.setAttribute(\"width\", String(options.width));\n this._element.setAttribute(\"height\", String(options.height));\n this._element.setAttribute(\"xmlns:xlink\", \"http://www.w3.org/1999/xlink\");\n this._defs = document.createElementNS(\"http://www.w3.org/2000/svg\", \"defs\");\n this._style = document.createElementNS(\"http://www.w3.org/2000/svg\", \"style\");\n\n this._options = options;\n }\n\n get width(): number {\n return this._options.width;\n }\n\n get height(): number {\n return this._options.height;\n }\n\n getElement(): SVGElement {\n return this._element;\n }\n\n clear(): void {\n const oldElement = this._element;\n this._element = oldElement.cloneNode(false) as SVGElement;\n oldElement?.parentNode?.replaceChild(this._element, oldElement);\n this._defs = document.createElementNS(\"http://www.w3.org/2000/svg\", \"defs\");\n this._style = document.createElementNS(\"http://www.w3.org/2000/svg\", \"style\");\n this._element.appendChild(this._style);\n this._element.appendChild(this._defs);\n }\n\n async drawQR(qr: QRCode): Promise {\n const count = qr.getModuleCount();\n const minSize = Math.min(this._options.width, this._options.height) - this._options.margin * 2;\n const dotSize = Math.floor(minSize / count);\n let drawImageSize = {\n hideXDots: 0,\n hideYDots: 0,\n width: 0,\n height: 0\n };\n\n this._qr = qr;\n\n if (this._options.image) {\n //We need it to get image size\n await this.loadImage();\n if (!this._image) return;\n const { imageOptions, qrOptions } = this._options;\n const coverLevel = imageOptions.imageSize * errorCorrectionPercents[qrOptions.errorCorrectionLevel];\n const maxHiddenDots = Math.floor(coverLevel * count * count);\n\n drawImageSize = calculateImageSize({\n originalWidth: this._image.width,\n originalHeight: this._image.height,\n maxHiddenDots,\n maxHiddenAxisDots: count - 14,\n dotSize\n });\n }\n\n this._element.appendChild(this._style);\n this._element.appendChild(this._defs);\n\n this.clear();\n this.drawBackground();\n this.drawDots((i: number, j: number): boolean => {\n if (this._options.imageOptions.hideBackgroundDots) {\n if (\n i >= (count - drawImageSize.hideXDots) / 2 &&\n i < (count + drawImageSize.hideXDots) / 2 &&\n j >= (count - drawImageSize.hideYDots) / 2 &&\n j < (count + drawImageSize.hideYDots) / 2\n ) {\n return false;\n }\n }\n\n if (squareMask[i]?.[j] || squareMask[i - count + 7]?.[j] || squareMask[i]?.[j - count + 7]) {\n return false;\n }\n\n if (dotMask[i]?.[j] || dotMask[i - count + 7]?.[j] || dotMask[i]?.[j - count + 7]) {\n return false;\n }\n\n return true;\n });\n this.drawCorners();\n\n if (this._options.image) {\n await this.drawImage({ width: drawImageSize.width, height: drawImageSize.height, count, dotSize });\n }\n }\n\n drawBackground(): void {\n const element = this._element;\n const options = this._options;\n\n if (element) {\n const gradientOptions = options.backgroundOptions?.gradient;\n const color = options.backgroundOptions?.color;\n\n if (gradientOptions) {\n this._createColor({\n options: gradientOptions,\n color: color,\n additionalRotation: 0,\n x: 0,\n y: 0,\n height: options.height,\n width: options.width,\n name: \"background-color\"\n });\n } else if (options.backgroundOptions?.color) {\n this._createStyle({\n color: color,\n name: \"background-color\"\n });\n }\n }\n }\n\n drawDots(filter?: FilterFunction): void {\n if (!this._qr) {\n throw \"QR code is not defined\";\n }\n\n const options = this._options;\n const count = this._qr.getModuleCount();\n\n if (count > options.width || count > options.height) {\n throw \"The canvas is too small.\";\n }\n\n const minSize = Math.min(options.width, options.height) - options.margin * 2;\n const dotSize = Math.floor(minSize / count);\n const xBeginning = Math.floor((options.width - count * dotSize) / 2);\n const yBeginning = Math.floor((options.height - count * dotSize) / 2);\n const dot = new QRDot({ svg: this._element, type: options.dotsOptions.type });\n\n if (options.dotsOptions?.gradient) {\n this._dotsClipPath = document.createElementNS(\"http://www.w3.org/2000/svg\", \"clipPath\");\n this._dotsClipPath.setAttribute(\"id\", \"clip-path-dot-color\");\n this._defs.appendChild(this._dotsClipPath);\n this._createColor({\n options: options.dotsOptions?.gradient,\n color: options.dotsOptions.color,\n additionalRotation: 0,\n x: xBeginning,\n y: yBeginning,\n height: count * dotSize,\n width: count * dotSize,\n name: \"dot-color\"\n });\n } else if (options.dotsOptions.color) {\n this._dots = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n this._dots.setAttribute(\"class\", \"dot-color\");\n this._element.appendChild(this._dots);\n this._createStyle({\n color: options.dotsOptions.color,\n name: \"dot-color\"\n });\n }\n\n for (let i = 0; i < count; i++) {\n for (let j = 0; j < count; j++) {\n if (filter && !filter(i, j)) {\n continue;\n }\n if (!this._qr?.isDark(i, j)) {\n continue;\n }\n\n dot.draw(\n yBeginning + j * dotSize,\n xBeginning + i * dotSize,\n dotSize,\n (xOffset: number, yOffset: number): boolean => {\n if (i + xOffset < 0 || j + yOffset < 0 || i + xOffset >= count || j + yOffset >= count) return false;\n if (filter && !filter(i + xOffset, j + yOffset)) return false;\n return !!this._qr && this._qr.isDark(i + xOffset, j + yOffset);\n }\n );\n\n if (dot._element && this._dotsClipPath) {\n this._dotsClipPath.appendChild(dot._element);\n } else if (dot._element && this._dots) {\n this._dots.appendChild(dot._element);\n }\n }\n }\n }\n\n drawCorners(): void {\n if (!this._qr) {\n throw \"QR code is not defined\";\n }\n\n const element = this._element;\n const options = this._options;\n\n if (!element) {\n throw \"Element code is not defined\";\n }\n\n const count = this._qr.getModuleCount();\n const minSize = Math.min(options.width, options.height) - options.margin * 2;\n const dotSize = Math.floor(minSize / count);\n const cornersSquareSize = dotSize * 7;\n const cornersDotSize = dotSize * 3;\n const xBeginning = Math.floor((options.width - count * dotSize) / 2);\n const yBeginning = Math.floor((options.height - count * dotSize) / 2);\n\n [\n [0, 0, 0],\n [1, 0, Math.PI / 2],\n [0, 1, -Math.PI / 2]\n ].forEach(([column, row, rotation]) => {\n const x = xBeginning + column * dotSize * (count - 7);\n const y = yBeginning + row * dotSize * (count - 7);\n let cornersSquareClipPath = this._dotsClipPath;\n let cornersDotClipPath = this._dotsClipPath;\n\n if (options.cornersSquareOptions?.gradient) {\n cornersSquareClipPath = document.createElementNS(\"http://www.w3.org/2000/svg\", \"clipPath\");\n cornersSquareClipPath.setAttribute(\"id\", `clip-path-corners-square-color-${column}-${row}`);\n this._defs.appendChild(cornersSquareClipPath);\n this._cornersSquareClipPath = this._cornersDotClipPath = cornersDotClipPath = cornersSquareClipPath;\n\n this._createColor({\n options: options.cornersSquareOptions?.gradient,\n color: options.cornersSquareOptions?.color,\n additionalRotation: rotation,\n x,\n y,\n height: cornersSquareSize,\n width: cornersSquareSize,\n name: `corners-square-color-${column}-${row}`\n });\n } else {\n this._cornerSquares = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n this._cornerSquares.setAttribute(\"class\", `corners-square-color-${column}-${row}`);\n this._element.appendChild(this._cornerSquares);\n this._createStyle({\n color: options.cornersSquareOptions?.color,\n name: `corners-square-color-${column}-${row}`\n });\n }\n\n if (options.cornersSquareOptions?.type) {\n const cornersSquare = new QRCornerSquare({ svg: this._element, type: options.cornersSquareOptions.type });\n\n cornersSquare.draw(x, y, cornersSquareSize, rotation);\n\n if (options.cornersSquareOptions?.gradient && cornersSquare._element && cornersSquareClipPath) {\n cornersSquareClipPath.appendChild(cornersSquare._element);\n } else if (cornersSquare._element && this._cornerSquares) {\n this._cornerSquares.appendChild(cornersSquare._element);\n }\n } else {\n const dot = new QRDot({ svg: this._element, type: options.dotsOptions.type });\n\n for (let i = 0; i < squareMask.length; i++) {\n for (let j = 0; j < squareMask[i].length; j++) {\n if (!squareMask[i]?.[j]) {\n continue;\n }\n\n dot.draw(\n x + i * dotSize,\n y + j * dotSize,\n dotSize,\n (xOffset: number, yOffset: number): boolean => !!squareMask[i + xOffset]?.[j + yOffset]\n );\n\n if (dot._element && this._cornersSquareClipPath) {\n this._cornersSquareClipPath.appendChild(dot._element);\n } else if (dot._element && this._cornerSquares) {\n this._cornerSquares.appendChild(dot._element);\n }\n }\n }\n }\n\n if (options.cornersDotOptions?.gradient) {\n cornersDotClipPath = document.createElementNS(\"http://www.w3.org/2000/svg\", \"clipPath\");\n cornersDotClipPath.setAttribute(\"id\", `clip-path-corners-dot-color-${column}-${row}`);\n this._defs.appendChild(cornersDotClipPath);\n this._cornersDotClipPath = cornersDotClipPath;\n\n this._createColor({\n options: options.cornersDotOptions?.gradient,\n color: options.cornersDotOptions?.color,\n additionalRotation: rotation,\n x: x + dotSize * 2,\n y: y + dotSize * 2,\n height: cornersDotSize,\n width: cornersDotSize,\n name: `corners-dot-color-${column}-${row}`\n });\n } else {\n this._cornerDots = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n this._cornerDots.setAttribute(\"class\", `corners-dot-color-${column}-${row}`);\n this._element.appendChild(this._cornerDots);\n this._createStyle({\n color: options.cornersDotOptions?.color,\n name: `corners-dot-color-${column}-${row}`\n });\n }\n\n if (options.cornersDotOptions?.type) {\n const cornersDot = new QRCornerDot({ svg: this._element, type: options.cornersDotOptions.type });\n\n cornersDot.draw(x + dotSize * 2, y + dotSize * 2, cornersDotSize, rotation);\n\n if (options.cornersDotOptions?.gradient && cornersDot._element && cornersDotClipPath) {\n cornersDotClipPath.appendChild(cornersDot._element);\n } else if (cornersDot._element && this._cornerDots) {\n this._cornerDots.appendChild(cornersDot._element);\n }\n } else {\n const dot = new QRDot({ svg: this._element, type: options.dotsOptions.type });\n\n for (let i = 0; i < dotMask.length; i++) {\n for (let j = 0; j < dotMask[i].length; j++) {\n if (!dotMask[i]?.[j]) {\n continue;\n }\n\n dot.draw(\n x + i * dotSize,\n y + j * dotSize,\n dotSize,\n (xOffset: number, yOffset: number): boolean => !!dotMask[i + xOffset]?.[j + yOffset]\n );\n\n if (dot._element && this._cornersDotClipPath) {\n this._cornersDotClipPath.appendChild(dot._element);\n } else if (dot._element && this._cornerDots) {\n this._cornerDots.appendChild(dot._element);\n }\n }\n }\n }\n });\n }\n\n loadImage(): Promise {\n return new Promise((resolve, reject) => {\n const options = this._options;\n const image = new Image();\n\n if (!options.image) {\n return reject(\"Image is not defined\");\n }\n\n if (typeof options.imageOptions.crossOrigin === \"string\") {\n image.crossOrigin = options.imageOptions.crossOrigin;\n }\n\n this._image = image;\n image.onload = (): void => {\n resolve();\n };\n image.src = options.image;\n });\n }\n\n async drawImage({\n width,\n height,\n count,\n dotSize\n }: {\n width: number;\n height: number;\n count: number;\n dotSize: number;\n }): Promise {\n const options = this._options;\n const xBeginning = Math.floor((options.width - count * dotSize) / 2);\n const yBeginning = Math.floor((options.height - count * dotSize) / 2);\n const dx = xBeginning + options.imageOptions.margin + (count * dotSize - width) / 2;\n const dy = yBeginning + options.imageOptions.margin + (count * dotSize - height) / 2;\n const dw = width - options.imageOptions.margin * 2;\n const dh = height - options.imageOptions.margin * 2;\n\n const image = document.createElementNS(\"http://www.w3.org/2000/svg\", \"image\");\n\n const base64Image = await this._getBase64Image(options.image || \"\");\n\n image.setAttribute(\"href\", base64Image);\n image.setAttribute(\"xlink:href\", base64Image);\n image.setAttribute(\"x\", String(dx));\n image.setAttribute(\"y\", String(dy));\n image.setAttribute(\"width\", `${dw}px`);\n image.setAttribute(\"height\", `${dh}px`);\n\n this._element.appendChild(image);\n }\n\n async _getImageBlob(url: string): Promise {\n const resp = await fetch(url);\n return resp.blob();\n }\n\n // convert a blob to base64\n _blobToBase64(blob: Blob): Promise {\n return new Promise((resolve) => {\n const reader = new FileReader();\n reader.onload = function () {\n const dataUrl = reader.result;\n resolve(dataUrl as string);\n };\n reader.readAsDataURL(blob);\n });\n }\n\n async _getBase64Image(url: string): Promise {\n if (url === \"\") {\n return new Promise((resolve) => {\n resolve(\"\");\n });\n }\n\n const blob = await this._getImageBlob(url);\n const base64 = await this._blobToBase64(blob);\n return base64;\n }\n\n _createColor({\n options,\n color,\n additionalRotation,\n x,\n y,\n height,\n width,\n name\n }: {\n options?: Gradient;\n color?: string;\n additionalRotation: number;\n x: number;\n y: number;\n height: number;\n width: number;\n name: string;\n }): void {\n const size = width > height ? width : height;\n const rect = document.createElementNS(\"http://www.w3.org/2000/svg\", \"rect\");\n rect.setAttribute(\"x\", String(x));\n rect.setAttribute(\"y\", String(y));\n rect.setAttribute(\"height\", String(height));\n rect.setAttribute(\"width\", String(width));\n rect.setAttribute(\"clip-path\", `url('#clip-path-${name}')`);\n\n if (options) {\n let gradient: SVGElement;\n if (options.type === gradientTypes.radial) {\n gradient = document.createElementNS(\"http://www.w3.org/2000/svg\", \"radialGradient\");\n gradient.setAttribute(\"id\", name);\n gradient.setAttribute(\"gradientUnits\", \"userSpaceOnUse\");\n gradient.setAttribute(\"fx\", String(x + width / 2));\n gradient.setAttribute(\"fy\", String(y + height / 2));\n gradient.setAttribute(\"cx\", String(x + width / 2));\n gradient.setAttribute(\"cy\", String(y + height / 2));\n gradient.setAttribute(\"r\", String(size / 2));\n } else {\n const rotation = ((options.rotation || 0) + additionalRotation) % (2 * Math.PI);\n const positiveRotation = (rotation + 2 * Math.PI) % (2 * Math.PI);\n let x0 = x + width / 2;\n let y0 = y + height / 2;\n let x1 = x + width / 2;\n let y1 = y + height / 2;\n\n if (\n (positiveRotation >= 0 && positiveRotation <= 0.25 * Math.PI) ||\n (positiveRotation > 1.75 * Math.PI && positiveRotation <= 2 * Math.PI)\n ) {\n x0 = x0 - width / 2;\n y0 = y0 - (height / 2) * Math.tan(rotation);\n x1 = x1 + width / 2;\n y1 = y1 + (height / 2) * Math.tan(rotation);\n } else if (positiveRotation > 0.25 * Math.PI && positiveRotation <= 0.75 * Math.PI) {\n y0 = y0 - height / 2;\n x0 = x0 - width / 2 / Math.tan(rotation);\n y1 = y1 + height / 2;\n x1 = x1 + width / 2 / Math.tan(rotation);\n } else if (positiveRotation > 0.75 * Math.PI && positiveRotation <= 1.25 * Math.PI) {\n x0 = x0 + width / 2;\n y0 = y0 + (height / 2) * Math.tan(rotation);\n x1 = x1 - width / 2;\n y1 = y1 - (height / 2) * Math.tan(rotation);\n } else if (positiveRotation > 1.25 * Math.PI && positiveRotation <= 1.75 * Math.PI) {\n y0 = y0 + height / 2;\n x0 = x0 + width / 2 / Math.tan(rotation);\n y1 = y1 - height / 2;\n x1 = x1 - width / 2 / Math.tan(rotation);\n }\n\n gradient = document.createElementNS(\"http://www.w3.org/2000/svg\", \"linearGradient\");\n gradient.setAttribute(\"id\", name);\n gradient.setAttribute(\"gradientUnits\", \"userSpaceOnUse\");\n gradient.setAttribute(\"x1\", String(Math.round(x0)));\n gradient.setAttribute(\"y1\", String(Math.round(y0)));\n gradient.setAttribute(\"x2\", String(Math.round(x1)));\n gradient.setAttribute(\"y2\", String(Math.round(y1)));\n }\n\n options.colorStops.forEach(({ offset, color }: { offset: number; color: string }) => {\n const stop = document.createElementNS(\"http://www.w3.org/2000/svg\", \"stop\");\n stop.setAttribute(\"offset\", `${100 * offset}%`);\n stop.setAttribute(\"stop-color\", color);\n gradient.appendChild(stop);\n });\n\n rect.setAttribute(\"fill\", `url('#${name}')`);\n this._defs.appendChild(gradient);\n } else if (color) {\n rect.setAttribute(\"fill\", color);\n }\n\n this._element.appendChild(rect);\n }\n\n _createStyle({ color, name }: { color?: string; name: string }): void {\n if (color === undefined) {\n return;\n }\n\n if (color[0] !== \"#\" || (color.length !== 7 && color.length !== 9)) {\n console.error(\"unsupported color format. At the moment only Hex color codes are supported.\");\n return;\n }\n\n let opacity = 1.0;\n if (color.length === 9) {\n opacity = parseInt(color.substring(7, 9), 16) / 255.0;\n }\n\n this._style.innerHTML += `.${name}{ fill: ${color.substring(0, 7)}; fill-opacity: ${opacity} }`;\n }\n}\n","import { DrawTypes } from \"../types\";\n\nexport default {\n canvas: \"canvas\",\n svg: \"svg\"\n} as DrawTypes;\n","import { TypeNumber } from \"../types\";\n\ninterface TypesMap {\n [key: number]: TypeNumber;\n}\n\nconst qrTypes: TypesMap = {};\n\nfor (let type = 0; type <= 40; type++) {\n qrTypes[type] = type as TypeNumber;\n}\n\n// 0 types is autodetect\n\n// types = {\n// 0: 0,\n// 1: 1,\n// ...\n// 40: 40\n// }\n\nexport default qrTypes;\n","import qrTypes from \"../constants/qrTypes\";\nimport drawTypes from \"../constants/drawTypes\";\nimport errorCorrectionLevels from \"../constants/errorCorrectionLevels\";\nimport { DotType, Options, TypeNumber, ErrorCorrectionLevel, Mode, DrawType, Gradient } from \"../types\";\n\nexport interface RequiredOptions extends Options {\n type: DrawType;\n width: number;\n height: number;\n margin: number;\n data: string;\n qrOptions: {\n typeNumber: TypeNumber;\n mode?: Mode;\n errorCorrectionLevel: ErrorCorrectionLevel;\n };\n imageOptions: {\n hideBackgroundDots: boolean;\n imageSize: number;\n crossOrigin?: string;\n margin: number;\n };\n dotsOptions: {\n type: DotType;\n color: string;\n gradient?: Gradient;\n };\n backgroundOptions: {\n color: string;\n gradient?: Gradient;\n };\n}\n\nconst defaultOptions: RequiredOptions = {\n type: drawTypes.canvas,\n width: 512,\n height: 512,\n data: \"\",\n margin: 0,\n qrOptions: {\n typeNumber: qrTypes[0],\n mode: undefined,\n errorCorrectionLevel: errorCorrectionLevels.Q\n },\n imageOptions: {\n hideBackgroundDots: true,\n imageSize: 0.4,\n crossOrigin: \"anonymous\",\n margin: 0\n },\n dotsOptions: {\n type: \"square\",\n color: \"#000\"\n },\n backgroundOptions: {\n color: \"#FFFFFF00\"\n }\n};\n\nexport default defaultOptions;\n","import { ErrorCorrectionLevel } from \"../types\";\n\ninterface ErrorCorrectionLevels {\n [key: string]: ErrorCorrectionLevel;\n}\n\nexport default {\n L: \"L\",\n M: \"M\",\n Q: \"Q\",\n H: \"H\"\n} as ErrorCorrectionLevels;\n","import { RequiredOptions } from \"../core/QROptions\";\nimport { Gradient } from \"../types\";\n\nfunction sanitizeGradient(gradient: Gradient): Gradient {\n const newGradient = { ...gradient };\n\n if (!newGradient.colorStops || !newGradient.colorStops.length) {\n throw \"Field 'colorStops' is required in gradient\";\n }\n\n if (newGradient.rotation) {\n newGradient.rotation = Number(newGradient.rotation);\n } else {\n newGradient.rotation = 0;\n }\n\n newGradient.colorStops = newGradient.colorStops.map((colorStop: { offset: number; color: string }) => ({\n ...colorStop,\n offset: Number(colorStop.offset)\n }));\n\n return newGradient;\n}\n\nexport default function sanitizeOptions(options: RequiredOptions): RequiredOptions {\n const newOptions = { ...options };\n\n newOptions.width = Number(newOptions.width);\n newOptions.height = Number(newOptions.height);\n newOptions.margin = Number(newOptions.margin);\n newOptions.imageOptions = {\n ...newOptions.imageOptions,\n hideBackgroundDots: Boolean(newOptions.imageOptions.hideBackgroundDots),\n imageSize: Number(newOptions.imageOptions.imageSize),\n margin: Number(newOptions.imageOptions.margin)\n };\n\n if (newOptions.margin > Math.min(newOptions.width, newOptions.height)) {\n newOptions.margin = Math.min(newOptions.width, newOptions.height);\n }\n\n newOptions.dotsOptions = {\n ...newOptions.dotsOptions\n };\n if (newOptions.dotsOptions.gradient) {\n newOptions.dotsOptions.gradient = sanitizeGradient(newOptions.dotsOptions.gradient);\n }\n\n if (newOptions.cornersSquareOptions) {\n newOptions.cornersSquareOptions = {\n ...newOptions.cornersSquareOptions\n };\n if (newOptions.cornersSquareOptions.gradient) {\n newOptions.cornersSquareOptions.gradient = sanitizeGradient(newOptions.cornersSquareOptions.gradient);\n }\n }\n\n if (newOptions.cornersDotOptions) {\n newOptions.cornersDotOptions = {\n ...newOptions.cornersDotOptions\n };\n if (newOptions.cornersDotOptions.gradient) {\n newOptions.cornersDotOptions.gradient = sanitizeGradient(newOptions.cornersDotOptions.gradient);\n }\n }\n\n if (newOptions.backgroundOptions) {\n newOptions.backgroundOptions = {\n ...newOptions.backgroundOptions\n };\n if (newOptions.backgroundOptions.gradient) {\n newOptions.backgroundOptions.gradient = sanitizeGradient(newOptions.backgroundOptions.gradient);\n }\n }\n\n return newOptions;\n}\n","import QRCodeStyling from \"./core/QRCodeStyling\";\nimport dotTypes from \"./constants/dotTypes\";\nimport cornerDotTypes from \"./constants/cornerDotTypes\";\nimport cornerSquareTypes from \"./constants/cornerSquareTypes\";\nimport errorCorrectionLevels from \"./constants/errorCorrectionLevels\";\nimport errorCorrectionPercents from \"./constants/errorCorrectionPercents\";\nimport modes from \"./constants/modes\";\nimport qrTypes from \"./constants/qrTypes\";\nimport drawTypes from \"./constants/drawTypes\";\n\nexport * from \"./types\";\n\nexport {\n dotTypes,\n cornerDotTypes,\n cornerSquareTypes,\n errorCorrectionLevels,\n errorCorrectionPercents,\n modes,\n qrTypes,\n drawTypes\n};\n\nexport default QRCodeStyling;\n","import getMode from \"../tools/getMode\";\nimport mergeDeep from \"../tools/merge\";\nimport downloadURI from \"../tools/downloadURI\";\nimport QRCanvas from \"./QRCanvas\";\nimport QRSVG from \"./QRSVG\";\nimport drawTypes from \"../constants/drawTypes\";\n\nimport defaultOptions, { RequiredOptions } from \"./QROptions\";\nimport sanitizeOptions from \"../tools/sanitizeOptions\";\nimport { Extension, QRCode, Options, DownloadOptions } from \"../types\";\nimport qrcode from \"qrcode-generator\";\n\nexport default class QRCodeStyling {\n _options: RequiredOptions;\n _container?: HTMLElement;\n _canvas?: QRCanvas;\n _svg?: QRSVG;\n _qr?: QRCode;\n _canvasDrawingPromise?: Promise;\n _svgDrawingPromise?: Promise;\n\n constructor(options?: Partial) {\n this._options = options ? sanitizeOptions(mergeDeep(defaultOptions, options) as RequiredOptions) : defaultOptions;\n this.update();\n }\n\n static _clearContainer(container?: HTMLElement): void {\n if (container) {\n container.innerHTML = \"\";\n }\n }\n\n async _getQRStylingElement(extension: Extension = \"png\"): Promise {\n if (!this._qr) throw \"QR code is empty\";\n\n if (extension.toLowerCase() === \"svg\") {\n let promise, svg: QRSVG;\n\n if (this._svg && this._svgDrawingPromise) {\n svg = this._svg;\n promise = this._svgDrawingPromise;\n } else {\n svg = new QRSVG(this._options);\n promise = svg.drawQR(this._qr);\n }\n\n await promise;\n\n return svg;\n } else {\n let promise, canvas: QRCanvas;\n\n if (this._canvas && this._canvasDrawingPromise) {\n canvas = this._canvas;\n promise = this._canvasDrawingPromise;\n } else {\n canvas = new QRCanvas(this._options);\n promise = canvas.drawQR(this._qr);\n }\n\n await promise;\n\n return canvas;\n }\n }\n\n update(options?: Partial): void {\n QRCodeStyling._clearContainer(this._container);\n this._options = options ? sanitizeOptions(mergeDeep(this._options, options) as RequiredOptions) : this._options;\n\n if (!this._options.data) {\n return;\n }\n\n this._qr = qrcode(this._options.qrOptions.typeNumber, this._options.qrOptions.errorCorrectionLevel);\n this._qr.addData(this._options.data, this._options.qrOptions.mode || getMode(this._options.data));\n this._qr.make();\n\n if (this._options.type === drawTypes.canvas) {\n this._canvas = new QRCanvas(this._options);\n this._canvasDrawingPromise = this._canvas.drawQR(this._qr);\n this._svgDrawingPromise = undefined;\n this._svg = undefined;\n } else {\n this._svg = new QRSVG(this._options);\n this._svgDrawingPromise = this._svg.drawQR(this._qr);\n this._canvasDrawingPromise = undefined;\n this._canvas = undefined;\n }\n\n this.append(this._container);\n }\n\n append(container?: HTMLElement): void {\n if (!container) {\n return;\n }\n\n if (typeof container.appendChild !== \"function\") {\n throw \"Container should be a single DOM node\";\n }\n\n if (this._options.type === drawTypes.canvas) {\n if (this._canvas) {\n container.appendChild(this._canvas.getCanvas());\n }\n } else {\n if (this._svg) {\n container.appendChild(this._svg.getElement());\n }\n }\n\n this._container = container;\n }\n\n async getRawData(extension: Extension = \"png\"): Promise {\n if (!this._qr) throw \"QR code is empty\";\n const element = await this._getQRStylingElement(extension);\n\n if (extension.toLowerCase() === \"svg\") {\n const serializer = new XMLSerializer();\n const source = serializer.serializeToString(((element as unknown) as QRSVG).getElement());\n\n return new Blob(['\\r\\n' + source], { type: \"image/svg+xml\" });\n } else {\n return new Promise((resolve) =>\n ((element as unknown) as QRCanvas).getCanvas().toBlob(resolve, `image/${extension}`, 1)\n );\n }\n }\n\n async download(downloadOptions?: Partial | string): Promise {\n if (!this._qr) throw \"QR code is empty\";\n let extension = \"png\" as Extension;\n let name = \"qr\";\n\n //TODO remove deprecated code in the v2\n if (typeof downloadOptions === \"string\") {\n extension = downloadOptions as Extension;\n console.warn(\n \"Extension is deprecated as argument for 'download' method, please pass object { name: '...', extension: '...' } as argument\"\n );\n } else if (typeof downloadOptions === \"object\" && downloadOptions !== null) {\n if (downloadOptions.name) {\n name = downloadOptions.name;\n }\n if (downloadOptions.extension) {\n extension = downloadOptions.extension;\n }\n }\n\n const element = await this._getQRStylingElement(extension);\n\n if (extension.toLowerCase() === \"svg\") {\n const serializer = new XMLSerializer();\n let source = serializer.serializeToString(((element as unknown) as QRSVG).getElement());\n\n source = '\\r\\n' + source;\n const url = \"data:image/svg+xml;charset=utf-8,\" + encodeURIComponent(source);\n downloadURI(url, `${name}.svg`);\n } else {\n const url = ((element as unknown) as QRCanvas).getCanvas().toDataURL(`image/${extension}`);\n downloadURI(url, `${name}.${extension}`);\n }\n }\n}\n","import modes from \"../constants/modes\";\nimport { Mode } from \"../types\";\n\nexport default function getMode(data: string): Mode {\n switch (true) {\n case /^[0-9]*$/.test(data):\n return modes.numeric;\n case /^[0-9A-Z $%*+\\-./:]*$/.test(data):\n return modes.alphanumeric;\n default:\n return modes.byte;\n }\n}\n","import { Mode } from \"../types\";\n\ninterface Modes {\n [key: string]: Mode;\n}\n\nexport default {\n numeric: \"Numeric\",\n alphanumeric: \"Alphanumeric\",\n byte: \"Byte\",\n kanji: \"Kanji\"\n} as Modes;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tif(__webpack_module_cache__[moduleId]) {\n\t\treturn __webpack_module_cache__[moduleId].exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// module exports must be returned from runtime so entry inlining is disabled\n// startup\n// Load entry module and return exports\nreturn __webpack_require__(796);\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => module['default'] :\n\t\t() => module;\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop)"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"qr-code-styling.js","mappings":"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AAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IAGrB,CAAC,GAAI,IAAK,IAAK,EAAG,IAAK,KACvB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IAGrB,CAAC,GAAI,IAAK,IAAK,EAAG,IAAK,KACvB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,IACpB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,IAGpB,CAAC,GAAI,IAAK,IAAK,EAAG,IAAK,KACvB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IAGrB,CAAC,EAAG,IAAK,IAAK,GAAI,IAAK,KACvB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,IACpB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,IAGpB,CAAC,GAAI,IAAK,IAAK,EAAG,IAAK,KACvB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IAGrB,CAAC,EAAG,IAAK,IAAK,GAAI,IAAK,KACvB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IAGrB,CAAC,GAAI,IAAK,IAAK,EAAG,IAAK,KACvB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,IACpB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IAGrB,CAAC,GAAI,IAAK,IAAK,EAAG,IAAK,KACvB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAA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","sources":["webpack://QRCodeStyling/webpack/universalModuleDefinition","webpack://QRCodeStyling/./node_modules/qrcode-generator/qrcode.js","webpack://QRCodeStyling/webpack/bootstrap","webpack://QRCodeStyling/webpack/runtime/compat get default export","webpack://QRCodeStyling/webpack/runtime/define property getters","webpack://QRCodeStyling/webpack/runtime/hasOwnProperty shorthand","webpack://QRCodeStyling/./src/constants/modes.ts","webpack://QRCodeStyling/./src/tools/merge.ts","webpack://QRCodeStyling/./src/tools/downloadURI.ts","webpack://QRCodeStyling/./src/tools/calculateImageSize.ts","webpack://QRCodeStyling/./src/constants/errorCorrectionPercents.ts","webpack://QRCodeStyling/./src/constants/dotTypes.ts","webpack://QRCodeStyling/./src/figures/dot/canvas/QRDot.ts","webpack://QRCodeStyling/./src/constants/cornerSquareTypes.ts","webpack://QRCodeStyling/./src/figures/cornerSquare/canvas/QRCornerSquare.ts","webpack://QRCodeStyling/./src/constants/cornerDotTypes.ts","webpack://QRCodeStyling/./src/figures/cornerDot/canvas/QRCornerDot.ts","webpack://QRCodeStyling/./src/constants/gradientTypes.ts","webpack://QRCodeStyling/./src/core/QRCanvas.ts","webpack://QRCodeStyling/./src/figures/dot/svg/QRDot.ts","webpack://QRCodeStyling/./src/figures/cornerSquare/svg/QRCornerSquare.ts","webpack://QRCodeStyling/./src/figures/cornerDot/svg/QRCornerDot.ts","webpack://QRCodeStyling/./src/core/QRSVG.ts","webpack://QRCodeStyling/./src/constants/drawTypes.ts","webpack://QRCodeStyling/./src/constants/qrTypes.ts","webpack://QRCodeStyling/./src/core/QROptions.ts","webpack://QRCodeStyling/./src/constants/errorCorrectionLevels.ts","webpack://QRCodeStyling/./src/tools/sanitizeOptions.ts","webpack://QRCodeStyling/./src/core/QRCodeStyling.ts","webpack://QRCodeStyling/./src/tools/getMode.ts","webpack://QRCodeStyling/./src/index.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"QRCodeStyling\"] = factory();\n\telse\n\t\troot[\"QRCodeStyling\"] = factory();\n})(self, () => {\nreturn ","//---------------------------------------------------------------------\n//\n// QR Code Generator for JavaScript\n//\n// Copyright (c) 2009 Kazuhiko Arase\n//\n// URL: http://www.d-project.com/\n//\n// Licensed under the MIT license:\n// http://www.opensource.org/licenses/mit-license.php\n//\n// The word 'QR Code' is registered trademark of\n// DENSO WAVE INCORPORATED\n// http://www.denso-wave.com/qrcode/faqpatent-e.html\n//\n//---------------------------------------------------------------------\n\nvar qrcode = function() {\n\n //---------------------------------------------------------------------\n // qrcode\n //---------------------------------------------------------------------\n\n /**\n * qrcode\n * @param typeNumber 1 to 40\n * @param errorCorrectionLevel 'L','M','Q','H'\n */\n var qrcode = function(typeNumber, errorCorrectionLevel) {\n\n var PAD0 = 0xEC;\n var PAD1 = 0x11;\n\n var _typeNumber = typeNumber;\n var _errorCorrectionLevel = QRErrorCorrectionLevel[errorCorrectionLevel];\n var _modules = null;\n var _moduleCount = 0;\n var _dataCache = null;\n var _dataList = [];\n\n var _this = {};\n\n var makeImpl = function(test, maskPattern) {\n\n _moduleCount = _typeNumber * 4 + 17;\n _modules = function(moduleCount) {\n var modules = new Array(moduleCount);\n for (var row = 0; row < moduleCount; row += 1) {\n modules[row] = new Array(moduleCount);\n for (var col = 0; col < moduleCount; col += 1) {\n modules[row][col] = null;\n }\n }\n return modules;\n }(_moduleCount);\n\n setupPositionProbePattern(0, 0);\n setupPositionProbePattern(_moduleCount - 7, 0);\n setupPositionProbePattern(0, _moduleCount - 7);\n setupPositionAdjustPattern();\n setupTimingPattern();\n setupTypeInfo(test, maskPattern);\n\n if (_typeNumber >= 7) {\n setupTypeNumber(test);\n }\n\n if (_dataCache == null) {\n _dataCache = createData(_typeNumber, _errorCorrectionLevel, _dataList);\n }\n\n mapData(_dataCache, maskPattern);\n };\n\n var setupPositionProbePattern = function(row, col) {\n\n for (var r = -1; r <= 7; r += 1) {\n\n if (row + r <= -1 || _moduleCount <= row + r) continue;\n\n for (var c = -1; c <= 7; c += 1) {\n\n if (col + c <= -1 || _moduleCount <= col + c) continue;\n\n if ( (0 <= r && r <= 6 && (c == 0 || c == 6) )\n || (0 <= c && c <= 6 && (r == 0 || r == 6) )\n || (2 <= r && r <= 4 && 2 <= c && c <= 4) ) {\n _modules[row + r][col + c] = true;\n } else {\n _modules[row + r][col + c] = false;\n }\n }\n }\n };\n\n var getBestMaskPattern = function() {\n\n var minLostPoint = 0;\n var pattern = 0;\n\n for (var i = 0; i < 8; i += 1) {\n\n makeImpl(true, i);\n\n var lostPoint = QRUtil.getLostPoint(_this);\n\n if (i == 0 || minLostPoint > lostPoint) {\n minLostPoint = lostPoint;\n pattern = i;\n }\n }\n\n return pattern;\n };\n\n var setupTimingPattern = function() {\n\n for (var r = 8; r < _moduleCount - 8; r += 1) {\n if (_modules[r][6] != null) {\n continue;\n }\n _modules[r][6] = (r % 2 == 0);\n }\n\n for (var c = 8; c < _moduleCount - 8; c += 1) {\n if (_modules[6][c] != null) {\n continue;\n }\n _modules[6][c] = (c % 2 == 0);\n }\n };\n\n var setupPositionAdjustPattern = function() {\n\n var pos = QRUtil.getPatternPosition(_typeNumber);\n\n for (var i = 0; i < pos.length; i += 1) {\n\n for (var j = 0; j < pos.length; j += 1) {\n\n var row = pos[i];\n var col = pos[j];\n\n if (_modules[row][col] != null) {\n continue;\n }\n\n for (var r = -2; r <= 2; r += 1) {\n\n for (var c = -2; c <= 2; c += 1) {\n\n if (r == -2 || r == 2 || c == -2 || c == 2\n || (r == 0 && c == 0) ) {\n _modules[row + r][col + c] = true;\n } else {\n _modules[row + r][col + c] = false;\n }\n }\n }\n }\n }\n };\n\n var setupTypeNumber = function(test) {\n\n var bits = QRUtil.getBCHTypeNumber(_typeNumber);\n\n for (var i = 0; i < 18; i += 1) {\n var mod = (!test && ( (bits >> i) & 1) == 1);\n _modules[Math.floor(i / 3)][i % 3 + _moduleCount - 8 - 3] = mod;\n }\n\n for (var i = 0; i < 18; i += 1) {\n var mod = (!test && ( (bits >> i) & 1) == 1);\n _modules[i % 3 + _moduleCount - 8 - 3][Math.floor(i / 3)] = mod;\n }\n };\n\n var setupTypeInfo = function(test, maskPattern) {\n\n var data = (_errorCorrectionLevel << 3) | maskPattern;\n var bits = QRUtil.getBCHTypeInfo(data);\n\n // vertical\n for (var i = 0; i < 15; i += 1) {\n\n var mod = (!test && ( (bits >> i) & 1) == 1);\n\n if (i < 6) {\n _modules[i][8] = mod;\n } else if (i < 8) {\n _modules[i + 1][8] = mod;\n } else {\n _modules[_moduleCount - 15 + i][8] = mod;\n }\n }\n\n // horizontal\n for (var i = 0; i < 15; i += 1) {\n\n var mod = (!test && ( (bits >> i) & 1) == 1);\n\n if (i < 8) {\n _modules[8][_moduleCount - i - 1] = mod;\n } else if (i < 9) {\n _modules[8][15 - i - 1 + 1] = mod;\n } else {\n _modules[8][15 - i - 1] = mod;\n }\n }\n\n // fixed module\n _modules[_moduleCount - 8][8] = (!test);\n };\n\n var mapData = function(data, maskPattern) {\n\n var inc = -1;\n var row = _moduleCount - 1;\n var bitIndex = 7;\n var byteIndex = 0;\n var maskFunc = QRUtil.getMaskFunction(maskPattern);\n\n for (var col = _moduleCount - 1; col > 0; col -= 2) {\n\n if (col == 6) col -= 1;\n\n while (true) {\n\n for (var c = 0; c < 2; c += 1) {\n\n if (_modules[row][col - c] == null) {\n\n var dark = false;\n\n if (byteIndex < data.length) {\n dark = ( ( (data[byteIndex] >>> bitIndex) & 1) == 1);\n }\n\n var mask = maskFunc(row, col - c);\n\n if (mask) {\n dark = !dark;\n }\n\n _modules[row][col - c] = dark;\n bitIndex -= 1;\n\n if (bitIndex == -1) {\n byteIndex += 1;\n bitIndex = 7;\n }\n }\n }\n\n row += inc;\n\n if (row < 0 || _moduleCount <= row) {\n row -= inc;\n inc = -inc;\n break;\n }\n }\n }\n };\n\n var createBytes = function(buffer, rsBlocks) {\n\n var offset = 0;\n\n var maxDcCount = 0;\n var maxEcCount = 0;\n\n var dcdata = new Array(rsBlocks.length);\n var ecdata = new Array(rsBlocks.length);\n\n for (var r = 0; r < rsBlocks.length; r += 1) {\n\n var dcCount = rsBlocks[r].dataCount;\n var ecCount = rsBlocks[r].totalCount - dcCount;\n\n maxDcCount = Math.max(maxDcCount, dcCount);\n maxEcCount = Math.max(maxEcCount, ecCount);\n\n dcdata[r] = new Array(dcCount);\n\n for (var i = 0; i < dcdata[r].length; i += 1) {\n dcdata[r][i] = 0xff & buffer.getBuffer()[i + offset];\n }\n offset += dcCount;\n\n var rsPoly = QRUtil.getErrorCorrectPolynomial(ecCount);\n var rawPoly = qrPolynomial(dcdata[r], rsPoly.getLength() - 1);\n\n var modPoly = rawPoly.mod(rsPoly);\n ecdata[r] = new Array(rsPoly.getLength() - 1);\n for (var i = 0; i < ecdata[r].length; i += 1) {\n var modIndex = i + modPoly.getLength() - ecdata[r].length;\n ecdata[r][i] = (modIndex >= 0)? modPoly.getAt(modIndex) : 0;\n }\n }\n\n var totalCodeCount = 0;\n for (var i = 0; i < rsBlocks.length; i += 1) {\n totalCodeCount += rsBlocks[i].totalCount;\n }\n\n var data = new Array(totalCodeCount);\n var index = 0;\n\n for (var i = 0; i < maxDcCount; i += 1) {\n for (var r = 0; r < rsBlocks.length; r += 1) {\n if (i < dcdata[r].length) {\n data[index] = dcdata[r][i];\n index += 1;\n }\n }\n }\n\n for (var i = 0; i < maxEcCount; i += 1) {\n for (var r = 0; r < rsBlocks.length; r += 1) {\n if (i < ecdata[r].length) {\n data[index] = ecdata[r][i];\n index += 1;\n }\n }\n }\n\n return data;\n };\n\n var createData = function(typeNumber, errorCorrectionLevel, dataList) {\n\n var rsBlocks = QRRSBlock.getRSBlocks(typeNumber, errorCorrectionLevel);\n\n var buffer = qrBitBuffer();\n\n for (var i = 0; i < dataList.length; i += 1) {\n var data = dataList[i];\n buffer.put(data.getMode(), 4);\n buffer.put(data.getLength(), QRUtil.getLengthInBits(data.getMode(), typeNumber) );\n data.write(buffer);\n }\n\n // calc num max data.\n var totalDataCount = 0;\n for (var i = 0; i < rsBlocks.length; i += 1) {\n totalDataCount += rsBlocks[i].dataCount;\n }\n\n if (buffer.getLengthInBits() > totalDataCount * 8) {\n throw 'code length overflow. ('\n + buffer.getLengthInBits()\n + '>'\n + totalDataCount * 8\n + ')';\n }\n\n // end code\n if (buffer.getLengthInBits() + 4 <= totalDataCount * 8) {\n buffer.put(0, 4);\n }\n\n // padding\n while (buffer.getLengthInBits() % 8 != 0) {\n buffer.putBit(false);\n }\n\n // padding\n while (true) {\n\n if (buffer.getLengthInBits() >= totalDataCount * 8) {\n break;\n }\n buffer.put(PAD0, 8);\n\n if (buffer.getLengthInBits() >= totalDataCount * 8) {\n break;\n }\n buffer.put(PAD1, 8);\n }\n\n return createBytes(buffer, rsBlocks);\n };\n\n _this.addData = function(data, mode) {\n\n mode = mode || 'Byte';\n\n var newData = null;\n\n switch(mode) {\n case 'Numeric' :\n newData = qrNumber(data);\n break;\n case 'Alphanumeric' :\n newData = qrAlphaNum(data);\n break;\n case 'Byte' :\n newData = qr8BitByte(data);\n break;\n case 'Kanji' :\n newData = qrKanji(data);\n break;\n default :\n throw 'mode:' + mode;\n }\n\n _dataList.push(newData);\n _dataCache = null;\n };\n\n _this.isDark = function(row, col) {\n if (row < 0 || _moduleCount <= row || col < 0 || _moduleCount <= col) {\n throw row + ',' + col;\n }\n return _modules[row][col];\n };\n\n _this.getModuleCount = function() {\n return _moduleCount;\n };\n\n _this.make = function() {\n if (_typeNumber < 1) {\n var typeNumber = 1;\n\n for (; typeNumber < 40; typeNumber++) {\n var rsBlocks = QRRSBlock.getRSBlocks(typeNumber, _errorCorrectionLevel);\n var buffer = qrBitBuffer();\n\n for (var i = 0; i < _dataList.length; i++) {\n var data = _dataList[i];\n buffer.put(data.getMode(), 4);\n buffer.put(data.getLength(), QRUtil.getLengthInBits(data.getMode(), typeNumber) );\n data.write(buffer);\n }\n\n var totalDataCount = 0;\n for (var i = 0; i < rsBlocks.length; i++) {\n totalDataCount += rsBlocks[i].dataCount;\n }\n\n if (buffer.getLengthInBits() <= totalDataCount * 8) {\n break;\n }\n }\n\n _typeNumber = typeNumber;\n }\n\n makeImpl(false, getBestMaskPattern() );\n };\n\n _this.createTableTag = function(cellSize, margin) {\n\n cellSize = cellSize || 2;\n margin = (typeof margin == 'undefined')? cellSize * 4 : margin;\n\n var qrHtml = '';\n\n qrHtml += '
' +\n escapeXml(title.text) + '' : '';\n qrSvg += (alt.text) ? '' +\n escapeXml(alt.text) + '' : '';\n qrSvg += '';\n qrSvg += '': escaped += '>'; break;\n case '&': escaped += '&'; break;\n case '\"': escaped += '"'; break;\n default : escaped += c; break;\n }\n }\n return escaped;\n };\n\n var _createHalfASCII = function(margin) {\n var cellSize = 1;\n margin = (typeof margin == 'undefined')? cellSize * 2 : margin;\n\n var size = _this.getModuleCount() * cellSize + margin * 2;\n var min = margin;\n var max = size - margin;\n\n var y, x, r1, r2, p;\n\n var blocks = {\n '██': '█',\n '█ ': '▀',\n ' █': '▄',\n ' ': ' '\n };\n\n var blocksLastLineNoMargin = {\n '██': '▀',\n '█ ': '▀',\n ' █': ' ',\n ' ': ' '\n };\n\n var ascii = '';\n for (y = 0; y < size; y += 2) {\n r1 = Math.floor((y - min) / cellSize);\n r2 = Math.floor((y + 1 - min) / cellSize);\n for (x = 0; x < size; x += 1) {\n p = '█';\n\n if (min <= x && x < max && min <= y && y < max && _this.isDark(r1, Math.floor((x - min) / cellSize))) {\n p = ' ';\n }\n\n if (min <= x && x < max && min <= y+1 && y+1 < max && _this.isDark(r2, Math.floor((x - min) / cellSize))) {\n p += ' ';\n }\n else {\n p += '█';\n }\n\n // Output 2 characters per pixel, to create full square. 1 character per pixels gives only half width of square.\n ascii += (margin < 1 && y+1 >= max) ? blocksLastLineNoMargin[p] : blocks[p];\n }\n\n ascii += '\\n';\n }\n\n if (size % 2 && margin > 0) {\n return ascii.substring(0, ascii.length - size - 1) + Array(size+1).join('▀');\n }\n\n return ascii.substring(0, ascii.length-1);\n };\n\n _this.createASCII = function(cellSize, margin) {\n cellSize = cellSize || 1;\n\n if (cellSize < 2) {\n return _createHalfASCII(margin);\n }\n\n cellSize -= 1;\n margin = (typeof margin == 'undefined')? cellSize * 2 : margin;\n\n var size = _this.getModuleCount() * cellSize + margin * 2;\n var min = margin;\n var max = size - margin;\n\n var y, x, r, p;\n\n var white = Array(cellSize+1).join('██');\n var black = Array(cellSize+1).join(' ');\n\n var ascii = '';\n var line = '';\n for (y = 0; y < size; y += 1) {\n r = Math.floor( (y - min) / cellSize);\n line = '';\n for (x = 0; x < size; x += 1) {\n p = 1;\n\n if (min <= x && x < max && min <= y && y < max && _this.isDark(r, Math.floor((x - min) / cellSize))) {\n p = 0;\n }\n\n // Output 2 characters per pixel, to create full square. 1 character per pixels gives only half width of square.\n line += p ? white : black;\n }\n\n for (r = 0; r < cellSize; r += 1) {\n ascii += line + '\\n';\n }\n }\n\n return ascii.substring(0, ascii.length-1);\n };\n\n _this.renderTo2dContext = function(context, cellSize) {\n cellSize = cellSize || 2;\n var length = _this.getModuleCount();\n for (var row = 0; row < length; row++) {\n for (var col = 0; col < length; col++) {\n context.fillStyle = _this.isDark(row, col) ? 'black' : 'white';\n context.fillRect(row * cellSize, col * cellSize, cellSize, cellSize);\n }\n }\n }\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qrcode.stringToBytes\n //---------------------------------------------------------------------\n\n qrcode.stringToBytesFuncs = {\n 'default' : function(s) {\n var bytes = [];\n for (var i = 0; i < s.length; i += 1) {\n var c = s.charCodeAt(i);\n bytes.push(c & 0xff);\n }\n return bytes;\n }\n };\n\n qrcode.stringToBytes = qrcode.stringToBytesFuncs['default'];\n\n //---------------------------------------------------------------------\n // qrcode.createStringToBytes\n //---------------------------------------------------------------------\n\n /**\n * @param unicodeData base64 string of byte array.\n * [16bit Unicode],[16bit Bytes], ...\n * @param numChars\n */\n qrcode.createStringToBytes = function(unicodeData, numChars) {\n\n // create conversion map.\n\n var unicodeMap = function() {\n\n var bin = base64DecodeInputStream(unicodeData);\n var read = function() {\n var b = bin.read();\n if (b == -1) throw 'eof';\n return b;\n };\n\n var count = 0;\n var unicodeMap = {};\n while (true) {\n var b0 = bin.read();\n if (b0 == -1) break;\n var b1 = read();\n var b2 = read();\n var b3 = read();\n var k = String.fromCharCode( (b0 << 8) | b1);\n var v = (b2 << 8) | b3;\n unicodeMap[k] = v;\n count += 1;\n }\n if (count != numChars) {\n throw count + ' != ' + numChars;\n }\n\n return unicodeMap;\n }();\n\n var unknownChar = '?'.charCodeAt(0);\n\n return function(s) {\n var bytes = [];\n for (var i = 0; i < s.length; i += 1) {\n var c = s.charCodeAt(i);\n if (c < 128) {\n bytes.push(c);\n } else {\n var b = unicodeMap[s.charAt(i)];\n if (typeof b == 'number') {\n if ( (b & 0xff) == b) {\n // 1byte\n bytes.push(b);\n } else {\n // 2bytes\n bytes.push(b >>> 8);\n bytes.push(b & 0xff);\n }\n } else {\n bytes.push(unknownChar);\n }\n }\n }\n return bytes;\n };\n };\n\n //---------------------------------------------------------------------\n // QRMode\n //---------------------------------------------------------------------\n\n var QRMode = {\n MODE_NUMBER : 1 << 0,\n MODE_ALPHA_NUM : 1 << 1,\n MODE_8BIT_BYTE : 1 << 2,\n MODE_KANJI : 1 << 3\n };\n\n //---------------------------------------------------------------------\n // QRErrorCorrectionLevel\n //---------------------------------------------------------------------\n\n var QRErrorCorrectionLevel = {\n L : 1,\n M : 0,\n Q : 3,\n H : 2\n };\n\n //---------------------------------------------------------------------\n // QRMaskPattern\n //---------------------------------------------------------------------\n\n var QRMaskPattern = {\n PATTERN000 : 0,\n PATTERN001 : 1,\n PATTERN010 : 2,\n PATTERN011 : 3,\n PATTERN100 : 4,\n PATTERN101 : 5,\n PATTERN110 : 6,\n PATTERN111 : 7\n };\n\n //---------------------------------------------------------------------\n // QRUtil\n //---------------------------------------------------------------------\n\n var QRUtil = function() {\n\n var PATTERN_POSITION_TABLE = [\n [],\n [6, 18],\n [6, 22],\n [6, 26],\n [6, 30],\n [6, 34],\n [6, 22, 38],\n [6, 24, 42],\n [6, 26, 46],\n [6, 28, 50],\n [6, 30, 54],\n [6, 32, 58],\n [6, 34, 62],\n [6, 26, 46, 66],\n [6, 26, 48, 70],\n [6, 26, 50, 74],\n [6, 30, 54, 78],\n [6, 30, 56, 82],\n [6, 30, 58, 86],\n [6, 34, 62, 90],\n [6, 28, 50, 72, 94],\n [6, 26, 50, 74, 98],\n [6, 30, 54, 78, 102],\n [6, 28, 54, 80, 106],\n [6, 32, 58, 84, 110],\n [6, 30, 58, 86, 114],\n [6, 34, 62, 90, 118],\n [6, 26, 50, 74, 98, 122],\n [6, 30, 54, 78, 102, 126],\n [6, 26, 52, 78, 104, 130],\n [6, 30, 56, 82, 108, 134],\n [6, 34, 60, 86, 112, 138],\n [6, 30, 58, 86, 114, 142],\n [6, 34, 62, 90, 118, 146],\n [6, 30, 54, 78, 102, 126, 150],\n [6, 24, 50, 76, 102, 128, 154],\n [6, 28, 54, 80, 106, 132, 158],\n [6, 32, 58, 84, 110, 136, 162],\n [6, 26, 54, 82, 110, 138, 166],\n [6, 30, 58, 86, 114, 142, 170]\n ];\n var G15 = (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0);\n var G18 = (1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | (1 << 2) | (1 << 0);\n var G15_MASK = (1 << 14) | (1 << 12) | (1 << 10) | (1 << 4) | (1 << 1);\n\n var _this = {};\n\n var getBCHDigit = function(data) {\n var digit = 0;\n while (data != 0) {\n digit += 1;\n data >>>= 1;\n }\n return digit;\n };\n\n _this.getBCHTypeInfo = function(data) {\n var d = data << 10;\n while (getBCHDigit(d) - getBCHDigit(G15) >= 0) {\n d ^= (G15 << (getBCHDigit(d) - getBCHDigit(G15) ) );\n }\n return ( (data << 10) | d) ^ G15_MASK;\n };\n\n _this.getBCHTypeNumber = function(data) {\n var d = data << 12;\n while (getBCHDigit(d) - getBCHDigit(G18) >= 0) {\n d ^= (G18 << (getBCHDigit(d) - getBCHDigit(G18) ) );\n }\n return (data << 12) | d;\n };\n\n _this.getPatternPosition = function(typeNumber) {\n return PATTERN_POSITION_TABLE[typeNumber - 1];\n };\n\n _this.getMaskFunction = function(maskPattern) {\n\n switch (maskPattern) {\n\n case QRMaskPattern.PATTERN000 :\n return function(i, j) { return (i + j) % 2 == 0; };\n case QRMaskPattern.PATTERN001 :\n return function(i, j) { return i % 2 == 0; };\n case QRMaskPattern.PATTERN010 :\n return function(i, j) { return j % 3 == 0; };\n case QRMaskPattern.PATTERN011 :\n return function(i, j) { return (i + j) % 3 == 0; };\n case QRMaskPattern.PATTERN100 :\n return function(i, j) { return (Math.floor(i / 2) + Math.floor(j / 3) ) % 2 == 0; };\n case QRMaskPattern.PATTERN101 :\n return function(i, j) { return (i * j) % 2 + (i * j) % 3 == 0; };\n case QRMaskPattern.PATTERN110 :\n return function(i, j) { return ( (i * j) % 2 + (i * j) % 3) % 2 == 0; };\n case QRMaskPattern.PATTERN111 :\n return function(i, j) { return ( (i * j) % 3 + (i + j) % 2) % 2 == 0; };\n\n default :\n throw 'bad maskPattern:' + maskPattern;\n }\n };\n\n _this.getErrorCorrectPolynomial = function(errorCorrectLength) {\n var a = qrPolynomial([1], 0);\n for (var i = 0; i < errorCorrectLength; i += 1) {\n a = a.multiply(qrPolynomial([1, QRMath.gexp(i)], 0) );\n }\n return a;\n };\n\n _this.getLengthInBits = function(mode, type) {\n\n if (1 <= type && type < 10) {\n\n // 1 - 9\n\n switch(mode) {\n case QRMode.MODE_NUMBER : return 10;\n case QRMode.MODE_ALPHA_NUM : return 9;\n case QRMode.MODE_8BIT_BYTE : return 8;\n case QRMode.MODE_KANJI : return 8;\n default :\n throw 'mode:' + mode;\n }\n\n } else if (type < 27) {\n\n // 10 - 26\n\n switch(mode) {\n case QRMode.MODE_NUMBER : return 12;\n case QRMode.MODE_ALPHA_NUM : return 11;\n case QRMode.MODE_8BIT_BYTE : return 16;\n case QRMode.MODE_KANJI : return 10;\n default :\n throw 'mode:' + mode;\n }\n\n } else if (type < 41) {\n\n // 27 - 40\n\n switch(mode) {\n case QRMode.MODE_NUMBER : return 14;\n case QRMode.MODE_ALPHA_NUM : return 13;\n case QRMode.MODE_8BIT_BYTE : return 16;\n case QRMode.MODE_KANJI : return 12;\n default :\n throw 'mode:' + mode;\n }\n\n } else {\n throw 'type:' + type;\n }\n };\n\n _this.getLostPoint = function(qrcode) {\n\n var moduleCount = qrcode.getModuleCount();\n\n var lostPoint = 0;\n\n // LEVEL1\n\n for (var row = 0; row < moduleCount; row += 1) {\n for (var col = 0; col < moduleCount; col += 1) {\n\n var sameCount = 0;\n var dark = qrcode.isDark(row, col);\n\n for (var r = -1; r <= 1; r += 1) {\n\n if (row + r < 0 || moduleCount <= row + r) {\n continue;\n }\n\n for (var c = -1; c <= 1; c += 1) {\n\n if (col + c < 0 || moduleCount <= col + c) {\n continue;\n }\n\n if (r == 0 && c == 0) {\n continue;\n }\n\n if (dark == qrcode.isDark(row + r, col + c) ) {\n sameCount += 1;\n }\n }\n }\n\n if (sameCount > 5) {\n lostPoint += (3 + sameCount - 5);\n }\n }\n };\n\n // LEVEL2\n\n for (var row = 0; row < moduleCount - 1; row += 1) {\n for (var col = 0; col < moduleCount - 1; col += 1) {\n var count = 0;\n if (qrcode.isDark(row, col) ) count += 1;\n if (qrcode.isDark(row + 1, col) ) count += 1;\n if (qrcode.isDark(row, col + 1) ) count += 1;\n if (qrcode.isDark(row + 1, col + 1) ) count += 1;\n if (count == 0 || count == 4) {\n lostPoint += 3;\n }\n }\n }\n\n // LEVEL3\n\n for (var row = 0; row < moduleCount; row += 1) {\n for (var col = 0; col < moduleCount - 6; col += 1) {\n if (qrcode.isDark(row, col)\n && !qrcode.isDark(row, col + 1)\n && qrcode.isDark(row, col + 2)\n && qrcode.isDark(row, col + 3)\n && qrcode.isDark(row, col + 4)\n && !qrcode.isDark(row, col + 5)\n && qrcode.isDark(row, col + 6) ) {\n lostPoint += 40;\n }\n }\n }\n\n for (var col = 0; col < moduleCount; col += 1) {\n for (var row = 0; row < moduleCount - 6; row += 1) {\n if (qrcode.isDark(row, col)\n && !qrcode.isDark(row + 1, col)\n && qrcode.isDark(row + 2, col)\n && qrcode.isDark(row + 3, col)\n && qrcode.isDark(row + 4, col)\n && !qrcode.isDark(row + 5, col)\n && qrcode.isDark(row + 6, col) ) {\n lostPoint += 40;\n }\n }\n }\n\n // LEVEL4\n\n var darkCount = 0;\n\n for (var col = 0; col < moduleCount; col += 1) {\n for (var row = 0; row < moduleCount; row += 1) {\n if (qrcode.isDark(row, col) ) {\n darkCount += 1;\n }\n }\n }\n\n var ratio = Math.abs(100 * darkCount / moduleCount / moduleCount - 50) / 5;\n lostPoint += ratio * 10;\n\n return lostPoint;\n };\n\n return _this;\n }();\n\n //---------------------------------------------------------------------\n // QRMath\n //---------------------------------------------------------------------\n\n var QRMath = function() {\n\n var EXP_TABLE = new Array(256);\n var LOG_TABLE = new Array(256);\n\n // initialize tables\n for (var i = 0; i < 8; i += 1) {\n EXP_TABLE[i] = 1 << i;\n }\n for (var i = 8; i < 256; i += 1) {\n EXP_TABLE[i] = EXP_TABLE[i - 4]\n ^ EXP_TABLE[i - 5]\n ^ EXP_TABLE[i - 6]\n ^ EXP_TABLE[i - 8];\n }\n for (var i = 0; i < 255; i += 1) {\n LOG_TABLE[EXP_TABLE[i] ] = i;\n }\n\n var _this = {};\n\n _this.glog = function(n) {\n\n if (n < 1) {\n throw 'glog(' + n + ')';\n }\n\n return LOG_TABLE[n];\n };\n\n _this.gexp = function(n) {\n\n while (n < 0) {\n n += 255;\n }\n\n while (n >= 256) {\n n -= 255;\n }\n\n return EXP_TABLE[n];\n };\n\n return _this;\n }();\n\n //---------------------------------------------------------------------\n // qrPolynomial\n //---------------------------------------------------------------------\n\n function qrPolynomial(num, shift) {\n\n if (typeof num.length == 'undefined') {\n throw num.length + '/' + shift;\n }\n\n var _num = function() {\n var offset = 0;\n while (offset < num.length && num[offset] == 0) {\n offset += 1;\n }\n var _num = new Array(num.length - offset + shift);\n for (var i = 0; i < num.length - offset; i += 1) {\n _num[i] = num[i + offset];\n }\n return _num;\n }();\n\n var _this = {};\n\n _this.getAt = function(index) {\n return _num[index];\n };\n\n _this.getLength = function() {\n return _num.length;\n };\n\n _this.multiply = function(e) {\n\n var num = new Array(_this.getLength() + e.getLength() - 1);\n\n for (var i = 0; i < _this.getLength(); i += 1) {\n for (var j = 0; j < e.getLength(); j += 1) {\n num[i + j] ^= QRMath.gexp(QRMath.glog(_this.getAt(i) ) + QRMath.glog(e.getAt(j) ) );\n }\n }\n\n return qrPolynomial(num, 0);\n };\n\n _this.mod = function(e) {\n\n if (_this.getLength() - e.getLength() < 0) {\n return _this;\n }\n\n var ratio = QRMath.glog(_this.getAt(0) ) - QRMath.glog(e.getAt(0) );\n\n var num = new Array(_this.getLength() );\n for (var i = 0; i < _this.getLength(); i += 1) {\n num[i] = _this.getAt(i);\n }\n\n for (var i = 0; i < e.getLength(); i += 1) {\n num[i] ^= QRMath.gexp(QRMath.glog(e.getAt(i) ) + ratio);\n }\n\n // recursive call\n return qrPolynomial(num, 0).mod(e);\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // QRRSBlock\n //---------------------------------------------------------------------\n\n var QRRSBlock = function() {\n\n var RS_BLOCK_TABLE = [\n\n // L\n // M\n // Q\n // H\n\n // 1\n [1, 26, 19],\n [1, 26, 16],\n [1, 26, 13],\n [1, 26, 9],\n\n // 2\n [1, 44, 34],\n [1, 44, 28],\n [1, 44, 22],\n [1, 44, 16],\n\n // 3\n [1, 70, 55],\n [1, 70, 44],\n [2, 35, 17],\n [2, 35, 13],\n\n // 4\n [1, 100, 80],\n [2, 50, 32],\n [2, 50, 24],\n [4, 25, 9],\n\n // 5\n [1, 134, 108],\n [2, 67, 43],\n [2, 33, 15, 2, 34, 16],\n [2, 33, 11, 2, 34, 12],\n\n // 6\n [2, 86, 68],\n [4, 43, 27],\n [4, 43, 19],\n [4, 43, 15],\n\n // 7\n [2, 98, 78],\n [4, 49, 31],\n [2, 32, 14, 4, 33, 15],\n [4, 39, 13, 1, 40, 14],\n\n // 8\n [2, 121, 97],\n [2, 60, 38, 2, 61, 39],\n [4, 40, 18, 2, 41, 19],\n [4, 40, 14, 2, 41, 15],\n\n // 9\n [2, 146, 116],\n [3, 58, 36, 2, 59, 37],\n [4, 36, 16, 4, 37, 17],\n [4, 36, 12, 4, 37, 13],\n\n // 10\n [2, 86, 68, 2, 87, 69],\n [4, 69, 43, 1, 70, 44],\n [6, 43, 19, 2, 44, 20],\n [6, 43, 15, 2, 44, 16],\n\n // 11\n [4, 101, 81],\n [1, 80, 50, 4, 81, 51],\n [4, 50, 22, 4, 51, 23],\n [3, 36, 12, 8, 37, 13],\n\n // 12\n [2, 116, 92, 2, 117, 93],\n [6, 58, 36, 2, 59, 37],\n [4, 46, 20, 6, 47, 21],\n [7, 42, 14, 4, 43, 15],\n\n // 13\n [4, 133, 107],\n [8, 59, 37, 1, 60, 38],\n [8, 44, 20, 4, 45, 21],\n [12, 33, 11, 4, 34, 12],\n\n // 14\n [3, 145, 115, 1, 146, 116],\n [4, 64, 40, 5, 65, 41],\n [11, 36, 16, 5, 37, 17],\n [11, 36, 12, 5, 37, 13],\n\n // 15\n [5, 109, 87, 1, 110, 88],\n [5, 65, 41, 5, 66, 42],\n [5, 54, 24, 7, 55, 25],\n [11, 36, 12, 7, 37, 13],\n\n // 16\n [5, 122, 98, 1, 123, 99],\n [7, 73, 45, 3, 74, 46],\n [15, 43, 19, 2, 44, 20],\n [3, 45, 15, 13, 46, 16],\n\n // 17\n [1, 135, 107, 5, 136, 108],\n [10, 74, 46, 1, 75, 47],\n [1, 50, 22, 15, 51, 23],\n [2, 42, 14, 17, 43, 15],\n\n // 18\n [5, 150, 120, 1, 151, 121],\n [9, 69, 43, 4, 70, 44],\n [17, 50, 22, 1, 51, 23],\n [2, 42, 14, 19, 43, 15],\n\n // 19\n [3, 141, 113, 4, 142, 114],\n [3, 70, 44, 11, 71, 45],\n [17, 47, 21, 4, 48, 22],\n [9, 39, 13, 16, 40, 14],\n\n // 20\n [3, 135, 107, 5, 136, 108],\n [3, 67, 41, 13, 68, 42],\n [15, 54, 24, 5, 55, 25],\n [15, 43, 15, 10, 44, 16],\n\n // 21\n [4, 144, 116, 4, 145, 117],\n [17, 68, 42],\n [17, 50, 22, 6, 51, 23],\n [19, 46, 16, 6, 47, 17],\n\n // 22\n [2, 139, 111, 7, 140, 112],\n [17, 74, 46],\n [7, 54, 24, 16, 55, 25],\n [34, 37, 13],\n\n // 23\n [4, 151, 121, 5, 152, 122],\n [4, 75, 47, 14, 76, 48],\n [11, 54, 24, 14, 55, 25],\n [16, 45, 15, 14, 46, 16],\n\n // 24\n [6, 147, 117, 4, 148, 118],\n [6, 73, 45, 14, 74, 46],\n [11, 54, 24, 16, 55, 25],\n [30, 46, 16, 2, 47, 17],\n\n // 25\n [8, 132, 106, 4, 133, 107],\n [8, 75, 47, 13, 76, 48],\n [7, 54, 24, 22, 55, 25],\n [22, 45, 15, 13, 46, 16],\n\n // 26\n [10, 142, 114, 2, 143, 115],\n [19, 74, 46, 4, 75, 47],\n [28, 50, 22, 6, 51, 23],\n [33, 46, 16, 4, 47, 17],\n\n // 27\n [8, 152, 122, 4, 153, 123],\n [22, 73, 45, 3, 74, 46],\n [8, 53, 23, 26, 54, 24],\n [12, 45, 15, 28, 46, 16],\n\n // 28\n [3, 147, 117, 10, 148, 118],\n [3, 73, 45, 23, 74, 46],\n [4, 54, 24, 31, 55, 25],\n [11, 45, 15, 31, 46, 16],\n\n // 29\n [7, 146, 116, 7, 147, 117],\n [21, 73, 45, 7, 74, 46],\n [1, 53, 23, 37, 54, 24],\n [19, 45, 15, 26, 46, 16],\n\n // 30\n [5, 145, 115, 10, 146, 116],\n [19, 75, 47, 10, 76, 48],\n [15, 54, 24, 25, 55, 25],\n [23, 45, 15, 25, 46, 16],\n\n // 31\n [13, 145, 115, 3, 146, 116],\n [2, 74, 46, 29, 75, 47],\n [42, 54, 24, 1, 55, 25],\n [23, 45, 15, 28, 46, 16],\n\n // 32\n [17, 145, 115],\n [10, 74, 46, 23, 75, 47],\n [10, 54, 24, 35, 55, 25],\n [19, 45, 15, 35, 46, 16],\n\n // 33\n [17, 145, 115, 1, 146, 116],\n [14, 74, 46, 21, 75, 47],\n [29, 54, 24, 19, 55, 25],\n [11, 45, 15, 46, 46, 16],\n\n // 34\n [13, 145, 115, 6, 146, 116],\n [14, 74, 46, 23, 75, 47],\n [44, 54, 24, 7, 55, 25],\n [59, 46, 16, 1, 47, 17],\n\n // 35\n [12, 151, 121, 7, 152, 122],\n [12, 75, 47, 26, 76, 48],\n [39, 54, 24, 14, 55, 25],\n [22, 45, 15, 41, 46, 16],\n\n // 36\n [6, 151, 121, 14, 152, 122],\n [6, 75, 47, 34, 76, 48],\n [46, 54, 24, 10, 55, 25],\n [2, 45, 15, 64, 46, 16],\n\n // 37\n [17, 152, 122, 4, 153, 123],\n [29, 74, 46, 14, 75, 47],\n [49, 54, 24, 10, 55, 25],\n [24, 45, 15, 46, 46, 16],\n\n // 38\n [4, 152, 122, 18, 153, 123],\n [13, 74, 46, 32, 75, 47],\n [48, 54, 24, 14, 55, 25],\n [42, 45, 15, 32, 46, 16],\n\n // 39\n [20, 147, 117, 4, 148, 118],\n [40, 75, 47, 7, 76, 48],\n [43, 54, 24, 22, 55, 25],\n [10, 45, 15, 67, 46, 16],\n\n // 40\n [19, 148, 118, 6, 149, 119],\n [18, 75, 47, 31, 76, 48],\n [34, 54, 24, 34, 55, 25],\n [20, 45, 15, 61, 46, 16]\n ];\n\n var qrRSBlock = function(totalCount, dataCount) {\n var _this = {};\n _this.totalCount = totalCount;\n _this.dataCount = dataCount;\n return _this;\n };\n\n var _this = {};\n\n var getRsBlockTable = function(typeNumber, errorCorrectionLevel) {\n\n switch(errorCorrectionLevel) {\n case QRErrorCorrectionLevel.L :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 0];\n case QRErrorCorrectionLevel.M :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 1];\n case QRErrorCorrectionLevel.Q :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 2];\n case QRErrorCorrectionLevel.H :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 3];\n default :\n return undefined;\n }\n };\n\n _this.getRSBlocks = function(typeNumber, errorCorrectionLevel) {\n\n var rsBlock = getRsBlockTable(typeNumber, errorCorrectionLevel);\n\n if (typeof rsBlock == 'undefined') {\n throw 'bad rs block @ typeNumber:' + typeNumber +\n '/errorCorrectionLevel:' + errorCorrectionLevel;\n }\n\n var length = rsBlock.length / 3;\n\n var list = [];\n\n for (var i = 0; i < length; i += 1) {\n\n var count = rsBlock[i * 3 + 0];\n var totalCount = rsBlock[i * 3 + 1];\n var dataCount = rsBlock[i * 3 + 2];\n\n for (var j = 0; j < count; j += 1) {\n list.push(qrRSBlock(totalCount, dataCount) );\n }\n }\n\n return list;\n };\n\n return _this;\n }();\n\n //---------------------------------------------------------------------\n // qrBitBuffer\n //---------------------------------------------------------------------\n\n var qrBitBuffer = function() {\n\n var _buffer = [];\n var _length = 0;\n\n var _this = {};\n\n _this.getBuffer = function() {\n return _buffer;\n };\n\n _this.getAt = function(index) {\n var bufIndex = Math.floor(index / 8);\n return ( (_buffer[bufIndex] >>> (7 - index % 8) ) & 1) == 1;\n };\n\n _this.put = function(num, length) {\n for (var i = 0; i < length; i += 1) {\n _this.putBit( ( (num >>> (length - i - 1) ) & 1) == 1);\n }\n };\n\n _this.getLengthInBits = function() {\n return _length;\n };\n\n _this.putBit = function(bit) {\n\n var bufIndex = Math.floor(_length / 8);\n if (_buffer.length <= bufIndex) {\n _buffer.push(0);\n }\n\n if (bit) {\n _buffer[bufIndex] |= (0x80 >>> (_length % 8) );\n }\n\n _length += 1;\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qrNumber\n //---------------------------------------------------------------------\n\n var qrNumber = function(data) {\n\n var _mode = QRMode.MODE_NUMBER;\n var _data = data;\n\n var _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return _data.length;\n };\n\n _this.write = function(buffer) {\n\n var data = _data;\n\n var i = 0;\n\n while (i + 2 < data.length) {\n buffer.put(strToNum(data.substring(i, i + 3) ), 10);\n i += 3;\n }\n\n if (i < data.length) {\n if (data.length - i == 1) {\n buffer.put(strToNum(data.substring(i, i + 1) ), 4);\n } else if (data.length - i == 2) {\n buffer.put(strToNum(data.substring(i, i + 2) ), 7);\n }\n }\n };\n\n var strToNum = function(s) {\n var num = 0;\n for (var i = 0; i < s.length; i += 1) {\n num = num * 10 + chatToNum(s.charAt(i) );\n }\n return num;\n };\n\n var chatToNum = function(c) {\n if ('0' <= c && c <= '9') {\n return c.charCodeAt(0) - '0'.charCodeAt(0);\n }\n throw 'illegal char :' + c;\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qrAlphaNum\n //---------------------------------------------------------------------\n\n var qrAlphaNum = function(data) {\n\n var _mode = QRMode.MODE_ALPHA_NUM;\n var _data = data;\n\n var _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return _data.length;\n };\n\n _this.write = function(buffer) {\n\n var s = _data;\n\n var i = 0;\n\n while (i + 1 < s.length) {\n buffer.put(\n getCode(s.charAt(i) ) * 45 +\n getCode(s.charAt(i + 1) ), 11);\n i += 2;\n }\n\n if (i < s.length) {\n buffer.put(getCode(s.charAt(i) ), 6);\n }\n };\n\n var getCode = function(c) {\n\n if ('0' <= c && c <= '9') {\n return c.charCodeAt(0) - '0'.charCodeAt(0);\n } else if ('A' <= c && c <= 'Z') {\n return c.charCodeAt(0) - 'A'.charCodeAt(0) + 10;\n } else {\n switch (c) {\n case ' ' : return 36;\n case '$' : return 37;\n case '%' : return 38;\n case '*' : return 39;\n case '+' : return 40;\n case '-' : return 41;\n case '.' : return 42;\n case '/' : return 43;\n case ':' : return 44;\n default :\n throw 'illegal char :' + c;\n }\n }\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qr8BitByte\n //---------------------------------------------------------------------\n\n var qr8BitByte = function(data) {\n\n var _mode = QRMode.MODE_8BIT_BYTE;\n var _data = data;\n var _bytes = qrcode.stringToBytes(data);\n\n var _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return _bytes.length;\n };\n\n _this.write = function(buffer) {\n for (var i = 0; i < _bytes.length; i += 1) {\n buffer.put(_bytes[i], 8);\n }\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qrKanji\n //---------------------------------------------------------------------\n\n var qrKanji = function(data) {\n\n var _mode = QRMode.MODE_KANJI;\n var _data = data;\n\n var stringToBytes = qrcode.stringToBytesFuncs['SJIS'];\n if (!stringToBytes) {\n throw 'sjis not supported.';\n }\n !function(c, code) {\n // self test for sjis support.\n var test = stringToBytes(c);\n if (test.length != 2 || ( (test[0] << 8) | test[1]) != code) {\n throw 'sjis not supported.';\n }\n }('\\u53cb', 0x9746);\n\n var _bytes = stringToBytes(data);\n\n var _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return ~~(_bytes.length / 2);\n };\n\n _this.write = function(buffer) {\n\n var data = _bytes;\n\n var i = 0;\n\n while (i + 1 < data.length) {\n\n var c = ( (0xff & data[i]) << 8) | (0xff & data[i + 1]);\n\n if (0x8140 <= c && c <= 0x9FFC) {\n c -= 0x8140;\n } else if (0xE040 <= c && c <= 0xEBBF) {\n c -= 0xC140;\n } else {\n throw 'illegal char at ' + (i + 1) + '/' + c;\n }\n\n c = ( (c >>> 8) & 0xff) * 0xC0 + (c & 0xff);\n\n buffer.put(c, 13);\n\n i += 2;\n }\n\n if (i < data.length) {\n throw 'illegal char at ' + (i + 1);\n }\n };\n\n return _this;\n };\n\n //=====================================================================\n // GIF Support etc.\n //\n\n //---------------------------------------------------------------------\n // byteArrayOutputStream\n //---------------------------------------------------------------------\n\n var byteArrayOutputStream = function() {\n\n var _bytes = [];\n\n var _this = {};\n\n _this.writeByte = function(b) {\n _bytes.push(b & 0xff);\n };\n\n _this.writeShort = function(i) {\n _this.writeByte(i);\n _this.writeByte(i >>> 8);\n };\n\n _this.writeBytes = function(b, off, len) {\n off = off || 0;\n len = len || b.length;\n for (var i = 0; i < len; i += 1) {\n _this.writeByte(b[i + off]);\n }\n };\n\n _this.writeString = function(s) {\n for (var i = 0; i < s.length; i += 1) {\n _this.writeByte(s.charCodeAt(i) );\n }\n };\n\n _this.toByteArray = function() {\n return _bytes;\n };\n\n _this.toString = function() {\n var s = '';\n s += '[';\n for (var i = 0; i < _bytes.length; i += 1) {\n if (i > 0) {\n s += ',';\n }\n s += _bytes[i];\n }\n s += ']';\n return s;\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // base64EncodeOutputStream\n //---------------------------------------------------------------------\n\n var base64EncodeOutputStream = function() {\n\n var _buffer = 0;\n var _buflen = 0;\n var _length = 0;\n var _base64 = '';\n\n var _this = {};\n\n var writeEncoded = function(b) {\n _base64 += String.fromCharCode(encode(b & 0x3f) );\n };\n\n var encode = function(n) {\n if (n < 0) {\n // error.\n } else if (n < 26) {\n return 0x41 + n;\n } else if (n < 52) {\n return 0x61 + (n - 26);\n } else if (n < 62) {\n return 0x30 + (n - 52);\n } else if (n == 62) {\n return 0x2b;\n } else if (n == 63) {\n return 0x2f;\n }\n throw 'n:' + n;\n };\n\n _this.writeByte = function(n) {\n\n _buffer = (_buffer << 8) | (n & 0xff);\n _buflen += 8;\n _length += 1;\n\n while (_buflen >= 6) {\n writeEncoded(_buffer >>> (_buflen - 6) );\n _buflen -= 6;\n }\n };\n\n _this.flush = function() {\n\n if (_buflen > 0) {\n writeEncoded(_buffer << (6 - _buflen) );\n _buffer = 0;\n _buflen = 0;\n }\n\n if (_length % 3 != 0) {\n // padding\n var padlen = 3 - _length % 3;\n for (var i = 0; i < padlen; i += 1) {\n _base64 += '=';\n }\n }\n };\n\n _this.toString = function() {\n return _base64;\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // base64DecodeInputStream\n //---------------------------------------------------------------------\n\n var base64DecodeInputStream = function(str) {\n\n var _str = str;\n var _pos = 0;\n var _buffer = 0;\n var _buflen = 0;\n\n var _this = {};\n\n _this.read = function() {\n\n while (_buflen < 8) {\n\n if (_pos >= _str.length) {\n if (_buflen == 0) {\n return -1;\n }\n throw 'unexpected end of file./' + _buflen;\n }\n\n var c = _str.charAt(_pos);\n _pos += 1;\n\n if (c == '=') {\n _buflen = 0;\n return -1;\n } else if (c.match(/^\\s$/) ) {\n // ignore if whitespace.\n continue;\n }\n\n _buffer = (_buffer << 6) | decode(c.charCodeAt(0) );\n _buflen += 6;\n }\n\n var n = (_buffer >>> (_buflen - 8) ) & 0xff;\n _buflen -= 8;\n return n;\n };\n\n var decode = function(c) {\n if (0x41 <= c && c <= 0x5a) {\n return c - 0x41;\n } else if (0x61 <= c && c <= 0x7a) {\n return c - 0x61 + 26;\n } else if (0x30 <= c && c <= 0x39) {\n return c - 0x30 + 52;\n } else if (c == 0x2b) {\n return 62;\n } else if (c == 0x2f) {\n return 63;\n } else {\n throw 'c:' + c;\n }\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // gifImage (B/W)\n //---------------------------------------------------------------------\n\n var gifImage = function(width, height) {\n\n var _width = width;\n var _height = height;\n var _data = new Array(width * height);\n\n var _this = {};\n\n _this.setPixel = function(x, y, pixel) {\n _data[y * _width + x] = pixel;\n };\n\n _this.write = function(out) {\n\n //---------------------------------\n // GIF Signature\n\n out.writeString('GIF87a');\n\n //---------------------------------\n // Screen Descriptor\n\n out.writeShort(_width);\n out.writeShort(_height);\n\n out.writeByte(0x80); // 2bit\n out.writeByte(0);\n out.writeByte(0);\n\n //---------------------------------\n // Global Color Map\n\n // black\n out.writeByte(0x00);\n out.writeByte(0x00);\n out.writeByte(0x00);\n\n // white\n out.writeByte(0xff);\n out.writeByte(0xff);\n out.writeByte(0xff);\n\n //---------------------------------\n // Image Descriptor\n\n out.writeString(',');\n out.writeShort(0);\n out.writeShort(0);\n out.writeShort(_width);\n out.writeShort(_height);\n out.writeByte(0);\n\n //---------------------------------\n // Local Color Map\n\n //---------------------------------\n // Raster Data\n\n var lzwMinCodeSize = 2;\n var raster = getLZWRaster(lzwMinCodeSize);\n\n out.writeByte(lzwMinCodeSize);\n\n var offset = 0;\n\n while (raster.length - offset > 255) {\n out.writeByte(255);\n out.writeBytes(raster, offset, 255);\n offset += 255;\n }\n\n out.writeByte(raster.length - offset);\n out.writeBytes(raster, offset, raster.length - offset);\n out.writeByte(0x00);\n\n //---------------------------------\n // GIF Terminator\n out.writeString(';');\n };\n\n var bitOutputStream = function(out) {\n\n var _out = out;\n var _bitLength = 0;\n var _bitBuffer = 0;\n\n var _this = {};\n\n _this.write = function(data, length) {\n\n if ( (data >>> length) != 0) {\n throw 'length over';\n }\n\n while (_bitLength + length >= 8) {\n _out.writeByte(0xff & ( (data << _bitLength) | _bitBuffer) );\n length -= (8 - _bitLength);\n data >>>= (8 - _bitLength);\n _bitBuffer = 0;\n _bitLength = 0;\n }\n\n _bitBuffer = (data << _bitLength) | _bitBuffer;\n _bitLength = _bitLength + length;\n };\n\n _this.flush = function() {\n if (_bitLength > 0) {\n _out.writeByte(_bitBuffer);\n }\n };\n\n return _this;\n };\n\n var getLZWRaster = function(lzwMinCodeSize) {\n\n var clearCode = 1 << lzwMinCodeSize;\n var endCode = (1 << lzwMinCodeSize) + 1;\n var bitLength = lzwMinCodeSize + 1;\n\n // Setup LZWTable\n var table = lzwTable();\n\n for (var i = 0; i < clearCode; i += 1) {\n table.add(String.fromCharCode(i) );\n }\n table.add(String.fromCharCode(clearCode) );\n table.add(String.fromCharCode(endCode) );\n\n var byteOut = byteArrayOutputStream();\n var bitOut = bitOutputStream(byteOut);\n\n // clear code\n bitOut.write(clearCode, bitLength);\n\n var dataIndex = 0;\n\n var s = String.fromCharCode(_data[dataIndex]);\n dataIndex += 1;\n\n while (dataIndex < _data.length) {\n\n var c = String.fromCharCode(_data[dataIndex]);\n dataIndex += 1;\n\n if (table.contains(s + c) ) {\n\n s = s + c;\n\n } else {\n\n bitOut.write(table.indexOf(s), bitLength);\n\n if (table.size() < 0xfff) {\n\n if (table.size() == (1 << bitLength) ) {\n bitLength += 1;\n }\n\n table.add(s + c);\n }\n\n s = c;\n }\n }\n\n bitOut.write(table.indexOf(s), bitLength);\n\n // end code\n bitOut.write(endCode, bitLength);\n\n bitOut.flush();\n\n return byteOut.toByteArray();\n };\n\n var lzwTable = function() {\n\n var _map = {};\n var _size = 0;\n\n var _this = {};\n\n _this.add = function(key) {\n if (_this.contains(key) ) {\n throw 'dup key:' + key;\n }\n _map[key] = _size;\n _size += 1;\n };\n\n _this.size = function() {\n return _size;\n };\n\n _this.indexOf = function(key) {\n return _map[key];\n };\n\n _this.contains = function(key) {\n return typeof _map[key] != 'undefined';\n };\n\n return _this;\n };\n\n return _this;\n };\n\n var createDataURL = function(width, height, getPixel) {\n var gif = gifImage(width, height);\n for (var y = 0; y < height; y += 1) {\n for (var x = 0; x < width; x += 1) {\n gif.setPixel(x, y, getPixel(x, y) );\n }\n }\n\n var b = byteArrayOutputStream();\n gif.write(b);\n\n var base64 = base64EncodeOutputStream();\n var bytes = b.toByteArray();\n for (var i = 0; i < bytes.length; i += 1) {\n base64.writeByte(bytes[i]);\n }\n base64.flush();\n\n return 'data:image/gif;base64,' + base64;\n };\n\n //---------------------------------------------------------------------\n // returns qrcode function.\n\n return qrcode;\n}();\n\n// multibyte support\n!function() {\n\n qrcode.stringToBytesFuncs['UTF-8'] = function(s) {\n // http://stackoverflow.com/questions/18729405/how-to-convert-utf8-string-to-byte-array\n function toUTF8Array(str) {\n var utf8 = [];\n for (var i=0; i < str.length; i++) {\n var charcode = str.charCodeAt(i);\n if (charcode < 0x80) utf8.push(charcode);\n else if (charcode < 0x800) {\n utf8.push(0xc0 | (charcode >> 6),\n 0x80 | (charcode & 0x3f));\n }\n else if (charcode < 0xd800 || charcode >= 0xe000) {\n utf8.push(0xe0 | (charcode >> 12),\n 0x80 | ((charcode>>6) & 0x3f),\n 0x80 | (charcode & 0x3f));\n }\n // surrogate pair\n else {\n i++;\n // UTF-16 encodes 0x10000-0x10FFFF by\n // subtracting 0x10000 and splitting the\n // 20 bits of 0x0-0xFFFFF into two halves\n charcode = 0x10000 + (((charcode & 0x3ff)<<10)\n | (str.charCodeAt(i) & 0x3ff));\n utf8.push(0xf0 | (charcode >>18),\n 0x80 | ((charcode>>12) & 0x3f),\n 0x80 | ((charcode>>6) & 0x3f),\n 0x80 | (charcode & 0x3f));\n }\n }\n return utf8;\n }\n return toUTF8Array(s);\n };\n\n}();\n\n(function (factory) {\n if (typeof define === 'function' && define.amd) {\n define([], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory();\n }\n}(function () {\n return qrcode;\n}));\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","import { Mode } from \"../types\";\n\ninterface Modes {\n [key: string]: Mode;\n}\n\nexport default {\n numeric: \"Numeric\",\n alphanumeric: \"Alphanumeric\",\n byte: \"Byte\",\n kanji: \"Kanji\"\n} as Modes;\n","// eslint-disable-next-line prettier/prettier\nimport { UnknownObject } from \"../types\";\n\nconst isObject = (obj: Record): boolean => !!obj && typeof obj === \"object\" && !Array.isArray(obj);\n\nexport default function mergeDeep(target: UnknownObject, ...sources: UnknownObject[]): UnknownObject {\n if (!sources.length) return target;\n const source = sources.shift();\n if (source === undefined || !isObject(target) || !isObject(source)) return target;\n target = { ...target };\n Object.keys(source).forEach((key: string): void => {\n const targetValue = target[key];\n const sourceValue = source[key];\n\n if (Array.isArray(targetValue) && Array.isArray(sourceValue)) {\n target[key] = sourceValue;\n } else if (isObject(targetValue) && isObject(sourceValue)) {\n target[key] = mergeDeep(Object.assign({}, targetValue), sourceValue);\n } else {\n target[key] = sourceValue;\n }\n });\n\n return mergeDeep(target, ...sources);\n}\n","export default function downloadURI(uri: string, name: string): void {\n const link = document.createElement(\"a\");\n link.download = name;\n link.href = uri;\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n}\n","interface ImageSizeOptions {\n originalHeight: number;\n originalWidth: number;\n maxHiddenDots: number;\n maxHiddenAxisDots?: number;\n dotSize: number;\n}\n\ninterface ImageSizeResult {\n height: number;\n width: number;\n hideYDots: number;\n hideXDots: number;\n}\n\nexport default function calculateImageSize({\n originalHeight,\n originalWidth,\n maxHiddenDots,\n maxHiddenAxisDots,\n dotSize\n}: ImageSizeOptions): ImageSizeResult {\n const hideDots = { x: 0, y: 0 };\n const imageSize = { x: 0, y: 0 };\n\n if (originalHeight <= 0 || originalWidth <= 0 || maxHiddenDots <= 0 || dotSize <= 0) {\n return {\n height: 0,\n width: 0,\n hideYDots: 0,\n hideXDots: 0\n };\n }\n\n const k = originalHeight / originalWidth;\n\n //Getting the maximum possible axis hidden dots\n hideDots.x = Math.floor(Math.sqrt(maxHiddenDots / k));\n //The count of hidden dot's can't be less than 1\n if (hideDots.x <= 0) hideDots.x = 1;\n //Check the limit of the maximum allowed axis hidden dots\n if (maxHiddenAxisDots && maxHiddenAxisDots < hideDots.x) hideDots.x = maxHiddenAxisDots;\n //The count of dots should be odd\n if (hideDots.x % 2 === 0) hideDots.x--;\n imageSize.x = hideDots.x * dotSize;\n //Calculate opposite axis hidden dots based on axis value.\n //The value will be odd.\n //We use ceil to prevent dots covering by the image.\n hideDots.y = 1 + 2 * Math.ceil((hideDots.x * k - 1) / 2);\n imageSize.y = Math.round(imageSize.x * k);\n //If the result dots count is bigger than max - then decrease size and calculate again\n if (hideDots.y * hideDots.x > maxHiddenDots || (maxHiddenAxisDots && maxHiddenAxisDots < hideDots.y)) {\n if (maxHiddenAxisDots && maxHiddenAxisDots < hideDots.y) {\n hideDots.y = maxHiddenAxisDots;\n if (hideDots.y % 2 === 0) hideDots.x--;\n } else {\n hideDots.y -= 2;\n }\n imageSize.y = hideDots.y * dotSize;\n hideDots.x = 1 + 2 * Math.ceil((hideDots.y / k - 1) / 2);\n imageSize.x = Math.round(imageSize.y / k);\n }\n\n return {\n height: imageSize.y,\n width: imageSize.x,\n hideYDots: hideDots.x,\n hideXDots: hideDots.y\n };\n}\n","interface ErrorCorrectionPercents {\n [key: string]: number;\n}\n\nexport default {\n L: 0.07,\n M: 0.15,\n Q: 0.25,\n H: 0.3\n} as ErrorCorrectionPercents;\n","import { DotTypes } from \"../types\";\n\nexport default {\n dots: \"dots\",\n rounded: \"rounded\",\n classy: \"classy\",\n classyRounded: \"classy-rounded\",\n square: \"square\",\n extraRounded: \"extra-rounded\"\n} as DotTypes;\n","import dotTypes from \"../../../constants/dotTypes\";\nimport {\n DotType,\n GetNeighbor,\n RotateFigureArgsCanvas,\n BasicFigureDrawArgsCanvas,\n DrawArgsCanvas\n} from \"../../../types\";\n\nexport default class QRDot {\n _context: CanvasRenderingContext2D;\n _type: DotType;\n\n constructor({ context, type }: { context: CanvasRenderingContext2D; type: DotType }) {\n this._context = context;\n this._type = type;\n }\n\n draw(x: number, y: number, size: number, getNeighbor: GetNeighbor): void {\n const context = this._context;\n const type = this._type;\n let drawFunction;\n\n switch (type) {\n case dotTypes.dots:\n drawFunction = this._drawDot;\n break;\n case dotTypes.classy:\n drawFunction = this._drawClassy;\n break;\n case dotTypes.classyRounded:\n drawFunction = this._drawClassyRounded;\n break;\n case dotTypes.rounded:\n drawFunction = this._drawRounded;\n break;\n case dotTypes.extraRounded:\n drawFunction = this._drawExtraRounded;\n break;\n case dotTypes.square:\n default:\n drawFunction = this._drawSquare;\n }\n\n drawFunction.call(this, { x, y, size, context, getNeighbor });\n }\n\n _rotateFigure({ x, y, size, context, rotation = 0, draw }: RotateFigureArgsCanvas): void {\n const cx = x + size / 2;\n const cy = y + size / 2;\n\n context.translate(cx, cy);\n rotation && context.rotate(rotation);\n draw();\n context.closePath();\n rotation && context.rotate(-rotation);\n context.translate(-cx, -cy);\n }\n\n _basicDot(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.arc(0, 0, size / 2, 0, Math.PI * 2);\n }\n });\n }\n\n _basicSquare(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.rect(-size / 2, -size / 2, size, size);\n }\n });\n }\n\n //if rotation === 0 - right side is rounded\n _basicSideRounded(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.arc(0, 0, size / 2, -Math.PI / 2, Math.PI / 2);\n context.lineTo(-size / 2, size / 2);\n context.lineTo(-size / 2, -size / 2);\n context.lineTo(0, -size / 2);\n }\n });\n }\n\n //if rotation === 0 - top right corner is rounded\n _basicCornerRounded(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.arc(0, 0, size / 2, -Math.PI / 2, 0);\n context.lineTo(size / 2, size / 2);\n context.lineTo(-size / 2, size / 2);\n context.lineTo(-size / 2, -size / 2);\n context.lineTo(0, -size / 2);\n }\n });\n }\n\n //if rotation === 0 - top right corner is rounded\n _basicCornerExtraRounded(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.arc(-size / 2, size / 2, size, -Math.PI / 2, 0);\n context.lineTo(-size / 2, size / 2);\n context.lineTo(-size / 2, -size / 2);\n }\n });\n }\n\n _basicCornersRounded(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.arc(0, 0, size / 2, -Math.PI / 2, 0);\n context.lineTo(size / 2, size / 2);\n context.lineTo(0, size / 2);\n context.arc(0, 0, size / 2, Math.PI / 2, Math.PI);\n context.lineTo(-size / 2, -size / 2);\n context.lineTo(0, -size / 2);\n }\n });\n }\n\n _basicCornersExtraRounded(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.arc(-size / 2, size / 2, size, -Math.PI / 2, 0);\n context.arc(size / 2, -size / 2, size, Math.PI / 2, Math.PI);\n }\n });\n }\n\n _drawDot({ x, y, size, context }: DrawArgsCanvas): void {\n this._basicDot({ x, y, size, context, rotation: 0 });\n }\n\n _drawSquare({ x, y, size, context }: DrawArgsCanvas): void {\n this._basicSquare({ x, y, size, context, rotation: 0 });\n }\n\n _drawRounded({ x, y, size, context, getNeighbor }: DrawArgsCanvas): void {\n const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\n const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\n const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\n const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\n\n const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\n\n if (neighborsCount === 0) {\n this._basicDot({ x, y, size, context, rotation: 0 });\n return;\n }\n\n if (neighborsCount > 2 || (leftNeighbor && rightNeighbor) || (topNeighbor && bottomNeighbor)) {\n this._basicSquare({ x, y, size, context, rotation: 0 });\n return;\n }\n\n if (neighborsCount === 2) {\n let rotation = 0;\n\n if (leftNeighbor && topNeighbor) {\n rotation = Math.PI / 2;\n } else if (topNeighbor && rightNeighbor) {\n rotation = Math.PI;\n } else if (rightNeighbor && bottomNeighbor) {\n rotation = -Math.PI / 2;\n }\n\n this._basicCornerRounded({ x, y, size, context, rotation });\n return;\n }\n\n if (neighborsCount === 1) {\n let rotation = 0;\n\n if (topNeighbor) {\n rotation = Math.PI / 2;\n } else if (rightNeighbor) {\n rotation = Math.PI;\n } else if (bottomNeighbor) {\n rotation = -Math.PI / 2;\n }\n\n this._basicSideRounded({ x, y, size, context, rotation });\n return;\n }\n }\n\n _drawExtraRounded({ x, y, size, context, getNeighbor }: DrawArgsCanvas): void {\n const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\n const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\n const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\n const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\n\n const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\n\n if (neighborsCount === 0) {\n this._basicDot({ x, y, size, context, rotation: 0 });\n return;\n }\n\n if (neighborsCount > 2 || (leftNeighbor && rightNeighbor) || (topNeighbor && bottomNeighbor)) {\n this._basicSquare({ x, y, size, context, rotation: 0 });\n return;\n }\n\n if (neighborsCount === 2) {\n let rotation = 0;\n\n if (leftNeighbor && topNeighbor) {\n rotation = Math.PI / 2;\n } else if (topNeighbor && rightNeighbor) {\n rotation = Math.PI;\n } else if (rightNeighbor && bottomNeighbor) {\n rotation = -Math.PI / 2;\n }\n\n this._basicCornerExtraRounded({ x, y, size, context, rotation });\n return;\n }\n\n if (neighborsCount === 1) {\n let rotation = 0;\n\n if (topNeighbor) {\n rotation = Math.PI / 2;\n } else if (rightNeighbor) {\n rotation = Math.PI;\n } else if (bottomNeighbor) {\n rotation = -Math.PI / 2;\n }\n\n this._basicSideRounded({ x, y, size, context, rotation });\n return;\n }\n }\n\n _drawClassy({ x, y, size, context, getNeighbor }: DrawArgsCanvas): void {\n const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\n const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\n const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\n const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\n\n const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\n\n if (neighborsCount === 0) {\n this._basicCornersRounded({ x, y, size, context, rotation: Math.PI / 2 });\n return;\n }\n\n if (!leftNeighbor && !topNeighbor) {\n this._basicCornerRounded({ x, y, size, context, rotation: -Math.PI / 2 });\n return;\n }\n\n if (!rightNeighbor && !bottomNeighbor) {\n this._basicCornerRounded({ x, y, size, context, rotation: Math.PI / 2 });\n return;\n }\n\n this._basicSquare({ x, y, size, context, rotation: 0 });\n }\n\n _drawClassyRounded({ x, y, size, context, getNeighbor }: DrawArgsCanvas): void {\n const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\n const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\n const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\n const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\n\n const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\n\n if (neighborsCount === 0) {\n this._basicCornersRounded({ x, y, size, context, rotation: Math.PI / 2 });\n return;\n }\n\n if (!leftNeighbor && !topNeighbor) {\n this._basicCornerExtraRounded({ x, y, size, context, rotation: -Math.PI / 2 });\n return;\n }\n\n if (!rightNeighbor && !bottomNeighbor) {\n this._basicCornerExtraRounded({ x, y, size, context, rotation: Math.PI / 2 });\n return;\n }\n\n this._basicSquare({ x, y, size, context, rotation: 0 });\n }\n}\n","import { CornerSquareTypes } from \"../types\";\n\nexport default {\n dot: \"dot\",\n square: \"square\",\n extraRounded: \"extra-rounded\"\n} as CornerSquareTypes;\n","import cornerSquareTypes from \"../../../constants/cornerSquareTypes\";\nimport { CornerSquareType, RotateFigureArgsCanvas, BasicFigureDrawArgsCanvas, DrawArgsCanvas } from \"../../../types\";\n\nexport default class QRCornerSquare {\n _context: CanvasRenderingContext2D;\n _type: CornerSquareType;\n\n constructor({ context, type }: { context: CanvasRenderingContext2D; type: CornerSquareType }) {\n this._context = context;\n this._type = type;\n }\n\n draw(x: number, y: number, size: number, rotation: number): void {\n const context = this._context;\n const type = this._type;\n let drawFunction;\n\n switch (type) {\n case cornerSquareTypes.square:\n drawFunction = this._drawSquare;\n break;\n case cornerSquareTypes.extraRounded:\n drawFunction = this._drawExtraRounded;\n break;\n case cornerSquareTypes.dot:\n default:\n drawFunction = this._drawDot;\n }\n\n drawFunction.call(this, { x, y, size, context, rotation });\n }\n\n _rotateFigure({ x, y, size, context, rotation = 0, draw }: RotateFigureArgsCanvas): void {\n const cx = x + size / 2;\n const cy = y + size / 2;\n\n context.translate(cx, cy);\n rotation && context.rotate(rotation);\n draw();\n context.closePath();\n rotation && context.rotate(-rotation);\n context.translate(-cx, -cy);\n }\n\n _basicDot(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n const dotSize = size / 7;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.arc(0, 0, size / 2, 0, Math.PI * 2);\n context.arc(0, 0, size / 2 - dotSize, 0, Math.PI * 2);\n }\n });\n }\n\n _basicSquare(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n const dotSize = size / 7;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.rect(-size / 2, -size / 2, size, size);\n context.rect(-size / 2 + dotSize, -size / 2 + dotSize, size - 2 * dotSize, size - 2 * dotSize);\n }\n });\n }\n\n _basicExtraRounded(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n const dotSize = size / 7;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.arc(-dotSize, -dotSize, 2.5 * dotSize, Math.PI, -Math.PI / 2);\n context.lineTo(dotSize, -3.5 * dotSize);\n context.arc(dotSize, -dotSize, 2.5 * dotSize, -Math.PI / 2, 0);\n context.lineTo(3.5 * dotSize, -dotSize);\n context.arc(dotSize, dotSize, 2.5 * dotSize, 0, Math.PI / 2);\n context.lineTo(-dotSize, 3.5 * dotSize);\n context.arc(-dotSize, dotSize, 2.5 * dotSize, Math.PI / 2, Math.PI);\n context.lineTo(-3.5 * dotSize, -dotSize);\n\n context.arc(-dotSize, -dotSize, 1.5 * dotSize, Math.PI, -Math.PI / 2);\n context.lineTo(dotSize, -2.5 * dotSize);\n context.arc(dotSize, -dotSize, 1.5 * dotSize, -Math.PI / 2, 0);\n context.lineTo(2.5 * dotSize, -dotSize);\n context.arc(dotSize, dotSize, 1.5 * dotSize, 0, Math.PI / 2);\n context.lineTo(-dotSize, 2.5 * dotSize);\n context.arc(-dotSize, dotSize, 1.5 * dotSize, Math.PI / 2, Math.PI);\n context.lineTo(-2.5 * dotSize, -dotSize);\n }\n });\n }\n\n _drawDot({ x, y, size, context, rotation }: DrawArgsCanvas): void {\n this._basicDot({ x, y, size, context, rotation });\n }\n\n _drawSquare({ x, y, size, context, rotation }: DrawArgsCanvas): void {\n this._basicSquare({ x, y, size, context, rotation });\n }\n\n _drawExtraRounded({ x, y, size, context, rotation }: DrawArgsCanvas): void {\n this._basicExtraRounded({ x, y, size, context, rotation });\n }\n}\n","import { CornerDotTypes } from \"../types\";\n\nexport default {\n dot: \"dot\",\n square: \"square\"\n} as CornerDotTypes;\n","import cornerDotTypes from \"../../../constants/cornerDotTypes\";\nimport { CornerDotType, RotateFigureArgsCanvas, BasicFigureDrawArgsCanvas, DrawArgsCanvas } from \"../../../types\";\n\nexport default class QRCornerDot {\n _context: CanvasRenderingContext2D;\n _type: CornerDotType;\n\n constructor({ context, type }: { context: CanvasRenderingContext2D; type: CornerDotType }) {\n this._context = context;\n this._type = type;\n }\n\n draw(x: number, y: number, size: number, rotation: number): void {\n const context = this._context;\n const type = this._type;\n let drawFunction;\n\n switch (type) {\n case cornerDotTypes.square:\n drawFunction = this._drawSquare;\n break;\n case cornerDotTypes.dot:\n default:\n drawFunction = this._drawDot;\n }\n\n drawFunction.call(this, { x, y, size, context, rotation });\n }\n\n _rotateFigure({ x, y, size, context, rotation = 0, draw }: RotateFigureArgsCanvas): void {\n const cx = x + size / 2;\n const cy = y + size / 2;\n\n context.translate(cx, cy);\n rotation && context.rotate(rotation);\n draw();\n context.closePath();\n rotation && context.rotate(-rotation);\n context.translate(-cx, -cy);\n }\n\n _basicDot(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.arc(0, 0, size / 2, 0, Math.PI * 2);\n }\n });\n }\n\n _basicSquare(args: BasicFigureDrawArgsCanvas): void {\n const { size, context } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n context.rect(-size / 2, -size / 2, size, size);\n }\n });\n }\n\n _drawDot({ x, y, size, context, rotation }: DrawArgsCanvas): void {\n this._basicDot({ x, y, size, context, rotation });\n }\n\n _drawSquare({ x, y, size, context, rotation }: DrawArgsCanvas): void {\n this._basicSquare({ x, y, size, context, rotation });\n }\n}\n","import { GradientTypes } from \"../types\";\n\nexport default {\n radial: \"radial\",\n linear: \"linear\"\n} as GradientTypes;\n","import calculateImageSize from \"../tools/calculateImageSize\";\nimport errorCorrectionPercents from \"../constants/errorCorrectionPercents\";\nimport QRDot from \"../figures/dot/canvas/QRDot\";\nimport QRCornerSquare from \"../figures/cornerSquare/canvas/QRCornerSquare\";\nimport QRCornerDot from \"../figures/cornerDot/canvas/QRCornerDot\";\nimport { RequiredOptions } from \"./QROptions\";\nimport gradientTypes from \"../constants/gradientTypes\";\nimport { QRCode, Gradient, FilterFunction } from \"../types\";\n\nconst squareMask = [\n [1, 1, 1, 1, 1, 1, 1],\n [1, 0, 0, 0, 0, 0, 1],\n [1, 0, 0, 0, 0, 0, 1],\n [1, 0, 0, 0, 0, 0, 1],\n [1, 0, 0, 0, 0, 0, 1],\n [1, 0, 0, 0, 0, 0, 1],\n [1, 1, 1, 1, 1, 1, 1]\n];\n\nconst dotMask = [\n [0, 0, 0, 0, 0, 0, 0],\n [0, 0, 0, 0, 0, 0, 0],\n [0, 0, 1, 1, 1, 0, 0],\n [0, 0, 1, 1, 1, 0, 0],\n [0, 0, 1, 1, 1, 0, 0],\n [0, 0, 0, 0, 0, 0, 0],\n [0, 0, 0, 0, 0, 0, 0]\n];\n\nexport default class QRCanvas {\n _canvas: HTMLCanvasElement;\n _options: RequiredOptions;\n _qr?: QRCode;\n _image?: HTMLImageElement;\n\n //TODO don't pass all options to this class\n constructor(options: RequiredOptions) {\n this._canvas = document.createElement(\"canvas\");\n this._canvas.width = options.width;\n this._canvas.height = options.height;\n this._options = options;\n }\n\n get context(): CanvasRenderingContext2D | null {\n return this._canvas.getContext(\"2d\");\n }\n\n get width(): number {\n return this._canvas.width;\n }\n\n get height(): number {\n return this._canvas.height;\n }\n\n getCanvas(): HTMLCanvasElement {\n return this._canvas;\n }\n\n clear(): void {\n const canvasContext = this.context;\n\n if (canvasContext) {\n canvasContext.clearRect(0, 0, this._canvas.width, this._canvas.height);\n }\n }\n\n async drawQR(qr: QRCode): Promise {\n const count = qr.getModuleCount();\n const minSize = Math.min(this._options.width, this._options.height) - this._options.margin * 2;\n const dotSize = Math.floor(minSize / count);\n let drawImageSize = {\n hideXDots: 0,\n hideYDots: 0,\n width: 0,\n height: 0\n };\n\n this._qr = qr;\n\n if (this._options.image) {\n await this.loadImage();\n if (!this._image) return;\n const { imageOptions, qrOptions } = this._options;\n const coverLevel = imageOptions.imageSize * errorCorrectionPercents[qrOptions.errorCorrectionLevel];\n const maxHiddenDots = Math.floor(coverLevel * count * count);\n\n drawImageSize = calculateImageSize({\n originalWidth: this._image.width,\n originalHeight: this._image.height,\n maxHiddenDots,\n maxHiddenAxisDots: count - 14,\n dotSize\n });\n }\n\n this.clear();\n this.drawBackground();\n\n //Draw the dots with the given filter function\n this.drawDots((i: number, j: number): boolean => {\n if (this._options.imageOptions.hideBackgroundDots) {\n if (\n i >= (count - drawImageSize.hideXDots) / 2 &&\n i < (count + drawImageSize.hideXDots) / 2 &&\n j >= (count - drawImageSize.hideYDots) / 2 &&\n j < (count + drawImageSize.hideYDots) / 2\n ) {\n return false;\n }\n }\n\n if (squareMask[i]?.[j] || squareMask[i - count + 7]?.[j] || squareMask[i]?.[j - count + 7]) {\n return false;\n }\n\n if (dotMask[i]?.[j] || dotMask[i - count + 7]?.[j] || dotMask[i]?.[j - count + 7]) {\n return false;\n }\n\n return true;\n });\n this.drawCorners();\n\n if (this._options.image) {\n this.drawImage({ width: drawImageSize.width, height: drawImageSize.height, count, dotSize });\n }\n }\n\n drawBackground(): void {\n const canvasContext = this.context;\n const options = this._options;\n\n if (canvasContext) {\n if (options.backgroundOptions.gradient) {\n const gradientOptions = options.backgroundOptions.gradient;\n const gradient = this._createGradient({\n context: canvasContext,\n options: gradientOptions,\n additionalRotation: 0,\n x: 0,\n y: 0,\n size: this._canvas.width > this._canvas.height ? this._canvas.width : this._canvas.height\n });\n\n gradientOptions.colorStops.forEach(({ offset, color }: { offset: number; color: string }) => {\n gradient.addColorStop(offset, color);\n });\n\n canvasContext.fillStyle = gradient;\n } else if (options.backgroundOptions.color) {\n canvasContext.fillStyle = options.backgroundOptions.color;\n }\n canvasContext.fillRect(0, 0, this._canvas.width, this._canvas.height);\n }\n }\n\n drawDots(filter?: FilterFunction): void {\n if (!this._qr) {\n throw \"QR code is not defined\";\n }\n\n const canvasContext = this.context;\n\n if (!canvasContext) {\n throw \"QR code is not defined\";\n }\n\n const options = this._options;\n const count = this._qr.getModuleCount();\n\n if (count > options.width || count > options.height) {\n throw \"The canvas is too small.\";\n }\n\n const minSize = Math.min(options.width, options.height) - options.margin * 2;\n const dotSize = Math.floor(minSize / count);\n const xBeginning = Math.floor((options.width - count * dotSize) / 2);\n const yBeginning = Math.floor((options.height - count * dotSize) / 2);\n const dot = new QRDot({ context: canvasContext, type: options.dotsOptions.type });\n\n canvasContext.beginPath();\n\n for (let i = 0; i < count; i++) {\n for (let j = 0; j < count; j++) {\n if (filter && !filter(i, j)) {\n continue;\n }\n if (!this._qr.isDark(i, j)) {\n continue;\n }\n\n const x = this._options.useLegacyDotRotation ? xBeginning + i * dotSize : yBeginning + j * dotSize;\n const y = this._options.useLegacyDotRotation ? yBeginning + j * dotSize : xBeginning + i * dotSize;\n\n dot.draw(\n x,\n y,\n dotSize,\n //Get neighbor function\n (xOffset: number, yOffset: number): boolean => {\n //Out of bounds check\n\n if (this._options.useLegacyDotRotation) {\n if (i + xOffset < 0 || j + yOffset < 0 || i + xOffset >= count || j + yOffset >= count) return false;\n if (filter && !filter(i + xOffset, j + yOffset)) return false;\n return !!this._qr && this._qr.isDark(i + xOffset, j + yOffset);\n } else {\n if (j + xOffset < 0 || i + yOffset < 0 || j + xOffset >= count || i + yOffset >= count) return false;\n if (filter && !filter(j + xOffset, i + yOffset)) return false;\n return !!this._qr && this._qr.isDark(i + yOffset, j + xOffset);\n }\n }\n );\n }\n }\n\n if (options.dotsOptions.gradient) {\n const gradientOptions = options.dotsOptions.gradient;\n const gradient = this._createGradient({\n context: canvasContext,\n options: gradientOptions,\n additionalRotation: 0,\n x: xBeginning,\n y: yBeginning,\n size: count * dotSize\n });\n\n gradientOptions.colorStops.forEach(({ offset, color }: { offset: number; color: string }) => {\n gradient.addColorStop(offset, color);\n });\n\n canvasContext.fillStyle = canvasContext.strokeStyle = gradient;\n } else if (options.dotsOptions.color) {\n canvasContext.fillStyle = canvasContext.strokeStyle = options.dotsOptions.color;\n }\n\n canvasContext.fill(\"evenodd\");\n }\n\n drawCorners(filter?: FilterFunction): void {\n if (!this._qr) {\n throw \"QR code is not defined\";\n }\n\n const canvasContext = this.context;\n\n if (!canvasContext) {\n throw \"QR code is not defined\";\n }\n\n const options = this._options;\n\n const count = this._qr.getModuleCount();\n const minSize = Math.min(options.width, options.height) - options.margin * 2;\n const dotSize = Math.floor(minSize / count);\n const cornersSquareSize = dotSize * 7;\n const cornersDotSize = dotSize * 3;\n const xBeginning = Math.floor((options.width - count * dotSize) / 2);\n const yBeginning = Math.floor((options.height - count * dotSize) / 2);\n\n [\n [0, 0, 0],\n [1, 0, Math.PI / 2],\n [0, 1, -Math.PI / 2]\n ].forEach(([column, row, rotation]) => {\n if (filter && !filter(column, row)) {\n return;\n }\n\n const x = xBeginning + column * dotSize * (count - 7);\n const y = yBeginning + row * dotSize * (count - 7);\n\n if (options.cornersSquareOptions?.type) {\n const cornersSquare = new QRCornerSquare({ context: canvasContext, type: options.cornersSquareOptions?.type });\n\n canvasContext.beginPath();\n cornersSquare.draw(x, y, cornersSquareSize, rotation);\n } else {\n const dot = new QRDot({ context: canvasContext, type: options.dotsOptions.type });\n\n canvasContext.beginPath();\n\n for (let i = 0; i < squareMask.length; i++) {\n for (let j = 0; j < squareMask[i].length; j++) {\n if (!squareMask[i]?.[j]) {\n continue;\n }\n\n dot.draw(\n x + i * dotSize,\n y + j * dotSize,\n dotSize,\n (xOffset: number, yOffset: number): boolean => !!squareMask[i + xOffset]?.[j + yOffset]\n );\n }\n }\n }\n\n if (options.cornersSquareOptions?.gradient) {\n const gradientOptions = options.cornersSquareOptions.gradient;\n const gradient = this._createGradient({\n context: canvasContext,\n options: gradientOptions,\n additionalRotation: rotation,\n x,\n y,\n size: cornersSquareSize\n });\n\n gradientOptions.colorStops.forEach(({ offset, color }: { offset: number; color: string }) => {\n gradient.addColorStop(offset, color);\n });\n\n canvasContext.fillStyle = canvasContext.strokeStyle = gradient;\n } else if (options.cornersSquareOptions?.color) {\n canvasContext.fillStyle = canvasContext.strokeStyle = options.cornersSquareOptions.color;\n }\n\n canvasContext.fill(\"evenodd\");\n\n if (options.cornersDotOptions?.type) {\n const cornersDot = new QRCornerDot({ context: canvasContext, type: options.cornersDotOptions?.type });\n\n canvasContext.beginPath();\n cornersDot.draw(x + dotSize * 2, y + dotSize * 2, cornersDotSize, rotation);\n } else {\n const dot = new QRDot({ context: canvasContext, type: options.dotsOptions.type });\n\n canvasContext.beginPath();\n\n for (let i = 0; i < dotMask.length; i++) {\n for (let j = 0; j < dotMask[i].length; j++) {\n if (!dotMask[i]?.[j]) {\n continue;\n }\n\n dot.draw(\n x + i * dotSize,\n y + j * dotSize,\n dotSize,\n (xOffset: number, yOffset: number): boolean => !!dotMask[i + xOffset]?.[j + yOffset]\n );\n }\n }\n }\n\n if (options.cornersDotOptions?.gradient) {\n const gradientOptions = options.cornersDotOptions.gradient;\n const gradient = this._createGradient({\n context: canvasContext,\n options: gradientOptions,\n additionalRotation: rotation,\n x: x + dotSize * 2,\n y: y + dotSize * 2,\n size: cornersDotSize\n });\n\n gradientOptions.colorStops.forEach(({ offset, color }: { offset: number; color: string }) => {\n gradient.addColorStop(offset, color);\n });\n\n canvasContext.fillStyle = canvasContext.strokeStyle = gradient;\n } else if (options.cornersDotOptions?.color) {\n canvasContext.fillStyle = canvasContext.strokeStyle = options.cornersDotOptions.color;\n }\n\n canvasContext.fill(\"evenodd\");\n });\n }\n\n loadImage(): Promise {\n return new Promise((resolve, reject) => {\n const options = this._options;\n const image = new Image();\n\n if (!options.image) {\n return reject(\"Image is not defined\");\n }\n\n if (typeof options.imageOptions.crossOrigin === \"string\") {\n image.crossOrigin = options.imageOptions.crossOrigin;\n }\n\n this._image = image;\n image.onload = (): void => {\n resolve();\n };\n image.src = options.image;\n });\n }\n\n drawImage({\n width,\n height,\n count,\n dotSize\n }: {\n width: number;\n height: number;\n count: number;\n dotSize: number;\n }): void {\n const canvasContext = this.context;\n\n if (!canvasContext) {\n throw \"canvasContext is not defined\";\n }\n\n if (!this._image) {\n throw \"image is not defined\";\n }\n\n const options = this._options;\n const xBeginning = Math.floor((options.width - count * dotSize) / 2);\n const yBeginning = Math.floor((options.height - count * dotSize) / 2);\n const dx = xBeginning + options.imageOptions.margin + (count * dotSize - width) / 2;\n const dy = yBeginning + options.imageOptions.margin + (count * dotSize - height) / 2;\n const dw = width - options.imageOptions.margin * 2;\n const dh = height - options.imageOptions.margin * 2;\n\n canvasContext.drawImage(this._image, dx, dy, dw < 0 ? 0 : dw, dh < 0 ? 0 : dh);\n }\n\n _createGradient({\n context,\n options,\n additionalRotation,\n x,\n y,\n size\n }: {\n context: CanvasRenderingContext2D;\n options: Gradient;\n additionalRotation: number;\n x: number;\n y: number;\n size: number;\n }): CanvasGradient {\n let gradient;\n\n if (options.type === gradientTypes.radial) {\n gradient = context.createRadialGradient(x + size / 2, y + size / 2, 0, x + size / 2, y + size / 2, size / 2);\n } else {\n const rotation = ((options.rotation || 0) + additionalRotation) % (2 * Math.PI);\n const positiveRotation = (rotation + 2 * Math.PI) % (2 * Math.PI);\n let x0 = x + size / 2;\n let y0 = y + size / 2;\n let x1 = x + size / 2;\n let y1 = y + size / 2;\n\n if (\n (positiveRotation >= 0 && positiveRotation <= 0.25 * Math.PI) ||\n (positiveRotation > 1.75 * Math.PI && positiveRotation <= 2 * Math.PI)\n ) {\n x0 = x0 - size / 2;\n y0 = y0 - (size / 2) * Math.tan(rotation);\n x1 = x1 + size / 2;\n y1 = y1 + (size / 2) * Math.tan(rotation);\n } else if (positiveRotation > 0.25 * Math.PI && positiveRotation <= 0.75 * Math.PI) {\n y0 = y0 - size / 2;\n x0 = x0 - size / 2 / Math.tan(rotation);\n y1 = y1 + size / 2;\n x1 = x1 + size / 2 / Math.tan(rotation);\n } else if (positiveRotation > 0.75 * Math.PI && positiveRotation <= 1.25 * Math.PI) {\n x0 = x0 + size / 2;\n y0 = y0 + (size / 2) * Math.tan(rotation);\n x1 = x1 - size / 2;\n y1 = y1 - (size / 2) * Math.tan(rotation);\n } else if (positiveRotation > 1.25 * Math.PI && positiveRotation <= 1.75 * Math.PI) {\n y0 = y0 + size / 2;\n x0 = x0 + size / 2 / Math.tan(rotation);\n y1 = y1 - size / 2;\n x1 = x1 - size / 2 / Math.tan(rotation);\n }\n\n gradient = context.createLinearGradient(Math.round(x0), Math.round(y0), Math.round(x1), Math.round(y1));\n }\n\n return gradient;\n }\n}\n","import dotTypes from \"../../../constants/dotTypes\";\nimport { DotType, GetNeighbor, DrawArgs, BasicFigureDrawArgs, RotateFigureArgs } from \"../../../types\";\n\nexport default class QRDot {\n _element?: SVGElement;\n _svg: SVGElement;\n _type: DotType;\n\n constructor({ svg, type }: { svg: SVGElement; type: DotType }) {\n this._svg = svg;\n this._type = type;\n }\n\n draw(x: number, y: number, size: number, getNeighbor: GetNeighbor): void {\n const type = this._type;\n let drawFunction;\n\n switch (type) {\n case dotTypes.dots:\n drawFunction = this._drawDot;\n break;\n case dotTypes.classy:\n drawFunction = this._drawClassy;\n break;\n case dotTypes.classyRounded:\n drawFunction = this._drawClassyRounded;\n break;\n case dotTypes.rounded:\n drawFunction = this._drawRounded;\n break;\n case dotTypes.extraRounded:\n drawFunction = this._drawExtraRounded;\n break;\n case dotTypes.square:\n default:\n drawFunction = this._drawSquare;\n }\n\n drawFunction.call(this, { x, y, size, getNeighbor });\n }\n\n _rotateFigure({ x, y, size, rotation = 0, draw }: RotateFigureArgs): void {\n const cx = x + size / 2;\n const cy = y + size / 2;\n\n draw();\n this._element?.setAttribute(\"transform\", `rotate(${(180 * rotation) / Math.PI},${cx},${cy})`);\n }\n\n _basicDot(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"circle\");\n this._element.setAttribute(\"cx\", String(x + size / 2));\n this._element.setAttribute(\"cy\", String(y + size / 2));\n this._element.setAttribute(\"r\", String(size / 2));\n }\n });\n }\n\n _basicSquare(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"rect\");\n this._element.setAttribute(\"x\", String(x));\n this._element.setAttribute(\"y\", String(y));\n this._element.setAttribute(\"width\", String(size));\n this._element.setAttribute(\"height\", String(size));\n }\n });\n }\n\n //if rotation === 0 - right side is rounded\n _basicSideRounded(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n this._element.setAttribute(\n \"d\",\n `M ${x} ${y}` + //go to top left position\n `v ${size}` + //draw line to left bottom corner\n `h ${size / 2}` + //draw line to left bottom corner + half of size right\n `a ${size / 2} ${size / 2}, 0, 0, 0, 0 ${-size}` // draw rounded corner\n );\n }\n });\n }\n\n //if rotation === 0 - top right corner is rounded\n _basicCornerRounded(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n this._element.setAttribute(\n \"d\",\n `M ${x} ${y}` + //go to top left position\n `v ${size}` + //draw line to left bottom corner\n `h ${size}` + //draw line to right bottom corner\n `v ${-size / 2}` + //draw line to right bottom corner + half of size top\n `a ${size / 2} ${size / 2}, 0, 0, 0, ${-size / 2} ${-size / 2}` // draw rounded corner\n );\n }\n });\n }\n\n //if rotation === 0 - top right corner is rounded\n _basicCornerExtraRounded(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n this._element.setAttribute(\n \"d\",\n `M ${x} ${y}` + //go to top left position\n `v ${size}` + //draw line to left bottom corner\n `h ${size}` + //draw line to right bottom corner\n `a ${size} ${size}, 0, 0, 0, ${-size} ${-size}` // draw rounded top right corner\n );\n }\n });\n }\n\n //if rotation === 0 - left bottom and right top corners are rounded\n _basicCornersRounded(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n this._element.setAttribute(\n \"d\",\n `M ${x} ${y}` + //go to left top position\n `v ${size / 2}` + //draw line to left top corner + half of size bottom\n `a ${size / 2} ${size / 2}, 0, 0, 0, ${size / 2} ${size / 2}` + // draw rounded left bottom corner\n `h ${size / 2}` + //draw line to right bottom corner\n `v ${-size / 2}` + //draw line to right bottom corner + half of size top\n `a ${size / 2} ${size / 2}, 0, 0, 0, ${-size / 2} ${-size / 2}` // draw rounded right top corner\n );\n }\n });\n }\n\n _drawDot({ x, y, size }: DrawArgs): void {\n this._basicDot({ x, y, size, rotation: 0 });\n }\n\n _drawSquare({ x, y, size }: DrawArgs): void {\n this._basicSquare({ x, y, size, rotation: 0 });\n }\n\n _drawRounded({ x, y, size, getNeighbor }: DrawArgs): void {\n const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\n const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\n const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\n const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\n\n const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\n\n if (neighborsCount === 0) {\n this._basicDot({ x, y, size, rotation: 0 });\n return;\n }\n\n if (neighborsCount > 2 || (leftNeighbor && rightNeighbor) || (topNeighbor && bottomNeighbor)) {\n this._basicSquare({ x, y, size, rotation: 0 });\n return;\n }\n\n if (neighborsCount === 2) {\n let rotation = 0;\n\n if (leftNeighbor && topNeighbor) {\n rotation = Math.PI / 2;\n } else if (topNeighbor && rightNeighbor) {\n rotation = Math.PI;\n } else if (rightNeighbor && bottomNeighbor) {\n rotation = -Math.PI / 2;\n }\n\n this._basicCornerRounded({ x, y, size, rotation });\n return;\n }\n\n if (neighborsCount === 1) {\n let rotation = 0;\n\n if (topNeighbor) {\n rotation = Math.PI / 2;\n } else if (rightNeighbor) {\n rotation = Math.PI;\n } else if (bottomNeighbor) {\n rotation = -Math.PI / 2;\n }\n\n this._basicSideRounded({ x, y, size, rotation });\n return;\n }\n }\n\n _drawExtraRounded({ x, y, size, getNeighbor }: DrawArgs): void {\n const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\n const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\n const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\n const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\n\n const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\n\n if (neighborsCount === 0) {\n this._basicDot({ x, y, size, rotation: 0 });\n return;\n }\n\n if (neighborsCount > 2 || (leftNeighbor && rightNeighbor) || (topNeighbor && bottomNeighbor)) {\n this._basicSquare({ x, y, size, rotation: 0 });\n return;\n }\n\n if (neighborsCount === 2) {\n let rotation = 0;\n\n if (leftNeighbor && topNeighbor) {\n rotation = Math.PI / 2;\n } else if (topNeighbor && rightNeighbor) {\n rotation = Math.PI;\n } else if (rightNeighbor && bottomNeighbor) {\n rotation = -Math.PI / 2;\n }\n\n this._basicCornerExtraRounded({ x, y, size, rotation });\n return;\n }\n\n if (neighborsCount === 1) {\n let rotation = 0;\n\n if (topNeighbor) {\n rotation = Math.PI / 2;\n } else if (rightNeighbor) {\n rotation = Math.PI;\n } else if (bottomNeighbor) {\n rotation = -Math.PI / 2;\n }\n\n this._basicSideRounded({ x, y, size, rotation });\n return;\n }\n }\n\n _drawClassy({ x, y, size, getNeighbor }: DrawArgs): void {\n const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\n const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\n const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\n const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\n\n const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\n\n if (neighborsCount === 0) {\n this._basicCornersRounded({ x, y, size, rotation: Math.PI / 2 });\n return;\n }\n\n if (!leftNeighbor && !topNeighbor) {\n this._basicCornerRounded({ x, y, size, rotation: -Math.PI / 2 });\n return;\n }\n\n if (!rightNeighbor && !bottomNeighbor) {\n this._basicCornerRounded({ x, y, size, rotation: Math.PI / 2 });\n return;\n }\n\n this._basicSquare({ x, y, size, rotation: 0 });\n }\n\n _drawClassyRounded({ x, y, size, getNeighbor }: DrawArgs): void {\n const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\n const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\n const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\n const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\n\n const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\n\n if (neighborsCount === 0) {\n this._basicCornersRounded({ x, y, size, rotation: Math.PI / 2 });\n return;\n }\n\n if (!leftNeighbor && !topNeighbor) {\n this._basicCornerExtraRounded({ x, y, size, rotation: -Math.PI / 2 });\n return;\n }\n\n if (!rightNeighbor && !bottomNeighbor) {\n this._basicCornerExtraRounded({ x, y, size, rotation: Math.PI / 2 });\n return;\n }\n\n this._basicSquare({ x, y, size, rotation: 0 });\n }\n}\n","import cornerSquareTypes from \"../../../constants/cornerSquareTypes\";\nimport { CornerSquareType, DrawArgs, BasicFigureDrawArgs, RotateFigureArgs } from \"../../../types\";\n\nexport default class QRCornerSquare {\n _element?: SVGElement;\n _svg: SVGElement;\n _type: CornerSquareType;\n\n constructor({ svg, type }: { svg: SVGElement; type: CornerSquareType }) {\n this._svg = svg;\n this._type = type;\n }\n\n draw(x: number, y: number, size: number, rotation: number): void {\n const type = this._type;\n let drawFunction;\n\n switch (type) {\n case cornerSquareTypes.square:\n drawFunction = this._drawSquare;\n break;\n case cornerSquareTypes.extraRounded:\n drawFunction = this._drawExtraRounded;\n break;\n case cornerSquareTypes.dot:\n default:\n drawFunction = this._drawDot;\n }\n\n drawFunction.call(this, { x, y, size, rotation });\n }\n\n _rotateFigure({ x, y, size, rotation = 0, draw }: RotateFigureArgs): void {\n const cx = x + size / 2;\n const cy = y + size / 2;\n\n draw();\n this._element?.setAttribute(\"transform\", `rotate(${(180 * rotation) / Math.PI},${cx},${cy})`);\n }\n\n _basicDot(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n const dotSize = size / 7;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n this._element.setAttribute(\"clip-rule\", \"evenodd\");\n this._element.setAttribute(\n \"d\",\n `M ${x + size / 2} ${y}` + // M cx, y // Move to top of ring\n `a ${size / 2} ${size / 2} 0 1 0 0.1 0` + // a outerRadius, outerRadius, 0, 1, 0, 1, 0 // Draw outer arc, but don't close it\n `z` + // Z // Close the outer shape\n `m 0 ${dotSize}` + // m -1 outerRadius-innerRadius // Move to top point of inner radius\n `a ${size / 2 - dotSize} ${size / 2 - dotSize} 0 1 1 -0.1 0` + // a innerRadius, innerRadius, 0, 1, 1, -1, 0 // Draw inner arc, but don't close it\n `Z` // Z // Close the inner ring. Actually will still work without, but inner ring will have one unit missing in stroke\n );\n }\n });\n }\n\n _basicSquare(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n const dotSize = size / 7;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n this._element.setAttribute(\"clip-rule\", \"evenodd\");\n this._element.setAttribute(\n \"d\",\n `M ${x} ${y}` +\n `v ${size}` +\n `h ${size}` +\n `v ${-size}` +\n `z` +\n `M ${x + dotSize} ${y + dotSize}` +\n `h ${size - 2 * dotSize}` +\n `v ${size - 2 * dotSize}` +\n `h ${-size + 2 * dotSize}` +\n `z`\n );\n }\n });\n }\n\n _basicExtraRounded(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n const dotSize = size / 7;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n this._element.setAttribute(\"clip-rule\", \"evenodd\");\n this._element.setAttribute(\n \"d\",\n `M ${x} ${y + 2.5 * dotSize}` +\n `v ${2 * dotSize}` +\n `a ${2.5 * dotSize} ${2.5 * dotSize}, 0, 0, 0, ${dotSize * 2.5} ${dotSize * 2.5}` +\n `h ${2 * dotSize}` +\n `a ${2.5 * dotSize} ${2.5 * dotSize}, 0, 0, 0, ${dotSize * 2.5} ${-dotSize * 2.5}` +\n `v ${-2 * dotSize}` +\n `a ${2.5 * dotSize} ${2.5 * dotSize}, 0, 0, 0, ${-dotSize * 2.5} ${-dotSize * 2.5}` +\n `h ${-2 * dotSize}` +\n `a ${2.5 * dotSize} ${2.5 * dotSize}, 0, 0, 0, ${-dotSize * 2.5} ${dotSize * 2.5}` +\n `M ${x + 2.5 * dotSize} ${y + dotSize}` +\n `h ${2 * dotSize}` +\n `a ${1.5 * dotSize} ${1.5 * dotSize}, 0, 0, 1, ${dotSize * 1.5} ${dotSize * 1.5}` +\n `v ${2 * dotSize}` +\n `a ${1.5 * dotSize} ${1.5 * dotSize}, 0, 0, 1, ${-dotSize * 1.5} ${dotSize * 1.5}` +\n `h ${-2 * dotSize}` +\n `a ${1.5 * dotSize} ${1.5 * dotSize}, 0, 0, 1, ${-dotSize * 1.5} ${-dotSize * 1.5}` +\n `v ${-2 * dotSize}` +\n `a ${1.5 * dotSize} ${1.5 * dotSize}, 0, 0, 1, ${dotSize * 1.5} ${-dotSize * 1.5}`\n );\n }\n });\n }\n\n _drawDot({ x, y, size, rotation }: DrawArgs): void {\n this._basicDot({ x, y, size, rotation });\n }\n\n _drawSquare({ x, y, size, rotation }: DrawArgs): void {\n this._basicSquare({ x, y, size, rotation });\n }\n\n _drawExtraRounded({ x, y, size, rotation }: DrawArgs): void {\n this._basicExtraRounded({ x, y, size, rotation });\n }\n}\n","import cornerDotTypes from \"../../../constants/cornerDotTypes\";\nimport { CornerDotType, RotateFigureArgs, BasicFigureDrawArgs, DrawArgs } from \"../../../types\";\n\nexport default class QRCornerDot {\n _element?: SVGElement;\n _svg: SVGElement;\n _type: CornerDotType;\n\n constructor({ svg, type }: { svg: SVGElement; type: CornerDotType }) {\n this._svg = svg;\n this._type = type;\n }\n\n draw(x: number, y: number, size: number, rotation: number): void {\n const type = this._type;\n let drawFunction;\n\n switch (type) {\n case cornerDotTypes.square:\n drawFunction = this._drawSquare;\n break;\n case cornerDotTypes.dot:\n default:\n drawFunction = this._drawDot;\n }\n\n drawFunction.call(this, { x, y, size, rotation });\n }\n\n _rotateFigure({ x, y, size, rotation = 0, draw }: RotateFigureArgs): void {\n const cx = x + size / 2;\n const cy = y + size / 2;\n\n draw();\n this._element?.setAttribute(\"transform\", `rotate(${(180 * rotation) / Math.PI},${cx},${cy})`);\n }\n\n _basicDot(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"circle\");\n this._element.setAttribute(\"cx\", String(x + size / 2));\n this._element.setAttribute(\"cy\", String(y + size / 2));\n this._element.setAttribute(\"r\", String(size / 2));\n }\n });\n }\n\n _basicSquare(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"rect\");\n this._element.setAttribute(\"x\", String(x));\n this._element.setAttribute(\"y\", String(y));\n this._element.setAttribute(\"width\", String(size));\n this._element.setAttribute(\"height\", String(size));\n }\n });\n }\n\n _drawDot({ x, y, size, rotation }: DrawArgs): void {\n this._basicDot({ x, y, size, rotation });\n }\n\n _drawSquare({ x, y, size, rotation }: DrawArgs): void {\n this._basicSquare({ x, y, size, rotation });\n }\n}\n","import calculateImageSize from \"../tools/calculateImageSize\";\nimport errorCorrectionPercents from \"../constants/errorCorrectionPercents\";\nimport QRDot from \"../figures/dot/svg/QRDot\";\nimport QRCornerSquare from \"../figures/cornerSquare/svg/QRCornerSquare\";\nimport QRCornerDot from \"../figures/cornerDot/svg/QRCornerDot\";\nimport { RequiredOptions } from \"./QROptions\";\nimport gradientTypes from \"../constants/gradientTypes\";\nimport { QRCode, FilterFunction, Gradient } from \"../types\";\n\nconst squareMask = [\n [1, 1, 1, 1, 1, 1, 1],\n [1, 0, 0, 0, 0, 0, 1],\n [1, 0, 0, 0, 0, 0, 1],\n [1, 0, 0, 0, 0, 0, 1],\n [1, 0, 0, 0, 0, 0, 1],\n [1, 0, 0, 0, 0, 0, 1],\n [1, 1, 1, 1, 1, 1, 1]\n];\n\nconst dotMask = [\n [0, 0, 0, 0, 0, 0, 0],\n [0, 0, 0, 0, 0, 0, 0],\n [0, 0, 1, 1, 1, 0, 0],\n [0, 0, 1, 1, 1, 0, 0],\n [0, 0, 1, 1, 1, 0, 0],\n [0, 0, 0, 0, 0, 0, 0],\n [0, 0, 0, 0, 0, 0, 0]\n];\n\nexport default class QRSVG {\n _element: SVGElement;\n _style: SVGStyleElement;\n _defs: SVGElement;\n _dotsClipPath?: SVGElement;\n _cornersSquareClipPath?: SVGElement;\n _cornersDotClipPath?: SVGElement;\n _dots?: SVGElement;\n _cornerSquares?: SVGElement;\n _corners?: SVGElement;\n _cornerDots?: SVGElement;\n _options: RequiredOptions;\n _qr?: QRCode;\n _image?: HTMLImageElement;\n\n //TODO don't pass all options to this class\n constructor(options: RequiredOptions) {\n this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\");\n this._element.setAttribute(\"width\", String(options.width));\n this._element.setAttribute(\"height\", String(options.height));\n this._element.setAttribute(\"xmlns:xlink\", \"http://www.w3.org/1999/xlink\");\n this._defs = document.createElementNS(\"http://www.w3.org/2000/svg\", \"defs\");\n this._style = document.createElementNS(\"http://www.w3.org/2000/svg\", \"style\");\n\n this._options = options;\n }\n\n get width(): number {\n return this._options.width;\n }\n\n get height(): number {\n return this._options.height;\n }\n\n getElement(): SVGElement {\n return this._element;\n }\n\n clear(): void {\n const oldElement = this._element;\n this._element = oldElement.cloneNode(false) as SVGElement;\n oldElement?.parentNode?.replaceChild(this._element, oldElement);\n this._defs = document.createElementNS(\"http://www.w3.org/2000/svg\", \"defs\");\n this._style = document.createElementNS(\"http://www.w3.org/2000/svg\", \"style\");\n this._element.appendChild(this._style);\n this._element.appendChild(this._defs);\n }\n\n async drawQR(qr: QRCode): Promise {\n const count = qr.getModuleCount();\n const minSize = Math.min(this._options.width, this._options.height) - this._options.margin * 2;\n const dotSize = Math.floor(minSize / count);\n let drawImageSize = {\n hideXDots: 0,\n hideYDots: 0,\n width: 0,\n height: 0\n };\n\n this._qr = qr;\n\n if (this._options.image) {\n //We need it to get image size\n await this.loadImage();\n if (!this._image) return;\n const { imageOptions, qrOptions } = this._options;\n const coverLevel = imageOptions.imageSize * errorCorrectionPercents[qrOptions.errorCorrectionLevel];\n const maxHiddenDots = Math.floor(coverLevel * count * count);\n\n drawImageSize = calculateImageSize({\n originalWidth: this._image.width,\n originalHeight: this._image.height,\n maxHiddenDots,\n maxHiddenAxisDots: count - 14,\n dotSize\n });\n }\n\n this._element.appendChild(this._style);\n this._element.appendChild(this._defs);\n\n this.clear();\n this.drawBackground();\n this.drawDots((i: number, j: number): boolean => {\n if (this._options.imageOptions.hideBackgroundDots) {\n if (\n i >= (count - drawImageSize.hideXDots) / 2 &&\n i < (count + drawImageSize.hideXDots) / 2 &&\n j >= (count - drawImageSize.hideYDots) / 2 &&\n j < (count + drawImageSize.hideYDots) / 2\n ) {\n return false;\n }\n }\n\n if (squareMask[i]?.[j] || squareMask[i - count + 7]?.[j] || squareMask[i]?.[j - count + 7]) {\n return false;\n }\n\n if (dotMask[i]?.[j] || dotMask[i - count + 7]?.[j] || dotMask[i]?.[j - count + 7]) {\n return false;\n }\n\n return true;\n });\n this.drawCorners();\n\n if (this._options.image) {\n await this.drawImage({ width: drawImageSize.width, height: drawImageSize.height, count, dotSize });\n }\n }\n\n drawBackground(): void {\n const element = this._element;\n const options = this._options;\n\n if (element) {\n const gradientOptions = options.backgroundOptions?.gradient;\n const color = options.backgroundOptions?.color;\n\n if (gradientOptions) {\n this._createColor({\n options: gradientOptions,\n color: color,\n additionalRotation: 0,\n x: 0,\n y: 0,\n height: options.height,\n width: options.width,\n name: \"background-color\"\n });\n } else if (options.backgroundOptions?.color) {\n this._createStyle({\n color: color,\n name: \"background-color\"\n });\n }\n }\n }\n\n drawDots(filter?: FilterFunction): void {\n if (!this._qr) {\n throw \"QR code is not defined\";\n }\n\n const options = this._options;\n const count = this._qr.getModuleCount();\n\n if (count > options.width || count > options.height) {\n throw \"The canvas is too small.\";\n }\n\n const minSize = Math.min(options.width, options.height) - options.margin * 2;\n const dotSize = Math.floor(minSize / count);\n const xBeginning = Math.floor((options.width - count * dotSize) / 2);\n const yBeginning = Math.floor((options.height - count * dotSize) / 2);\n const dot = new QRDot({ svg: this._element, type: options.dotsOptions.type });\n\n if (options.dotsOptions?.gradient) {\n this._dotsClipPath = document.createElementNS(\"http://www.w3.org/2000/svg\", \"clipPath\");\n this._dotsClipPath.setAttribute(\"id\", \"clip-path-dot-color\");\n this._defs.appendChild(this._dotsClipPath);\n this._createColor({\n options: options.dotsOptions?.gradient,\n color: options.dotsOptions.color,\n additionalRotation: 0,\n x: xBeginning,\n y: yBeginning,\n height: count * dotSize,\n width: count * dotSize,\n name: \"dot-color\"\n });\n } else if (options.dotsOptions.color) {\n this._dots = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n this._dots.setAttribute(\"class\", \"dot-color\");\n this._element.appendChild(this._dots);\n this._createStyle({\n color: options.dotsOptions.color,\n name: \"dot-color\"\n });\n }\n\n for (let i = 0; i < count; i++) {\n for (let j = 0; j < count; j++) {\n if (filter && !filter(i, j)) {\n continue;\n }\n if (!this._qr?.isDark(i, j)) {\n continue;\n }\n\n const x = this._options.useLegacyDotRotation ? xBeginning + i * dotSize : yBeginning + j * dotSize;\n const y = this._options.useLegacyDotRotation ? yBeginning + j * dotSize : xBeginning + i * dotSize;\n\n dot.draw(x, y, dotSize, (xOffset: number, yOffset: number): boolean => {\n if (this._options.useLegacyDotRotation) {\n if (i + xOffset < 0 || j + yOffset < 0 || i + xOffset >= count || j + yOffset >= count) return false;\n if (filter && !filter(i + xOffset, j + yOffset)) return false;\n return !!this._qr && this._qr.isDark(i + xOffset, j + yOffset);\n } else {\n if (j + xOffset < 0 || i + yOffset < 0 || j + xOffset >= count || i + yOffset >= count) return false;\n if (filter && !filter(j + xOffset, i + yOffset)) return false;\n return !!this._qr && this._qr.isDark(i + yOffset, j + xOffset);\n }\n });\n\n if (dot._element && this._dotsClipPath) {\n this._dotsClipPath.appendChild(dot._element);\n } else if (dot._element && this._dots) {\n this._dots.appendChild(dot._element);\n }\n }\n }\n }\n\n drawCorners(): void {\n if (!this._qr) {\n throw \"QR code is not defined\";\n }\n\n const element = this._element;\n const options = this._options;\n\n if (!element) {\n throw \"Element code is not defined\";\n }\n\n const count = this._qr.getModuleCount();\n const minSize = Math.min(options.width, options.height) - options.margin * 2;\n const dotSize = Math.floor(minSize / count);\n const cornersSquareSize = dotSize * 7;\n const cornersDotSize = dotSize * 3;\n const xBeginning = Math.floor((options.width - count * dotSize) / 2);\n const yBeginning = Math.floor((options.height - count * dotSize) / 2);\n\n [\n [0, 0, 0],\n [1, 0, Math.PI / 2],\n [0, 1, -Math.PI / 2]\n ].forEach(([column, row, rotation]) => {\n const x = xBeginning + column * dotSize * (count - 7);\n const y = yBeginning + row * dotSize * (count - 7);\n let cornersSquareClipPath = this._dotsClipPath;\n let cornersDotClipPath = this._dotsClipPath;\n\n if (options.cornersSquareOptions?.gradient) {\n cornersSquareClipPath = document.createElementNS(\"http://www.w3.org/2000/svg\", \"clipPath\");\n cornersSquareClipPath.setAttribute(\"id\", `clip-path-corners-square-color-${column}-${row}`);\n this._defs.appendChild(cornersSquareClipPath);\n this._cornersSquareClipPath = this._cornersDotClipPath = cornersDotClipPath = cornersSquareClipPath;\n\n this._createColor({\n options: options.cornersSquareOptions?.gradient,\n color: options.cornersSquareOptions?.color,\n additionalRotation: rotation,\n x,\n y,\n height: cornersSquareSize,\n width: cornersSquareSize,\n name: `corners-square-color-${column}-${row}`\n });\n } else {\n this._cornerSquares = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n this._cornerSquares.setAttribute(\"class\", `corners-square-color-${column}-${row}`);\n this._element.appendChild(this._cornerSquares);\n this._createStyle({\n color: options.cornersSquareOptions?.color,\n name: `corners-square-color-${column}-${row}`\n });\n }\n\n if (options.cornersSquareOptions?.type) {\n const cornersSquare = new QRCornerSquare({ svg: this._element, type: options.cornersSquareOptions.type });\n\n cornersSquare.draw(x, y, cornersSquareSize, rotation);\n\n if (options.cornersSquareOptions?.gradient && cornersSquare._element && cornersSquareClipPath) {\n cornersSquareClipPath.appendChild(cornersSquare._element);\n } else if (cornersSquare._element && this._cornerSquares) {\n this._cornerSquares.appendChild(cornersSquare._element);\n }\n } else {\n const dot = new QRDot({ svg: this._element, type: options.dotsOptions.type });\n\n for (let i = 0; i < squareMask.length; i++) {\n for (let j = 0; j < squareMask[i].length; j++) {\n if (!squareMask[i]?.[j]) {\n continue;\n }\n\n dot.draw(\n x + i * dotSize,\n y + j * dotSize,\n dotSize,\n (xOffset: number, yOffset: number): boolean => !!squareMask[i + xOffset]?.[j + yOffset]\n );\n\n if (dot._element && this._cornersSquareClipPath) {\n this._cornersSquareClipPath.appendChild(dot._element);\n } else if (dot._element && this._cornerSquares) {\n this._cornerSquares.appendChild(dot._element);\n }\n }\n }\n }\n\n if (options.cornersDotOptions?.gradient) {\n cornersDotClipPath = document.createElementNS(\"http://www.w3.org/2000/svg\", \"clipPath\");\n cornersDotClipPath.setAttribute(\"id\", `clip-path-corners-dot-color-${column}-${row}`);\n this._defs.appendChild(cornersDotClipPath);\n this._cornersDotClipPath = cornersDotClipPath;\n\n this._createColor({\n options: options.cornersDotOptions?.gradient,\n color: options.cornersDotOptions?.color,\n additionalRotation: rotation,\n x: x + dotSize * 2,\n y: y + dotSize * 2,\n height: cornersDotSize,\n width: cornersDotSize,\n name: `corners-dot-color-${column}-${row}`\n });\n } else {\n this._cornerDots = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n this._cornerDots.setAttribute(\"class\", `corners-dot-color-${column}-${row}`);\n this._element.appendChild(this._cornerDots);\n this._createStyle({\n color: options.cornersDotOptions?.color,\n name: `corners-dot-color-${column}-${row}`\n });\n }\n\n if (options.cornersDotOptions?.type) {\n const cornersDot = new QRCornerDot({ svg: this._element, type: options.cornersDotOptions.type });\n\n cornersDot.draw(x + dotSize * 2, y + dotSize * 2, cornersDotSize, rotation);\n\n if (options.cornersDotOptions?.gradient && cornersDot._element && cornersDotClipPath) {\n cornersDotClipPath.appendChild(cornersDot._element);\n } else if (cornersDot._element && this._cornerDots) {\n this._cornerDots.appendChild(cornersDot._element);\n }\n } else {\n const dot = new QRDot({ svg: this._element, type: options.dotsOptions.type });\n\n for (let i = 0; i < dotMask.length; i++) {\n for (let j = 0; j < dotMask[i].length; j++) {\n if (!dotMask[i]?.[j]) {\n continue;\n }\n\n dot.draw(\n x + i * dotSize,\n y + j * dotSize,\n dotSize,\n (xOffset: number, yOffset: number): boolean => !!dotMask[i + xOffset]?.[j + yOffset]\n );\n\n if (dot._element && this._cornersDotClipPath) {\n this._cornersDotClipPath.appendChild(dot._element);\n } else if (dot._element && this._cornerDots) {\n this._cornerDots.appendChild(dot._element);\n }\n }\n }\n }\n });\n }\n\n loadImage(): Promise {\n return new Promise((resolve, reject) => {\n const options = this._options;\n const image = new Image();\n\n if (!options.image) {\n return reject(\"Image is not defined\");\n }\n\n if (typeof options.imageOptions.crossOrigin === \"string\") {\n image.crossOrigin = options.imageOptions.crossOrigin;\n }\n\n this._image = image;\n image.onload = (): void => {\n resolve();\n };\n image.src = options.image;\n });\n }\n\n async drawImage({\n width,\n height,\n count,\n dotSize\n }: {\n width: number;\n height: number;\n count: number;\n dotSize: number;\n }): Promise {\n const options = this._options;\n const xBeginning = Math.floor((options.width - count * dotSize) / 2);\n const yBeginning = Math.floor((options.height - count * dotSize) / 2);\n const dx = xBeginning + options.imageOptions.margin + (count * dotSize - width) / 2;\n const dy = yBeginning + options.imageOptions.margin + (count * dotSize - height) / 2;\n const dw = width - options.imageOptions.margin * 2;\n const dh = height - options.imageOptions.margin * 2;\n\n const image = document.createElementNS(\"http://www.w3.org/2000/svg\", \"image\");\n\n const base64Image = await this._getBase64Image(options.image || \"\");\n\n image.setAttribute(\"href\", base64Image);\n image.setAttribute(\"xlink:href\", base64Image);\n image.setAttribute(\"x\", String(dx));\n image.setAttribute(\"y\", String(dy));\n image.setAttribute(\"width\", `${dw}px`);\n image.setAttribute(\"height\", `${dh}px`);\n\n this._element.appendChild(image);\n }\n\n async _getImageBlob(url: string): Promise {\n const resp = await fetch(url);\n return resp.blob();\n }\n\n // convert a blob to base64\n _blobToBase64(blob: Blob): Promise {\n return new Promise((resolve) => {\n const reader = new FileReader();\n reader.onload = function () {\n const dataUrl = reader.result;\n resolve(dataUrl as string);\n };\n reader.readAsDataURL(blob);\n });\n }\n\n async _getBase64Image(url: string): Promise {\n if (url === \"\") {\n return new Promise((resolve) => {\n resolve(\"\");\n });\n }\n\n const blob = await this._getImageBlob(url);\n const base64 = await this._blobToBase64(blob);\n return base64;\n }\n\n _createColor({\n options,\n color,\n additionalRotation,\n x,\n y,\n height,\n width,\n name\n }: {\n options?: Gradient;\n color?: string;\n additionalRotation: number;\n x: number;\n y: number;\n height: number;\n width: number;\n name: string;\n }): void {\n const size = width > height ? width : height;\n const rect = document.createElementNS(\"http://www.w3.org/2000/svg\", \"rect\");\n rect.setAttribute(\"x\", String(x));\n rect.setAttribute(\"y\", String(y));\n rect.setAttribute(\"height\", String(height));\n rect.setAttribute(\"width\", String(width));\n rect.setAttribute(\"clip-path\", `url('#clip-path-${name}')`);\n\n if (options) {\n let gradient: SVGElement;\n if (options.type === gradientTypes.radial) {\n gradient = document.createElementNS(\"http://www.w3.org/2000/svg\", \"radialGradient\");\n gradient.setAttribute(\"id\", name);\n gradient.setAttribute(\"gradientUnits\", \"userSpaceOnUse\");\n gradient.setAttribute(\"fx\", String(x + width / 2));\n gradient.setAttribute(\"fy\", String(y + height / 2));\n gradient.setAttribute(\"cx\", String(x + width / 2));\n gradient.setAttribute(\"cy\", String(y + height / 2));\n gradient.setAttribute(\"r\", String(size / 2));\n } else {\n const rotation = ((options.rotation || 0) + additionalRotation) % (2 * Math.PI);\n const positiveRotation = (rotation + 2 * Math.PI) % (2 * Math.PI);\n let x0 = x + width / 2;\n let y0 = y + height / 2;\n let x1 = x + width / 2;\n let y1 = y + height / 2;\n\n if (\n (positiveRotation >= 0 && positiveRotation <= 0.25 * Math.PI) ||\n (positiveRotation > 1.75 * Math.PI && positiveRotation <= 2 * Math.PI)\n ) {\n x0 = x0 - width / 2;\n y0 = y0 - (height / 2) * Math.tan(rotation);\n x1 = x1 + width / 2;\n y1 = y1 + (height / 2) * Math.tan(rotation);\n } else if (positiveRotation > 0.25 * Math.PI && positiveRotation <= 0.75 * Math.PI) {\n y0 = y0 - height / 2;\n x0 = x0 - width / 2 / Math.tan(rotation);\n y1 = y1 + height / 2;\n x1 = x1 + width / 2 / Math.tan(rotation);\n } else if (positiveRotation > 0.75 * Math.PI && positiveRotation <= 1.25 * Math.PI) {\n x0 = x0 + width / 2;\n y0 = y0 + (height / 2) * Math.tan(rotation);\n x1 = x1 - width / 2;\n y1 = y1 - (height / 2) * Math.tan(rotation);\n } else if (positiveRotation > 1.25 * Math.PI && positiveRotation <= 1.75 * Math.PI) {\n y0 = y0 + height / 2;\n x0 = x0 + width / 2 / Math.tan(rotation);\n y1 = y1 - height / 2;\n x1 = x1 - width / 2 / Math.tan(rotation);\n }\n\n gradient = document.createElementNS(\"http://www.w3.org/2000/svg\", \"linearGradient\");\n gradient.setAttribute(\"id\", name);\n gradient.setAttribute(\"gradientUnits\", \"userSpaceOnUse\");\n gradient.setAttribute(\"x1\", String(Math.round(x0)));\n gradient.setAttribute(\"y1\", String(Math.round(y0)));\n gradient.setAttribute(\"x2\", String(Math.round(x1)));\n gradient.setAttribute(\"y2\", String(Math.round(y1)));\n }\n\n options.colorStops.forEach(({ offset, color }: { offset: number; color: string }) => {\n const stop = document.createElementNS(\"http://www.w3.org/2000/svg\", \"stop\");\n stop.setAttribute(\"offset\", `${100 * offset}%`);\n stop.setAttribute(\"stop-color\", color);\n gradient.appendChild(stop);\n });\n\n rect.setAttribute(\"fill\", `url('#${name}')`);\n this._defs.appendChild(gradient);\n } else if (color) {\n rect.setAttribute(\"fill\", color);\n }\n\n this._element.appendChild(rect);\n }\n\n _createStyle({ color, name }: { color?: string; name: string }): void {\n if (color === undefined) {\n return;\n }\n\n if (color[0] !== \"#\" || (color.length !== 7 && color.length !== 9)) {\n console.error(\"unsupported color format. At the moment only Hex color codes are supported.\");\n return;\n }\n\n let opacity = 1.0;\n if (color.length === 9) {\n opacity = parseInt(color.substring(7, 9), 16) / 255.0;\n }\n\n this._style.innerHTML += `.${name}{ fill: ${color.substring(0, 7)}; fill-opacity: ${opacity} }`;\n }\n}\n","import { DrawTypes } from \"../types\";\n\nexport default {\n canvas: \"canvas\",\n svg: \"svg\"\n} as DrawTypes;\n","import { TypeNumber } from \"../types\";\n\ninterface TypesMap {\n [key: number]: TypeNumber;\n}\n\nconst qrTypes: TypesMap = {};\n\nfor (let type = 0; type <= 40; type++) {\n qrTypes[type] = type as TypeNumber;\n}\n\n// 0 types is autodetect\n\n// types = {\n// 0: 0,\n// 1: 1,\n// ...\n// 40: 40\n// }\n\nexport default qrTypes;\n","import qrTypes from \"../constants/qrTypes\";\nimport drawTypes from \"../constants/drawTypes\";\nimport errorCorrectionLevels from \"../constants/errorCorrectionLevels\";\nimport { DotType, Options, TypeNumber, ErrorCorrectionLevel, Mode, DrawType, Gradient } from \"../types\";\n\nexport interface RequiredOptions extends Options {\n type: DrawType;\n width: number;\n height: number;\n margin: number;\n data: string;\n qrOptions: {\n typeNumber: TypeNumber;\n mode?: Mode;\n errorCorrectionLevel: ErrorCorrectionLevel;\n };\n imageOptions: {\n hideBackgroundDots: boolean;\n imageSize: number;\n crossOrigin?: string;\n margin: number;\n };\n dotsOptions: {\n type: DotType;\n color: string;\n gradient?: Gradient;\n };\n backgroundOptions: {\n color: string;\n gradient?: Gradient;\n };\n useLegacyDotRotation: boolean;\n}\n\nconst defaultOptions: RequiredOptions = {\n type: drawTypes.canvas,\n width: 512,\n height: 512,\n data: \"\",\n margin: 0,\n qrOptions: {\n typeNumber: qrTypes[0],\n mode: undefined,\n errorCorrectionLevel: errorCorrectionLevels.Q\n },\n imageOptions: {\n hideBackgroundDots: true,\n imageSize: 0.4,\n crossOrigin: \"anonymous\",\n margin: 0\n },\n dotsOptions: {\n type: \"square\",\n color: \"#000\"\n },\n backgroundOptions: {\n color: \"#FFFFFF00\"\n },\n useLegacyDotRotation: false\n};\n\nexport default defaultOptions;\n","import { ErrorCorrectionLevel } from \"../types\";\n\ninterface ErrorCorrectionLevels {\n [key: string]: ErrorCorrectionLevel;\n}\n\nexport default {\n L: \"L\",\n M: \"M\",\n Q: \"Q\",\n H: \"H\"\n} as ErrorCorrectionLevels;\n","import { RequiredOptions } from \"../core/QROptions\";\nimport { Gradient } from \"../types\";\n\nfunction sanitizeGradient(gradient: Gradient): Gradient {\n const newGradient = { ...gradient };\n\n if (!newGradient.colorStops || !newGradient.colorStops.length) {\n throw \"Field 'colorStops' is required in gradient\";\n }\n\n if (newGradient.rotation) {\n newGradient.rotation = Number(newGradient.rotation);\n } else {\n newGradient.rotation = 0;\n }\n\n newGradient.colorStops = newGradient.colorStops.map((colorStop: { offset: number; color: string }) => ({\n ...colorStop,\n offset: Number(colorStop.offset)\n }));\n\n return newGradient;\n}\n\nexport default function sanitizeOptions(options: RequiredOptions): RequiredOptions {\n const newOptions = { ...options };\n\n newOptions.width = Number(newOptions.width);\n newOptions.height = Number(newOptions.height);\n newOptions.margin = Number(newOptions.margin);\n newOptions.imageOptions = {\n ...newOptions.imageOptions,\n hideBackgroundDots: Boolean(newOptions.imageOptions.hideBackgroundDots),\n imageSize: Number(newOptions.imageOptions.imageSize),\n margin: Number(newOptions.imageOptions.margin)\n };\n\n if (newOptions.margin > Math.min(newOptions.width, newOptions.height)) {\n newOptions.margin = Math.min(newOptions.width, newOptions.height);\n }\n\n newOptions.dotsOptions = {\n ...newOptions.dotsOptions\n };\n if (newOptions.dotsOptions.gradient) {\n newOptions.dotsOptions.gradient = sanitizeGradient(newOptions.dotsOptions.gradient);\n }\n\n if (newOptions.cornersSquareOptions) {\n newOptions.cornersSquareOptions = {\n ...newOptions.cornersSquareOptions\n };\n if (newOptions.cornersSquareOptions.gradient) {\n newOptions.cornersSquareOptions.gradient = sanitizeGradient(newOptions.cornersSquareOptions.gradient);\n }\n }\n\n if (newOptions.cornersDotOptions) {\n newOptions.cornersDotOptions = {\n ...newOptions.cornersDotOptions\n };\n if (newOptions.cornersDotOptions.gradient) {\n newOptions.cornersDotOptions.gradient = sanitizeGradient(newOptions.cornersDotOptions.gradient);\n }\n }\n\n if (newOptions.backgroundOptions) {\n newOptions.backgroundOptions = {\n ...newOptions.backgroundOptions\n };\n if (newOptions.backgroundOptions.gradient) {\n newOptions.backgroundOptions.gradient = sanitizeGradient(newOptions.backgroundOptions.gradient);\n }\n }\n\n return newOptions;\n}\n","import getMode from \"../tools/getMode\";\nimport mergeDeep from \"../tools/merge\";\nimport downloadURI from \"../tools/downloadURI\";\nimport QRCanvas from \"./QRCanvas\";\nimport QRSVG from \"./QRSVG\";\nimport drawTypes from \"../constants/drawTypes\";\n\nimport defaultOptions, { RequiredOptions } from \"./QROptions\";\nimport sanitizeOptions from \"../tools/sanitizeOptions\";\nimport { Extension, QRCode, Options, DownloadOptions } from \"../types\";\nimport qrcode from \"qrcode-generator\";\n\nexport default class QRCodeStyling {\n _options: RequiredOptions;\n _container?: HTMLElement;\n _canvas?: QRCanvas;\n _svg?: QRSVG;\n _qr?: QRCode;\n _canvasDrawingPromise?: Promise;\n _svgDrawingPromise?: Promise;\n\n constructor(options?: Partial) {\n this._options = options ? sanitizeOptions(mergeDeep(defaultOptions, options) as RequiredOptions) : defaultOptions;\n this.update();\n }\n\n static _clearContainer(container?: HTMLElement): void {\n if (container) {\n container.innerHTML = \"\";\n }\n }\n\n async _getQRStylingElement(extension: \"svg\"): Promise;\n async _getQRStylingElement(extension: Omit): Promise;\n async _getQRStylingElement(extension: Extension): Promise {\n if (!this._qr) throw \"QR code is empty\";\n\n if (extension.toLowerCase() === \"svg\") {\n let promise, svg: QRSVG;\n\n if (this._svg && this._svgDrawingPromise) {\n svg = this._svg;\n promise = this._svgDrawingPromise;\n } else {\n svg = new QRSVG(this._options);\n promise = svg.drawQR(this._qr);\n }\n\n await promise;\n\n return svg;\n } else {\n let promise, canvas: QRCanvas;\n\n if (this._canvas && this._canvasDrawingPromise) {\n canvas = this._canvas;\n promise = this._canvasDrawingPromise;\n } else {\n canvas = new QRCanvas(this._options);\n promise = canvas.drawQR(this._qr);\n }\n\n await promise;\n\n return canvas;\n }\n }\n\n update(options?: Partial): void {\n QRCodeStyling._clearContainer(this._container);\n this._options = options ? sanitizeOptions(mergeDeep(this._options, options) as RequiredOptions) : this._options;\n\n if (!this._options.data) {\n return;\n }\n\n this._qr = qrcode(this._options.qrOptions.typeNumber, this._options.qrOptions.errorCorrectionLevel);\n this._qr.addData(this._options.data, this._options.qrOptions.mode || getMode(this._options.data));\n this._qr.make();\n\n if (this._options.type === drawTypes.canvas) {\n this._canvas = new QRCanvas(this._options);\n this._canvasDrawingPromise = this._canvas.drawQR(this._qr);\n this._svgDrawingPromise = undefined;\n this._svg = undefined;\n } else {\n this._svg = new QRSVG(this._options);\n this._svgDrawingPromise = this._svg.drawQR(this._qr);\n this._canvasDrawingPromise = undefined;\n this._canvas = undefined;\n }\n\n this.append(this._container);\n }\n\n append(container?: HTMLElement): void {\n if (!container) {\n return;\n }\n\n if (typeof container.appendChild !== \"function\") {\n throw \"Container should be a single DOM node\";\n }\n\n if (this._options.type === drawTypes.canvas) {\n if (this._canvas) {\n container.appendChild(this._canvas.getCanvas());\n }\n } else {\n if (this._svg) {\n container.appendChild(this._svg.getElement());\n }\n }\n\n this._container = container;\n }\n\n async getRawData(extension: Extension = \"png\", quality?: number): Promise {\n if (!this._qr) throw \"QR code is empty\";\n\n //A bit trickery to get typescript to behave\n const lowerCasedExtension = extension.toLocaleLowerCase();\n\n if (lowerCasedExtension === \"svg\") {\n const element = await this._getQRStylingElement(lowerCasedExtension);\n const serializer = new XMLSerializer();\n const source = serializer.serializeToString(element.getElement());\n return new Blob(['\\r\\n' + source], { type: \"image/svg+xml\" });\n } else {\n const element = await this._getQRStylingElement(lowerCasedExtension);\n return new Promise((resolve) => element.getCanvas().toBlob(resolve, `image/${lowerCasedExtension}`, quality));\n }\n }\n\n /**\n *\n * @param extension file format of the returned image\n * @param quality [0-1] with 1 being the highest quality\n * @returns\n */\n async toDataUrl(extension: Omit = \"png\", quality?: number): Promise {\n if (!this._qr) throw \"QR code is empty\";\n const lowerCasedExtension = extension.toLocaleLowerCase();\n const element = await this._getQRStylingElement(lowerCasedExtension);\n return element.getCanvas().toDataURL(`image/${lowerCasedExtension}`, quality);\n }\n\n async download(downloadOptions?: Partial): Promise {\n if (!this._qr) throw \"QR code is empty\";\n let extension = \"png\" as Extension;\n let name = \"qr\";\n\n if (typeof downloadOptions === \"object\" && downloadOptions !== null) {\n if (downloadOptions.name) {\n name = downloadOptions.name;\n }\n if (downloadOptions.extension) {\n extension = downloadOptions.extension;\n }\n }\n\n //A bit trickery to get typescript to behave\n const lowerCasedExtension = extension.toLocaleLowerCase();\n\n if (lowerCasedExtension === \"svg\") {\n const element = await this._getQRStylingElement(lowerCasedExtension);\n const serializer = new XMLSerializer();\n let source = serializer.serializeToString((element as unknown as QRSVG).getElement());\n\n source = '\\r\\n' + source;\n const url = \"data:image/svg+xml;charset=utf-8,\" + encodeURIComponent(source);\n downloadURI(url, `${name}.svg`);\n } else {\n const element = await this._getQRStylingElement(lowerCasedExtension);\n const url = element.getCanvas().toDataURL(`image/${extension}`);\n downloadURI(url, `${name}.${extension}`);\n }\n }\n}\n","import modes from \"../constants/modes\";\nimport { Mode } from \"../types\";\n\nexport default function getMode(data: string): Mode {\n switch (true) {\n case /^[0-9]*$/.test(data):\n return modes.numeric;\n case /^[0-9A-Z $%*+\\-./:]*$/.test(data):\n return modes.alphanumeric;\n default:\n return modes.byte;\n }\n}\n","import QRCodeStyling from \"./core/QRCodeStyling\";\nimport dotTypes from \"./constants/dotTypes\";\nimport cornerDotTypes from \"./constants/cornerDotTypes\";\nimport cornerSquareTypes from \"./constants/cornerSquareTypes\";\nimport errorCorrectionLevels from \"./constants/errorCorrectionLevels\";\nimport errorCorrectionPercents from \"./constants/errorCorrectionPercents\";\nimport modes from \"./constants/modes\";\nimport qrTypes from \"./constants/qrTypes\";\nimport drawTypes from \"./constants/drawTypes\";\n\nexport * from \"./types\";\n\nexport {\n dotTypes,\n cornerDotTypes,\n cornerSquareTypes,\n errorCorrectionLevels,\n errorCorrectionPercents,\n modes,\n qrTypes,\n drawTypes\n};\n\nexport default QRCodeStyling;\n"],"names":["root","factory","exports","module","define","amd","self","qrcode","typeNumber","errorCorrectionLevel","_typeNumber","_errorCorrectionLevel","QRErrorCorrectionLevel","_modules","_moduleCount","_dataCache","_dataList","_this","makeImpl","test","maskPattern","moduleCount","modules","Array","row","col","setupPositionProbePattern","setupPositionAdjustPattern","setupTimingPattern","setupTypeInfo","setupTypeNumber","createData","mapData","r","c","pos","QRUtil","getPatternPosition","i","length","j","bits","getBCHTypeNumber","mod","Math","floor","data","getBCHTypeInfo","inc","bitIndex","byteIndex","maskFunc","getMaskFunction","dark","dataList","rsBlocks","QRRSBlock","getRSBlocks","buffer","qrBitBuffer","put","getMode","getLength","getLengthInBits","write","totalDataCount","dataCount","putBit","offset","maxDcCount","maxEcCount","dcdata","ecdata","dcCount","ecCount","totalCount","max","getBuffer","rsPoly","getErrorCorrectPolynomial","modPoly","qrPolynomial","modIndex","getAt","totalCodeCount","index","createBytes","addData","mode","newData","qrNumber","qrAlphaNum","qr8BitByte","qrKanji","push","isDark","getModuleCount","make","minLostPoint","pattern","lostPoint","getLostPoint","getBestMaskPattern","createTableTag","cellSize","margin","qrHtml","createSvgTag","alt","title","opts","arguments","text","id","mr","rect","size","qrSvg","scalable","escapeXml","join","trim","createDataURL","min","x","y","createImgTag","img","s","escaped","charAt","createASCII","r1","r2","p","blocks","blocksLastLineNoMargin","ascii","substring","_createHalfASCII","white","black","line","renderTo2dContext","context","fillStyle","fillRect","stringToBytes","stringToBytesFuncs","bytes","charCodeAt","createStringToBytes","unicodeData","numChars","unicodeMap","bin","base64DecodeInputStream","read","b","count","b0","b1","v","String","fromCharCode","unknownChar","PATTERN_POSITION_TABLE","G15","G18","getBCHDigit","L","M","Q","H","digit","d","errorCorrectLength","a","multiply","QRMath","gexp","type","sameCount","darkCount","abs","EXP_TABLE","LOG_TABLE","n","num","shift","_num","e","glog","ratio","RS_BLOCK_TABLE","qrRSBlock","rsBlock","getRsBlockTable","list","_buffer","_length","bufIndex","bit","_data","strToNum","chatToNum","getCode","_bytes","code","byteArrayOutputStream","writeByte","off","len","str","_str","_pos","_buflen","match","decode","width","height","getPixel","gif","_width","_height","pixel","out","writeString","writeShort","raster","getLZWRaster","writeBytes","lzwMinCodeSize","clearCode","endCode","bitLength","table","lzwTable","add","_out","_bitLength","_bitBuffer","byteOut","bitOut","dataIndex","contains","indexOf","flush","toByteArray","_map","_size","key","gifImage","setPixel","base64","_base64","writeEncoded","encode","padlen","toString","base64EncodeOutputStream","utf8","charcode","toUTF8Array","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","getter","__esModule","definition","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","isObject","isArray","mergeDeep","target","sources","source","keys","forEach","targetValue","sourceValue","assign","downloadURI","uri","name","link","document","createElement","download","href","body","appendChild","click","removeChild","calculateImageSize","originalHeight","originalWidth","maxHiddenDots","maxHiddenAxisDots","dotSize","hideDots","imageSize","hideYDots","hideXDots","k","sqrt","ceil","round","QRDot","constructor","this","_context","_type","draw","getNeighbor","drawFunction","dotTypes","_drawDot","_drawClassy","_drawClassyRounded","_drawRounded","_drawExtraRounded","_drawSquare","_rotateFigure","rotation","cx","cy","translate","rotate","closePath","_basicDot","args","arc","PI","_basicSquare","_basicSideRounded","lineTo","_basicCornerRounded","_basicCornerExtraRounded","_basicCornersRounded","_basicCornersExtraRounded","leftNeighbor","rightNeighbor","topNeighbor","bottomNeighbor","neighborsCount","QRCornerSquare","cornerSquareTypes","_basicExtraRounded","QRCornerDot","cornerDotTypes","squareMask","dotMask","QRCanvas","options","_canvas","_options","getContext","getCanvas","clear","canvasContext","clearRect","drawQR","qr","minSize","drawImageSize","_qr","image","loadImage","_image","imageOptions","qrOptions","coverLevel","errorCorrectionPercents","drawBackground","drawDots","hideBackgroundDots","drawCorners","drawImage","backgroundOptions","gradient","gradientOptions","_createGradient","additionalRotation","colorStops","color","addColorStop","filter","xBeginning","yBeginning","dot","dotsOptions","beginPath","useLegacyDotRotation","xOffset","yOffset","strokeStyle","fill","cornersSquareSize","cornersDotSize","column","cornersSquareOptions","cornersSquare","cornersDotOptions","cornersDot","Promise","resolve","reject","Image","crossOrigin","onload","src","dx","dy","dw","dh","gradientTypes","createRadialGradient","positiveRotation","x0","y0","x1","y1","tan","createLinearGradient","svg","_svg","_element","setAttribute","createElementNS","QRSVG","_defs","_style","getElement","oldElement","cloneNode","parentNode","replaceChild","element","_createColor","_createStyle","_dotsClipPath","_dots","cornersSquareClipPath","cornersDotClipPath","_cornersSquareClipPath","_cornersDotClipPath","_cornerSquares","_cornerDots","base64Image","_getBase64Image","_getImageBlob","url","fetch","blob","_blobToBase64","reader","FileReader","dataUrl","result","readAsDataURL","stop","console","error","opacity","parseInt","innerHTML","qrTypes","drawTypes","sanitizeGradient","newGradient","Number","map","colorStop","sanitizeOptions","newOptions","Boolean","QRCodeStyling","update","_clearContainer","container","_getQRStylingElement","extension","toLowerCase","promise","_svgDrawingPromise","canvas","_canvasDrawingPromise","_container","append","getRawData","quality","lowerCasedExtension","toLocaleLowerCase","XMLSerializer","serializeToString","Blob","toBlob","toDataUrl","toDataURL","downloadOptions","encodeURIComponent"],"sourceRoot":""} \ No newline at end of file diff --git a/lib/tools/calculateImageSize.test.d.ts b/lib/tools/calculateImageSize.test.d.ts new file mode 100644 index 00000000..cb0ff5c3 --- /dev/null +++ b/lib/tools/calculateImageSize.test.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/lib/tools/getMode.test.d.ts b/lib/tools/getMode.test.d.ts new file mode 100644 index 00000000..cb0ff5c3 --- /dev/null +++ b/lib/tools/getMode.test.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/lib/tools/merge.test.d.ts b/lib/tools/merge.test.d.ts new file mode 100644 index 00000000..cb0ff5c3 --- /dev/null +++ b/lib/tools/merge.test.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/package-lock.json b/package-lock.json index d0eac38c..51de7b17 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,45 +1,49 @@ { "name": "qr-code-styling", - "version": "1.5.0", + "version": "1.6.0", "lockfileVersion": 2, "requires": true, "packages": { "": { - "version": "1.5.0", + "name": "qr-code-styling", + "version": "1.6.0", "license": "MIT", "dependencies": { - "qrcode-generator": "^1.4.3" + "qrcode-generator": "^1.4.4" }, "devDependencies": { - "@typescript-eslint/eslint-plugin": "^4.13.0", - "@typescript-eslint/parser": "^4.13.0", - "canvas": "^2.6.1", - "clean-webpack-plugin": "^3.0.0", - "eslint": "^7.17.0", - "eslint-config-prettier": "^7.1.0", - "eslint-loader": "^4.0.2", - "eslint-plugin-jest": "^24.1.3", - "eslint-plugin-prettier": "^3.3.1", - "html-webpack-plugin": "^4.5.1", - "jest": "^26.6.3", - "jest-environment-jsdom-fifteen": "^1.0.0", - "prettier": "^2.2.1", - "ts-jest": "^26.4.4", - "ts-loader": "^8.0.14", - "typescript": "^4.1.3", - "webpack": "^5.12.3", - "webpack-cli": "^4.3.1", - "webpack-dev-server": "^3.11.1", - "webpack-merge": "^5.7.3" + "@typescript-eslint/eslint-plugin": "^5.35.1", + "@typescript-eslint/parser": "^5.35.1", + "canvas": "^2.11.2", + "clean-webpack-plugin": "^4.0.0", + "eslint": "^8.23.0", + "eslint-config-prettier": "^8.5.0", + "eslint-plugin-jest": "^26.8.7", + "eslint-plugin-prettier": "^4.2.1", + "eslint-webpack-plugin": "^3.2.0", + "html-webpack-plugin": "^5.5.0", + "jest": "^28.1.3", + "prettier": "^2.7.1", + "ts-jest": "^28.0.8", + "ts-loader": "^9.3.1", + "typescript": "^4.8.2", + "webpack": "^5.74.0", + "webpack-cli": "^4.10.0", + "webpack-dev-server": "^4.10.0", + "webpack-merge": "^5.8.0" } }, "node_modules/@babel/code-frame": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", - "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", + "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", "dev": true, "dependencies": { - "@babel/highlight": "^7.10.4" + "@babel/highlight": "^7.24.7", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/core": { @@ -72,25 +76,10 @@ "url": "https://opencollective.com/babel" } }, - "node_modules/@babel/core/node_modules/json5": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", - "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", - "dev": true, - "dependencies": { - "minimist": "^1.2.5" - }, - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/@babel/core/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, "bin": { "semver": "bin/semver" @@ -106,43 +95,55 @@ } }, "node_modules/@babel/generator": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.12.11.tgz", - "integrity": "sha512-Ggg6WPOJtSi8yYQvLVjG8F/TlpWDlKx0OpS4Kt+xMQPs5OaGYWy+v1A+1TvxI6sAMGZpKWWoAQ1DaeQbImlItA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.7.tgz", + "integrity": "sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==", "dev": true, "dependencies": { - "@babel/types": "^7.12.11", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" + "@babel/types": "^7.24.7", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@babel/generator/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "node_modules/@babel/helper-environment-visitor": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz", + "integrity": "sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==", "dev": true, + "dependencies": { + "@babel/types": "^7.24.7" + }, "engines": { - "node": ">=0.10.0" + "node": ">=6.9.0" } }, "node_modules/@babel/helper-function-name": { - "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==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.24.7.tgz", + "integrity": "sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==", "dev": true, "dependencies": { - "@babel/helper-get-function-arity": "^7.12.10", - "@babel/template": "^7.12.7", - "@babel/types": "^7.12.11" + "@babel/template": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@babel/helper-get-function-arity": { - "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==", + "node_modules/@babel/helper-hoist-variables": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.7.tgz", + "integrity": "sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==", "dev": true, "dependencies": { - "@babel/types": "^7.12.10" + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-member-expression-to-functions": { @@ -190,10 +191,13 @@ } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", - "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", - "dev": true + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.9.tgz", + "integrity": "sha512-aBXPT3bmtLryXaoJLyYPXPlSD4p1ld9aYeR+sJNOZjJJGiOpb+fKfh3NkcCu7J54nUJwCERPBExCCpyCOHnu/w==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } }, "node_modules/@babel/helper-replace-supers": { "version": "7.12.11", @@ -217,19 +221,34 @@ } }, "node_modules/@babel/helper-split-export-declaration": { - "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==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz", + "integrity": "sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==", "dev": true, "dependencies": { - "@babel/types": "^7.12.11" + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.7.tgz", + "integrity": "sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg==", + "dev": true, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "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 + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", + "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } }, "node_modules/@babel/helpers": { "version": "7.12.5", @@ -243,20 +262,24 @@ } }, "node_modules/@babel/highlight": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", - "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", + "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.10.4", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" + "@babel/helper-validator-identifier": "^7.24.7", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.12.11.tgz", - "integrity": "sha512-N3UxG+uuF4CMYoNj8AhnbAcJF0PiuJ9KHuy1lQmkYsxTer/MAH9UBNHsBoAX/4s6NvlDD047No8mYVGGzLL4hg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.7.tgz", + "integrity": "sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -290,12 +313,12 @@ } }, "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.1.tgz", - "integrity": "sha512-U40A76x5gTwmESz+qiqssqmeEsKvcSyvtgktrm0uzcARAmM9I1jR221f6Oq+GmHrcD+LvZDag1UTOTe2fL3TeA==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.12.13" }, "peerDependencies": { "@babel/core": "^7.0.0-0" @@ -398,43 +421,68 @@ } }, "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.1.tgz", - "integrity": "sha512-i7ooMZFS+a/Om0crxZodrTzNEPJHZrlMVGMTEpFAj6rYY/bKCddB0Dk/YxfPuYXOopuhKk/e1jV6h+WUU9XN3A==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.18.6.tgz", + "integrity": "sha512-mAWAuq4rvOepWCBid55JuRNvpTNf2UGVgoz4JV0fXEKolsVZDzsa4NqCef758WZJj/GDu0gVGItjKFiClTAmZA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/template": { - "version": "7.12.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.7.tgz", - "integrity": "sha512-GkDzmHS6GV7ZeXfJZ0tLRBhZcMcY0/Lnb+eEbXDBfCAcZCjrZKe6p3J4we/D24O9Y8enxWAg1cWwof59yLh2ow==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.7.tgz", + "integrity": "sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.10.4", - "@babel/parser": "^7.12.7", - "@babel/types": "^7.12.7" + "@babel/code-frame": "^7.24.7", + "@babel/parser": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.12.10", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.12.10.tgz", - "integrity": "sha512-6aEtf0IeRgbYWzta29lePeYSk+YAFIC3kyqESeft8o5CkFlYIMX+EQDDWEiAQ9LHOA3d0oHdgrSsID/CKqXJlg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.7.tgz", + "integrity": "sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.10.4", - "@babel/generator": "^7.12.10", - "@babel/helper-function-name": "^7.10.4", - "@babel/helper-split-export-declaration": "^7.11.0", - "@babel/parser": "^7.12.10", - "@babel/types": "^7.12.10", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.19" + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.24.7", + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-function-name": "^7.24.7", + "@babel/helper-hoist-variables": "^7.24.7", + "@babel/helper-split-export-declaration": "^7.24.7", + "@babel/parser": "^7.24.7", + "@babel/types": "^7.24.7", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/traverse/node_modules/globals": { @@ -447,14 +495,17 @@ } }, "node_modules/@babel/types": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.11.tgz", - "integrity": "sha512-ukA9SQtKThINm++CX1CwmliMrE54J6nIYB5XTwL5f/CLFW9owfls+YSU8tVW15RQ2w+a3fSbPjC6HdQNtWZkiA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.7.tgz", + "integrity": "sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.12.11", - "lodash": "^4.17.19", + "@babel/helper-string-parser": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7", "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@bcoe/v8-coverage": { @@ -463,22 +514,6 @@ "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", "dev": true }, - "node_modules/@cnakazawa/watch": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz", - "integrity": "sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==", - "dev": true, - "dependencies": { - "exec-sh": "^0.3.2", - "minimist": "^1.2.0" - }, - "bin": { - "watch": "cli.js" - }, - "engines": { - "node": ">=0.1.95" - } - }, "node_modules/@discoveryjs/json-ext": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.2.tgz", @@ -489,47 +524,71 @@ } }, "node_modules/@eslint/eslintrc": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.2.2.tgz", - "integrity": "sha512-EfB5OHNYp1F4px/LI/FEnGylop7nOqkQ1LRzCM0KccA2U8tvV8w01KBv37LbO7nW4H+YhKyo2LcJhRwjjV17QQ==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.1.tgz", + "integrity": "sha512-OhSY22oQQdw3zgPOOwdoj01l/Dzl1Z+xyUP33tkSN+aqyEhymJCcPHyXt+ylW8FSe0TfRC2VG+ROQOapD0aZSQ==", "dev": true, "dependencies": { "ajv": "^6.12.4", - "debug": "^4.1.1", - "espree": "^7.3.0", - "globals": "^12.1.0", - "ignore": "^4.0.6", + "debug": "^4.3.2", + "espree": "^9.4.0", + "globals": "^13.15.0", + "ignore": "^5.2.0", "import-fresh": "^3.2.1", - "js-yaml": "^3.13.1", - "lodash": "^4.17.19", - "minimatch": "^3.0.4", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", "strip-json-comments": "^3.1.1" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/@eslint/eslintrc/node_modules/ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "node_modules/@humanwhocodes/config-array": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.10.4.tgz", + "integrity": "sha512-mXAIHxZT3Vcpg83opl1wGlVZ9xydbfZO3r5YfRSH6Gpp2J/PfdBP0wbDa2sO6/qRbcalpoevVyW6A/fI6LfeMw==", "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + }, "engines": { - "node": ">= 4" + "node": ">=10.10.0" } }, - "node_modules/@eslint/eslintrc/node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "node_modules/@humanwhocodes/gitignore-to-minimatch": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@humanwhocodes/gitignore-to-minimatch/-/gitignore-to-minimatch-1.0.2.tgz", + "integrity": "sha512-rSqmMJDdLFUsyxR6FMtD00nfQKKLFb1kv+qBbOVKqErvloEIJLo5bDTJTQNTYgeyp78JsA7u/NPi5jT1GR/MuA==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", "dev": true, "engines": { - "node": ">=8" + "node": ">=12.22" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "github", + "url": "https://github.com/sponsors/nzakas" } }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, "node_modules/@istanbuljs/load-nyc-config": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", @@ -546,26 +605,26 @@ "node": ">=8" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" + "sprintf-js": "~1.0.2" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { + "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, - "engines": { - "node": ">=8" + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" } }, "node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from": { @@ -578,29 +637,29 @@ } }, "node_modules/@istanbuljs/schema": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.2.tgz", - "integrity": "sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw==", + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", "dev": true, "engines": { "node": ">=8" } }, "node_modules/@jest/console": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-26.6.2.tgz", - "integrity": "sha512-IY1R2i2aLsLr7Id3S6p2BA82GNWryt4oSvEXLAKc+L2zdi89dSkE8xC1C+0kpATG4JhBJREnQOH7/zmccM2B0g==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-28.1.3.tgz", + "integrity": "sha512-QPAkP5EwKdK/bxIr6C1I4Vs0rm2nHiANzj/Z5X2JQkrZo6IqvC4ldZ9K95tF0HdidhA8Bo6egxSzUFPYKcEXLw==", "dev": true, "dependencies": { - "@jest/types": "^26.6.2", + "@jest/types": "^28.1.3", "@types/node": "*", "chalk": "^4.0.0", - "jest-message-util": "^26.6.2", - "jest-util": "^26.6.2", + "jest-message-util": "^28.1.3", + "jest-util": "^28.1.3", "slash": "^3.0.0" }, "engines": { - "node": ">= 10.14.2" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, "node_modules/@jest/console/node_modules/ansi-styles": { @@ -619,9 +678,9 @@ } }, "node_modules/@jest/console/node_modules/chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { "ansi-styles": "^4.1.0", @@ -674,51 +733,51 @@ } }, "node_modules/@jest/core": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-26.6.3.tgz", - "integrity": "sha512-xvV1kKbhfUqFVuZ8Cyo+JPpipAHHAV3kcDBftiduK8EICXmTFddryy3P7NfZt8Pv37rA9nEJBKCCkglCPt/Xjw==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-28.1.3.tgz", + "integrity": "sha512-CIKBrlaKOzA7YG19BEqCw3SLIsEwjZkeJzf5bdooVnW4bH5cktqe3JX+G2YV1aK5vP8N9na1IGWFzYaTp6k6NA==", "dev": true, "dependencies": { - "@jest/console": "^26.6.2", - "@jest/reporters": "^26.6.2", - "@jest/test-result": "^26.6.2", - "@jest/transform": "^26.6.2", - "@jest/types": "^26.6.2", + "@jest/console": "^28.1.3", + "@jest/reporters": "^28.1.3", + "@jest/test-result": "^28.1.3", + "@jest/transform": "^28.1.3", + "@jest/types": "^28.1.3", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", + "ci-info": "^3.2.0", "exit": "^0.1.2", - "graceful-fs": "^4.2.4", - "jest-changed-files": "^26.6.2", - "jest-config": "^26.6.3", - "jest-haste-map": "^26.6.2", - "jest-message-util": "^26.6.2", - "jest-regex-util": "^26.0.0", - "jest-resolve": "^26.6.2", - "jest-resolve-dependencies": "^26.6.3", - "jest-runner": "^26.6.3", - "jest-runtime": "^26.6.3", - "jest-snapshot": "^26.6.2", - "jest-util": "^26.6.2", - "jest-validate": "^26.6.2", - "jest-watcher": "^26.6.2", - "micromatch": "^4.0.2", - "p-each-series": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^28.1.3", + "jest-config": "^28.1.3", + "jest-haste-map": "^28.1.3", + "jest-message-util": "^28.1.3", + "jest-regex-util": "^28.0.2", + "jest-resolve": "^28.1.3", + "jest-resolve-dependencies": "^28.1.3", + "jest-runner": "^28.1.3", + "jest-runtime": "^28.1.3", + "jest-snapshot": "^28.1.3", + "jest-util": "^28.1.3", + "jest-validate": "^28.1.3", + "jest-watcher": "^28.1.3", + "micromatch": "^4.0.4", + "pretty-format": "^28.1.3", "rimraf": "^3.0.0", "slash": "^3.0.0", "strip-ansi": "^6.0.0" }, "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/@jest/core/node_modules/ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true, - "engines": { - "node": ">=8" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, "node_modules/@jest/core/node_modules/ansi-styles": { @@ -737,9 +796,9 @@ } }, "node_modules/@jest/core/node_modules/chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { "ansi-styles": "^4.1.0", @@ -752,6 +811,12 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/@jest/core/node_modules/ci-info": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.2.tgz", + "integrity": "sha512-xmDt/QIAdeZ9+nfdPsaBCpMvHNLFiLdjj59qjqn+6iPe6YmHGQ35sBnQ8uslRBXFmXkiZQOJRjvQeoGppoTjjg==", + "dev": true + }, "node_modules/@jest/core/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -794,18 +859,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@jest/core/node_modules/strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@jest/core/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -819,87 +872,118 @@ } }, "node_modules/@jest/environment": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-26.6.2.tgz", - "integrity": "sha512-nFy+fHl28zUrRsCeMB61VDThV1pVTtlEokBRgqPrcT1JNq4yRNIyTHfyht6PqtUvY9IsuLGTrbG8kPXjSZIZwA==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-28.1.3.tgz", + "integrity": "sha512-1bf40cMFTEkKyEf585R9Iz1WayDjHoHqvts0XFYEqyKM3cFWDpeMoqKKTAF9LSYQModPUlh8FKptoM2YcMWAXA==", "dev": true, "dependencies": { - "@jest/fake-timers": "^26.6.2", - "@jest/types": "^26.6.2", + "@jest/fake-timers": "^28.1.3", + "@jest/types": "^28.1.3", "@types/node": "*", - "jest-mock": "^26.6.2" + "jest-mock": "^28.1.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/expect": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-28.1.3.tgz", + "integrity": "sha512-lzc8CpUbSoE4dqT0U+g1qODQjBRHPpCPXissXD4mS9+sWQdmmpeJ9zSH1rS1HEkrsMN0fb7nKrJ9giAR1d3wBw==", + "dev": true, + "dependencies": { + "expect": "^28.1.3", + "jest-snapshot": "^28.1.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/expect-utils": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-28.1.3.tgz", + "integrity": "sha512-wvbi9LUrHJLn3NlDW6wF2hvIMtd4JUl2QNVrjq+IBSHirgfrR3o9RnVtxzdEGO2n9JyIWwHnLfby5KzqBGg2YA==", + "dev": true, + "dependencies": { + "jest-get-type": "^28.0.2" }, "engines": { - "node": ">= 10.14.2" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, "node_modules/@jest/fake-timers": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-26.6.2.tgz", - "integrity": "sha512-14Uleatt7jdzefLPYM3KLcnUl1ZNikaKq34enpb5XG9i81JpppDb5muZvonvKyrl7ftEHkKS5L5/eB/kxJ+bvA==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-28.1.3.tgz", + "integrity": "sha512-D/wOkL2POHv52h+ok5Oj/1gOG9HSywdoPtFsRCUmlCILXNn5eIWmcnd3DIiWlJnpGvQtmajqBP95Ei0EimxfLw==", "dev": true, "dependencies": { - "@jest/types": "^26.6.2", - "@sinonjs/fake-timers": "^6.0.1", + "@jest/types": "^28.1.3", + "@sinonjs/fake-timers": "^9.1.2", "@types/node": "*", - "jest-message-util": "^26.6.2", - "jest-mock": "^26.6.2", - "jest-util": "^26.6.2" + "jest-message-util": "^28.1.3", + "jest-mock": "^28.1.3", + "jest-util": "^28.1.3" }, "engines": { - "node": ">= 10.14.2" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, "node_modules/@jest/globals": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-26.6.2.tgz", - "integrity": "sha512-85Ltnm7HlB/KesBUuALwQ68YTU72w9H2xW9FjZ1eL1U3lhtefjjl5c2MiUbpXt/i6LaPRvoOFJ22yCBSfQ0JIA==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-28.1.3.tgz", + "integrity": "sha512-XFU4P4phyryCXu1pbcqMO0GSQcYe1IsalYCDzRNyhetyeyxMcIxa11qPNDpVNLeretItNqEmYYQn1UYz/5x1NA==", "dev": true, "dependencies": { - "@jest/environment": "^26.6.2", - "@jest/types": "^26.6.2", - "expect": "^26.6.2" + "@jest/environment": "^28.1.3", + "@jest/expect": "^28.1.3", + "@jest/types": "^28.1.3" }, "engines": { - "node": ">= 10.14.2" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, "node_modules/@jest/reporters": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-26.6.2.tgz", - "integrity": "sha512-h2bW53APG4HvkOnVMo8q3QXa6pcaNt1HkwVsOPMBV6LD/q9oSpxNSYZQYkAnjdMjrJ86UuYeLo+aEZClV6opnw==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-28.1.3.tgz", + "integrity": "sha512-JuAy7wkxQZVNU/V6g9xKzCGC5LVXx9FDcABKsSXp5MiKPEE2144a/vXTEDoyzjUpZKfVwp08Wqg5A4WfTMAzjg==", "dev": true, "dependencies": { "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^26.6.2", - "@jest/test-result": "^26.6.2", - "@jest/transform": "^26.6.2", - "@jest/types": "^26.6.2", + "@jest/console": "^28.1.3", + "@jest/test-result": "^28.1.3", + "@jest/transform": "^28.1.3", + "@jest/types": "^28.1.3", + "@jridgewell/trace-mapping": "^0.3.13", + "@types/node": "*", "chalk": "^4.0.0", "collect-v8-coverage": "^1.0.0", "exit": "^0.1.2", - "glob": "^7.1.2", - "graceful-fs": "^4.2.4", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^4.0.3", + "istanbul-lib-instrument": "^5.1.0", "istanbul-lib-report": "^3.0.0", "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.0.2", - "jest-haste-map": "^26.6.2", - "jest-resolve": "^26.6.2", - "jest-util": "^26.6.2", - "jest-worker": "^26.6.2", + "istanbul-reports": "^3.1.3", + "jest-message-util": "^28.1.3", + "jest-util": "^28.1.3", + "jest-worker": "^28.1.3", "slash": "^3.0.0", - "source-map": "^0.6.0", "string-length": "^4.0.1", + "strip-ansi": "^6.0.0", "terminal-link": "^2.0.0", - "v8-to-istanbul": "^7.0.0" + "v8-to-istanbul": "^9.0.1" }, "engines": { - "node": ">= 10.14.2" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" }, - "optionalDependencies": { - "node-notifier": "^8.0.0" + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, "node_modules/@jest/reporters/node_modules/ansi-styles": { @@ -918,9 +1002,9 @@ } }, "node_modules/@jest/reporters/node_modules/chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { "ansi-styles": "^4.1.0", @@ -972,75 +1056,86 @@ "node": ">=8" } }, + "node_modules/@jest/schemas": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-28.1.3.tgz", + "integrity": "sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg==", + "dev": true, + "dependencies": { + "@sinclair/typebox": "^0.24.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, "node_modules/@jest/source-map": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-26.6.2.tgz", - "integrity": "sha512-YwYcCwAnNmOVsZ8mr3GfnzdXDAl4LaenZP5z+G0c8bzC9/dugL8zRmxZzdoTl4IaS3CryS1uWnROLPFmb6lVvA==", + "version": "28.1.2", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-28.1.2.tgz", + "integrity": "sha512-cV8Lx3BeStJb8ipPHnqVw/IM2VCMWO3crWZzYodSIkxXnRcXJipCdx1JCK0K5MsJJouZQTH73mzf4vgxRaH9ww==", "dev": true, "dependencies": { + "@jridgewell/trace-mapping": "^0.3.13", "callsites": "^3.0.0", - "graceful-fs": "^4.2.4", - "source-map": "^0.6.0" + "graceful-fs": "^4.2.9" }, "engines": { - "node": ">= 10.14.2" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, "node_modules/@jest/test-result": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-26.6.2.tgz", - "integrity": "sha512-5O7H5c/7YlojphYNrK02LlDIV2GNPYisKwHm2QTKjNZeEzezCbwYs9swJySv2UfPMyZ0VdsmMv7jIlD/IKYQpQ==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-28.1.3.tgz", + "integrity": "sha512-kZAkxnSE+FqE8YjW8gNuoVkkC9I7S1qmenl8sGcDOLropASP+BkcGKwhXoyqQuGOGeYY0y/ixjrd/iERpEXHNg==", "dev": true, "dependencies": { - "@jest/console": "^26.6.2", - "@jest/types": "^26.6.2", + "@jest/console": "^28.1.3", + "@jest/types": "^28.1.3", "@types/istanbul-lib-coverage": "^2.0.0", "collect-v8-coverage": "^1.0.0" }, "engines": { - "node": ">= 10.14.2" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, "node_modules/@jest/test-sequencer": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-26.6.3.tgz", - "integrity": "sha512-YHlVIjP5nfEyjlrSr8t/YdNfU/1XEt7c5b4OxcXCjyRhjzLYu/rO69/WHPuYcbCWkz8kAeZVZp2N2+IOLLEPGw==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-28.1.3.tgz", + "integrity": "sha512-NIMPEqqa59MWnDi1kvXXpYbqsfQmSJsIbnd85mdVGkiDfQ9WQQTXOLsvISUfonmnBT+w85WEgneCigEEdHDFxw==", "dev": true, "dependencies": { - "@jest/test-result": "^26.6.2", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^26.6.2", - "jest-runner": "^26.6.3", - "jest-runtime": "^26.6.3" + "@jest/test-result": "^28.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^28.1.3", + "slash": "^3.0.0" }, "engines": { - "node": ">= 10.14.2" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, "node_modules/@jest/transform": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-26.6.2.tgz", - "integrity": "sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-28.1.3.tgz", + "integrity": "sha512-u5dT5di+oFI6hfcLOHGTAfmUxFRrjK+vnaP0kkVow9Md/M7V/MxqQMOz/VV25UZO8pzeA9PjfTpOu6BDuwSPQA==", "dev": true, "dependencies": { - "@babel/core": "^7.1.0", - "@jest/types": "^26.6.2", - "babel-plugin-istanbul": "^6.0.0", + "@babel/core": "^7.11.6", + "@jest/types": "^28.1.3", + "@jridgewell/trace-mapping": "^0.3.13", + "babel-plugin-istanbul": "^6.1.1", "chalk": "^4.0.0", "convert-source-map": "^1.4.0", "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^26.6.2", - "jest-regex-util": "^26.0.0", - "jest-util": "^26.6.2", - "micromatch": "^4.0.2", - "pirates": "^4.0.1", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^28.1.3", + "jest-regex-util": "^28.0.2", + "jest-util": "^28.1.3", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", "slash": "^3.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "^3.0.0" + "write-file-atomic": "^4.0.1" }, "engines": { - "node": ">= 10.14.2" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, "node_modules/@jest/transform/node_modules/ansi-styles": { @@ -1059,9 +1154,9 @@ } }, "node_modules/@jest/transform/node_modules/chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { "ansi-styles": "^4.1.0", @@ -1114,19 +1209,20 @@ } }, "node_modules/@jest/types": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", - "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz", + "integrity": "sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==", "dev": true, "dependencies": { + "@jest/schemas": "^28.1.3", "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", "@types/node": "*", - "@types/yargs": "^15.0.0", + "@types/yargs": "^17.0.8", "chalk": "^4.0.0" }, "engines": { - "node": ">= 10.14.2" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, "node_modules/@jest/types/node_modules/ansi-styles": { @@ -1145,9 +1241,9 @@ } }, "node_modules/@jest/types/node_modules/chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { "ansi-styles": "^4.1.0", @@ -1199,69 +1295,168 @@ "node": ">=8" } }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz", - "integrity": "sha512-33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA==", + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", "dev": true, "dependencies": { - "@nodelib/fs.stat": "2.0.4", - "run-parallel": "^1.1.9" + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { - "node": ">= 8" + "node": ">=6.0.0" } }, - "node_modules/@nodelib/fs.stat": { + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", + "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@leichtgewicht/ip-codec": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz", - "integrity": "sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q==", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz", + "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==", + "dev": true + }, + "node_modules/@mapbox/node-pre-gyp": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.9.tgz", + "integrity": "sha512-aDF3S3rK9Q2gey/WAttUlISduDItz5BU3306M9Eyv6/oS40aMprnopshtlKTykxRNIBEZuRMaZAnbrQ4QtKGyw==", + "dev": true, + "dependencies": { + "detect-libc": "^2.0.0", + "https-proxy-agent": "^5.0.0", + "make-dir": "^3.1.0", + "node-fetch": "^2.6.7", + "nopt": "^5.0.0", + "npmlog": "^5.0.1", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.11" + }, + "bin": { + "node-pre-gyp": "bin/node-pre-gyp" + } + }, + "node_modules/@mapbox/node-pre-gyp/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true, "engines": { "node": ">= 8" } }, "node_modules/@nodelib/fs.walk": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.6.tgz", - "integrity": "sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow==", + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, "dependencies": { - "@nodelib/fs.scandir": "2.1.4", + "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" }, "engines": { "node": ">= 8" } }, + "node_modules/@sinclair/typebox": { + "version": "0.24.28", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.28.tgz", + "integrity": "sha512-dgJd3HLOkLmz4Bw50eZx/zJwtBq65nms3N9VBYu5LTjJ883oBFkTyXRlCB/ZGGwqYpJJHA5zW2Ibhl5ngITfow==", + "dev": true + }, "node_modules/@sinonjs/commons": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.1.tgz", - "integrity": "sha512-892K+kWUUi3cl+LlqEWIDrhvLgdL79tECi8JZUyq6IviKy/DNhuzCRlbHUjxK89f4ypPMMaFnFuR9Ie6DoIMsw==", + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", + "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", "dev": true, "dependencies": { "type-detect": "4.0.8" } }, "node_modules/@sinonjs/fake-timers": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz", - "integrity": "sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA==", + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-9.1.2.tgz", + "integrity": "sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw==", "dev": true, "dependencies": { "@sinonjs/commons": "^1.7.0" } }, - "node_modules/@types/anymatch": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@types/anymatch/-/anymatch-1.3.1.tgz", - "integrity": "sha512-/+CRPXpBDpo2RK9C68N3b2cOvO0Cf5B9aPijHsoDQTHivnGSObdOF2BRQOYjojWTDy6nQvMjmqRXIxH55VjxxA==", - "dev": true - }, "node_modules/@types/babel__core": { - "version": "7.1.12", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.12.tgz", - "integrity": "sha512-wMTHiiTiBAAPebqaPiPDLFA4LYPKr6Ph0Xq/6rq1Ur3v66HXyG+clfR9CNETkD7MQS8ZHvpQOtA53DLws5WAEQ==", + "version": "7.1.19", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.19.tgz", + "integrity": "sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==", "dev": true, "dependencies": { "@babel/parser": "^7.1.0", @@ -1272,18 +1467,18 @@ } }, "node_modules/@types/babel__generator": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.2.tgz", - "integrity": "sha512-MdSJnBjl+bdwkLskZ3NGFp9YcXGx5ggLpQQPqtgakVhsWK0hTtNYhjpZLlWQTviGTvF8at+Bvli3jV7faPdgeQ==", + "version": "7.6.4", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", + "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", "dev": true, "dependencies": { "@babel/types": "^7.0.0" } }, "node_modules/@types/babel__template": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.0.tgz", - "integrity": "sha512-NTPErx4/FiPCGScH7foPyr+/1Dkzkni+rHiYHHoTjvwou7AQzJkNeD60A9CXRy+ZEN2B1bggmkTMCDb+Mv5k+A==", + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", + "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", "dev": true, "dependencies": { "@babel/parser": "^7.1.0", @@ -1291,18 +1486,56 @@ } }, "node_modules/@types/babel__traverse": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.11.0.tgz", - "integrity": "sha512-kSjgDMZONiIfSH1Nxcr5JIRMwUetDki63FSQfpTCz8ogF3Ulqm8+mr5f78dUYs6vMiB6gBusQqfQmBvHZj/lwg==", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.0.tgz", + "integrity": "sha512-v4Vwdko+pgymgS+A2UIaJru93zQd85vIGWObM5ekZNdXCKtDYqATlEYnWgfo86Q6I1Lh0oXnksDnMU1cwmlPDw==", "dev": true, "dependencies": { "@babel/types": "^7.3.0" } }, + "node_modules/@types/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "dev": true, + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/bonjour": { + "version": "3.5.10", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.10.tgz", + "integrity": "sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.35", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", + "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect-history-api-fallback": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz", + "integrity": "sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==", + "dev": true, + "dependencies": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, "node_modules/@types/eslint": { - "version": "7.2.6", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.2.6.tgz", - "integrity": "sha512-I+1sYH+NPQ3/tVqCeUSBwTE/0heyvtXqpIopUUArlBm0Kpocb8FbMa3AZ/ASKIFpN3rnEx932TTXDbt9OXsNDw==", + "version": "8.4.6", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.6.tgz", + "integrity": "sha512-/fqTbjxyFUaYNO7VcW5g+4npmqVACz1bB7RTHYuLj+PRjw9hrCwrUXVQFpChUS0JsyEFvMZ7U/PfmvWgxJhI9g==", "dev": true, "dependencies": { "@types/estree": "*", @@ -1310,9 +1543,9 @@ } }, "node_modules/@types/eslint-scope": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.0.tgz", - "integrity": "sha512-O/ql2+rrCUe2W2rs7wMR+GqPRcgB6UiqN5RhrR5xruFlY7l9YLMn0ZkDzjoHLeiFkR8MCQZVudUuuvQ2BLC9Qw==", + "version": "3.7.4", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", + "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", "dev": true, "dependencies": { "@types/eslint": "*", @@ -1320,11 +1553,34 @@ } }, "node_modules/@types/estree": { - "version": "0.0.45", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.45.tgz", - "integrity": "sha512-jnqIUKDUqJbDIUxm0Uj7bnlMnRm1T/eZ9N+AVMqhPgzrba2GhGG5o/jCTwmdPK709nEZsGoMzXEDUjcXHa3W0g==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", "dev": true }, + "node_modules/@types/express": { + "version": "4.17.13", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", + "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", + "dev": true, + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.18", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.17.30", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.30.tgz", + "integrity": "sha512-gstzbTWro2/nFed1WXtf+TtrpwxH7Ggs4RLYTLbeVgIkUQOI3WG/JKjgeOU1zXDvezllupjrf8OPIdvTbIaVOQ==", + "dev": true, + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*" + } + }, "node_modules/@types/glob": { "version": "7.1.3", "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz", @@ -1336,20 +1592,29 @@ } }, "node_modules/@types/graceful-fs": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.4.tgz", - "integrity": "sha512-mWA/4zFQhfvOA8zWkXobwJvBD7vzcxgrOQ0J5CH1votGqdq9m7+FwtGaqyCZqC3NyyBkc9z4m+iry4LlqcMWJg==", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", + "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==", "dev": true, "dependencies": { "@types/node": "*" } }, "node_modules/@types/html-minifier-terser": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz", - "integrity": "sha512-giAlZwstKbmvMk1OO7WXSj4OZ0keXAcl2TQq4LWHiiPH2ByaH7WeUzng+Qej8UPxxv+8lRTuouo0iaNDBuzIBA==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==", "dev": true }, + "node_modules/@types/http-proxy": { + "version": "1.17.9", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.9.tgz", + "integrity": "sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/istanbul-lib-coverage": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz", @@ -1366,28 +1631,24 @@ } }, "node_modules/@types/istanbul-reports": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz", - "integrity": "sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", "dev": true, "dependencies": { "@types/istanbul-lib-report": "*" } }, - "node_modules/@types/jest": { - "version": "26.0.19", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-26.0.19.tgz", - "integrity": "sha512-jqHoirTG61fee6v6rwbnEuKhpSKih0tuhqeFbCmMmErhtu3BYlOZaXWjffgOstMM4S/3iQD31lI5bGLTrs97yQ==", - "dev": true, - "dependencies": { - "jest-diff": "^26.0.0", - "pretty-format": "^26.0.0" - } - }, "node_modules/@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==", + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "dev": true + }, + "node_modules/@types/mime": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz", + "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==", "dev": true }, "node_modules/@types/minimatch": { @@ -1402,83 +1663,77 @@ "integrity": "sha512-UHnOPWVWV1z+VV8k6L1HhG7UbGBgIdghqF3l9Ny9ApPghbjICXkUJSd/b9gOgQfjM1r+37cipdw/HJ3F6ICEnQ==", "dev": true }, - "node_modules/@types/normalize-package-data": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==", - "dev": true - }, "node_modules/@types/prettier": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.1.5.tgz", - "integrity": "sha512-UEyp8LwZ4Dg30kVU2Q3amHHyTn1jEdhCIE59ANed76GaT1Vp76DD3ZWSAxgCrw6wJ0TqeoBpqmfUHiUDPs//HQ==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.0.tgz", + "integrity": "sha512-RI1L7N4JnW5gQw2spvL7Sllfuf1SaHdrZpCHiBlCXjIlufi1SMNnbu2teze3/QE67Fg2tBlH7W+mi4hVNk4p0A==", "dev": true }, - "node_modules/@types/source-list-map": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@types/source-list-map/-/source-list-map-0.1.2.tgz", - "integrity": "sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA==", + "node_modules/@types/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", "dev": true }, - "node_modules/@types/stack-utils": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.0.tgz", - "integrity": "sha512-RJJrrySY7A8havqpGObOB4W92QXKJo63/jFLLgpvOtsGUqbQZ9Sbgl35KMm1DjC6j7AvmmU2bIno+3IyEaemaw==", + "node_modules/@types/range-parser": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", "dev": true }, - "node_modules/@types/tapable": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@types/tapable/-/tapable-1.0.6.tgz", - "integrity": "sha512-W+bw9ds02rAQaMvaLYxAbJ6cvguW/iJXNT6lTssS1ps6QdrMKttqEAMEG/b5CR8TZl3/L7/lH0ZV5nNR1LXikA==", + "node_modules/@types/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", "dev": true }, - "node_modules/@types/uglify-js": { - "version": "3.11.1", - "resolved": "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.11.1.tgz", - "integrity": "sha512-7npvPKV+jINLu1SpSYVWG8KvyJBhBa8tmzMMdDoVc2pWUYHN8KIXlPJhjJ4LT97c4dXJA2SHL/q6ADbDriZN+Q==", + "node_modules/@types/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==", "dev": true, "dependencies": { - "source-map": "^0.6.1" + "@types/express": "*" } }, - "node_modules/@types/webpack": { - "version": "4.41.25", - "resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.25.tgz", - "integrity": "sha512-cr6kZ+4m9lp86ytQc1jPOJXgINQyz3kLLunZ57jznW+WIAL0JqZbGubQk4GlD42MuQL5JGOABrxdpqqWeovlVQ==", + "node_modules/@types/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==", "dev": true, "dependencies": { - "@types/anymatch": "*", - "@types/node": "*", - "@types/tapable": "*", - "@types/uglify-js": "*", - "@types/webpack-sources": "*", - "source-map": "^0.6.0" + "@types/mime": "*", + "@types/node": "*" } }, - "node_modules/@types/webpack-sources": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-2.1.0.tgz", - "integrity": "sha512-LXn/oYIpBeucgP1EIJbKQ2/4ZmpvRl+dlrFdX7+94SKRUV3Evy3FsfMZY318vGhkWUS5MPhtOM3w1/hCOAOXcg==", + "node_modules/@types/sockjs": { + "version": "0.3.33", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz", + "integrity": "sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==", "dev": true, "dependencies": { - "@types/node": "*", - "@types/source-list-map": "*", - "source-map": "^0.7.3" + "@types/node": "*" } }, - "node_modules/@types/webpack-sources/node_modules/source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "node_modules/@types/stack-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", + "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", + "dev": true + }, + "node_modules/@types/ws": { + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz", + "integrity": "sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==", "dev": true, - "engines": { - "node": ">= 8" + "dependencies": { + "@types/node": "*" } }, "node_modules/@types/yargs": { - "version": "15.0.12", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.12.tgz", - "integrity": "sha512-f+fD/fQAo3BCbCDlrUpznF1A5Zp9rB0noS5vnoormHSIPFKL0Z2DcUJ3Gxp5ytH4uLRNxy7AwYUC9exZzqGMAw==", + "version": "17.0.11", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.11.tgz", + "integrity": "sha512-aB4y9UDUXTSMxmM4MH+YnuR0g5Cph3FLQBoWoMB21DSvFVAxRVEHEMx3TLh+zUZYMCQtKiqazz0Q4Rre31f/OA==", "dev": true, "dependencies": { "@types/yargs-parser": "*" @@ -1491,30 +1746,31 @@ "dev": true }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.13.0.tgz", - "integrity": "sha512-ygqDUm+BUPvrr0jrXqoteMqmIaZ/bixYOc3A4BRwzEPTZPi6E+n44rzNZWaB0YvtukgP+aoj0i/fyx7FkM2p1w==", + "version": "5.35.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.35.1.tgz", + "integrity": "sha512-RBZZXZlI4XCY4Wzgy64vB+0slT9+yAPQRjj/HSaRwUot33xbDjF1oN9BLwOLTewoOI0jothIltZRe9uJCHf8gg==", "dev": true, "dependencies": { - "@typescript-eslint/experimental-utils": "4.13.0", - "@typescript-eslint/scope-manager": "4.13.0", - "debug": "^4.1.1", + "@typescript-eslint/scope-manager": "5.35.1", + "@typescript-eslint/type-utils": "5.35.1", + "@typescript-eslint/utils": "5.35.1", + "debug": "^4.3.4", "functional-red-black-tree": "^1.0.1", - "lodash": "^4.17.15", - "regexpp": "^3.0.0", - "semver": "^7.3.2", - "tsutils": "^3.17.1" + "ignore": "^5.2.0", + "regexpp": "^3.2.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^4.0.0", - "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0" + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" }, "peerDependenciesMeta": { "typescript": { @@ -1522,81 +1778,83 @@ } } }, - "node_modules/@typescript-eslint/experimental-utils": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.13.0.tgz", - "integrity": "sha512-/ZsuWmqagOzNkx30VWYV3MNB/Re/CGv/7EzlqZo5RegBN8tMuPaBgNK6vPBCQA8tcYrbsrTdbx3ixMRRKEEGVw==", + "node_modules/@typescript-eslint/parser": { + "version": "5.35.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.35.1.tgz", + "integrity": "sha512-XL2TBTSrh3yWAsMYpKseBYTVpvudNf69rPOWXWVBI08My2JVT5jR66eTt4IgQFHA/giiKJW5dUD4x/ZviCKyGg==", "dev": true, "dependencies": { - "@types/json-schema": "^7.0.3", - "@typescript-eslint/scope-manager": "4.13.0", - "@typescript-eslint/types": "4.13.0", - "@typescript-eslint/typescript-estree": "4.13.0", - "eslint-scope": "^5.0.0", - "eslint-utils": "^2.0.0" + "@typescript-eslint/scope-manager": "5.35.1", + "@typescript-eslint/types": "5.35.1", + "@typescript-eslint/typescript-estree": "5.35.1", + "debug": "^4.3.4" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "*" + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@typescript-eslint/parser": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.13.0.tgz", - "integrity": "sha512-KO0J5SRF08pMXzq9+abyHnaGQgUJZ3Z3ax+pmqz9vl81JxmTTOUfQmq7/4awVfq09b6C4owNlOgOwp61pYRBSg==", + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.35.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.35.1.tgz", + "integrity": "sha512-kCYRSAzIW9ByEIzmzGHE50NGAvAP3wFTaZevgWva7GpquDyFPFcmvVkFJGWJJktg/hLwmys/FZwqM9EKr2u24Q==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "4.13.0", - "@typescript-eslint/types": "4.13.0", - "@typescript-eslint/typescript-estree": "4.13.0", - "debug": "^4.1.1" + "@typescript-eslint/types": "5.35.1", + "@typescript-eslint/visitor-keys": "5.35.1" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } } }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.13.0.tgz", - "integrity": "sha512-UpK7YLG2JlTp/9G4CHe7GxOwd93RBf3aHO5L+pfjIrhtBvZjHKbMhBXTIQNkbz7HZ9XOe++yKrXutYm5KmjWgQ==", + "node_modules/@typescript-eslint/type-utils": { + "version": "5.35.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.35.1.tgz", + "integrity": "sha512-8xT8ljvo43Mp7BiTn1vxLXkjpw8wS4oAc00hMSB4L1/jIiYbjjnc3Qp2GAUOG/v8zsNCd1qwcqfCQ0BuishHkw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "4.13.0", - "@typescript-eslint/visitor-keys": "4.13.0" + "@typescript-eslint/utils": "5.35.1", + "debug": "^4.3.4", + "tsutils": "^3.21.0" }, "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/@typescript-eslint/types": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.13.0.tgz", - "integrity": "sha512-/+aPaq163oX+ObOG00M0t9tKkOgdv9lq0IQv/y4SqGkAXmhFmCfgsELV7kOCTb2vVU5VOmVwXBXJTDr353C1rQ==", + "version": "5.35.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.35.1.tgz", + "integrity": "sha512-FDaujtsH07VHzG0gQ6NDkVVhi1+rhq0qEvzHdJAQjysN+LHDCKDKCBRlZFFE0ec0jKxiv0hN63SNfExy0KrbQQ==", "dev": true, "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "type": "opencollective", @@ -1604,22 +1862,21 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.13.0.tgz", - "integrity": "sha512-9A0/DFZZLlGXn5XA349dWQFwPZxcyYyCFX5X88nWs2uachRDwGeyPz46oTsm9ZJE66EALvEns1lvBwa4d9QxMg==", + "version": "5.35.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.35.1.tgz", + "integrity": "sha512-JUqE1+VRTGyoXlDWWjm6MdfpBYVq+hixytrv1oyjYIBEOZhBCwtpp5ZSvBt4wIA1MKWlnaC2UXl2XmYGC3BoQA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "4.13.0", - "@typescript-eslint/visitor-keys": "4.13.0", - "debug": "^4.1.1", - "globby": "^11.0.1", - "is-glob": "^4.0.1", - "lodash": "^4.17.15", - "semver": "^7.3.2", - "tsutils": "^3.17.1" + "@typescript-eslint/types": "5.35.1", + "@typescript-eslint/visitor-keys": "5.35.1", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "type": "opencollective", @@ -1641,16 +1898,16 @@ } }, "node_modules/@typescript-eslint/typescript-estree/node_modules/globby": { - "version": "11.0.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.2.tgz", - "integrity": "sha512-2ZThXDvvV8fYFRVIxnrMQBipZQDr7MxKAmQK1vujaj9/7eF0efG7BPUKJ7jP7G5SLF37xKDXvO4S/KKLj/Z0og==", + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dev": true, "dependencies": { "array-union": "^2.1.0", "dir-glob": "^3.0.1", - "fast-glob": "^3.1.1", - "ignore": "^5.1.4", - "merge2": "^1.3.0", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", "slash": "^3.0.0" }, "engines": { @@ -1660,17 +1917,41 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@typescript-eslint/utils": { + "version": "5.35.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.35.1.tgz", + "integrity": "sha512-v6F8JNXgeBWI4pzZn36hT2HXXzoBBBJuOYvoQiaQaEEjdi5STzux3Yj8v7ODIpx36i/5s8TdzuQ54TPc5AITQQ==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "@typescript-eslint/scope-manager": "5.35.1", + "@typescript-eslint/types": "5.35.1", + "@typescript-eslint/typescript-estree": "5.35.1", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.13.0.tgz", - "integrity": "sha512-6RoxWK05PAibukE7jElqAtNMq+RWZyqJ6Q/GdIxaiUj2Ept8jh8+FUVlbq9WxMYxkmEOPvCE5cRSyupMpwW31g==", + "version": "5.35.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.35.1.tgz", + "integrity": "sha512-cEB1DvBVo1bxbW/S5axbGPE6b7FIMAbo3w+AGq6zNDA7+NYJOIkKj/sInfTv4edxd4PxJSgdN4t6/pbvgA+n5g==", "dev": true, "dependencies": { - "@typescript-eslint/types": "4.13.0", - "eslint-visitor-keys": "^2.0.0" + "@typescript-eslint/types": "5.35.1", + "eslint-visitor-keys": "^3.3.0" }, "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "type": "opencollective", @@ -1678,155 +1959,165 @@ } }, "node_modules/@webassemblyjs/ast": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.0.tgz", - "integrity": "sha512-kX2W49LWsbthrmIRMbQZuQDhGtjyqXfEmmHyEi4XWnSZtPmxY0+3anPIzsnRb45VH/J55zlOfWvZuY47aJZTJg==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", + "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==", "dev": true, "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.0", - "@webassemblyjs/helper-wasm-bytecode": "1.11.0" + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" } }, "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.0.tgz", - "integrity": "sha512-Q/aVYs/VnPDVYvsCBL/gSgwmfjeCb4LW8+TMrO3cSzJImgv8lxxEPM2JA5jMrivE7LSz3V+PFqtMbls3m1exDA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", "dev": true }, "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.0.tgz", - "integrity": "sha512-baT/va95eXiXb2QflSx95QGT5ClzWpGaa8L7JnJbgzoYeaA27FCvuBXU758l+KXWRndEmUXjP0Q5fibhavIn8w==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", "dev": true }, "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.0.tgz", - "integrity": "sha512-u9HPBEl4DS+vA8qLQdEQ6N/eJQ7gT7aNvMIo8AAWvAl/xMrcOSiI2M0MAnMCy3jIFke7bEee/JwdX1nUpCtdyA==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz", + "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==", "dev": true }, "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.0.tgz", - "integrity": "sha512-DhRQKelIj01s5IgdsOJMKLppI+4zpmcMQ3XboFPLwCpSNH6Hqo1ritgHgD0nqHeSYqofA6aBN/NmXuGjM1jEfQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", "dev": true, "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.11.0", - "@webassemblyjs/helper-api-error": "1.11.0", + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", "@xtuc/long": "4.2.2" } }, "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.0.tgz", - "integrity": "sha512-MbmhvxXExm542tWREgSFnOVo07fDpsBJg3sIl6fSp9xuu75eGz5lz31q7wTLffwL3Za7XNRCMZy210+tnsUSEA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", "dev": true }, "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.0.tgz", - "integrity": "sha512-3Eb88hcbfY/FCukrg6i3EH8H2UsD7x8Vy47iVJrP967A9JGqgBVL9aH71SETPx1JrGsOUVLo0c7vMCN22ytJew==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz", + "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.0", - "@webassemblyjs/helper-buffer": "1.11.0", - "@webassemblyjs/helper-wasm-bytecode": "1.11.0", - "@webassemblyjs/wasm-gen": "1.11.0" + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.12.1" } }, "node_modules/@webassemblyjs/ieee754": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.0.tgz", - "integrity": "sha512-KXzOqpcYQwAfeQ6WbF6HXo+0udBNmw0iXDmEK5sFlmQdmND+tr773Ti8/5T/M6Tl/413ArSJErATd8In3B+WBA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", "dev": true, "dependencies": { "@xtuc/ieee754": "^1.2.0" } }, "node_modules/@webassemblyjs/leb128": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.0.tgz", - "integrity": "sha512-aqbsHa1mSQAbeeNcl38un6qVY++hh8OpCOzxhixSYgbRfNWcxJNJQwe2rezK9XEcssJbbWIkblaJRwGMS9zp+g==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", "dev": true, "dependencies": { "@xtuc/long": "4.2.2" } }, "node_modules/@webassemblyjs/utf8": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.0.tgz", - "integrity": "sha512-A/lclGxH6SpSLSyFowMzO/+aDEPU4hvEiooCMXQPcQFPPJaYcPQNKGOCLUySJsYJ4trbpr+Fs08n4jelkVTGVw==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", "dev": true }, "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.0.tgz", - "integrity": "sha512-JHQ0damXy0G6J9ucyKVXO2j08JVJ2ntkdJlq1UTiUrIgfGMmA7Ik5VdC/L8hBK46kVJgujkBIoMtT8yVr+yVOQ==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz", + "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.0", - "@webassemblyjs/helper-buffer": "1.11.0", - "@webassemblyjs/helper-wasm-bytecode": "1.11.0", - "@webassemblyjs/helper-wasm-section": "1.11.0", - "@webassemblyjs/wasm-gen": "1.11.0", - "@webassemblyjs/wasm-opt": "1.11.0", - "@webassemblyjs/wasm-parser": "1.11.0", - "@webassemblyjs/wast-printer": "1.11.0" + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-opt": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1", + "@webassemblyjs/wast-printer": "1.12.1" } }, "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.0.tgz", - "integrity": "sha512-BEUv1aj0WptCZ9kIS30th5ILASUnAPEvE3tVMTrItnZRT9tXCLW2LEXT8ezLw59rqPP9klh9LPmpU+WmRQmCPQ==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz", + "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.0", - "@webassemblyjs/helper-wasm-bytecode": "1.11.0", - "@webassemblyjs/ieee754": "1.11.0", - "@webassemblyjs/leb128": "1.11.0", - "@webassemblyjs/utf8": "1.11.0" + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" } }, "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.0.tgz", - "integrity": "sha512-tHUSP5F4ywyh3hZ0+fDQuWxKx3mJiPeFufg+9gwTpYp324mPCQgnuVKwzLTZVqj0duRDovnPaZqDwoyhIO8kYg==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz", + "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.0", - "@webassemblyjs/helper-buffer": "1.11.0", - "@webassemblyjs/wasm-gen": "1.11.0", - "@webassemblyjs/wasm-parser": "1.11.0" + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1" } }, "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.0.tgz", - "integrity": "sha512-6L285Sgu9gphrcpDXINvm0M9BskznnzJTE7gYkjDbxET28shDqp27wpruyx3C2S/dvEwiigBwLA1cz7lNUi0kw==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz", + "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.0", - "@webassemblyjs/helper-api-error": "1.11.0", - "@webassemblyjs/helper-wasm-bytecode": "1.11.0", - "@webassemblyjs/ieee754": "1.11.0", - "@webassemblyjs/leb128": "1.11.0", - "@webassemblyjs/utf8": "1.11.0" + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" } }, "node_modules/@webassemblyjs/wast-printer": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.0.tgz", - "integrity": "sha512-Fg5OX46pRdTgB7rKIUojkh9vXaVN6sGYCnEiJN1GYkb0RPwShZXp6KTDqmoMdQPKhcroOXh3fEzmkWmCYaKYhQ==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz", + "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.0", + "@webassemblyjs/ast": "1.12.1", "@xtuc/long": "4.2.2" } }, + "node_modules/@webpack-cli/configtest": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.2.0.tgz", + "integrity": "sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg==", + "dev": true, + "peerDependencies": { + "webpack": "4.x.x || 5.x.x", + "webpack-cli": "4.x.x" + } + }, "node_modules/@webpack-cli/info": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.2.1.tgz", - "integrity": "sha512-fLnDML5HZ5AEKzHul8xLAksoKN2cibu6MgonkUj8R9V7bbeVRkd1XbGEGWrAUNYHbX1jcqCsDEpBviE5StPMzQ==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.5.0.tgz", + "integrity": "sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ==", "dev": true, "dependencies": { "envinfo": "^7.7.3" @@ -1836,9 +2127,9 @@ } }, "node_modules/@webpack-cli/serve": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.2.1.tgz", - "integrity": "sha512-Zj1z6AyS+vqV6Hfi7ngCjFGdHV5EwZNIHo6QfFTNe9PyW+zBU1zJ9BiOW1pmUEq950RC4+Dym6flyA/61/vhyw==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.7.0.tgz", + "integrity": "sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q==", "dev": true, "peerDependencies": { "webpack-cli": "4.x.x" @@ -1861,12 +2152,6 @@ "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", "dev": true }, - "node_modules/abab": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", - "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==", - "dev": true - }, "node_modules/abbrev": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", @@ -1874,22 +2159,22 @@ "dev": true }, "node_modules/accepts": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", - "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", "dev": true, "dependencies": { - "mime-types": "~2.1.24", - "negotiator": "0.6.2" + "mime-types": "~2.1.34", + "negotiator": "0.6.3" }, "engines": { "node": ">= 0.6" } }, "node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.0.tgz", + "integrity": "sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -1898,32 +2183,34 @@ "node": ">=0.4.0" } }, - "node_modules/acorn-globals": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", - "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", + "node_modules/acorn-import-attributes": { + "version": "1.9.5", + "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", + "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", "dev": true, - "dependencies": { - "acorn": "^7.1.1", - "acorn-walk": "^7.1.1" + "peerDependencies": { + "acorn": "^8" } }, "node_modules/acorn-jsx": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", - "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/acorn-walk": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", - "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", "dev": true, + "dependencies": { + "debug": "4" + }, "engines": { - "node": ">=0.4.0" + "node": ">= 6.0.0" } }, "node_modules/ajv": { @@ -1942,15 +2229,45 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/ajv-errors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", - "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", "dev": true, + "dependencies": { + "ajv": "^8.0.0" + }, "peerDependencies": { - "ajv": ">=5.0.0" + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-formats/node_modules/ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, + "node_modules/ajv-formats/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, "node_modules/ajv-keywords": { "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", @@ -1960,22 +2277,13 @@ "ajv": "^6.9.1" } }, - "node_modules/ansi-colors": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", - "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/ansi-escapes": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", - "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "dev": true, "dependencies": { - "type-fest": "^0.11.0" + "type-fest": "^0.21.3" }, "engines": { "node": ">=8" @@ -1985,21 +2293,21 @@ } }, "node_modules/ansi-escapes/node_modules/type-fest": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", - "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==", + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "dev": true, "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/ansi-html": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", - "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=", + "node_modules/ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", "dev": true, "engines": [ "node >= 0.8.0" @@ -2009,12 +2317,12 @@ } }, "node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, "node_modules/ansi-styles": { @@ -2030,9 +2338,9 @@ } }, "node_modules/anymatch": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", - "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", "dev": true, "dependencies": { "normalize-path": "^3.0.0", @@ -2043,61 +2351,42 @@ } }, "node_modules/aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", "dev": true }, "node_modules/are-we-there-yet": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", - "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", + "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", "dev": true, "dependencies": { "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, - "node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true, + "readable-stream": "^3.6.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "node_modules/are-we-there-yet/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 6" } }, - "node_modules/array-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", - "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true }, "node_modules/array-flatten": { @@ -2127,125 +2416,25 @@ "node": ">=0.10.0" } }, - "node_modules/array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/asn1": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", - "dev": true, - "dependencies": { - "safer-buffer": "~2.1.0" - } - }, - "node_modules/assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/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, - "engines": { - "node": ">=8" - } - }, - "node_modules/async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", - "dev": true, - "dependencies": { - "lodash": "^4.17.14" - } - }, - "node_modules/async-each": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", - "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", - "dev": true - }, - "node_modules/async-limiter": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", - "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", - "dev": true - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true - }, - "node_modules/atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "dev": true, - "bin": { - "atob": "bin/atob.js" - }, - "engines": { - "node": ">= 4.5.0" - } - }, - "node_modules/aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/aws4": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", - "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", - "dev": true - }, "node_modules/babel-jest": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-26.6.3.tgz", - "integrity": "sha512-pl4Q+GAVOHwvjrck6jKjvmGhnO3jHX/xuB9d27f+EJZ/6k+6nMuPjorrYp7s++bKKdANwzElBWnLWaObvTnaZA==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-28.1.3.tgz", + "integrity": "sha512-epUaPOEWMk3cWX0M/sPvCHHCe9fMFAa/9hXEgKP8nFfNl/jlGkE9ucq9NqkZGXLDduCJYS0UvSlPUwC0S+rH6Q==", "dev": true, "dependencies": { - "@jest/transform": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/babel__core": "^7.1.7", - "babel-plugin-istanbul": "^6.0.0", - "babel-preset-jest": "^26.6.2", + "@jest/transform": "^28.1.3", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^28.1.3", "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", + "graceful-fs": "^4.2.9", "slash": "^3.0.0" }, "engines": { - "node": ">= 10.14.2" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" }, "peerDependencies": { - "@babel/core": "^7.0.0" + "@babel/core": "^7.8.0" } }, "node_modules/babel-jest/node_modules/ansi-styles": { @@ -2264,9 +2453,9 @@ } }, "node_modules/babel-jest/node_modules/chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { "ansi-styles": "^4.1.0", @@ -2319,15 +2508,15 @@ } }, "node_modules/babel-plugin-istanbul": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz", - "integrity": "sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", "@istanbuljs/load-nyc-config": "^1.0.0", "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^4.0.0", + "istanbul-lib-instrument": "^5.0.4", "test-exclude": "^6.0.0" }, "engines": { @@ -2335,18 +2524,18 @@ } }, "node_modules/babel-plugin-jest-hoist": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.6.2.tgz", - "integrity": "sha512-PO9t0697lNTmcEHH69mdtYiOIkkOlj9fySqfO3K1eCcdISevLAE0xY59VLLUj0SoiPiTX/JU2CYFpILydUa5Lw==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-28.1.3.tgz", + "integrity": "sha512-Ys3tUKAmfnkRUpPdpa98eYrAR0nV+sSFUZZEGuQ2EbFd1y4SOLtD5QDNHAq+bb9a+bbXvYQC4b+ID/THIMcU6Q==", "dev": true, "dependencies": { "@babel/template": "^7.3.3", "@babel/types": "^7.3.3", - "@types/babel__core": "^7.0.0", + "@types/babel__core": "^7.1.14", "@types/babel__traverse": "^7.0.6" }, "engines": { - "node": ">= 10.14.2" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, "node_modules/babel-preset-current-node-syntax": { @@ -2373,16 +2562,16 @@ } }, "node_modules/babel-preset-jest": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-26.6.2.tgz", - "integrity": "sha512-YvdtlVm9t3k777c5NPQIv6cxFFFapys25HiUmuSgHwIZhfifweR5c5Sf5nwE3MAbfu327CYSvps8Yx6ANLyleQ==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-28.1.3.tgz", + "integrity": "sha512-L+fupJvlWAHbQfn74coNX3zf60LXMJsezNvvx8eIh7iOR1luJ1poxYgQk1F8PYtNq/6QODDHCqsSnTFSWC491A==", "dev": true, "dependencies": { - "babel-plugin-jest-hoist": "^26.6.2", + "babel-plugin-jest-hoist": "^28.1.3", "babel-preset-current-node-syntax": "^1.0.0" }, "engines": { - "node": ">= 10.14.2" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" }, "peerDependencies": { "@babel/core": "^7.0.0" @@ -2394,142 +2583,49 @@ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", "dev": true }, - "node_modules/base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "dev": true, - "dependencies": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/batch": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", "dev": true }, - "node_modules/bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", - "dev": true, - "dependencies": { - "tweetnacl": "^0.14.3" - } - }, - "node_modules/big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "dev": true, - "engines": { - "node": "*" - } - }, "node_modules/binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", "dev": true, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/bindings": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "dev": true, - "optional": true, - "dependencies": { - "file-uri-to-path": "1.0.0" + "node": ">=8" } }, "node_modules/body-parser": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", - "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", + "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", "dev": true, "dependencies": { - "bytes": "3.1.0", - "content-type": "~1.0.4", + "bytes": "3.1.2", + "content-type": "~1.0.5", "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "1.7.2", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", - "qs": "6.7.0", - "raw-body": "2.4.0", - "type-is": "~1.6.17" + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" }, "engines": { - "node": ">= 0.8" + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" } }, "node_modules/body-parser/node_modules/bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", "dev": true, "engines": { "node": ">= 0.8" @@ -2544,39 +2640,37 @@ "ms": "2.0.0" } }, - "node_modules/body-parser/node_modules/ms": { + "node_modules/body-parser/node_modules/depd": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "node_modules/body-parser/node_modules/qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", "dev": true, "engines": { - "node": ">=0.6" + "node": ">= 0.8" } }, - "node_modules/bonjour": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", - "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/bonjour-service": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.0.13.tgz", + "integrity": "sha512-LWKRU/7EqDUC9CTAQtuZl5HzBALoCYwtLhffW3et7vZMwv3bWLpJf8bRYlMD5OCcDpTfnPgNCV4yo9ZIaJGMiA==", "dev": true, "dependencies": { - "array-flatten": "^2.1.0", - "deep-equal": "^1.0.1", + "array-flatten": "^2.1.2", "dns-equal": "^1.0.0", - "dns-txt": "^2.0.2", - "multicast-dns": "^6.0.1", - "multicast-dns-service-types": "^1.1.0" + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.5" } }, "node_modules/boolbase": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", "dev": true }, "node_modules/brace-expansion": { @@ -2590,74 +2684,49 @@ } }, "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, "dependencies": { - "fill-range": "^7.0.1" + "fill-range": "^7.1.1" }, "engines": { "node": ">=8" } }, - "node_modules/browser-process-hrtime": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", - "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", - "dev": true - }, "node_modules/browserslist": { - "version": "4.16.6", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz", - "integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==", + "version": "4.23.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.1.tgz", + "integrity": "sha512-TUfofFo/KsK/bWZ9TWQ5O26tsWW4Uhmt8IYklbnUa70udB6P2wA7w7o4PY4muaEPBQaAX+CEnmmIA41NVHtPVw==", "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "dependencies": { - "caniuse-lite": "^1.0.30001219", - "colorette": "^1.2.2", - "electron-to-chromium": "^1.3.723", - "escalade": "^3.1.1", - "node-releases": "^1.1.71" + "caniuse-lite": "^1.0.30001629", + "electron-to-chromium": "^1.4.796", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.16" }, "bin": { "browserslist": "cli.js" }, "engines": { "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - } - }, - "node_modules/browserslist/node_modules/caniuse-lite": { - "version": "1.0.30001230", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001230.tgz", - "integrity": "sha512-5yBd5nWCBS+jWKTcHOzXwo5xzcj4ePE/yjtkZyUV1BTUmrBaA9MRGC+e7mxnqXSA90CmCA8L3eKLaSUkt099IQ==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" } }, - "node_modules/browserslist/node_modules/colorette": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", - "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", - "dev": true - }, - "node_modules/browserslist/node_modules/electron-to-chromium": { - "version": "1.3.739", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.739.tgz", - "integrity": "sha512-+LPJVRsN7hGZ9EIUUiWCpO7l4E3qBYHNadazlucBfsXBbccDFNKUBAgzE68FnkWGJPwD/AfKhSzL+G+Iqb8A4A==", - "dev": true - }, - "node_modules/browserslist/node_modules/node-releases": { - "version": "1.1.72", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.72.tgz", - "integrity": "sha512-LLUo+PpH3dU6XizX3iVoubUNheF/owjXCZZ5yACDxNnPtgFuludV1ZL3ayK1kVep42Rmm0+R9/Y60NQbZ2bifw==", - "dev": true - }, "node_modules/bs-logger": { "version": "0.2.6", "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", @@ -2680,15 +2749,9 @@ } }, "node_modules/buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", - "dev": true - }, - "node_modules/buffer-indexof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", - "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true }, "node_modules/bytes": { @@ -2700,34 +2763,20 @@ "node": ">= 0.8" } }, - "node_modules/cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", "dev": true, "dependencies": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/call-bind": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.0.tgz", - "integrity": "sha512-AEXsYIyyDY3MCzbwdhzG3Jx1R0J2wetQyUynn6dYHAO+bg8l1k7jwZtRv4ryryFs7EP+NDlikJlVe59jr0cM2w==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.0" + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -2753,9 +2802,9 @@ } }, "node_modules/camel-case/node_modules/tslib": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", - "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", "dev": true }, "node_modules/camelcase": { @@ -2767,39 +2816,41 @@ "node": ">=6" } }, + "node_modules/caniuse-lite": { + "version": "1.0.30001636", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001636.tgz", + "integrity": "sha512-bMg2vmr8XBsbL6Lr0UHXy/21m84FTxDLWn2FSqMd5PrlbMxwJlQnC2YWYxVgp66PZE+BBNF2jYQUBKCo1FDeZg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, "node_modules/canvas": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/canvas/-/canvas-2.6.1.tgz", - "integrity": "sha512-S98rKsPcuhfTcYbtF53UIJhcbgIAK533d1kJKMwsMwAIFgfd58MOyxRud3kktlzWiEkFliaJtvyZCBtud/XVEA==", + "version": "2.11.2", + "resolved": "https://registry.npmjs.org/canvas/-/canvas-2.11.2.tgz", + "integrity": "sha512-ItanGBMrmRV7Py2Z+Xhs7cT+FNt5K0vPL4p9EZ/UX/Mu7hFbkxSjKF2KVtPwX7UYWp7dRKnrTvReflgrItJbdw==", "dev": true, "hasInstallScript": true, "dependencies": { - "nan": "^2.14.0", - "node-pre-gyp": "^0.11.0", + "@mapbox/node-pre-gyp": "^1.0.0", + "nan": "^2.17.0", "simple-get": "^3.0.3" }, "engines": { "node": ">=6" } }, - "node_modules/capture-exit": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz", - "integrity": "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==", - "dev": true, - "dependencies": { - "rsvp": "^4.8.4" - }, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", - "dev": true - }, "node_modules/chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", @@ -2824,218 +2875,53 @@ } }, "node_modules/chokidar": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", - "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", - "deprecated": "Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies", + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], "dependencies": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" - }, - "optionalDependencies": { - "fsevents": "^1.2.7" - } - }, - "node_modules/chokidar/node_modules/anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dev": true, - "dependencies": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - } - }, - "node_modules/chokidar/node_modules/anymatch/node_modules/normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "dependencies": { - "remove-trailing-separator": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/chokidar/node_modules/braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "dependencies": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/chokidar/node_modules/braces/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/chokidar/node_modules/fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "dependencies": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/chokidar/node_modules/fill-range/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/chokidar/node_modules/fsevents": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", - "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", - "deprecated": "fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "dependencies": { - "bindings": "^1.5.0", - "nan": "^2.12.1" + "node": ">= 8.10.0" }, - "engines": { - "node": ">= 4.0" + "optionalDependencies": { + "fsevents": "~2.3.2" } }, "node_modules/chokidar/node_modules/glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dev": true, - "dependencies": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - } - }, - "node_modules/chokidar/node_modules/glob-parent/node_modules/is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/chokidar/node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/chokidar/node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/chokidar/node_modules/micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" + "is-glob": "^4.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">= 6" } }, - "node_modules/chokidar/node_modules/to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", "dev": true, - "dependencies": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - }, "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "dev": true - }, "node_modules/chrome-trace-event": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", @@ -3048,126 +2934,48 @@ "node": ">=6.0" } }, - "node_modules/ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "dev": true - }, "node_modules/cjs-module-lexer": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-0.6.0.tgz", - "integrity": "sha512-uc2Vix1frTfnuzxxu1Hp4ktSvM3QaI4oXl4ZUqL1wjTu/BGki9TrCWoqLTg/drR1KwAEarXuRFCG2Svr1GxPFw==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", + "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==", "dev": true }, - "node_modules/class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "dev": true, - "dependencies": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/clean-css": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.3.tgz", - "integrity": "sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.1.tgz", + "integrity": "sha512-lCr8OHhiWCTw4v8POJovCoh4T7I9U11yVsPjMWWnnMmp9ZowCxyad1Pathle/9HjaDp+fdQKjO9fQydE6RHTZg==", "dev": true, "dependencies": { "source-map": "~0.6.0" }, "engines": { - "node": ">= 4.0" + "node": ">= 10.0" } }, "node_modules/clean-webpack-plugin": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/clean-webpack-plugin/-/clean-webpack-plugin-3.0.0.tgz", - "integrity": "sha512-MciirUH5r+cYLGCOL5JX/ZLzOZbVr1ot3Fw+KcvbhUb6PM+yycqd9ZhIlcigQ5gl+XhppNmw3bEFuaaMNyLj3A==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/clean-webpack-plugin/-/clean-webpack-plugin-4.0.0.tgz", + "integrity": "sha512-WuWE1nyTNAyW5T7oNyys2EN0cfP2fdRxhxnIQWiAp0bMabPdHhoGxM8A6YL2GhqwgrPnnaemVE7nv5XJ2Fhh2w==", "dev": true, "dependencies": { - "@types/webpack": "^4.4.31", "del": "^4.1.1" }, "engines": { - "node": ">=8.9.0" + "node": ">=10.0.0" }, "peerDependencies": { - "webpack": "*" + "webpack": ">=4.0.0 <6.0.0" } }, "node_modules/cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "dev": true, "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - } - }, - "node_modules/cliui/node_modules/ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/cliui/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/cliui/node_modules/string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cliui/node_modules/strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.0" - }, - "engines": { - "node": ">=8" + "wrap-ansi": "^7.0.0" } }, "node_modules/clone-deep": { @@ -3187,41 +2995,19 @@ "node_modules/co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", "dev": true, "engines": { "iojs": ">= 1.0.0", "node": ">= 0.12.0" } }, - "node_modules/code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/collect-v8-coverage": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", "dev": true }, - "node_modules/collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", - "dev": true, - "dependencies": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", @@ -3234,48 +3020,33 @@ "node_modules/color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "node_modules/colorette": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.1.tgz", - "integrity": "sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "dev": true }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "node_modules/color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", "dev": true, - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" + "bin": { + "color-support": "bin.js" } }, + "node_modules/colorette": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", + "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", + "dev": true + }, "node_modules/commander": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", - "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", "dev": true, "engines": { - "node": ">= 6" + "node": ">= 12" } }, - "node_modules/commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", - "dev": true - }, - "node_modules/component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", - "dev": true - }, "node_modules/compressible": { "version": "2.0.18", "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", @@ -3328,9 +3099,9 @@ "dev": true }, "node_modules/connect-history-api-fallback": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", - "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", + "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", "dev": true, "engines": { "node": ">=0.8" @@ -3339,25 +3110,45 @@ "node_modules/console-control-strings": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", "dev": true }, "node_modules/content-disposition": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", - "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", "dev": true, "dependencies": { - "safe-buffer": "5.1.2" + "safe-buffer": "5.2.1" }, "engines": { "node": ">= 0.6" } }, + "node_modules/content-disposition/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, "node_modules/content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", "dev": true, "engines": { "node": ">= 0.6" @@ -3373,9 +3164,9 @@ } }, "node_modules/cookie": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", - "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", "dev": true, "engines": { "node": ">= 0.6" @@ -3384,65 +3175,35 @@ "node_modules/cookie-signature": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", "dev": true }, - "node_modules/copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", "dev": true }, - "node_modules/cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "dependencies": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, - "engines": { - "node": ">=4.8" - } - }, - "node_modules/cross-spawn/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, "node_modules/css-select": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", - "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", "dev": true, "dependencies": { "boolbase": "^1.0.0", - "css-what": "^3.2.1", - "domutils": "^1.7.0", - "nth-check": "^1.0.2" + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" } }, "node_modules/css-what": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", - "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", "dev": true, "engines": { "node": ">= 6" @@ -3451,224 +3212,210 @@ "url": "https://github.com/sponsors/fb55" } }, - "node_modules/cssom": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", - "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", - "dev": true - }, - "node_modules/cssstyle": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", - "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, "dependencies": { - "cssom": "~0.3.6" + "ms": "2.1.2" }, "engines": { - "node": ">=8" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/cssstyle/node_modules/cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", - "dev": true - }, - "node_modules/dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "dev": true, - "dependencies": { - "assert-plus": "^1.0.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/data-urls": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", - "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", + "node_modules/decompress-response": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz", + "integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==", "dev": true, "dependencies": { - "abab": "^2.0.3", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.0.0" + "mimic-response": "^2.0.0" }, "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } + "node_modules/dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", + "dev": true }, - "node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "node_modules/deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "node_modules/deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", "dev": true, "engines": { "node": ">=0.10.0" } }, - "node_modules/decimal.js": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.2.1.tgz", - "integrity": "sha512-KaL7+6Fw6i5A2XSnsbhm/6B+NuEA7TZ4vqxnd5tXz9sbKtrN9Srj8ab4vKVdK8YAqZO9P1kg45Y6YLoduPf+kw==", - "dev": true - }, - "node_modules/decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "node_modules/default-gateway": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", "dev": true, + "dependencies": { + "execa": "^5.0.0" + }, "engines": { - "node": ">=0.10" + "node": ">= 10" } }, - "node_modules/decompress-response": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz", - "integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==", + "node_modules/default-gateway/node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, "dependencies": { - "mimic-response": "^2.0.0" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" }, "engines": { - "node": ">=8" + "node": ">= 8" } }, - "node_modules/deep-equal": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", - "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", + "node_modules/default-gateway/node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dev": true, "dependencies": { - "is-arguments": "^1.0.4", - "is-date-object": "^1.0.1", - "is-regex": "^1.0.4", - "object-is": "^1.0.1", - "object-keys": "^1.1.1", - "regexp.prototype.flags": "^1.2.0" + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "node_modules/default-gateway/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true, "engines": { - "node": ">=4.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", - "dev": true - }, - "node_modules/deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "node_modules/default-gateway/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/default-gateway": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz", - "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==", + "node_modules/default-gateway/node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "dev": true, "dependencies": { - "execa": "^1.0.0", - "ip-regex": "^2.1.0" + "path-key": "^3.0.0" }, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "node_modules/default-gateway/node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, - "dependencies": { - "object-keys": "^1.0.12" - }, "engines": { - "node": ">= 0.4" + "node": ">=8" } }, - "node_modules/define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "node_modules/default-gateway/node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, "dependencies": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" + "shebang-regex": "^3.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/define-property/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "node_modules/default-gateway/node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/define-property/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "node_modules/default-gateway/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, "dependencies": { - "kind-of": "^6.0.0" + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" }, "engines": { - "node": ">=0.10.0" + "node": ">= 8" } }, - "node_modules/define-property/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", "dev": true, "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true, + "engines": { + "node": ">=8" } }, "node_modules/del": { @@ -3689,19 +3436,10 @@ "node": ">=6" } }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/delegates": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", "dev": true }, "node_modules/depd": { @@ -3714,21 +3452,22 @@ } }, "node_modules/destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", - "dev": true + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "dev": true, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } }, "node_modules/detect-libc": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", - "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", + "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==", "dev": true, - "bin": { - "detect-libc": "bin/detect-libc.js" - }, "engines": { - "node": ">=0.10" + "node": ">=8" } }, "node_modules/detect-newline": { @@ -3747,12 +3486,12 @@ "dev": true }, "node_modules/diff-sequences": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz", - "integrity": "sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==", + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-28.1.1.tgz", + "integrity": "sha512-FU0iFaH/E23a+a718l8Qa/19bF9p06kgE0KipMOMadwa3SjnaElKzPaUC0vnibs6/B/9ni97s61mcejk8W1fQw==", "dev": true, "engines": { - "node": ">= 10.14.2" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, "node_modules/dir-glob": { @@ -3779,26 +3518,19 @@ "node_modules/dns-equal": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", - "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=", + "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==", "dev": true }, "node_modules/dns-packet": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.4.tgz", - "integrity": "sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==", - "dev": true, - "dependencies": { - "ip": "^1.1.0", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/dns-txt": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", - "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.4.0.tgz", + "integrity": "sha512-EgqGeaBB8hLiHLZtp/IbaDQTL8pZ0+IvwzSHA6d7VyMDM+B9hgddEMa9xjK5oYnw0ci0JQ6g2XCD7/f6cafU6g==", "dev": true, "dependencies": { - "buffer-indexof": "^1.0.0" + "@leichtgewicht/ip-codec": "^2.0.1" + }, + "engines": { + "node": ">=6" } }, "node_modules/doctrine": { @@ -3823,19 +3555,23 @@ } }, "node_modules/dom-serializer": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", - "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", "dev": true, "dependencies": { "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" } }, - "node_modules/dom-serializer/node_modules/domelementtype": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.1.0.tgz", - "integrity": "sha512-LsTgx/L5VpD+Q8lmsXSHW2WpA+eBlZ9HPf3erD1IoPF00/3JKHZ3BknUVA2QGDNu69ZNmyFmCWBSO45XjYKC5w==", + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", "dev": true, "funding": [ { @@ -3844,50 +3580,33 @@ } ] }, - "node_modules/domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", - "dev": true - }, - "node_modules/domexception": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", - "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", + "node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", "dev": true, "dependencies": { - "webidl-conversions": "^5.0.0" + "domelementtype": "^2.2.0" }, "engines": { - "node": ">=8" - } - }, - "node_modules/domexception/node_modules/webidl-conversions": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", - "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/domhandler": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", - "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", - "dev": true, - "dependencies": { - "domelementtype": "1" + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" } }, "node_modules/domutils": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", - "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", "dev": true, "dependencies": { - "dom-serializer": "0", - "domelementtype": "1" + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" } }, "node_modules/dot-case": { @@ -3901,34 +3620,30 @@ } }, "node_modules/dot-case/node_modules/tslib": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", - "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", "dev": true }, - "node_modules/ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", - "dev": true, - "dependencies": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true + }, + "node_modules/electron-to-chromium": { + "version": "1.4.810", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.810.tgz", + "integrity": "sha512-Kaxhu4T7SJGpRQx99tq216gCq2nMxJo+uuT6uzz9l8TVN2stL7M06MIIXAtr9jsrLs2Glflgf2vMQRepxawOdQ==", "dev": true }, "node_modules/emittery": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.7.2.tgz", - "integrity": "sha512-A8OG5SR/ij3SsJdWDJdkkSYUjQdCUx6APQXem0SaEePBSRg4eymGYwBkKo1Y6DU+af/Jn2dBQqDBvjnr9Vi8nQ==", + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.10.2.tgz", + "integrity": "sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw==", "dev": true, "engines": { - "node": ">=10" + "node": ">=12" }, "funding": { "url": "https://github.com/sindresorhus/emittery?sponsor=1" @@ -3940,81 +3655,41 @@ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, - "node_modules/emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, "node_modules/encodeurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", "dev": true, "engines": { "node": ">= 0.8" } }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, - "dependencies": { - "once": "^1.4.0" - } - }, "node_modules/enhanced-resolve": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", - "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.5.0", - "tapable": "^1.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "version": "5.17.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.0.tgz", + "integrity": "sha512-dwDPwZL0dmye8Txp2gzFmA6sxALaSvdRDjPH0viLcKrtlOL3tw62nWWweVD1SdILDTJrbrL6tdWVN58Wo6U3eA==", "dev": true, "dependencies": { - "ansi-colors": "^4.1.1" + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" }, "engines": { - "node": ">=8.6" - } - }, - "node_modules/enquirer/node_modules/ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true, - "engines": { - "node": ">=6" + "node": ">=10.13.0" } }, "node_modules/entities": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", - "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", "dev": true, "funding": { "url": "https://github.com/fb55/entities?sponsor=1" } }, "node_modules/envinfo": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.7.3.tgz", - "integrity": "sha512-46+j5QxbPWza0PB1i15nZx0xQ4I/EfQxg9J8Had3b408SV63nEtor2e+oiY63amTo9KTuh2a3XLObNwduxYwwA==", + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", + "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", "dev": true, "bin": { "envinfo": "dist/cli.js" @@ -4023,18 +3698,6 @@ "node": ">=4" } }, - "node_modules/errno": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", - "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", - "dev": true, - "dependencies": { - "prr": "~1.0.1" - }, - "bin": { - "errno": "cli.js" - } - }, "node_modules/error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", @@ -4044,53 +3707,37 @@ "is-arrayish": "^0.2.1" } }, - "node_modules/es-abstract": { - "version": "1.18.0-next.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.1.tgz", - "integrity": "sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA==", + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", "dev": true, "dependencies": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.2", - "is-negative-zero": "^2.0.0", - "is-regex": "^1.1.1", - "object-inspect": "^1.8.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.1", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" + "get-intrinsic": "^1.2.4" }, "engines": { "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", "dev": true, - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, "engines": { "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/es-module-lexer": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz", + "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==", + "dev": true + }, "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", "dev": true, "engines": { "node": ">=6" @@ -4105,92 +3752,72 @@ "node_modules/escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, "engines": { "node": ">=0.8.0" } }, - "node_modules/escodegen": { - "version": "1.14.3", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", - "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", - "dev": true, - "dependencies": { - "esprima": "^4.0.1", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" - }, - "engines": { - "node": ">=4.0" - }, - "optionalDependencies": { - "source-map": "~0.6.1" - } - }, "node_modules/eslint": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.17.0.tgz", - "integrity": "sha512-zJk08MiBgwuGoxes5sSQhOtibZ75pz0J35XTRlZOk9xMffhpA9BTbQZxoXZzOl5zMbleShbGwtw+1kGferfFwQ==", + "version": "8.23.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.23.0.tgz", + "integrity": "sha512-pBG/XOn0MsJcKcTRLr27S5HpzQo4kLr+HjLQIyK4EiCsijDl/TB+h5uEuJU6bQ8Edvwz1XWOjpaP2qgnXGpTcA==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.0.0", - "@eslint/eslintrc": "^0.2.2", + "@eslint/eslintrc": "^1.3.1", + "@humanwhocodes/config-array": "^0.10.4", + "@humanwhocodes/gitignore-to-minimatch": "^1.0.2", + "@humanwhocodes/module-importer": "^1.0.1", "ajv": "^6.10.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", - "debug": "^4.0.1", + "debug": "^4.3.2", "doctrine": "^3.0.0", - "enquirer": "^2.3.5", - "eslint-scope": "^5.1.1", - "eslint-utils": "^2.1.0", - "eslint-visitor-keys": "^2.0.0", - "espree": "^7.3.1", - "esquery": "^1.2.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.4.0", + "esquery": "^1.4.0", "esutils": "^2.0.2", - "file-entry-cache": "^6.0.0", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.0.0", - "globals": "^12.1.0", - "ignore": "^4.0.6", + "glob-parent": "^6.0.1", + "globals": "^13.15.0", + "globby": "^11.1.0", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", + "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", - "lodash": "^4.17.19", - "minimatch": "^3.0.4", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", "natural-compare": "^1.4.0", "optionator": "^0.9.1", - "progress": "^2.0.0", - "regexpp": "^3.1.0", - "semver": "^7.2.1", - "strip-ansi": "^6.0.0", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", "strip-json-comments": "^3.1.0", - "table": "^6.0.4", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" + "text-table": "^0.2.0" }, "bin": { "eslint": "bin/eslint.js" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "url": "https://opencollective.com/eslint" } }, "node_modules/eslint-config-prettier": { - "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==", + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz", + "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==", "dev": true, "bin": { "eslint-config-prettier": "bin/cli.js" @@ -4199,103 +3826,44 @@ "eslint": ">=7.0.0" } }, - "node_modules/eslint-loader": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/eslint-loader/-/eslint-loader-4.0.2.tgz", - "integrity": "sha512-EDpXor6lsjtTzZpLUn7KmXs02+nIjGcgees9BYjNkWra3jVq5vVa8IoCKgzT2M7dNNeoMBtaSG83Bd40N3poLw==", - "deprecated": "This loader has been deprecated. Please use eslint-webpack-plugin", - "dev": true, - "dependencies": { - "find-cache-dir": "^3.3.1", - "fs-extra": "^8.1.0", - "loader-utils": "^2.0.0", - "object-hash": "^2.0.3", - "schema-utils": "^2.6.5" - }, - "engines": { - "node": ">= 10.13.0" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0", - "webpack": "^4.0.0 || ^5.0.0" - } - }, - "node_modules/eslint-loader/node_modules/json5": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", - "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", - "dev": true, - "dependencies": { - "minimist": "^1.2.5" - }, - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/eslint-loader/node_modules/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==", - "dev": true, - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - }, - "engines": { - "node": ">=8.9.0" - } - }, - "node_modules/eslint-loader/node_modules/schema-utils": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", - "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.5", - "ajv": "^6.12.4", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 8.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, "node_modules/eslint-plugin-jest": { - "version": "24.1.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-24.1.3.tgz", - "integrity": "sha512-dNGGjzuEzCE3d5EPZQ/QGtmlMotqnYWD/QpCZ1UuZlrMAdhG5rldh0N0haCvhGnUkSeuORS5VNROwF9Hrgn3Lg==", + "version": "26.8.7", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-26.8.7.tgz", + "integrity": "sha512-nJJVv3VY6ZZvJGDMC8h1jN/TIGT4We1JkNn1lvstPURicr/eZPVnlFULQ4W2qL9ByCuCr1hPmlBOc2aZ1ktw4Q==", "dev": true, "dependencies": { - "@typescript-eslint/experimental-utils": "^4.0.1" + "@typescript-eslint/utils": "^5.10.0" }, "engines": { - "node": ">=10" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "peerDependencies": { - "eslint": ">=5" + "@typescript-eslint/eslint-plugin": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "@typescript-eslint/eslint-plugin": { + "optional": true + }, + "jest": { + "optional": true + } } }, "node_modules/eslint-plugin-prettier": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.3.1.tgz", - "integrity": "sha512-Rq3jkcFY8RYeQLgk2cCwuc0P7SEFwDravPhsJZOQ5N4YI4DSg50NyqJ/9gdZHzQlHf8MvafSesbNJCcP/FF6pQ==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz", + "integrity": "sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==", "dev": true, "dependencies": { "prettier-linter-helpers": "^1.0.0" }, "engines": { - "node": ">=6.0.0" + "node": ">=12.0.0" }, "peerDependencies": { - "eslint": ">=5.0.0", - "prettier": ">=1.13.0" + "eslint": ">=7.28.0", + "prettier": ">=2.0.0" }, "peerDependenciesMeta": { "eslint-config-prettier": { @@ -4317,45 +3885,116 @@ } }, "node_modules/eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", "dev": true, "dependencies": { - "eslint-visitor-keys": "^1.1.0" + "eslint-visitor-keys": "^2.0.0" }, "engines": { - "node": ">=6" + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" }, "funding": { "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" } }, "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", "dev": true, "engines": { - "node": ">=4" + "node": ">=10" } }, "node_modules/eslint-visitor-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz", - "integrity": "sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", "dev": true, "engines": { - "node": ">=10" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/eslint/node_modules/ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "node_modules/eslint-webpack-plugin": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/eslint-webpack-plugin/-/eslint-webpack-plugin-3.2.0.tgz", + "integrity": "sha512-avrKcGncpPbPSUHX6B3stNGzkKFto3eL+DKM4+VyMrVnhPc3vRczVlCq3uhuFOdRvDHTVXuzwk1ZKUrqDQHQ9w==", "dev": true, + "dependencies": { + "@types/eslint": "^7.29.0 || ^8.4.1", + "jest-worker": "^28.0.2", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "schema-utils": "^4.0.0" + }, "engines": { - "node": ">=8" + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0", + "webpack": "^5.0.0" + } + }, + "node_modules/eslint-webpack-plugin/node_modules/ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/eslint-webpack-plugin/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/eslint-webpack-plugin/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/eslint-webpack-plugin/node_modules/schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, "node_modules/eslint/node_modules/ansi-styles": { @@ -4373,6 +4012,15 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/eslint/node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/eslint/node_modules/chalk": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", @@ -4421,22 +4069,83 @@ "node": ">= 8" } }, - "node_modules/eslint/node_modules/has-flag": { + "node_modules/eslint/node_modules/escape-string-regexp": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/eslint/node_modules/ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "node_modules/eslint/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, "engines": { - "node": ">= 4" + "node": ">=4.0" + } + }, + "node_modules/eslint/node_modules/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, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" } }, "node_modules/eslint/node_modules/levn": { @@ -4452,6 +4161,21 @@ "node": ">= 0.8.0" } }, + "node_modules/eslint/node_modules/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, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/eslint/node_modules/optionator": { "version": "0.9.1", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", @@ -4469,6 +4193,36 @@ "node": ">= 0.8.0" } }, + "node_modules/eslint/node_modules/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, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/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, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/eslint/node_modules/path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", @@ -4508,30 +4262,6 @@ "node": ">=8" } }, - "node_modules/eslint/node_modules/strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/eslint/node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/eslint/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -4572,26 +4302,20 @@ } }, "node_modules/espree": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", - "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.0.tgz", + "integrity": "sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw==", "dev": true, "dependencies": { - "acorn": "^7.4.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^1.3.0" + "acorn": "^8.8.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.3.0" }, "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/espree/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true, - "engines": { - "node": ">=4" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/esprima": { @@ -4608,9 +4332,9 @@ } }, "node_modules/esquery": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz", - "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", "dev": true, "dependencies": { "estraverse": "^5.1.0" @@ -4620,9 +4344,9 @@ } }, "node_modules/esquery/node_modules/estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, "engines": { "node": ">=4.0" @@ -4670,7 +4394,7 @@ "node_modules/etag": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", "dev": true, "engines": { "node": ">= 0.6" @@ -4691,191 +4415,65 @@ "node": ">=0.8.x" } }, - "node_modules/eventsource": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.0.7.tgz", - "integrity": "sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ==", - "dev": true, - "dependencies": { - "original": "^1.0.0" - }, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/exec-sh": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.4.tgz", - "integrity": "sha512-sEFIkc61v75sWeOe72qyrqg2Qg0OuLESziUDk/O/z2qgS15y2gWVFrI6f2Qn/qw/0/NCfCEsmNA4zOjkwEZT1A==", - "dev": true - }, - "node_modules/execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "dev": true, - "dependencies": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/exit": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", "dev": true, "engines": { "node": ">= 0.8.0" } }, - "node_modules/expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "dependencies": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/expand-brackets/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, "node_modules/expect": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/expect/-/expect-26.6.2.tgz", - "integrity": "sha512-9/hlOBkQl2l/PLHJx6JjoDF6xPKcJEsUlWKb23rKE7KzeDqUZKXKNMW27KIue5JMdBV9HgmoJPcc8HtO85t9IA==", - "dev": true, - "dependencies": { - "@jest/types": "^26.6.2", - "ansi-styles": "^4.0.0", - "jest-get-type": "^26.3.0", - "jest-matcher-utils": "^26.6.2", - "jest-message-util": "^26.6.2", - "jest-regex-util": "^26.0.0" - }, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/expect/node_modules/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, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/expect/node_modules/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==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/expect/-/expect-28.1.3.tgz", + "integrity": "sha512-eEh0xn8HlsuOBxFgIss+2mX85VAS4Qy3OSkjV7rlBWljtA4oWH37glVGyOZSZvErDT/yBywZdPGwCXuTvSG85g==", "dev": true, "dependencies": { - "color-name": "~1.1.4" + "@jest/expect-utils": "^28.1.3", + "jest-get-type": "^28.0.2", + "jest-matcher-utils": "^28.1.3", + "jest-message-util": "^28.1.3", + "jest-util": "^28.1.3" }, "engines": { - "node": ">=7.0.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/expect/node_modules/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 - }, "node_modules/express": { - "version": "4.17.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", - "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", + "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", "dev": true, "dependencies": { - "accepts": "~1.3.7", + "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.19.0", - "content-disposition": "0.5.3", + "body-parser": "1.20.2", + "content-disposition": "0.5.4", "content-type": "~1.0.4", - "cookie": "0.4.0", + "cookie": "0.6.0", "cookie-signature": "1.0.6", "debug": "2.6.9", - "depd": "~1.1.2", + "depd": "2.0.0", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "etag": "~1.8.1", - "finalhandler": "~1.1.2", + "finalhandler": "1.2.0", "fresh": "0.5.2", + "http-errors": "2.0.0", "merge-descriptors": "1.0.1", "methods": "~1.1.2", - "on-finished": "~2.3.0", + "on-finished": "2.4.1", "parseurl": "~1.3.3", "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.5", - "qs": "6.7.0", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", "range-parser": "~1.2.1", - "safe-buffer": "5.1.2", - "send": "0.17.1", - "serve-static": "1.14.1", - "setprototypeof": "1.1.1", - "statuses": "~1.5.0", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", "type-is": "~1.6.18", "utils-merge": "1.0.1", "vary": "~1.1.2" @@ -4887,7 +4485,7 @@ "node_modules/express/node_modules/array-flatten": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", "dev": true }, "node_modules/express/node_modules/debug": { @@ -4899,142 +4497,50 @@ "ms": "2.0.0" } }, - "node_modules/express/node_modules/ms": { + "node_modules/express/node_modules/depd": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "node_modules/express/node_modules/qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", "dev": true, "engines": { - "node": ">=0.6" + "node": ">= 0.8" } }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, - "node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "dev": true, - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extend-shallow/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "dependencies": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "node_modules/express/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "dev": true, - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, - "node_modules/extglob/node_modules/extend-shallow": { + "node_modules/express/node_modules/statuses": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.8" } }, - "node_modules/extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", - "dev": true, - "engines": [ - "node >=0.6.0" - ] - }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -5048,20 +4554,31 @@ "dev": true }, "node_modules/fast-glob": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.4.tgz", - "integrity": "sha512-kr/Oo6PX51265qeuCYsyGypiO5uJFgBS0jksyG7FUeCyQzNwYnzrNIMR1NXfkZXsMYXYLRAHgISHBz8gQcxKHQ==", + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", + "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", "dev": true, "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.0", + "glob-parent": "^5.1.2", "merge2": "^1.3.0", - "micromatch": "^4.0.2", - "picomatch": "^2.2.1" + "micromatch": "^4.0.4" }, "engines": { - "node": ">=8" + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" } }, "node_modules/fast-json-stable-stringify": { @@ -5083,18 +4600,18 @@ "dev": true }, "node_modules/fastq": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.10.0.tgz", - "integrity": "sha512-NL2Qc5L3iQEsyYzweq7qfgy5OtXCmGzGvhElGEd/SoFWEMOEczNh5s5ocaF01HDetxz+p8ecjNPA6cZxxIHmzA==", + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", "dev": true, "dependencies": { "reusify": "^1.0.4" } }, "node_modules/faye-websocket": { - "version": "0.11.3", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz", - "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==", + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", "dev": true, "dependencies": { "websocket-driver": ">=0.5.1" @@ -5113,9 +4630,9 @@ } }, "node_modules/file-entry-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.0.tgz", - "integrity": "sha512-fqoO76jZ3ZnYrXLDRxBR1YvOvc0k844kcOg40bgsPrE25LAb/PDqTY+ho64Xh2c8ZXgIKldchCFHczG2UVRcWA==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, "dependencies": { "flat-cache": "^3.0.4" @@ -5124,17 +4641,10 @@ "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", - "dev": true, - "optional": true - }, "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, "dependencies": { "to-regex-range": "^5.0.1" @@ -5144,17 +4654,17 @@ } }, "node_modules/finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", "dev": true, "dependencies": { "debug": "2.6.9", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", - "on-finished": "~2.3.0", + "on-finished": "2.4.1", "parseurl": "~1.3.3", - "statuses": "~1.5.0", + "statuses": "2.0.1", "unpipe": "~1.0.0" }, "engines": { @@ -5173,24 +4683,16 @@ "node_modules/finalhandler/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, - "node_modules/find-cache-dir": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz", - "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==", + "node_modules/finalhandler/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "dev": true, - "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + "node": ">= 0.8" } }, "node_modules/find-up": { @@ -5235,15 +4737,15 @@ } }, "node_modules/flatted": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.0.tgz", - "integrity": "sha512-tW+UkmtNg/jv9CSofAKvgVcO7c2URjhTdW1ZTkcAritblu8tajiYy7YisnIflEwtKssCtOxpnBRoCB7iap0/TA==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", "dev": true }, "node_modules/follow-redirects": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.1.tgz", - "integrity": "sha512-SSG5xmZh1mkPGyKzjZP8zLjltIfpW32Y5QpdNJyjcfGxK3qo3NDDkZOZSFiGn1A6SclQxY9GzEwAHQ3dmYRWpg==", + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", "dev": true, "funding": [ { @@ -5260,90 +4762,41 @@ } } }, - "node_modules/for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">= 0.6" } }, - "node_modules/forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", "dev": true, "engines": { - "node": "*" + "node": ">= 0.6" } }, - "node_modules/form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", "dev": true, "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" + "minipass": "^3.0.0" }, "engines": { - "node": ">= 0.12" + "node": ">= 8" } }, - "node_modules/forwarded": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", - "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", - "dev": true, - "dependencies": { - "map-cache": "^0.2.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" - } - }, - "node_modules/fs-minipass": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", - "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", - "dev": true, - "dependencies": { - "minipass": "^2.6.0" - } + "node_modules/fs-monkey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", + "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==", + "dev": true }, "node_modules/fs.realpath": { "version": "1.0.0", @@ -5352,9 +4805,9 @@ "dev": true }, "node_modules/fsevents": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.2.1.tgz", - "integrity": "sha512-bTLYHSeC0UH/EFXS9KqWnXuOl/wHK5Z/d+ghd5AsFMYN7wIGkUCOJyzy88+wJKkZPGON8u4Z9f6U4FdgURE9qA==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", "dev": true, "hasInstallScript": true, "optional": true, @@ -5366,10 +4819,13 @@ } }, "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/functional-red-black-tree": { "version": "1.0.1", @@ -5378,19 +4834,23 @@ "dev": true }, "node_modules/gauge": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", + "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", "dev": true, "dependencies": { - "aproba": "^1.0.3", + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.2", "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", + "has-unicode": "^2.0.1", + "object-assign": "^4.1.1", "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.2" + }, + "engines": { + "node": ">=10" } }, "node_modules/gensync": { @@ -5412,14 +4872,19 @@ } }, "node_modules/get-intrinsic": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.0.2.tgz", - "integrity": "sha512-aeX0vrFm21ILl3+JpFFRNe9aUvp6VFZb2/CTbgLb8j75kOhvoNYjt9d8KA/tJG4gSo8nzEDedRl0h7vDmBYRVg==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -5434,36 +4899,6 @@ "node": ">=8.0.0" } }, - "node_modules/get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "dev": true, - "dependencies": { - "assert-plus": "^1.0.0" - } - }, "node_modules/glob": { "version": "7.1.6", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", @@ -5485,15 +4920,15 @@ } }, "node_modules/glob-parent": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", - "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, "dependencies": { - "is-glob": "^4.0.1" + "is-glob": "^4.0.3" }, "engines": { - "node": ">= 6" + "node": ">=10.13.0" } }, "node_modules/glob-to-regexp": { @@ -5503,12 +4938,12 @@ "dev": true }, "node_modules/globals": { - "version": "12.4.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", - "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "version": "13.17.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", + "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", "dev": true, "dependencies": { - "type-fest": "^0.8.1" + "type-fest": "^0.20.2" }, "engines": { "node": ">=8" @@ -5542,18 +4977,29 @@ "node": ">=0.10.0" } }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/graceful-fs": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", - "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", "dev": true }, - "node_modules/growly": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", - "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=", - "dev": true, - "optional": true + "node_modules/grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "dev": true }, "node_modules/handle-thing": { "version": "2.0.1", @@ -5561,29 +5007,6 @@ "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", "dev": true }, - "node_modules/har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/har-validator": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", - "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", - "deprecated": "this library is no longer supported", - "dev": true, - "dependencies": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", @@ -5599,91 +5022,64 @@ "node_modules/has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true, "engines": { "node": ">=4" } }, - "node_modules/has-symbols": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", - "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "dev": true, - "engines": { - "node": ">= 0.4" + "dependencies": { + "es-define-property": "^1.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", - "dev": true - }, - "node_modules/has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", "dev": true, - "dependencies": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", - "dev": true, - "dependencies": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" + "node": ">= 0.4" }, - "engines": { - "node": ">=0.10.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/has-values/node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values/node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" + "node": ">= 0.4" }, - "engines": { - "node": ">=0.10.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/has-values/node_modules/kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "node_modules/has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", + "dev": true + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "dev": true, "dependencies": { - "is-buffer": "^1.1.5" + "function-bind": "^1.1.2" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" } }, "node_modules/he": { @@ -5695,12 +5091,6 @@ "he": "bin/he" } }, - "node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true - }, "node_modules/hpack.js": { "version": "2.1.6", "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", @@ -5713,22 +5103,10 @@ "wbuf": "^1.1.0" } }, - "node_modules/html-encoding-sniffer": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", - "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", - "dev": true, - "dependencies": { - "whatwg-encoding": "^1.0.5" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/html-entities": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.4.0.tgz", - "integrity": "sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA==", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.3.tgz", + "integrity": "sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==", "dev": true }, "node_modules/html-escaper": { @@ -5738,81 +5116,66 @@ "dev": true }, "node_modules/html-minifier-terser": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz", - "integrity": "sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", "dev": true, "dependencies": { - "camel-case": "^4.1.1", - "clean-css": "^4.2.3", - "commander": "^4.1.1", + "camel-case": "^4.1.2", + "clean-css": "^5.2.2", + "commander": "^8.3.0", "he": "^1.2.0", - "param-case": "^3.0.3", + "param-case": "^3.0.4", "relateurl": "^0.2.7", - "terser": "^4.6.3" + "terser": "^5.10.0" }, "bin": { "html-minifier-terser": "cli.js" }, "engines": { - "node": ">=6" + "node": ">=12" } }, "node_modules/html-webpack-plugin": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-4.5.1.tgz", - "integrity": "sha512-yzK7RQZwv9xB+pcdHNTjcqbaaDZ+5L0zJHXfi89iWIZmb/FtzxhLk0635rmJihcQbs3ZUF27Xp4oWGx6EK56zg==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.0.tgz", + "integrity": "sha512-sy88PC2cRTVxvETRgUHFrL4No3UxvcH8G1NepGhqaTT+GXN2kTamqasot0inS5hXeg1cMbFDt27zzo9p35lZVw==", "dev": true, "dependencies": { - "@types/html-minifier-terser": "^5.0.0", - "@types/tapable": "^1.0.5", - "@types/webpack": "^4.41.8", - "html-minifier-terser": "^5.0.1", - "loader-utils": "^1.2.3", - "lodash": "^4.17.20", - "pretty-error": "^2.1.1", - "tapable": "^1.1.3", - "util.promisify": "1.0.0" + "@types/html-minifier-terser": "^6.0.0", + "html-minifier-terser": "^6.0.2", + "lodash": "^4.17.21", + "pretty-error": "^4.0.0", + "tapable": "^2.0.0" }, "engines": { - "node": ">=6.9" + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/html-webpack-plugin" }, "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" + "webpack": "^5.20.0" } }, "node_modules/htmlparser2": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", - "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", - "dev": true, - "dependencies": { - "domelementtype": "^1.3.1", - "domhandler": "^2.3.0", - "domutils": "^1.5.1", - "entities": "^1.1.1", - "inherits": "^2.0.1", - "readable-stream": "^3.1.1" - } - }, - "node_modules/htmlparser2/node_modules/entities": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", - "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", - "dev": true - }, - "node_modules/htmlparser2/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", "dev": true, + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" } }, "node_modules/http-deceiver": { @@ -5822,31 +5185,43 @@ "dev": true }, "node_modules/http-errors": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", - "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", "dev": true, "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" }, "engines": { - "node": ">= 0.6" + "node": ">= 0.8" } }, - "node_modules/http-errors/node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true + "node_modules/http-errors/node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-errors/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } }, "node_modules/http-parser-js": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.3.tgz", - "integrity": "sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg==", + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", + "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", "dev": true }, "node_modules/http-proxy": { @@ -5864,193 +5239,70 @@ } }, "node_modules/http-proxy-middleware": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz", - "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", + "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", "dev": true, "dependencies": { - "http-proxy": "^1.17.0", - "is-glob": "^4.0.0", - "lodash": "^4.17.11", - "micromatch": "^3.1.10" + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" }, "engines": { - "node": ">=4.0.0" + "node": ">=12.0.0" + }, + "peerDependencies": { + "@types/express": "^4.17.13" + }, + "peerDependenciesMeta": { + "@types/express": { + "optional": true + } } }, - "node_modules/http-proxy-middleware/node_modules/braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", "dev": true, "dependencies": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" + "agent-base": "6", + "debug": "4" }, "engines": { - "node": ">=0.10.0" + "node": ">= 6" } }, - "node_modules/http-proxy-middleware/node_modules/braces/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, "engines": { - "node": ">=0.10.0" + "node": ">=10.17.0" } }, - "node_modules/http-proxy-middleware/node_modules/fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dev": true, "dependencies": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" + "safer-buffer": ">= 2.1.2 < 3" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/http-proxy-middleware/node_modules/fill-range/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "node_modules/ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/http-proxy-middleware/node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/http-proxy-middleware/node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/http-proxy-middleware/node_modules/micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/http-proxy-middleware/node_modules/to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "dev": true, - "dependencies": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "dev": true, - "dependencies": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - }, - "engines": { - "node": ">=0.8", - "npm": ">=1.3.7" - } - }, - "node_modules/human-signals": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", - "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", - "dev": true, - "engines": { - "node": ">=8.12.0" - } - }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/ignore-walk": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz", - "integrity": "sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==", - "dev": true, - "dependencies": { - "minimatch": "^3.0.4" + "node": ">= 4" } }, "node_modules/import-fresh": { @@ -6144,25 +5396,6 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, - "node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true - }, - "node_modules/internal-ip": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz", - "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==", - "dev": true, - "dependencies": { - "default-gateway": "^4.2.0", - "ipaddr.js": "^1.9.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/interpret": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", @@ -6172,85 +5405,13 @@ "node": ">= 0.10" } }, - "node_modules/invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "dev": true, - "dependencies": { - "loose-envify": "^1.0.0" - } - }, - "node_modules/ip": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", - "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", - "dev": true - }, - "node_modules/ip-regex": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", - "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/is-absolute-url": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", - "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-arguments": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.0.tgz", - "integrity": "sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", + "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==", "dev": true, - "dependencies": { - "call-bind": "^1.0.0" - }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 10" } }, "node_modules/is-arrayish": { @@ -6260,51 +5421,21 @@ "dev": true }, "node_modules/is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dev": true, "dependencies": { - "binary-extensions": "^1.0.0" + "binary-extensions": "^2.0.0" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "node_modules/is-callable": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.2.tgz", - "integrity": "sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", - "dev": true, - "dependencies": { - "ci-info": "^2.0.0" - }, - "bin": { - "is-ci": "bin.js" + "node": ">=8" } }, "node_modules/is-core-module": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", - "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz", + "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==", "dev": true, "dependencies": { "has": "^1.0.3" @@ -6313,71 +5444,11 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-date-object": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", - "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-descriptor/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-docker": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.1.1.tgz", - "integrity": "sha512-ZOoqiXfEwtGknTiuDEy8pN2CfE3TxMHprvNer1mXiqwkOT77Rw3YVrUQ52EqAOU3QAWDQ+bQdx7HJzrv7LS2Hw==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", "dev": true, - "optional": true, "bin": { "is-docker": "cli.js" }, @@ -6388,15 +5459,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -6407,15 +5469,12 @@ } }, "node_modules/is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, - "dependencies": { - "number-is-nan": "^1.0.0" - }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, "node_modules/is-generator-fn": { @@ -6428,9 +5487,9 @@ } }, "node_modules/is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, "dependencies": { "is-extglob": "^2.1.1" @@ -6439,18 +5498,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-negative-zero": { - "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, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -6493,6 +5540,18 @@ "node": ">=6" } }, + "node_modules/is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-plain-object": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", @@ -6505,124 +5564,58 @@ "node": ">=0.10.0" } }, - "node_modules/is-potential-custom-element-name": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.0.tgz", - "integrity": "sha1-DFLlS8yjkbssSUsh6GJtczbG45c=", - "dev": true - }, - "node_modules/is-regex": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", - "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", "dev": true, "dependencies": { - "has-symbols": "^1.0.1" + "is-docker": "^2.0.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=8" } }, - "node_modules/is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true, "engines": { "node": ">=0.10.0" } }, - "node_modules/is-symbol": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", - "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true - }, - "node_modules/is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dev": true, - "optional": true, - "dependencies": { - "is-docker": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", - "dev": true - }, "node_modules/istanbul-lib-coverage": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz", - "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", + "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", "dev": true, "engines": { "node": ">=8" } }, "node_modules/istanbul-lib-instrument": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", - "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.0.tgz", + "integrity": "sha512-6Lthe1hqXHBNsqvgDzGO6l03XNeu3CrG4RqQ1KM9+l5+jNGpEJfIELx1NS3SEHmJQA8np/u+E4EPRKRiu6m19A==", "dev": true, "dependencies": { - "@babel/core": "^7.7.5", + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-coverage": "^3.2.0", "semver": "^6.3.0" }, "engines": { @@ -6630,9 +5623,9 @@ } }, "node_modules/istanbul-lib-instrument/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, "bin": { "semver": "bin/semver.js" @@ -6674,9 +5667,9 @@ } }, "node_modules/istanbul-lib-source-maps": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz", - "integrity": "sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", "dev": true, "dependencies": { "debug": "^4.1.1", @@ -6684,13 +5677,13 @@ "source-map": "^0.6.1" }, "engines": { - "node": ">=8" + "node": ">=10" } }, "node_modules/istanbul-reports": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.2.tgz", - "integrity": "sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", + "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", "dev": true, "dependencies": { "html-escaper": "^2.0.0", @@ -6701,34 +5694,42 @@ } }, "node_modules/jest": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/jest/-/jest-26.6.3.tgz", - "integrity": "sha512-lGS5PXGAzR4RF7V5+XObhqz2KZIDUA1yD0DG6pBVmy10eh0ZIXQImRuzocsI/N2XZ1GrLFwTS27In2i2jlpq1Q==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest/-/jest-28.1.3.tgz", + "integrity": "sha512-N4GT5on8UkZgH0O5LUavMRV1EDEhNTL0KEfRmDIeZHSV7p2XgLoY9t9VDUgL6o+yfdgYHVxuz81G8oB9VG5uyA==", "dev": true, "dependencies": { - "@jest/core": "^26.6.3", + "@jest/core": "^28.1.3", + "@jest/types": "^28.1.3", "import-local": "^3.0.2", - "jest-cli": "^26.6.3" + "jest-cli": "^28.1.3" }, "bin": { "jest": "bin/jest.js" }, "engines": { - "node": ">= 10.14.2" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, "node_modules/jest-changed-files": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-26.6.2.tgz", - "integrity": "sha512-fDS7szLcY9sCtIip8Fjry9oGf3I2ht/QT21bAHm5Dmf0mD4X3ReNUf17y+bO6fR8WgbIZTlbyG1ak/53cbRzKQ==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-28.1.3.tgz", + "integrity": "sha512-esaOfUWJXk2nfZt9SPyC8gA1kNfdKLkQWyzsMlqq8msYSlNKfmZxfRgZn4Cd4MGVUF+7v6dBs0d5TOAKa7iIiA==", "dev": true, "dependencies": { - "@jest/types": "^26.6.2", - "execa": "^4.0.0", - "throat": "^5.0.0" + "execa": "^5.0.0", + "p-limit": "^3.1.0" }, "engines": { - "node": ">= 10.14.2" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, "node_modules/jest-changed-files/node_modules/cross-spawn": { @@ -6746,19 +5747,19 @@ } }, "node_modules/jest-changed-files/node_modules/execa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", - "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dev": true, "dependencies": { - "cross-spawn": "^7.0.0", - "get-stream": "^5.0.0", - "human-signals": "^1.1.1", + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", "is-stream": "^2.0.0", "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.0", - "onetime": "^5.1.0", - "signal-exit": "^3.0.2", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", "strip-final-newline": "^2.0.0" }, "engines": { @@ -6769,27 +5770,27 @@ } }, "node_modules/jest-changed-files/node_modules/get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true, - "dependencies": { - "pump": "^3.0.0" - }, "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/jest-changed-files/node_modules/is-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", - "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "dev": true, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/jest-changed-files/node_modules/npm-run-path": { @@ -6804,6 +5805,21 @@ "node": ">=8" } }, + "node_modules/jest-changed-files/node_modules/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, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/jest-changed-files/node_modules/path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", @@ -6849,44 +5865,37 @@ "node": ">= 8" } }, - "node_modules/jest-config": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-26.6.3.tgz", - "integrity": "sha512-t5qdIj/bCj2j7NFVHb2nFB4aUdfucDn3JRKgrZnplb8nieAirAzRSHP8uDEd+qV6ygzg9Pz4YG7UTJf94LPSyg==", + "node_modules/jest-circus": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-28.1.3.tgz", + "integrity": "sha512-cZ+eS5zc79MBwt+IhQhiEp0OeBddpc1n8MBo1nMB8A7oPMKEO+Sre+wHaLJexQUj9Ya/8NOBY0RESUgYjB6fow==", "dev": true, "dependencies": { - "@babel/core": "^7.1.0", - "@jest/test-sequencer": "^26.6.3", - "@jest/types": "^26.6.2", - "babel-jest": "^26.6.3", + "@jest/environment": "^28.1.3", + "@jest/expect": "^28.1.3", + "@jest/test-result": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/node": "*", "chalk": "^4.0.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.1", - "graceful-fs": "^4.2.4", - "jest-environment-jsdom": "^26.6.2", - "jest-environment-node": "^26.6.2", - "jest-get-type": "^26.3.0", - "jest-jasmine2": "^26.6.3", - "jest-regex-util": "^26.0.0", - "jest-resolve": "^26.6.2", - "jest-util": "^26.6.2", - "jest-validate": "^26.6.2", - "micromatch": "^4.0.2", - "pretty-format": "^26.6.2" + "co": "^4.6.0", + "dedent": "^0.7.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^28.1.3", + "jest-matcher-utils": "^28.1.3", + "jest-message-util": "^28.1.3", + "jest-runtime": "^28.1.3", + "jest-snapshot": "^28.1.3", + "jest-util": "^28.1.3", + "p-limit": "^3.1.0", + "pretty-format": "^28.1.3", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" }, "engines": { - "node": ">= 10.14.2" - }, - "peerDependencies": { - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "ts-node": { - "optional": true - } + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/jest-config/node_modules/ansi-styles": { + "node_modules/jest-circus/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", @@ -6901,10 +5910,10 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-config/node_modules/chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "node_modules/jest-circus/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { "ansi-styles": "^4.1.0", @@ -6917,7 +5926,7 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-config/node_modules/color-convert": { + "node_modules/jest-circus/node_modules/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==", @@ -6929,13 +5938,13 @@ "node": ">=7.0.0" } }, - "node_modules/jest-config/node_modules/color-name": { + "node_modules/jest-circus/node_modules/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 }, - "node_modules/jest-config/node_modules/has-flag": { + "node_modules/jest-circus/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", @@ -6944,7 +5953,22 @@ "node": ">=8" } }, - "node_modules/jest-config/node_modules/supports-color": { + "node_modules/jest-circus/node_modules/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, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-circus/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", @@ -6956,22 +5980,41 @@ "node": ">=8" } }, - "node_modules/jest-diff": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-26.6.2.tgz", - "integrity": "sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==", + "node_modules/jest-cli": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-28.1.3.tgz", + "integrity": "sha512-roY3kvrv57Azn1yPgdTebPAXvdR2xfezaKKYzVxZ6It/5NCxzJym6tUI5P1zkdWhfUYkxEI9uZWcQdaFLo8mJQ==", "dev": true, "dependencies": { + "@jest/core": "^28.1.3", + "@jest/test-result": "^28.1.3", + "@jest/types": "^28.1.3", "chalk": "^4.0.0", - "diff-sequences": "^26.6.2", - "jest-get-type": "^26.3.0", - "pretty-format": "^26.6.2" + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "import-local": "^3.0.2", + "jest-config": "^28.1.3", + "jest-util": "^28.1.3", + "jest-validate": "^28.1.3", + "prompts": "^2.0.1", + "yargs": "^17.3.1" + }, + "bin": { + "jest": "bin/jest.js" }, "engines": { - "node": ">= 10.14.2" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "node_modules/jest-diff/node_modules/ansi-styles": { + "node_modules/jest-cli/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", @@ -6986,10 +6029,10 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-diff/node_modules/chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "node_modules/jest-cli/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { "ansi-styles": "^4.1.0", @@ -7002,7 +6045,7 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-diff/node_modules/color-convert": { + "node_modules/jest-cli/node_modules/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==", @@ -7014,13 +6057,13 @@ "node": ">=7.0.0" } }, - "node_modules/jest-diff/node_modules/color-name": { + "node_modules/jest-cli/node_modules/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 }, - "node_modules/jest-diff/node_modules/has-flag": { + "node_modules/jest-cli/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", @@ -7029,7 +6072,7 @@ "node": ">=8" } }, - "node_modules/jest-diff/node_modules/supports-color": { + "node_modules/jest-cli/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", @@ -7041,35 +6084,52 @@ "node": ">=8" } }, - "node_modules/jest-docblock": { - "version": "26.0.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-26.0.0.tgz", - "integrity": "sha512-RDZ4Iz3QbtRWycd8bUEPxQsTlYazfYn/h5R65Fc6gOfwozFhoImx+affzky/FFBuqISPTqjXomoIGJVKBWoo0w==", - "dev": true, - "dependencies": { - "detect-newline": "^3.0.0" - }, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/jest-each": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-26.6.2.tgz", - "integrity": "sha512-Mer/f0KaATbjl8MCJ+0GEpNdqmnVmDYqCTJYTvoo7rqmRiDllmp2AYN+06F93nXcY3ur9ShIjS+CO/uD+BbH4A==", + "node_modules/jest-config": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-28.1.3.tgz", + "integrity": "sha512-MG3INjByJ0J4AsNBm7T3hsuxKQqFIiRo/AUqb1q9LRKI5UU6Aar9JHbr9Ivn1TVwfUD9KirRoM/T6u8XlcQPHQ==", "dev": true, "dependencies": { - "@jest/types": "^26.6.2", + "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^28.1.3", + "@jest/types": "^28.1.3", + "babel-jest": "^28.1.3", "chalk": "^4.0.0", - "jest-get-type": "^26.3.0", - "jest-util": "^26.6.2", - "pretty-format": "^26.6.2" + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-circus": "^28.1.3", + "jest-environment-node": "^28.1.3", + "jest-get-type": "^28.0.2", + "jest-regex-util": "^28.0.2", + "jest-resolve": "^28.1.3", + "jest-runner": "^28.1.3", + "jest-util": "^28.1.3", + "jest-validate": "^28.1.3", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^28.1.3", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" }, "engines": { - "node": ">= 10.14.2" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + }, + "peerDependencies": { + "@types/node": "*", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "ts-node": { + "optional": true + } } }, - "node_modules/jest-each/node_modules/ansi-styles": { + "node_modules/jest-config/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", @@ -7084,10 +6144,10 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-each/node_modules/chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "node_modules/jest-config/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { "ansi-styles": "^4.1.0", @@ -7100,7 +6160,13 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-each/node_modules/color-convert": { + "node_modules/jest-config/node_modules/ci-info": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.2.tgz", + "integrity": "sha512-xmDt/QIAdeZ9+nfdPsaBCpMvHNLFiLdjj59qjqn+6iPe6YmHGQ35sBnQ8uslRBXFmXkiZQOJRjvQeoGppoTjjg==", + "dev": true + }, + "node_modules/jest-config/node_modules/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==", @@ -7112,13 +6178,13 @@ "node": ">=7.0.0" } }, - "node_modules/jest-each/node_modules/color-name": { + "node_modules/jest-config/node_modules/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 }, - "node_modules/jest-each/node_modules/has-flag": { + "node_modules/jest-config/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", @@ -7127,7 +6193,7 @@ "node": ">=8" } }, - "node_modules/jest-each/node_modules/supports-color": { + "node_modules/jest-config/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", @@ -7139,882 +6205,501 @@ "node": ">=8" } }, - "node_modules/jest-environment-jsdom": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-26.6.2.tgz", - "integrity": "sha512-jgPqCruTlt3Kwqg5/WVFyHIOJHsiAvhcp2qiR2QQstuG9yWox5+iHpU3ZrcBxW14T4fe5Z68jAfLRh7joCSP2Q==", + "node_modules/jest-diff": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-28.1.3.tgz", + "integrity": "sha512-8RqP1B/OXzjjTWkqMX67iqgwBVJRgCyKD3L9nq+6ZqJMdvjE8RgHktqZ6jNrkdMT+dJuYNI3rhQpxaz7drJHfw==", "dev": true, "dependencies": { - "@jest/environment": "^26.6.2", - "@jest/fake-timers": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/node": "*", - "jest-mock": "^26.6.2", - "jest-util": "^26.6.2", - "jsdom": "^16.4.0" + "chalk": "^4.0.0", + "diff-sequences": "^28.1.1", + "jest-get-type": "^28.0.2", + "pretty-format": "^28.1.3" }, "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/jest-environment-jsdom-fifteen": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom-fifteen/-/jest-environment-jsdom-fifteen-1.0.2.tgz", - "integrity": "sha512-nfrnAfwklE1872LIB31HcjM65cWTh1wzvMSp10IYtPJjLDUbTTvDpajZgIxUnhRmzGvogdHDayCIlerLK0OBBg==", - "dev": true, - "dependencies": { - "@jest/environment": "^24.3.0", - "@jest/fake-timers": "^24.3.0", - "@jest/types": "^24.3.0", - "jest-mock": "^24.0.0", - "jest-util": "^24.0.0", - "jsdom": "^15.2.1" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/jest-environment-jsdom-fifteen/node_modules/@jest/console": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-24.9.0.tgz", - "integrity": "sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ==", + "node_modules/jest-diff/node_modules/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, "dependencies": { - "@jest/source-map": "^24.9.0", - "chalk": "^2.0.1", - "slash": "^2.0.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">= 6" - } - }, - "node_modules/jest-environment-jsdom-fifteen/node_modules/@jest/environment": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-24.9.0.tgz", - "integrity": "sha512-5A1QluTPhvdIPFYnO3sZC3smkNeXPVELz7ikPbhUj0bQjB07EoE9qtLrem14ZUYWdVayYbsjVwIiL4WBIMV4aQ==", - "dev": true, - "dependencies": { - "@jest/fake-timers": "^24.9.0", - "@jest/transform": "^24.9.0", - "@jest/types": "^24.9.0", - "jest-mock": "^24.9.0" + "node": ">=8" }, - "engines": { - "node": ">= 6" + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-environment-jsdom-fifteen/node_modules/@jest/fake-timers": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-24.9.0.tgz", - "integrity": "sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A==", + "node_modules/jest-diff/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "@jest/types": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-mock": "^24.9.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">= 6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-environment-jsdom-fifteen/node_modules/@jest/source-map": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-24.9.0.tgz", - "integrity": "sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg==", + "node_modules/jest-diff/node_modules/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, "dependencies": { - "callsites": "^3.0.0", - "graceful-fs": "^4.1.15", - "source-map": "^0.6.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">= 6" + "node": ">=7.0.0" } }, - "node_modules/jest-environment-jsdom-fifteen/node_modules/@jest/test-result": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-24.9.0.tgz", - "integrity": "sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA==", - "dev": true, - "dependencies": { - "@jest/console": "^24.9.0", - "@jest/types": "^24.9.0", - "@types/istanbul-lib-coverage": "^2.0.0" - }, + "node_modules/jest-diff/node_modules/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 + }, + "node_modules/jest-diff/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, "engines": { - "node": ">= 6" + "node": ">=8" } }, - "node_modules/jest-environment-jsdom-fifteen/node_modules/@jest/transform": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-24.9.0.tgz", - "integrity": "sha512-TcQUmyNRxV94S0QpMOnZl0++6RMiqpbH/ZMccFB/amku6Uwvyb1cjYX7xkp5nGNkbX4QPH/FcB6q1HBTHynLmQ==", + "node_modules/jest-diff/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { - "@babel/core": "^7.1.0", - "@jest/types": "^24.9.0", - "babel-plugin-istanbul": "^5.1.0", - "chalk": "^2.0.1", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.1.15", - "jest-haste-map": "^24.9.0", - "jest-regex-util": "^24.9.0", - "jest-util": "^24.9.0", - "micromatch": "^3.1.10", - "pirates": "^4.0.1", - "realpath-native": "^1.1.0", - "slash": "^2.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "2.4.1" + "has-flag": "^4.0.0" }, "engines": { - "node": ">= 6" + "node": ">=8" } }, - "node_modules/jest-environment-jsdom-fifteen/node_modules/@jest/types": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz", - "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==", + "node_modules/jest-docblock": { + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-28.1.1.tgz", + "integrity": "sha512-3wayBVNiOYx0cwAbl9rwm5kKFP8yHH3d/fkEaL02NPTkDojPtheGB7HZSFY4wzX+DxyrvhXz0KSCVksmCknCuA==", "dev": true, "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^13.0.0" + "detect-newline": "^3.0.0" }, "engines": { - "node": ">= 6" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/jest-environment-jsdom-fifteen/node_modules/@types/istanbul-reports": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz", - "integrity": "sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==", + "node_modules/jest-each": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-28.1.3.tgz", + "integrity": "sha512-arT1z4sg2yABU5uogObVPvSlSMQlDA48owx07BDPAiasW0yYpYHYOo4HHLz9q0BVzDVU4hILFjzJw0So9aCL/g==", "dev": true, "dependencies": { - "@types/istanbul-lib-coverage": "*", - "@types/istanbul-lib-report": "*" + "@jest/types": "^28.1.3", + "chalk": "^4.0.0", + "jest-get-type": "^28.0.2", + "jest-util": "^28.1.3", + "pretty-format": "^28.1.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/jest-environment-jsdom-fifteen/node_modules/@types/stack-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-1.0.1.tgz", - "integrity": "sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw==", - "dev": true - }, - "node_modules/jest-environment-jsdom-fifteen/node_modules/@types/yargs": { - "version": "13.0.11", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.11.tgz", - "integrity": "sha512-NRqD6T4gktUrDi1o1wLH3EKC1o2caCr7/wR87ODcbVITQF106OM3sFN92ysZ++wqelOd1CTzatnOBRDYYG6wGQ==", + "node_modules/jest-each/node_modules/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, "dependencies": { - "@types/yargs-parser": "*" + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-environment-jsdom-fifteen/node_modules/acorn-globals": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.4.tgz", - "integrity": "sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==", + "node_modules/jest-each/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "acorn": "^6.0.1", - "acorn-walk": "^6.0.1" - } - }, - "node_modules/jest-environment-jsdom-fifteen/node_modules/acorn-globals/node_modules/acorn": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", - "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", - "dev": true, - "bin": { - "acorn": "bin/acorn" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=0.4.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-environment-jsdom-fifteen/node_modules/acorn-walk": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz", - "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==", + "node_modules/jest-each/node_modules/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, + "dependencies": { + "color-name": "~1.1.4" + }, "engines": { - "node": ">=0.4.0" + "node": ">=7.0.0" } }, - "node_modules/jest-environment-jsdom-fifteen/node_modules/anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dev": true, - "dependencies": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - } + "node_modules/jest-each/node_modules/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 }, - "node_modules/jest-environment-jsdom-fifteen/node_modules/babel-plugin-istanbul": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz", - "integrity": "sha512-5LphC0USA8t4i1zCtjbbNb6jJj/9+X6P37Qfirc/70EQ34xKlMW+a1RHGwxGI+SwWpNwZ27HqvzAobeqaXwiZw==", + "node_modules/jest-each/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "find-up": "^3.0.0", - "istanbul-lib-instrument": "^3.3.0", - "test-exclude": "^5.2.3" - }, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/jest-environment-jsdom-fifteen/node_modules/braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "node_modules/jest-each/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/jest-environment-jsdom-fifteen/node_modules/braces/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "node_modules/jest-environment-node": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-28.1.3.tgz", + "integrity": "sha512-ugP6XOhEpjAEhGYvp5Xj989ns5cB1K6ZdjBYuS30umT4CQEETaxSiPcZ/E1kFktX4GkrcM4qu07IIlDYX1gp+A==", "dev": true, "dependencies": { - "is-extendable": "^0.1.0" + "@jest/environment": "^28.1.3", + "@jest/fake-timers": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/node": "*", + "jest-mock": "^28.1.3", + "jest-util": "^28.1.3" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/jest-environment-jsdom-fifteen/node_modules/data-urls": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", - "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", - "dev": true, - "dependencies": { - "abab": "^2.0.0", - "whatwg-mimetype": "^2.2.0", - "whatwg-url": "^7.0.0" - } - }, - "node_modules/jest-environment-jsdom-fifteen/node_modules/domexception": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", - "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", - "dev": true, - "dependencies": { - "webidl-conversions": "^4.0.2" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/jest-environment-jsdom-fifteen/node_modules/escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "node_modules/jest-get-type": { + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-28.0.2.tgz", + "integrity": "sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA==", "dev": true, "engines": { - "node": ">=8" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/jest-environment-jsdom-fifteen/node_modules/fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "node_modules/jest-haste-map": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-28.1.3.tgz", + "integrity": "sha512-3S+RQWDXccXDKSWnkHa/dPwt+2qwA8CJzR61w3FoYCvoo3Pn8tvGcysmMF0Bj0EX5RYvAI2EIvC57OmotfdtKA==", "dev": true, "dependencies": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" + "@jest/types": "^28.1.3", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^28.0.2", + "jest-util": "^28.1.3", + "jest-worker": "^28.1.3", + "micromatch": "^4.0.4", + "walker": "^1.0.8" }, "engines": { - "node": ">=0.10.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" } }, - "node_modules/jest-environment-jsdom-fifteen/node_modules/fill-range/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "node_modules/jest-leak-detector": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-28.1.3.tgz", + "integrity": "sha512-WFVJhnQsiKtDEo5lG2mM0v40QWnBM+zMdHHyJs8AWZ7J0QZJS59MsyKeJHWhpBZBH32S48FOVvGyOFT1h0DlqA==", "dev": true, "dependencies": { - "is-extendable": "^0.1.0" + "jest-get-type": "^28.0.2", + "pretty-format": "^28.1.3" }, "engines": { - "node": ">=0.10.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/jest-environment-jsdom-fifteen/node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "node_modules/jest-matcher-utils": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-28.1.3.tgz", + "integrity": "sha512-kQeJ7qHemKfbzKoGjHHrRKH6atgxMk8Enkk2iPQ3XwO6oE/KYD8lMYOziCkeSB9G4adPM4nR1DE8Tf5JeWH6Bw==", "dev": true, "dependencies": { - "locate-path": "^3.0.0" + "chalk": "^4.0.0", + "jest-diff": "^28.1.3", + "jest-get-type": "^28.0.2", + "pretty-format": "^28.1.3" }, "engines": { - "node": ">=6" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/jest-environment-jsdom-fifteen/node_modules/fsevents": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", - "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", - "deprecated": "fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.", + "node_modules/jest-matcher-utils/node_modules/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, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], "dependencies": { - "bindings": "^1.5.0", - "nan": "^2.12.1" + "color-convert": "^2.0.1" }, "engines": { - "node": ">= 4.0" - } - }, - "node_modules/jest-environment-jsdom-fifteen/node_modules/html-encoding-sniffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", - "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", - "dev": true, - "dependencies": { - "whatwg-encoding": "^1.0.1" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-environment-jsdom-fifteen/node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "node_modules/jest-matcher-utils/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "kind-of": "^3.0.2" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-environment-jsdom-fifteen/node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "node_modules/jest-matcher-utils/node_modules/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, "dependencies": { - "is-buffer": "^1.1.5" + "color-name": "~1.1.4" }, "engines": { - "node": ">=0.10.0" + "node": ">=7.0.0" } }, - "node_modules/jest-environment-jsdom-fifteen/node_modules/istanbul-lib-coverage": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", - "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", + "node_modules/jest-matcher-utils/node_modules/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 + }, + "node_modules/jest-matcher-utils/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/jest-environment-jsdom-fifteen/node_modules/istanbul-lib-instrument": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz", - "integrity": "sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==", + "node_modules/jest-matcher-utils/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { - "@babel/generator": "^7.4.0", - "@babel/parser": "^7.4.3", - "@babel/template": "^7.4.0", - "@babel/traverse": "^7.4.3", - "@babel/types": "^7.4.0", - "istanbul-lib-coverage": "^2.0.5", - "semver": "^6.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/jest-environment-jsdom-fifteen/node_modules/jest-haste-map": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-24.9.0.tgz", - "integrity": "sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ==", + "node_modules/jest-message-util": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-28.1.3.tgz", + "integrity": "sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==", "dev": true, "dependencies": { - "@jest/types": "^24.9.0", - "anymatch": "^2.0.0", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.1.15", - "invariant": "^2.2.4", - "jest-serializer": "^24.9.0", - "jest-util": "^24.9.0", - "jest-worker": "^24.9.0", - "micromatch": "^3.1.10", - "sane": "^4.0.3", - "walker": "^1.0.7" + "@babel/code-frame": "^7.12.13", + "@jest/types": "^28.1.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^28.1.3", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" }, "engines": { - "node": ">= 6" - }, - "optionalDependencies": { - "fsevents": "^1.2.7" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/jest-environment-jsdom-fifteen/node_modules/jest-message-util": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-24.9.0.tgz", - "integrity": "sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw==", + "node_modules/jest-message-util/node_modules/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, "dependencies": { - "@babel/code-frame": "^7.0.0", - "@jest/test-result": "^24.9.0", - "@jest/types": "^24.9.0", - "@types/stack-utils": "^1.0.1", - "chalk": "^2.0.1", - "micromatch": "^3.1.10", - "slash": "^2.0.0", - "stack-utils": "^1.0.1" + "color-convert": "^2.0.1" }, "engines": { - "node": ">= 6" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-environment-jsdom-fifteen/node_modules/jest-mock": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-24.9.0.tgz", - "integrity": "sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w==", + "node_modules/jest-message-util/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "@jest/types": "^24.9.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">= 6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-environment-jsdom-fifteen/node_modules/jest-regex-util": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-24.9.0.tgz", - "integrity": "sha512-05Cmb6CuxaA+Ys6fjr3PhvV3bGQmO+2p2La4hFbU+W5uOc479f7FdLXUWXw4pYMAhhSZIuKHwSXSu6CsSBAXQA==", + "node_modules/jest-message-util/node_modules/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, + "dependencies": { + "color-name": "~1.1.4" + }, "engines": { - "node": ">= 6" + "node": ">=7.0.0" } }, - "node_modules/jest-environment-jsdom-fifteen/node_modules/jest-serializer": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-24.9.0.tgz", - "integrity": "sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ==", + "node_modules/jest-message-util/node_modules/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 + }, + "node_modules/jest-message-util/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "engines": { - "node": ">= 6" + "node": ">=8" } }, - "node_modules/jest-environment-jsdom-fifteen/node_modules/jest-util": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-24.9.0.tgz", - "integrity": "sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg==", + "node_modules/jest-message-util/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { - "@jest/console": "^24.9.0", - "@jest/fake-timers": "^24.9.0", - "@jest/source-map": "^24.9.0", - "@jest/test-result": "^24.9.0", - "@jest/types": "^24.9.0", - "callsites": "^3.0.0", - "chalk": "^2.0.1", - "graceful-fs": "^4.1.15", - "is-ci": "^2.0.0", - "mkdirp": "^0.5.1", - "slash": "^2.0.0", - "source-map": "^0.6.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">= 6" + "node": ">=8" } }, - "node_modules/jest-environment-jsdom-fifteen/node_modules/jest-worker": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz", - "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==", + "node_modules/jest-mock": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-28.1.3.tgz", + "integrity": "sha512-o3J2jr6dMMWYVH4Lh/NKmDXdosrsJgi4AviS8oXLujcjpCMBb1FMsblDnOXKZKfSiHLxYub1eS0IHuRXsio9eA==", "dev": true, "dependencies": { - "merge-stream": "^2.0.0", - "supports-color": "^6.1.0" + "@jest/types": "^28.1.3", + "@types/node": "*" }, "engines": { - "node": ">= 6" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/jest-environment-jsdom-fifteen/node_modules/jsdom": { - "version": "15.2.1", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-15.2.1.tgz", - "integrity": "sha512-fAl1W0/7T2G5vURSyxBzrJ1LSdQn6Tr5UX/xD4PXDx/PDgwygedfW6El/KIj3xJ7FU61TTYnc/l/B7P49Eqt6g==", - "dev": true, - "dependencies": { - "abab": "^2.0.0", - "acorn": "^7.1.0", - "acorn-globals": "^4.3.2", - "array-equal": "^1.0.0", - "cssom": "^0.4.1", - "cssstyle": "^2.0.0", - "data-urls": "^1.1.0", - "domexception": "^1.0.1", - "escodegen": "^1.11.1", - "html-encoding-sniffer": "^1.0.2", - "nwsapi": "^2.2.0", - "parse5": "5.1.0", - "pn": "^1.1.0", - "request": "^2.88.0", - "request-promise-native": "^1.0.7", - "saxes": "^3.1.9", - "symbol-tree": "^3.2.2", - "tough-cookie": "^3.0.1", - "w3c-hr-time": "^1.0.1", - "w3c-xmlserializer": "^1.1.2", - "webidl-conversions": "^4.0.2", - "whatwg-encoding": "^1.0.5", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^7.0.0", - "ws": "^7.0.0", - "xml-name-validator": "^3.0.0" - }, - "engines": { - "node": ">=8" + "node_modules/jest-pnp-resolver": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", + "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", + "dev": true, + "engines": { + "node": ">=6" }, "peerDependencies": { - "canvas": "^2.5.0" + "jest-resolve": "*" }, "peerDependenciesMeta": { - "canvas": { + "jest-resolve": { "optional": true } } }, - "node_modules/jest-environment-jsdom-fifteen/node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jest-environment-jsdom-fifteen/node_modules/micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/jest-environment-jsdom-fifteen/node_modules/normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "dependencies": { - "remove-trailing-separator": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/jest-environment-jsdom-fifteen/node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jest-environment-jsdom-fifteen/node_modules/parse5": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", - "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==", - "dev": true - }, - "node_modules/jest-environment-jsdom-fifteen/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/jest-environment-jsdom-fifteen/node_modules/read-pkg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", - "dev": true, - "dependencies": { - "load-json-file": "^4.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/jest-environment-jsdom-fifteen/node_modules/read-pkg-up": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-4.0.0.tgz", - "integrity": "sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA==", - "dev": true, - "dependencies": { - "find-up": "^3.0.0", - "read-pkg": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jest-environment-jsdom-fifteen/node_modules/saxes": { - "version": "3.1.11", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-3.1.11.tgz", - "integrity": "sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g==", - "dev": true, - "dependencies": { - "xmlchars": "^2.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-environment-jsdom-fifteen/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/jest-environment-jsdom-fifteen/node_modules/slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/jest-environment-jsdom-fifteen/node_modules/stack-utils": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.4.tgz", - "integrity": "sha512-IPDJfugEGbfizBwBZRZ3xpccMdRyP5lqsBWXGQWimVjua/ccLCeMOAVjlc1R7LxFjo5sEDhyNIXd8mo/AiDS9w==", - "dev": true, - "dependencies": { - "escape-string-regexp": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-environment-jsdom-fifteen/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jest-environment-jsdom-fifteen/node_modules/test-exclude": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-5.2.3.tgz", - "integrity": "sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g==", - "dev": true, - "dependencies": { - "glob": "^7.1.3", - "minimatch": "^3.0.4", - "read-pkg-up": "^4.0.0", - "require-main-filename": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jest-environment-jsdom-fifteen/node_modules/to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "dev": true, - "dependencies": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/jest-environment-jsdom-fifteen/node_modules/tr46": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/jest-environment-jsdom-fifteen/node_modules/w3c-xmlserializer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz", - "integrity": "sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg==", - "dev": true, - "dependencies": { - "domexception": "^1.0.1", - "webidl-conversions": "^4.0.2", - "xml-name-validator": "^3.0.0" - } - }, - "node_modules/jest-environment-jsdom-fifteen/node_modules/webidl-conversions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", - "dev": true - }, - "node_modules/jest-environment-jsdom-fifteen/node_modules/whatwg-url": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", - "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", - "dev": true, - "dependencies": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - }, - "node_modules/jest-environment-jsdom-fifteen/node_modules/write-file-atomic": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.1.tgz", - "integrity": "sha512-TGHFeZEZMnv+gBFRfjAcxL5bPHrsGKtnb4qsFAws7/vlh+QfwAaySIw4AXP9ZskTTh5GWu3FLuJhsWVdiJPGvg==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.11", - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.2" - } - }, - "node_modules/jest-environment-node": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-26.6.2.tgz", - "integrity": "sha512-zhtMio3Exty18dy8ee8eJ9kjnRyZC1N4C1Nt/VShN1apyXc8rWGtJ9lI7vqiWcyyXS4BVSEn9lxAM2D+07/Tag==", - "dev": true, - "dependencies": { - "@jest/environment": "^26.6.2", - "@jest/fake-timers": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/node": "*", - "jest-mock": "^26.6.2", - "jest-util": "^26.6.2" - }, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/jest-get-type": { - "version": "26.3.0", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", - "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==", + "node_modules/jest-regex-util": { + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-28.0.2.tgz", + "integrity": "sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw==", "dev": true, "engines": { - "node": ">= 10.14.2" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/jest-haste-map": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-26.6.2.tgz", - "integrity": "sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w==", + "node_modules/jest-resolve": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-28.1.3.tgz", + "integrity": "sha512-Z1W3tTjE6QaNI90qo/BJpfnvpxtaFTFw5CDgwpyE/Kz8U/06N1Hjf4ia9quUhCh39qIGWF1ZuxFiBiJQwSEYKQ==", "dev": true, "dependencies": { - "@jest/types": "^26.6.2", - "@types/graceful-fs": "^4.1.2", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.4", - "jest-regex-util": "^26.0.0", - "jest-serializer": "^26.6.2", - "jest-util": "^26.6.2", - "jest-worker": "^26.6.2", - "micromatch": "^4.0.2", - "sane": "^4.0.3", - "walker": "^1.0.7" + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^28.1.3", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^28.1.3", + "jest-validate": "^28.1.3", + "resolve": "^1.20.0", + "resolve.exports": "^1.1.0", + "slash": "^3.0.0" }, "engines": { - "node": ">= 10.14.2" - }, - "optionalDependencies": { - "fsevents": "^2.1.2" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/jest-jasmine2": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-26.6.3.tgz", - "integrity": "sha512-kPKUrQtc8aYwBV7CqBg5pu+tmYXlvFlSFYn18ev4gPFtrRzB15N2gW/Roew3187q2w2eHuu0MU9TJz6w0/nPEg==", + "node_modules/jest-resolve-dependencies": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-28.1.3.tgz", + "integrity": "sha512-qa0QO2Q0XzQoNPouMbCc7Bvtsem8eQgVPNkwn9LnS+R2n8DaVDPL/U1gngC0LTl1RYXJU0uJa2BMC2DbTfFrHA==", "dev": true, "dependencies": { - "@babel/traverse": "^7.1.0", - "@jest/environment": "^26.6.2", - "@jest/source-map": "^26.6.2", - "@jest/test-result": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "expect": "^26.6.2", - "is-generator-fn": "^2.0.0", - "jest-each": "^26.6.2", - "jest-matcher-utils": "^26.6.2", - "jest-message-util": "^26.6.2", - "jest-runtime": "^26.6.3", - "jest-snapshot": "^26.6.2", - "jest-util": "^26.6.2", - "pretty-format": "^26.6.2", - "throat": "^5.0.0" + "jest-regex-util": "^28.0.2", + "jest-snapshot": "^28.1.3" }, "engines": { - "node": ">= 10.14.2" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/jest-jasmine2/node_modules/ansi-styles": { + "node_modules/jest-resolve/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", @@ -8029,10 +6714,10 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-jasmine2/node_modules/chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "node_modules/jest-resolve/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { "ansi-styles": "^4.1.0", @@ -8045,7 +6730,7 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-jasmine2/node_modules/color-convert": { + "node_modules/jest-resolve/node_modules/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==", @@ -8057,13 +6742,13 @@ "node": ">=7.0.0" } }, - "node_modules/jest-jasmine2/node_modules/color-name": { + "node_modules/jest-resolve/node_modules/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 }, - "node_modules/jest-jasmine2/node_modules/has-flag": { + "node_modules/jest-resolve/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", @@ -8072,7 +6757,7 @@ "node": ">=8" } }, - "node_modules/jest-jasmine2/node_modules/supports-color": { + "node_modules/jest-resolve/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", @@ -8084,35 +6769,39 @@ "node": ">=8" } }, - "node_modules/jest-leak-detector": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-26.6.2.tgz", - "integrity": "sha512-i4xlXpsVSMeKvg2cEKdfhh0H39qlJlP5Ex1yQxwF9ubahboQYMgTtz5oML35AVA3B4Eu+YsmwaiKVev9KCvLxg==", - "dev": true, - "dependencies": { - "jest-get-type": "^26.3.0", - "pretty-format": "^26.6.2" - }, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/jest-matcher-utils": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-26.6.2.tgz", - "integrity": "sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw==", + "node_modules/jest-runner": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-28.1.3.tgz", + "integrity": "sha512-GkMw4D/0USd62OVO0oEgjn23TM+YJa2U2Wu5zz9xsQB1MxWKDOlrnykPxnMsN0tnJllfLPinHTka61u0QhaxBA==", "dev": true, "dependencies": { + "@jest/console": "^28.1.3", + "@jest/environment": "^28.1.3", + "@jest/test-result": "^28.1.3", + "@jest/transform": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/node": "*", "chalk": "^4.0.0", - "jest-diff": "^26.6.2", - "jest-get-type": "^26.3.0", - "pretty-format": "^26.6.2" + "emittery": "^0.10.2", + "graceful-fs": "^4.2.9", + "jest-docblock": "^28.1.1", + "jest-environment-node": "^28.1.3", + "jest-haste-map": "^28.1.3", + "jest-leak-detector": "^28.1.3", + "jest-message-util": "^28.1.3", + "jest-resolve": "^28.1.3", + "jest-runtime": "^28.1.3", + "jest-util": "^28.1.3", + "jest-watcher": "^28.1.3", + "jest-worker": "^28.1.3", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" }, "engines": { - "node": ">= 10.14.2" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/jest-matcher-utils/node_modules/ansi-styles": { + "node_modules/jest-runner/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", @@ -8127,10 +6816,10 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-matcher-utils/node_modules/chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "node_modules/jest-runner/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { "ansi-styles": "^4.1.0", @@ -8143,7 +6832,7 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-matcher-utils/node_modules/color-convert": { + "node_modules/jest-runner/node_modules/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==", @@ -8155,13 +6844,13 @@ "node": ">=7.0.0" } }, - "node_modules/jest-matcher-utils/node_modules/color-name": { + "node_modules/jest-runner/node_modules/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 }, - "node_modules/jest-matcher-utils/node_modules/has-flag": { + "node_modules/jest-runner/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", @@ -8170,7 +6859,22 @@ "node": ">=8" } }, - "node_modules/jest-matcher-utils/node_modules/supports-color": { + "node_modules/jest-runner/node_modules/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, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-runner/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", @@ -8182,27 +6886,40 @@ "node": ">=8" } }, - "node_modules/jest-message-util": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-26.6.2.tgz", - "integrity": "sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.0.0", - "@jest/types": "^26.6.2", - "@types/stack-utils": "^2.0.0", + "node_modules/jest-runtime": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-28.1.3.tgz", + "integrity": "sha512-NU+881ScBQQLc1JHG5eJGU7Ui3kLKrmwCPPtYsJtBykixrM2OhVQlpMmFWJjMyDfdkGgBMNjXCGB/ebzsgNGQw==", + "dev": true, + "dependencies": { + "@jest/environment": "^28.1.3", + "@jest/fake-timers": "^28.1.3", + "@jest/globals": "^28.1.3", + "@jest/source-map": "^28.1.2", + "@jest/test-result": "^28.1.3", + "@jest/transform": "^28.1.3", + "@jest/types": "^28.1.3", "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "micromatch": "^4.0.2", - "pretty-format": "^26.6.2", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "execa": "^5.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^28.1.3", + "jest-message-util": "^28.1.3", + "jest-mock": "^28.1.3", + "jest-regex-util": "^28.0.2", + "jest-resolve": "^28.1.3", + "jest-snapshot": "^28.1.3", + "jest-util": "^28.1.3", "slash": "^3.0.0", - "stack-utils": "^2.0.2" + "strip-bom": "^4.0.0" }, "engines": { - "node": ">= 10.14.2" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/jest-message-util/node_modules/ansi-styles": { + "node_modules/jest-runtime/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", @@ -8217,10 +6934,10 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-message-util/node_modules/chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "node_modules/jest-runtime/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { "ansi-styles": "^4.1.0", @@ -8233,7 +6950,7 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-message-util/node_modules/color-convert": { + "node_modules/jest-runtime/node_modules/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==", @@ -8245,164 +6962,125 @@ "node": ">=7.0.0" } }, - "node_modules/jest-message-util/node_modules/color-name": { + "node_modules/jest-runtime/node_modules/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 }, - "node_modules/jest-message-util/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/jest-runtime/node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, "engines": { - "node": ">=8" + "node": ">= 8" } }, - "node_modules/jest-message-util/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/jest-runtime/node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dev": true, "dependencies": { - "has-flag": "^4.0.0" + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" }, "engines": { - "node": ">=8" - } - }, - "node_modules/jest-mock": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-26.6.2.tgz", - "integrity": "sha512-YyFjePHHp1LzpzYcmgqkJ0nm0gg/lJx2aZFzFy1S6eUqNjXsOqTK10zNRff2dNfssgokjkG65OlWNcIlgd3zew==", - "dev": true, - "dependencies": { - "@jest/types": "^26.6.2", - "@types/node": "*" + "node": ">=10" }, - "engines": { - "node": ">= 10.14.2" + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/jest-pnp-resolver": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", - "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", + "node_modules/jest-runtime/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true, "engines": { - "node": ">=6" - }, - "peerDependencies": { - "jest-resolve": "*" + "node": ">=10" }, - "peerDependenciesMeta": { - "jest-resolve": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-regex-util": { - "version": "26.0.0", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-26.0.0.tgz", - "integrity": "sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==", + "node_modules/jest-runtime/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "engines": { - "node": ">= 10.14.2" + "node": ">=8" } }, - "node_modules/jest-resolve": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-26.6.2.tgz", - "integrity": "sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ==", + "node_modules/jest-runtime/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "dev": true, - "dependencies": { - "@jest/types": "^26.6.2", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^26.6.2", - "read-pkg-up": "^7.0.1", - "resolve": "^1.18.1", - "slash": "^3.0.0" - }, "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/jest-resolve-dependencies": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-26.6.3.tgz", - "integrity": "sha512-pVwUjJkxbhe4RY8QEWzN3vns2kqyuldKpxlxJlzEYfKSvY6/bMvxoFrYYzUO1Gx28yKWN37qyV7rIoIp2h8fTg==", - "dev": true, - "dependencies": { - "@jest/types": "^26.6.2", - "jest-regex-util": "^26.0.0", - "jest-snapshot": "^26.6.2" + "node": ">=8" }, - "engines": { - "node": ">= 10.14.2" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-resolve/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/jest-runtime/node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "dev": true, "dependencies": { - "color-convert": "^2.0.1" + "path-key": "^3.0.0" }, "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-resolve/node_modules/chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "node_modules/jest-runtime/node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=8" } }, - "node_modules/jest-resolve/node_modules/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==", + "node_modules/jest-runtime/node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, "dependencies": { - "color-name": "~1.1.4" + "shebang-regex": "^3.0.0" }, "engines": { - "node": ">=7.0.0" + "node": ">=8" } }, - "node_modules/jest-resolve/node_modules/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 - }, - "node_modules/jest-resolve/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/jest-runtime/node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, "engines": { "node": ">=8" } }, - "node_modules/jest-resolve/node_modules/supports-color": { + "node_modules/jest-runtime/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", @@ -8414,38 +7092,56 @@ "node": ">=8" } }, - "node_modules/jest-runner": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-26.6.3.tgz", - "integrity": "sha512-atgKpRHnaA2OvByG/HpGA4g6CSPS/1LK0jK3gATJAoptC1ojltpmVlYC3TYgdmGp+GLuhzpH30Gvs36szSL2JQ==", + "node_modules/jest-runtime/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, "dependencies": { - "@jest/console": "^26.6.2", - "@jest/environment": "^26.6.2", - "@jest/test-result": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/node": "*", + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/jest-snapshot": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-28.1.3.tgz", + "integrity": "sha512-4lzMgtiNlc3DU/8lZfmqxN3AYD6GGLbl+72rdBpXvcV+whX7mDrREzkPdp2RnmfIiWBg1YbuFSkXduF2JcafJg==", + "dev": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/traverse": "^7.7.2", + "@babel/types": "^7.3.3", + "@jest/expect-utils": "^28.1.3", + "@jest/transform": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/babel__traverse": "^7.0.6", + "@types/prettier": "^2.1.5", + "babel-preset-current-node-syntax": "^1.0.0", "chalk": "^4.0.0", - "emittery": "^0.7.1", - "exit": "^0.1.2", - "graceful-fs": "^4.2.4", - "jest-config": "^26.6.3", - "jest-docblock": "^26.0.0", - "jest-haste-map": "^26.6.2", - "jest-leak-detector": "^26.6.2", - "jest-message-util": "^26.6.2", - "jest-resolve": "^26.6.2", - "jest-runtime": "^26.6.3", - "jest-util": "^26.6.2", - "jest-worker": "^26.6.2", - "source-map-support": "^0.5.6", - "throat": "^5.0.0" + "expect": "^28.1.3", + "graceful-fs": "^4.2.9", + "jest-diff": "^28.1.3", + "jest-get-type": "^28.0.2", + "jest-haste-map": "^28.1.3", + "jest-matcher-utils": "^28.1.3", + "jest-message-util": "^28.1.3", + "jest-util": "^28.1.3", + "natural-compare": "^1.4.0", + "pretty-format": "^28.1.3", + "semver": "^7.3.5" }, "engines": { - "node": ">= 10.14.2" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/jest-runner/node_modules/ansi-styles": { + "node_modules/jest-snapshot/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", @@ -8460,10 +7156,10 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-runner/node_modules/chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "node_modules/jest-snapshot/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { "ansi-styles": "^4.1.0", @@ -8476,7 +7172,7 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-runner/node_modules/color-convert": { + "node_modules/jest-snapshot/node_modules/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==", @@ -8488,13 +7184,13 @@ "node": ">=7.0.0" } }, - "node_modules/jest-runner/node_modules/color-name": { + "node_modules/jest-snapshot/node_modules/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 }, - "node_modules/jest-runner/node_modules/has-flag": { + "node_modules/jest-snapshot/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", @@ -8503,7 +7199,7 @@ "node": ">=8" } }, - "node_modules/jest-runner/node_modules/supports-color": { + "node_modules/jest-snapshot/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", @@ -8515,48 +7211,24 @@ "node": ">=8" } }, - "node_modules/jest-runtime": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-26.6.3.tgz", - "integrity": "sha512-lrzyR3N8sacTAMeonbqpnSka1dHNux2uk0qqDXVkMv2c/A3wYnvQ4EXuI013Y6+gSKSCxdaczvf4HF0mVXHRdw==", - "dev": true, - "dependencies": { - "@jest/console": "^26.6.2", - "@jest/environment": "^26.6.2", - "@jest/fake-timers": "^26.6.2", - "@jest/globals": "^26.6.2", - "@jest/source-map": "^26.6.2", - "@jest/test-result": "^26.6.2", - "@jest/transform": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/yargs": "^15.0.0", + "node_modules/jest-util": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-28.1.3.tgz", + "integrity": "sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==", + "dev": true, + "dependencies": { + "@jest/types": "^28.1.3", + "@types/node": "*", "chalk": "^4.0.0", - "cjs-module-lexer": "^0.6.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.4", - "jest-config": "^26.6.3", - "jest-haste-map": "^26.6.2", - "jest-message-util": "^26.6.2", - "jest-mock": "^26.6.2", - "jest-regex-util": "^26.0.0", - "jest-resolve": "^26.6.2", - "jest-snapshot": "^26.6.2", - "jest-util": "^26.6.2", - "jest-validate": "^26.6.2", - "slash": "^3.0.0", - "strip-bom": "^4.0.0", - "yargs": "^15.4.1" - }, - "bin": { - "jest-runtime": "bin/jest-runtime.js" + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" }, "engines": { - "node": ">= 10.14.2" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/jest-runtime/node_modules/ansi-styles": { + "node_modules/jest-util/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", @@ -8571,10 +7243,10 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-runtime/node_modules/chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "node_modules/jest-util/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { "ansi-styles": "^4.1.0", @@ -8587,7 +7259,13 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-runtime/node_modules/color-convert": { + "node_modules/jest-util/node_modules/ci-info": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.2.tgz", + "integrity": "sha512-xmDt/QIAdeZ9+nfdPsaBCpMvHNLFiLdjj59qjqn+6iPe6YmHGQ35sBnQ8uslRBXFmXkiZQOJRjvQeoGppoTjjg==", + "dev": true + }, + "node_modules/jest-util/node_modules/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==", @@ -8599,13 +7277,13 @@ "node": ">=7.0.0" } }, - "node_modules/jest-runtime/node_modules/color-name": { + "node_modules/jest-util/node_modules/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 }, - "node_modules/jest-runtime/node_modules/has-flag": { + "node_modules/jest-util/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", @@ -8614,7 +7292,7 @@ "node": ">=8" } }, - "node_modules/jest-runtime/node_modules/supports-color": { + "node_modules/jest-util/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", @@ -8626,47 +7304,24 @@ "node": ">=8" } }, - "node_modules/jest-serializer": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-26.6.2.tgz", - "integrity": "sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==", - "dev": true, - "dependencies": { - "@types/node": "*", - "graceful-fs": "^4.2.4" - }, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/jest-snapshot": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-26.6.2.tgz", - "integrity": "sha512-OLhxz05EzUtsAmOMzuupt1lHYXCNib0ECyuZ/PZOx9TrZcC8vL0x+DUG3TL+GLX3yHG45e6YGjIm0XwDc3q3og==", + "node_modules/jest-validate": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-28.1.3.tgz", + "integrity": "sha512-SZbOGBWEsaTxBGCOpsRWlXlvNkvTkY0XxRfh7zYmvd8uL5Qzyg0CHAXiXKROflh801quA6+/DsT4ODDthOC/OA==", "dev": true, "dependencies": { - "@babel/types": "^7.0.0", - "@jest/types": "^26.6.2", - "@types/babel__traverse": "^7.0.4", - "@types/prettier": "^2.0.0", + "@jest/types": "^28.1.3", + "camelcase": "^6.2.0", "chalk": "^4.0.0", - "expect": "^26.6.2", - "graceful-fs": "^4.2.4", - "jest-diff": "^26.6.2", - "jest-get-type": "^26.3.0", - "jest-haste-map": "^26.6.2", - "jest-matcher-utils": "^26.6.2", - "jest-message-util": "^26.6.2", - "jest-resolve": "^26.6.2", - "natural-compare": "^1.4.0", - "pretty-format": "^26.6.2", - "semver": "^7.3.2" + "jest-get-type": "^28.0.2", + "leven": "^3.1.0", + "pretty-format": "^28.1.3" }, "engines": { - "node": ">= 10.14.2" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/jest-snapshot/node_modules/ansi-styles": { + "node_modules/jest-validate/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", @@ -8681,10 +7336,22 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-snapshot/node_modules/chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "node_modules/jest-validate/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-validate/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { "ansi-styles": "^4.1.0", @@ -8697,7 +7364,7 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-snapshot/node_modules/color-convert": { + "node_modules/jest-validate/node_modules/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==", @@ -8709,13 +7376,13 @@ "node": ">=7.0.0" } }, - "node_modules/jest-snapshot/node_modules/color-name": { + "node_modules/jest-validate/node_modules/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 }, - "node_modules/jest-snapshot/node_modules/has-flag": { + "node_modules/jest-validate/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", @@ -8724,7 +7391,7 @@ "node": ">=8" } }, - "node_modules/jest-snapshot/node_modules/supports-color": { + "node_modules/jest-validate/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", @@ -8736,24 +7403,26 @@ "node": ">=8" } }, - "node_modules/jest-util": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz", - "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==", + "node_modules/jest-watcher": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-28.1.3.tgz", + "integrity": "sha512-t4qcqj9hze+jviFPUN3YAtAEeFnr/azITXQEMARf5cMwKY2SMBRnCQTXLixTl20OR6mLh9KLMrgVJgJISym+1g==", "dev": true, "dependencies": { - "@jest/types": "^26.6.2", + "@jest/test-result": "^28.1.3", + "@jest/types": "^28.1.3", "@types/node": "*", + "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "is-ci": "^2.0.0", - "micromatch": "^4.0.2" + "emittery": "^0.10.2", + "jest-util": "^28.1.3", + "string-length": "^4.0.1" }, "engines": { - "node": ">= 10.14.2" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/jest-util/node_modules/ansi-styles": { + "node_modules/jest-watcher/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", @@ -8768,10 +7437,10 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-util/node_modules/chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "node_modules/jest-watcher/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { "ansi-styles": "^4.1.0", @@ -8784,7 +7453,7 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-util/node_modules/color-convert": { + "node_modules/jest-watcher/node_modules/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==", @@ -8796,13 +7465,13 @@ "node": ">=7.0.0" } }, - "node_modules/jest-util/node_modules/color-name": { + "node_modules/jest-watcher/node_modules/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 }, - "node_modules/jest-util/node_modules/has-flag": { + "node_modules/jest-watcher/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", @@ -8811,7 +7480,7 @@ "node": ">=8" } }, - "node_modules/jest-util/node_modules/supports-color": { + "node_modules/jest-watcher/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", @@ -8823,5667 +7492,2792 @@ "node": ">=8" } }, - "node_modules/jest-validate": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-26.6.2.tgz", - "integrity": "sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ==", + "node_modules/jest-worker": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-28.1.3.tgz", + "integrity": "sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g==", "dev": true, "dependencies": { - "@jest/types": "^26.6.2", - "camelcase": "^6.0.0", - "chalk": "^4.0.0", - "jest-get-type": "^26.3.0", - "leven": "^3.1.0", - "pretty-format": "^26.6.2" + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" }, "engines": { - "node": ">= 10.14.2" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/jest-validate/node_modules/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, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-validate/node_modules/camelcase": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", - "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-validate/node_modules/chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-validate/node_modules/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, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-validate/node_modules/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 - }, - "node_modules/jest-validate/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-validate/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-watcher": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-26.6.2.tgz", - "integrity": "sha512-WKJob0P/Em2csiVthsI68p6aGKTIcsfjH9Gsx1f0A3Italz43e3ho0geSAVsmj09RWOELP1AZ/DXyJgOgDKxXQ==", - "dev": true, - "dependencies": { - "@jest/test-result": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "jest-util": "^26.6.2", - "string-length": "^4.0.1" - }, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/jest-watcher/node_modules/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, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-watcher/node_modules/chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-watcher/node_modules/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, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-watcher/node_modules/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 - }, - "node_modules/jest-watcher/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-watcher/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-worker": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", - "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", - "dev": true, - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^7.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/jest-worker/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest/node_modules/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, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest/node_modules/chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest/node_modules/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, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest/node_modules/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 - }, - "node_modules/jest/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest/node_modules/jest-cli": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-26.6.3.tgz", - "integrity": "sha512-GF9noBSa9t08pSyl3CY4frMrqp+aQXFGFkf5hEPbh/pIUFYWMK6ZLTfbmadxJVcJrdRoChlWQsA2VkJcDFK8hg==", - "dev": true, - "dependencies": { - "@jest/core": "^26.6.3", - "@jest/test-result": "^26.6.2", - "@jest/types": "^26.6.2", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.4", - "import-local": "^3.0.2", - "is-ci": "^2.0.0", - "jest-config": "^26.6.3", - "jest-util": "^26.6.2", - "jest-validate": "^26.6.2", - "prompts": "^2.0.1", - "yargs": "^15.4.1" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/jest/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "node_modules/js-yaml": { - "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, - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "dev": true - }, - "node_modules/jsdom": { - "version": "16.4.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.4.0.tgz", - "integrity": "sha512-lYMm3wYdgPhrl7pDcRmvzPhhrGVBeVhPIqeHjzeiHN3DFmD1RBpbExbi8vU7BJdH8VAZYovR8DMt0PNNDM7k8w==", - "dev": true, - "dependencies": { - "abab": "^2.0.3", - "acorn": "^7.1.1", - "acorn-globals": "^6.0.0", - "cssom": "^0.4.4", - "cssstyle": "^2.2.0", - "data-urls": "^2.0.0", - "decimal.js": "^10.2.0", - "domexception": "^2.0.1", - "escodegen": "^1.14.1", - "html-encoding-sniffer": "^2.0.1", - "is-potential-custom-element-name": "^1.0.0", - "nwsapi": "^2.2.0", - "parse5": "5.1.1", - "request": "^2.88.2", - "request-promise-native": "^1.0.8", - "saxes": "^5.0.0", - "symbol-tree": "^3.2.4", - "tough-cookie": "^3.0.1", - "w3c-hr-time": "^1.0.2", - "w3c-xmlserializer": "^2.0.0", - "webidl-conversions": "^6.1.0", - "whatwg-encoding": "^1.0.5", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.0.0", - "ws": "^7.2.3", - "xml-name-validator": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "canvas": "^2.5.0" - }, - "peerDependenciesMeta": { - "canvas": { - "optional": true - } - } - }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, - "node_modules/json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", - "dev": true - }, - "node_modules/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==", - "dev": true - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", - "dev": true - }, - "node_modules/json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", - "dev": true - }, - "node_modules/json3": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz", - "integrity": "sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==", - "dev": true - }, - "node_modules/json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "dev": true, - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "dev": true, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", - "dev": true, - "engines": [ - "node >=0.6.0" - ], - "dependencies": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" - } - }, - "node_modules/killable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", - "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==", - "dev": true - }, - "node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "dev": true, - "dependencies": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/lines-and-columns": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", - "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", - "dev": true - }, - "node_modules/load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/load-json-file/node_modules/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", - "dev": true, - "dependencies": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/load-json-file/node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/load-json-file/node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/loader-runner": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", - "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==", - "dev": true, - "engines": { - "node": ">=6.11.5" - } - }, - "node_modules/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, - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "node_modules/lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", - "dev": true - }, - "node_modules/lodash.sortby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", - "dev": true - }, - "node_modules/loglevel": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.7.1.tgz", - "integrity": "sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw==", - "dev": true, - "engines": { - "node": ">= 0.6.0" - }, - "funding": { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/loglevel" - } - }, - "node_modules/loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dev": true, - "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" - }, - "bin": { - "loose-envify": "cli.js" - } - }, - "node_modules/lower-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", - "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", - "dev": true, - "dependencies": { - "tslib": "^2.0.3" - } - }, - "node_modules/lower-case/node_modules/tslib": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", - "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", - "dev": true - }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/make-dir/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true - }, - "node_modules/makeerror": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", - "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", - "dev": true, - "dependencies": { - "tmpl": "1.0.x" - } - }, - "node_modules/map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", - "dev": true, - "dependencies": { - "object-visit": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/memory-fs": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", - "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", - "dev": true, - "dependencies": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - }, - "engines": { - "node": ">=4.3.0 <5.0.0 || >=5.10" - } - }, - "node_modules/merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", - "dev": true - }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/micromatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", - "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", - "dev": true, - "dependencies": { - "braces": "^3.0.1", - "picomatch": "^2.0.5" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true, - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/mime-db": { - "version": "1.44.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", - "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.27", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", - "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", - "dev": true, - "dependencies": { - "mime-db": "1.44.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/mimic-response": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz", - "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true - }, - "node_modules/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - }, - "node_modules/minipass": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", - "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", - "dev": true, - "dependencies": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - } - }, - "node_modules/minipass/node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - }, - "node_modules/minizlib": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", - "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", - "dev": true, - "dependencies": { - "minipass": "^2.9.0" - } - }, - "node_modules/mixin-deep": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", - "dev": true, - "dependencies": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/mixin-deep/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/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, - "dependencies": { - "minimist": "^1.2.5" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/multicast-dns": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", - "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", - "dev": true, - "dependencies": { - "dns-packet": "^1.3.1", - "thunky": "^1.0.2" - }, - "bin": { - "multicast-dns": "cli.js" - } - }, - "node_modules/multicast-dns-service-types": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", - "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", - "dev": true - }, - "node_modules/nan": { - "version": "2.14.2", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.2.tgz", - "integrity": "sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ==", - "dev": true - }, - "node_modules/nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "dev": true, - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", - "dev": true - }, - "node_modules/needle": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/needle/-/needle-2.6.0.tgz", - "integrity": "sha512-KKYdza4heMsEfSWD7VPUIz3zX2XDwOyX2d+geb4vrERZMT5RMU6ujjaD+I5Yr54uZxQ2w6XRTAhHBbSCyovZBg==", - "dev": true, - "dependencies": { - "debug": "^3.2.6", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - }, - "bin": { - "needle": "bin/needle" - }, - "engines": { - "node": ">= 4.4.x" - } - }, - "node_modules/needle/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/negotiator": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", - "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true - }, - "node_modules/nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "dev": true - }, - "node_modules/no-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", - "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", - "dev": true, - "dependencies": { - "lower-case": "^2.0.2", - "tslib": "^2.0.3" - } - }, - "node_modules/no-case/node_modules/tslib": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", - "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", - "dev": true - }, - "node_modules/node-forge": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", - "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==", - "dev": true, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", - "dev": true - }, - "node_modules/node-modules-regexp": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz", - "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/node-notifier": { - "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, - "dependencies": { - "growly": "^1.3.0", - "is-wsl": "^2.2.0", - "semver": "^7.3.2", - "shellwords": "^0.1.1", - "uuid": "^8.3.0", - "which": "^2.0.2" - } - }, - "node_modules/node-notifier/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "optional": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/node-pre-gyp": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.11.0.tgz", - "integrity": "sha512-TwWAOZb0j7e9eGaf9esRx3ZcLaE5tQ2lvYy1pb5IAaG1a2e2Kv5Lms1Y4hpj+ciXJRofIxxlt5haeQ/2ANeE0Q==", - "deprecated": "Please upgrade to @mapbox/node-pre-gyp: the non-scoped node-pre-gyp package is deprecated and only the @mapbox scoped package will recieve updates in the future", - "dev": true, - "dependencies": { - "detect-libc": "^1.0.2", - "mkdirp": "^0.5.1", - "needle": "^2.2.1", - "nopt": "^4.0.1", - "npm-packlist": "^1.1.6", - "npmlog": "^4.0.2", - "rc": "^1.2.7", - "rimraf": "^2.6.1", - "semver": "^5.3.0", - "tar": "^4" - }, - "bin": { - "node-pre-gyp": "bin/node-pre-gyp" - } - }, - "node_modules/node-pre-gyp/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/nopt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz", - "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==", - "dev": true, - "dependencies": { - "abbrev": "1", - "osenv": "^0.1.4" - }, - "bin": { - "nopt": "bin/nopt.js" - } - }, - "node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, - "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "node_modules/normalize-package-data/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/npm-bundled": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.1.tgz", - "integrity": "sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA==", - "dev": true, - "dependencies": { - "npm-normalize-package-bin": "^1.0.1" - } - }, - "node_modules/npm-normalize-package-bin": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", - "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", - "dev": true - }, - "node_modules/npm-packlist": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.8.tgz", - "integrity": "sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A==", - "dev": true, - "dependencies": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1", - "npm-normalize-package-bin": "^1.0.1" - } - }, - "node_modules/npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", - "dev": true, - "dependencies": { - "path-key": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/npmlog": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", - "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", - "dev": true, - "dependencies": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, - "node_modules/nth-check": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", - "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", - "dev": true, - "dependencies": { - "boolbase": "~1.0.0" - } - }, - "node_modules/number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/nwsapi": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", - "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", - "dev": true - }, - "node_modules/oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", - "dev": true, - "dependencies": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-hash": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-2.1.1.tgz", - "integrity": "sha512-VOJmgmS+7wvXf8CjbQmimtCnEx3IAoLxI3fp2fbWehxrWBcAQFbk+vcwb6vzR0VZv/eNCJ/27j151ZTwqW/JeQ==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/object-inspect": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", - "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-is": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.4.tgz", - "integrity": "sha512-1ZvAZ4wlF7IyPVOcE1Omikt7UpaFlOQq0HlSti+ZvDH3UiD2brwGMwDbyV43jao2bKJ+4+WdPJHSd7kgzKYVqg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", - "dev": true, - "dependencies": { - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.getownpropertydescriptors": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.1.tgz", - "integrity": "sha512-6DtXgZ/lIZ9hqx4GtZETobXLR/ZLaa0aqV0kzbn80Rf8Z2e/XFnhA0I7p07N2wH8bBBltr2xQPi6sbKWAY2Eng==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.1" - }, - "engines": { - "node": ">= 0.8" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", - "dev": true, - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/obuf": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", - "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", - "dev": true - }, - "node_modules/on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "dev": true, - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/on-headers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/opn": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", - "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", - "dev": true, - "dependencies": { - "is-wsl": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/opn/node_modules/is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "dev": true, - "dependencies": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/original": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz", - "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==", - "dev": true, - "dependencies": { - "url-parse": "^1.4.3" - } - }, - "node_modules/os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/osenv": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", - "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", - "dev": true, - "dependencies": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, - "node_modules/p-each-series": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-2.2.0.tgz", - "integrity": "sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-map": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", - "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/p-retry": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-3.0.1.tgz", - "integrity": "sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==", - "dev": true, - "dependencies": { - "retry": "^0.12.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/param-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", - "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", - "dev": true, - "dependencies": { - "dot-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/param-case/node_modules/tslib": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", - "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", - "dev": true - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/parse-json": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.1.0.tgz", - "integrity": "sha512-+mi/lmVVNKFNVyLXV31ERiy2CY5E1/F6QtJFEzoChPRwwngMNXRDQ9GJ5WdE2Z2P4AujsOi0/+2qHID68KwfIQ==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/parse5": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", - "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==", - "dev": true - }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/pascal-case": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", - "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", - "dev": true, - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/pascal-case/node_modules/tslib": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", - "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", - "dev": true - }, - "node_modules/pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", - "dev": true - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", - "dev": true - }, - "node_modules/path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", - "dev": true - }, - "node_modules/path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", - "dev": true - }, - "node_modules/path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "dev": true, - "dependencies": { - "pify": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/path-type/node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", - "dev": true - }, - "node_modules/picomatch": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", - "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "dev": true, - "dependencies": { - "pinkie": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pirates": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz", - "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==", - "dev": true, - "dependencies": { - "node-modules-regexp": "^1.0.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/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==", - "dev": true, - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", - "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==", - "dev": true - }, - "node_modules/portfinder": { - "version": "1.0.28", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", - "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", - "dev": true, - "dependencies": { - "async": "^2.6.2", - "debug": "^3.1.1", - "mkdirp": "^0.5.5" - }, - "engines": { - "node": ">= 0.12.0" - } - }, - "node_modules/portfinder/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/prettier": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.2.1.tgz", - "integrity": "sha512-PqyhM2yCjg/oKkFPtTGUojv7gnZAoG80ttl45O6x2Ug/rMJw4wcc9k6aaf2hibP7BGVCCM33gZoGjyvt9mm16Q==", - "dev": true, - "bin": { - "prettier": "bin-prettier.js" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/prettier-linter-helpers": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", - "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", - "dev": true, - "dependencies": { - "fast-diff": "^1.1.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/pretty-error": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.2.tgz", - "integrity": "sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw==", - "dev": true, - "dependencies": { - "lodash": "^4.17.20", - "renderkid": "^2.0.4" - } - }, - "node_modules/pretty-format": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", - "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", - "dev": true, - "dependencies": { - "@jest/types": "^26.6.2", - "ansi-regex": "^5.0.0", - "ansi-styles": "^4.0.0", - "react-is": "^17.0.1" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/pretty-format/node_modules/ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/pretty-format/node_modules/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, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/pretty-format/node_modules/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, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/pretty-format/node_modules/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 - }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "node_modules/progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/prompts": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.0.tgz", - "integrity": "sha512-awZAKrk3vN6CroQukBL+R9051a4R3zCZBlJm/HBfrSZ8iTpYix3VX1vU4mveiLpiwmOJT4wokTF9m6HUk4KqWQ==", - "dev": true, - "dependencies": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/proxy-addr": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", - "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", - "dev": true, - "dependencies": { - "forwarded": "~0.1.2", - "ipaddr.js": "1.9.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", - "dev": true - }, - "node_modules/psl": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", - "dev": true - }, - "node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/qrcode-generator": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/qrcode-generator/-/qrcode-generator-1.4.4.tgz", - "integrity": "sha512-HM7yY8O2ilqhmULxGMpcHSF1EhJJ9yBj8gvDEuZ6M+KGJ0YY2hKpnXvRD+hZPLrDVck3ExIGhmPtSdcjC+guuw==" - }, - "node_modules/qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", - "dev": true, - "engines": { - "node": ">=0.6" - } - }, - "node_modules/querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", - "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", - "dev": true, - "engines": { - "node": ">=0.4.x" - } - }, - "node_modules/querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", - "dev": true - }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, - "node_modules/range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/raw-body": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", - "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", - "dev": true, - "dependencies": { - "bytes": "3.1.0", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/raw-body/node_modules/bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "dev": true, - "dependencies": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "bin": { - "rc": "cli.js" - } - }, - "node_modules/react-is": { - "version": "17.0.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.1.tgz", - "integrity": "sha512-NAnt2iGDXohE5LI7uBnLnqvLQMtzhkiAOLXTmv+qnF9Ky7xAPcX8Up/xWIhxvLVGJvuLiNc4xQLtuqDRzb4fSA==", - "dev": true - }, - "node_modules/read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", - "dev": true, - "dependencies": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", - "dev": true, - "dependencies": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/read-pkg-up/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg-up/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg/node_modules/type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/readdirp/node_modules/braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "dependencies": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/readdirp/node_modules/braces/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/readdirp/node_modules/fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "dependencies": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/readdirp/node_modules/fill-range/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/readdirp/node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/readdirp/node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/readdirp/node_modules/micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/readdirp/node_modules/to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "dev": true, - "dependencies": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/realpath-native": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-1.1.0.tgz", - "integrity": "sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA==", - "dev": true, - "dependencies": { - "util.promisify": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/rechoir": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.0.tgz", - "integrity": "sha512-ADsDEH2bvbjltXEP+hTIAmeFekTFK0V2BTxMkok6qILyAJEXV0AFfoWcAq4yfll5VdIMd/RVXq0lR+wQi5ZU3Q==", - "dev": true, - "dependencies": { - "resolve": "^1.9.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "dev": true, - "dependencies": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/regexp.prototype.flags": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz", - "integrity": "sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ==", - "dev": true, - "dependencies": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regexp.prototype.flags/node_modules/es-abstract": { - "version": "1.17.7", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", - "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", - "dev": true, - "dependencies": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.2", - "is-regex": "^1.1.1", - "object-inspect": "^1.8.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.1", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regexpp": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", - "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/relateurl": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", - "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", - "dev": true - }, - "node_modules/renderkid": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.5.tgz", - "integrity": "sha512-ccqoLg+HLOHq1vdfYNm4TBeaCDIi1FLt3wGojTDSvdewUv65oTmI3cnT2E4hRjl1gzKZIPK+KZrXzlUYKnR+vQ==", - "dev": true, - "dependencies": { - "css-select": "^2.0.2", - "dom-converter": "^0.2", - "htmlparser2": "^3.10.1", - "lodash": "^4.17.20", - "strip-ansi": "^3.0.0" - } - }, - "node_modules/repeat-element": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", - "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "dev": true, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", - "dev": true, - "dependencies": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/request-promise-core": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz", - "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==", - "dev": true, - "dependencies": { - "lodash": "^4.17.19" - }, - "engines": { - "node": ">=0.10.0" - }, - "peerDependencies": { - "request": "^2.34" - } - }, - "node_modules/request-promise-native": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.9.tgz", - "integrity": "sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==", - "deprecated": "request-promise-native has been deprecated because it extends the now deprecated request package, see https://github.com/request/request/issues/3142", - "dev": true, - "dependencies": { - "request-promise-core": "1.1.4", - "stealthy-require": "^1.1.1", - "tough-cookie": "^2.3.3" - }, - "engines": { - "node": ">=0.12.0" - }, - "peerDependencies": { - "request": "^2.34" - } - }, - "node_modules/request-promise-native/node_modules/tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "dev": true, - "dependencies": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/request/node_modules/tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "dev": true, - "dependencies": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/request/node_modules/uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", - "dev": true, - "bin": { - "uuid": "bin/uuid" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true - }, - "node_modules/requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", - "dev": true - }, - "node_modules/resolve": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz", - "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==", - "dev": true, - "dependencies": { - "is-core-module": "^2.1.0", - "path-parse": "^1.0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, - "dependencies": { - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-cwd/node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", - "deprecated": "https://github.com/lydell/resolve-url#deprecated", - "dev": true - }, - "node_modules/ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "dev": true, - "engines": { - "node": ">=0.12" - } - }, - "node_modules/retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/rsvp": { - "version": "4.8.5", - "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz", - "integrity": "sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==", - "dev": true, - "engines": { - "node": "6.* || >= 7.*" - } - }, - "node_modules/run-parallel": { - "version": "1.1.10", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.10.tgz", - "integrity": "sha512-zb/1OuZ6flOlH6tQyMPUrE3x3Ulxjlo9WIVXR4yVYi4H9UXQaeIsPbLn2R3O3vQCnDKkAl2qHiuocKKX4Tz/Sw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "node_modules/safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", - "dev": true, - "dependencies": { - "ret": "~0.1.10" - } - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "node_modules/sane": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/sane/-/sane-4.1.0.tgz", - "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==", - "deprecated": "some dependency vulnerabilities fixed, support for node < 10 dropped, and newer ECMAScript syntax/features added", + "node_modules/jest-worker/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "dependencies": { - "@cnakazawa/watch": "^1.0.3", - "anymatch": "^2.0.0", - "capture-exit": "^2.0.0", - "exec-sh": "^0.3.2", - "execa": "^1.0.0", - "fb-watchman": "^2.0.0", - "micromatch": "^3.1.4", - "minimist": "^1.1.1", - "walker": "~1.0.5" - }, - "bin": { - "sane": "src/cli.js" - }, "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/sane/node_modules/anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dev": true, - "dependencies": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" + "node": ">=8" } }, - "node_modules/sane/node_modules/braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, "dependencies": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sane/node_modules/braces/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" + "node": ">=10" }, - "engines": { - "node": ">=0.10.0" + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/sane/node_modules/fill-range": { + "node_modules/js-tokens": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "dependencies": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true }, - "node_modules/sane/node_modules/fill-range/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, "dependencies": { - "is-extendable": "^0.1.0" + "argparse": "^2.0.1" }, - "engines": { - "node": ">=0.10.0" + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/sane/node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", "dev": true, - "dependencies": { - "kind-of": "^3.0.2" + "bin": { + "jsesc": "bin/jsesc" }, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/sane/node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "node_modules/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==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" + "bin": { + "json5": "lib/cli.js" }, "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/sane/node_modules/micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true, - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, "engines": { "node": ">=0.10.0" } }, - "node_modules/sane/node_modules/normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", "dev": true, - "dependencies": { - "remove-trailing-separator": "^1.0.1" - }, "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/sane/node_modules/to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", "dev": true, - "dependencies": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - }, "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/sax": { + "node_modules/lines-and-columns": { "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", "dev": true }, - "node_modules/saxes": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", - "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "node_modules/loader-runner": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", + "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==", "dev": true, - "dependencies": { - "xmlchars": "^2.2.0" - }, "engines": { - "node": ">=10" + "node": ">=6.11.5" } }, - "node_modules/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==", + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "dependencies": { - "@types/json-schema": "^7.0.6", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" + "p-locate": "^4.1.0" }, "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "node": ">=8" } }, - "node_modules/select-hose": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", - "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, - "node_modules/selfsigned": { - "version": "1.10.8", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.8.tgz", - "integrity": "sha512-2P4PtieJeEwVgTU9QEcwIRDQ/mXJLX8/+I3ur+Pg16nS8oNbrGxEso9NyYWy8NAmXiNl4dlAp5MwoNeCWzON4w==", - "dev": true, - "dependencies": { - "node-forge": "^0.10.0" - } + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", + "dev": true }, - "node_modules/semver": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", - "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", "dev": true, "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" + "tslib": "^2.0.3" } }, - "node_modules/send": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", - "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "node_modules/lower-case/node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", "dev": true, "dependencies": { - "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "~1.7.2", - "mime": "1.6.0", - "ms": "2.1.1", - "on-finished": "~2.3.0", - "range-parser": "~1.2.1", - "statuses": "~1.5.0" + "semver": "^6.0.0" }, "engines": { - "node": ">= 0.8.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/send/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "node_modules/make-dir/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "dependencies": { - "ms": "2.0.0" + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/send/node_modules/debug/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "node_modules/send/node_modules/ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", "dev": true }, - "node_modules/serialize-javascript": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", - "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==", + "node_modules/makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", "dev": true, "dependencies": { - "randombytes": "^2.1.0" + "tmpl": "1.0.5" } }, - "node_modules/serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", "dev": true, - "dependencies": { - "accepts": "~1.3.4", - "batch": "0.6.1", - "debug": "2.6.9", - "escape-html": "~1.0.3", - "http-errors": "~1.6.2", - "mime-types": "~2.1.17", - "parseurl": "~1.3.2" - }, "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/serve-index/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/serve-index/node_modules/http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "node": ">= 0.6" + } + }, + "node_modules/memfs": { + "version": "3.4.7", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.7.tgz", + "integrity": "sha512-ygaiUSNalBX85388uskeCyhSAoOSgzBbtVCr9jA2RROssFL9Q19/ZXFqS+2Th2sr1ewNIWgFdLzLC3Yl1Zv+lw==", "dev": true, "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" + "fs-monkey": "^1.0.3" }, "engines": { - "node": ">= 0.6" + "node": ">= 4.0.0" } }, - "node_modules/serve-index/node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", "dev": true }, - "node_modules/serve-index/node_modules/ms": { + "node_modules/merge-stream": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "node_modules/serve-index/node_modules/setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", "dev": true }, - "node_modules/serve-static": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", - "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dev": true, - "dependencies": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.17.1" - }, "engines": { - "node": ">= 0.8.0" + "node": ">= 8" } }, - "node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "dev": true, + "engines": { + "node": ">= 0.6" + } }, - "node_modules/set-value": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", - "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", "dev": true, "dependencies": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" + "braces": "^3.0.2", + "picomatch": "^2.3.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=8.6" } }, - "node_modules/set-value/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" + "bin": { + "mime": "cli.js" }, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/setprototypeof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", - "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", - "dev": true - }, - "node_modules/shallow-clone": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", - "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "dev": true, - "dependencies": { - "kind-of": "^6.0.2" - }, "engines": { - "node": ">=8" + "node": ">= 0.6" } }, - "node_modules/shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, "dependencies": { - "shebang-regex": "^1.0.0" + "mime-db": "1.52.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.6" } }, - "node_modules/shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/shellwords": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", - "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", - "dev": true, - "optional": true - }, - "node_modules/signal-exit": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", - "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", - "dev": true - }, - "node_modules/simple-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", - "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/simple-get": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.0.tgz", - "integrity": "sha512-bCR6cP+aTdScaQCnQKbPKtJOKDp/hj9EDLJo3Nw4y1QksqaovlW/bnptB6/c1e+qmNIDHRK+oXFDdEqBT8WzUA==", + "node_modules/mimic-response": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz", + "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==", "dev": true, - "dependencies": { - "decompress-response": "^4.2.0", - "once": "^1.3.1", - "simple-concat": "^1.0.0" + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", "dev": true }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, "engines": { - "node": ">=8" + "node": "*" } }, - "node_modules/slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "node_modules/minipass": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.4.tgz", + "integrity": "sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==", "dev": true, "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" + "yallist": "^4.0.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" + "node": ">=8" } }, - "node_modules/slice-ansi/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", "dev": true, "dependencies": { - "color-convert": "^2.0.1" + "minipass": "^3.0.0", + "yallist": "^4.0.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">= 8" } }, - "node_modules/slice-ansi/node_modules/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==", + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/multicast-dns": { + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", + "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", "dev": true, "dependencies": { - "color-name": "~1.1.4" + "dns-packet": "^5.2.2", + "thunky": "^1.0.2" }, - "engines": { - "node": ">=7.0.0" + "bin": { + "multicast-dns": "cli.js" } }, - "node_modules/slice-ansi/node_modules/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==", + "node_modules/nan": { + "version": "2.20.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.20.0.tgz", + "integrity": "sha512-bk3gXBZDGILuuo/6sKtr0DQmSThYHLtNCdSdXk9YkxD/jK6X2vmCyyXBBxyqZ4XcnzTyYEAThfX3DCEnLf6igw==", "dev": true }, - "node_modules/slice-ansi/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", "dev": true, "engines": { - "node": ">=8" + "node": ">= 0.6" } }, - "node_modules/snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "node_modules/no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", "dev": true, "dependencies": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "engines": { - "node": ">=0.10.0" + "lower-case": "^2.0.2", + "tslib": "^2.0.3" } }, - "node_modules/snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "node_modules/no-case/node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + }, + "node_modules/node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", "dev": true, "dependencies": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" + "whatwg-url": "^5.0.0" }, "engines": { - "node": ">=0.10.0" + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } } }, - "node_modules/snapdragon-node/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "node_modules/node-fetch/node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true + }, + "node_modules/node-fetch/node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true + }, + "node_modules/node-fetch/node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", "dev": true, "dependencies": { - "is-descriptor": "^1.0.0" - }, + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/node-forge": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", + "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">= 6.13.0" } }, - "node_modules/snapdragon-node/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", + "dev": true + }, + "node_modules/node-releases": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", + "dev": true + }, + "node_modules/nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", "dev": true, "dependencies": { - "kind-of": "^6.0.0" + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" }, "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/snapdragon-node/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, "engines": { "node": ">=0.10.0" } }, - "node_modules/snapdragon-node/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "node_modules/npmlog": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", + "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", "dev": true, "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" + "are-we-there-yet": "^2.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^3.0.0", + "set-blocking": "^2.0.0" } }, - "node_modules/snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", "dev": true, "dependencies": { - "kind-of": "^3.2.0" + "boolbase": "^1.0.0" }, - "engines": { - "node": ">=0.10.0" + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" } }, - "node_modules/snapdragon-util/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, "engines": { "node": ">=0.10.0" } }, - "node_modules/snapdragon/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/snapdragon/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "node_modules/object-inspect": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", + "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/snapdragon/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "node_modules/obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "dev": true + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", "dev": true, "dependencies": { - "is-extendable": "^0.1.0" + "ee-first": "1.1.1" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.8" } }, - "node_modules/snapdragon/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "node_modules/snapdragon/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">= 0.8" } }, - "node_modules/sockjs": { - "version": "0.3.21", - "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.21.tgz", - "integrity": "sha512-DhbPFGpxjc6Z3I+uX07Id5ZO2XwYsWOrYjaSeieES78cq+JaJvVe5q/m1uvjIQhXinhIeCFRH6JgXe+mvVMyXw==", + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, "dependencies": { - "faye-websocket": "^0.11.3", - "uuid": "^3.4.0", - "websocket-driver": "^0.7.4" + "wrappy": "1" } }, - "node_modules/sockjs-client": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.5.0.tgz", - "integrity": "sha512-8Dt3BDi4FYNrCFGTL/HtwVzkARrENdwOUf1ZoW/9p3M8lZdFT35jVdrHza+qgxuG9H3/shR4cuX/X9umUrjP8Q==", + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dev": true, "dependencies": { - "debug": "^3.2.6", - "eventsource": "^1.0.7", - "faye-websocket": "^0.11.3", - "inherits": "^2.0.4", - "json3": "^3.3.3", - "url-parse": "^1.4.7" + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/sockjs-client/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "node_modules/open": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", + "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", "dev": true, "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/sockjs/node_modules/uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", - "dev": true, - "bin": { - "uuid": "bin/uuid" - } - }, - "node_modules/source-list-map": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", - "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", - "dev": true - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/source-map-resolve": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", - "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", - "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated", + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, "dependencies": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/source-map-support": { - "version": "0.5.19", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", - "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/source-map-url": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", - "deprecated": "See https://github.com/lydell/source-map-url#deprecated", - "dev": true - }, - "node_modules/spdx-correct": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "node_modules/p-map": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", "dev": true, - "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" + "engines": { + "node": ">=6" } }, - "node_modules/spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", - "dev": true - }, - "node_modules/spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "node_modules/p-retry": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", + "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", "dev": true, "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" + "@types/retry": "0.12.0", + "retry": "^0.13.1" + }, + "engines": { + "node": ">=8" } }, - "node_modules/spdx-license-ids": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz", - "integrity": "sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ==", - "dev": true - }, - "node_modules/spdy": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", - "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true, - "dependencies": { - "debug": "^4.1.0", - "handle-thing": "^2.0.0", - "http-deceiver": "^1.2.7", - "select-hose": "^2.0.0", - "spdy-transport": "^3.0.0" - }, "engines": { - "node": ">=6.0.0" + "node": ">=6" } }, - "node_modules/spdy-transport": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", - "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "node_modules/param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", "dev": true, "dependencies": { - "debug": "^4.1.0", - "detect-node": "^2.0.4", - "hpack.js": "^2.1.6", - "obuf": "^1.1.2", - "readable-stream": "^3.0.6", - "wbuf": "^1.7.3" + "dot-case": "^3.0.4", + "tslib": "^2.0.3" } }, - "node_modules/spdy-transport/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "node_modules/param-case/node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "callsites": "^3.0.0" }, "engines": { - "node": ">= 6" + "node": ">=6" } }, - "node_modules/split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "dev": true, "dependencies": { - "extend-shallow": "^3.0.0" + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true - }, - "node_modules/sshpk": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", - "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", "dev": true, - "dependencies": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - }, - "bin": { - "sshpk-conv": "bin/sshpk-conv", - "sshpk-sign": "bin/sshpk-sign", - "sshpk-verify": "bin/sshpk-verify" - }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.8" } }, - "node_modules/stack-utils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.3.tgz", - "integrity": "sha512-gL//fkxfWUsIlFL2Tl42Cl6+HFALEaB1FU76I/Fy+oZjRreP7OPMXFlGbxM7NQsI0ZpUfw76sHnv0WNYuTb7Iw==", + "node_modules/pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", "dev": true, "dependencies": { - "escape-string-regexp": "^2.0.0" - }, - "engines": { - "node": ">=10" + "no-case": "^3.0.4", + "tslib": "^2.0.3" } }, - "node_modules/stack-utils/node_modules/escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "node_modules/pascal-case/node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, "engines": { "node": ">=8" } }, - "node_modules/static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true, - "dependencies": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, "engines": { "node": ">=0.10.0" } }, - "node_modules/static-extend/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "node_modules/path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", + "dev": true + }, + "node_modules/picocolors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, "engines": { - "node": ">=0.10.0" + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", "dev": true, "engines": { - "node": ">= 0.6" + "node": ">=6" } }, - "node_modules/stealthy-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", + "node_modules/pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", "dev": true, "engines": { "node": ">=0.10.0" } }, - "node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "node_modules/pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", "dev": true, "dependencies": { - "safe-buffer": "~5.1.0" + "pinkie": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/string-length": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.1.tgz", - "integrity": "sha512-PKyXUd0LK0ePjSOnWn34V2uD6acUWev9uy0Ft05k0E8xRW+SKcA0F7eMr7h5xlzfn+4O3N+55rduYyet3Jk+jw==", + "node_modules/pirates": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", + "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", "dev": true, - "dependencies": { - "char-regex": "^1.0.2", - "strip-ansi": "^6.0.0" - }, "engines": { - "node": ">=10" + "node": ">= 6" } }, - "node_modules/string-length/node_modules/ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "node_modules/prettier": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz", + "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==", "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, "engines": { - "node": ">=8" + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" } }, - "node_modules/string-length/node_modules/strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "node_modules/prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", "dev": true, "dependencies": { - "ansi-regex": "^5.0.0" + "fast-diff": "^1.1.2" }, "engines": { - "node": ">=8" + "node": ">=6.0.0" } }, - "node_modules/string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "node_modules/pretty-error": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", + "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", "dev": true, "dependencies": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" + "lodash": "^4.17.20", + "renderkid": "^3.0.0" } }, - "node_modules/string.prototype.trimend": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.3.tgz", - "integrity": "sha512-ayH0pB+uf0U28CtjlLvL7NaohvR1amUvVZk+y3DYb0Ey2PUV5zPkkKy9+U1ndVEIXO8hNg18eIv9Jntbii+dKw==", + "node_modules/pretty-format": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", + "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==", "dev": true, "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3" + "@jest/schemas": "^28.1.3", + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.3.tgz", - "integrity": "sha512-oBIBUy5lea5tt0ovtOFiEQaBkoBBkyJhZXzJYrSmDo5IUUqbOPvVezuRs/agBIdZ2p2Eo1FD6bD9USyBLfl3xg==", + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, - "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3" + "engines": { + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", "dev": true, "dependencies": { - "ansi-regex": "^2.0.0" + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" }, "engines": { - "node": ">=0.10.0" + "node": ">= 6" } }, - "node_modules/strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", "dev": true, + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, "engines": { - "node": ">=8" + "node": ">= 0.10" } }, - "node_modules/strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "node_modules/proxy-addr/node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">= 0.10" } }, - "node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", "dev": true, "engines": { "node": ">=6" } }, - "node_modules/strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } + "node_modules/qrcode-generator": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/qrcode-generator/-/qrcode-generator-1.4.4.tgz", + "integrity": "sha512-HM7yY8O2ilqhmULxGMpcHSF1EhJJ9yBj8gvDEuZ6M+KGJ0YY2hKpnXvRD+hZPLrDVck3ExIGhmPtSdcjC+guuw==" }, - "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", "dev": true, "dependencies": { - "has-flag": "^3.0.0" + "side-channel": "^1.0.4" }, "engines": { - "node": ">=4" - } - }, - "node_modules/supports-hyperlinks": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.1.0.tgz", - "integrity": "sha512-zoE5/e+dnEijk6ASB6/qrK+oYdm2do1hjoLWrqUC/8WEIW1gbxFcKuBof7sW8ArN6e+AYvsE8HBGiVRWL/F5CA==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0", - "supports-color": "^7.0.0" + "node": ">=0.6" }, - "engines": { - "node": ">=8" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/supports-hyperlinks/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", "dev": true, - "engines": { - "node": ">=8" - } + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, - "node_modules/supports-hyperlinks/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "dev": true, "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" + "safe-buffer": "^5.1.0" } }, - "node_modules/symbol-tree": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", - "dev": true - }, - "node_modules/table": { - "version": "6.0.7", - "resolved": "https://registry.npmjs.org/table/-/table-6.0.7.tgz", - "integrity": "sha512-rxZevLGTUzWna/qBLObOe16kB2RTnnbhciwgPbMMlazz1yZGVEgnZK762xyVdVznhqxrfCeBMmMkgOOaPwjH7g==", + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", "dev": true, - "dependencies": { - "ajv": "^7.0.2", - "lodash": "^4.17.20", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.0" - }, "engines": { - "node": ">=10.0.0" + "node": ">= 0.6" } }, - "node_modules/table/node_modules/ajv": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-7.0.3.tgz", - "integrity": "sha512-R50QRlXSxqXcQP5SvKUrw8VZeypvo12i2IX0EeR5PiZ7bEKeHWgzgo264LDadUsCU42lTJVhFikTqJwNeH34gQ==", + "node_modules/raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", "dev": true, "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "engines": { + "node": ">= 0.8" } }, - "node_modules/table/node_modules/ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "node_modules/raw-body/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", "dev": true, "engines": { - "node": ">=8" + "node": ">= 0.8" } }, - "node_modules/table/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true + }, + "node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "dev": true, - "engines": { - "node": ">=8" + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" } }, - "node_modules/table/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "node_modules/table/node_modules/string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" + "picomatch": "^2.2.1" }, "engines": { - "node": ">=8" + "node": ">=8.10.0" } }, - "node_modules/table/node_modules/strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "node_modules/rechoir": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.0.tgz", + "integrity": "sha512-ADsDEH2bvbjltXEP+hTIAmeFekTFK0V2BTxMkok6qILyAJEXV0AFfoWcAq4yfll5VdIMd/RVXq0lR+wQi5ZU3Q==", "dev": true, "dependencies": { - "ansi-regex": "^5.0.0" + "resolve": "^1.9.0" }, "engines": { - "node": ">=8" + "node": ">= 0.10" } }, - "node_modules/tapable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", - "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", + "node_modules/regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", "dev": true, "engines": { - "node": ">=6" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" } }, - "node_modules/tar": { - "version": "4.4.13", - "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz", - "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==", + "node_modules/relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", "dev": true, - "dependencies": { - "chownr": "^1.1.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.8.6", - "minizlib": "^1.2.1", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.2", - "yallist": "^3.0.3" - }, "engines": { - "node": ">=4.5" + "node": ">= 0.10" } }, - "node_modules/tar/node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - }, - "node_modules/terminal-link": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", - "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", + "node_modules/renderkid": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", + "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", "dev": true, "dependencies": { - "ansi-escapes": "^4.2.1", - "supports-hyperlinks": "^2.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^6.0.1" } }, - "node_modules/terser": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", - "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "dev": true, - "dependencies": { - "commander": "^2.20.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.12" - }, - "bin": { - "terser": "bin/terser" - }, "engines": { - "node": ">=6.0.0" + "node": ">=0.10.0" } }, - "node_modules/terser-webpack-plugin": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.1.1.tgz", - "integrity": "sha512-5XNNXZiR8YO6X6KhSGXfY0QrGrCRlSwAEjIIrlRQR4W8nP69TaJUlh3bkuac6zzgspiGPfKEHcY295MMVExl5Q==", + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", "dev": true, - "dependencies": { - "jest-worker": "^26.6.2", - "p-limit": "^3.1.0", - "schema-utils": "^3.0.0", - "serialize-javascript": "^5.0.1", - "source-map": "^0.6.1", - "terser": "^5.5.1" - }, "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.1.0" + "node": ">=0.10.0" } }, - "node_modules/terser-webpack-plugin/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", "dev": true }, - "node_modules/terser-webpack-plugin/node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "node_modules/resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", "dev": true, "dependencies": { - "yocto-queue": "^0.1.0" + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" }, - "engines": { - "node": ">=10" + "bin": { + "resolve": "bin/resolve" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/terser-webpack-plugin/node_modules/terser": { - "version": "5.5.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.5.1.tgz", - "integrity": "sha512-6VGWZNVP2KTUcltUQJ25TtNjx/XgdDsBDKGt8nN0MpydU36LmbPPcMBd2kmtZNNGVVDLg44k7GKeHHj+4zPIBQ==", + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", "dev": true, "dependencies": { - "commander": "^2.20.0", - "source-map": "~0.7.2", - "source-map-support": "~0.5.19" - }, - "bin": { - "terser": "bin/terser" + "resolve-from": "^5.0.0" }, "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/terser-webpack-plugin/node_modules/terser/node_modules/source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "node_modules/resolve-cwd/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true, "engines": { - "node": ">= 8" + "node": ">=8" } }, - "node_modules/terser/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "node_modules/test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true, - "dependencies": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - }, "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true - }, - "node_modules/throat": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz", - "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==", - "dev": true - }, - "node_modules/thunky": { + "node_modules/resolve.exports": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", - "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", - "dev": true - }, - "node_modules/tmpl": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", - "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=", - "dev": true - }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz", + "integrity": "sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==", "dev": true, "engines": { - "node": ">=4" + "node": ">=10" } }, - "node_modules/to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, "engines": { - "node": ">=0.10.0" + "node": ">= 4" } }, - "node_modules/to-object-path/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, "engines": { + "iojs": ">=1.0.0", "node": ">=0.10.0" } }, - "node_modules/to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", "dev": true, "dependencies": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" + "glob": "^7.1.3" }, - "engines": { - "node": ">=0.10.0" + "bin": { + "rimraf": "bin.js" } }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" + "queue-microtask": "^1.2.2" } }, - "node_modules/toidentifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", - "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, "engines": { - "node": ">=0.6" + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, - "node_modules/tough-cookie": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-3.0.1.tgz", - "integrity": "sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg==", + "node_modules/select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", + "dev": true + }, + "node_modules/selfsigned": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.0.1.tgz", + "integrity": "sha512-LmME957M1zOsUhG+67rAjKfiWFox3SBxE/yymatMZsAx+oMrJ0YQ8AToOnyCm7xbeg2ep37IHLxdu0o2MavQOQ==", "dev": true, "dependencies": { - "ip-regex": "^2.1.0", - "psl": "^1.1.28", - "punycode": "^2.1.1" + "node-forge": "^1" }, "engines": { - "node": ">=6" + "node": ">=10" } }, - "node_modules/tr46": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.0.2.tgz", - "integrity": "sha512-3n1qG+/5kg+jrbTzwAykB5yRYtQCTqOGKq5U5PE3b0a1/mzo6snDhjGS0zJVJunO0NrT3Dg1MLy5TjWP/UJppg==", + "node_modules/semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", "dev": true, - "dependencies": { - "punycode": "^2.1.1" + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": ">=8" + "node": ">=10" } }, - "node_modules/ts-jest": { - "version": "26.4.4", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-26.4.4.tgz", - "integrity": "sha512-3lFWKbLxJm34QxyVNNCgXX1u4o/RV0myvA2y2Bxm46iGIjKlaY0own9gIckbjZJPn+WaJEnfPPJ20HHGpoq4yg==", + "node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", "dev": true, "dependencies": { - "@types/jest": "26.x", - "bs-logger": "0.x", - "buffer-from": "1.x", - "fast-json-stable-stringify": "2.x", - "jest-util": "^26.1.0", - "json5": "2.x", - "lodash.memoize": "4.x", - "make-error": "1.x", - "mkdirp": "1.x", - "semver": "7.x", - "yargs-parser": "20.x" - }, - "bin": { - "ts-jest": "cli.js" + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" }, "engines": { - "node": ">= 10" - }, - "peerDependencies": { - "jest": ">=26 <27", - "typescript": ">=3.8 <5.0" + "node": ">= 0.8.0" } }, - "node_modules/ts-jest/node_modules/json5": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", - "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "dependencies": { - "minimist": "^1.2.5" - }, - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" + "ms": "2.0.0" } }, - "node_modules/ts-jest/node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/send/node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", "dev": true, - "bin": { - "mkdirp": "bin/cmd.js" - }, "engines": { - "node": ">=10" + "node": ">= 0.8" } }, - "node_modules/ts-jest/node_modules/yargs-parser": { - "version": "20.2.4", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", - "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/send/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "dev": true, "engines": { - "node": ">=10" + "node": ">= 0.8" } }, - "node_modules/ts-loader": { - "version": "8.0.14", - "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-8.0.14.tgz", - "integrity": "sha512-Jt/hHlUnApOZjnSjTmZ+AbD5BGlQFx3f1D0nYuNKwz0JJnuDGHJas6az+FlWKwwRTu+26GXpv249A8UAnYUpqA==", + "node_modules/serialize-javascript": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", "dev": true, "dependencies": { - "chalk": "^4.1.0", - "enhanced-resolve": "^4.0.0", - "loader-utils": "^2.0.0", - "micromatch": "^4.0.0", - "semver": "^7.3.4" - }, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "typescript": "*", - "webpack": "*" + "randombytes": "^2.1.0" } }, - "node_modules/ts-loader/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", "dev": true, "dependencies": { - "color-convert": "^2.0.1" + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">= 0.8.0" } }, - "node_modules/ts-loader/node_modules/chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "node_modules/serve-index/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "ms": "2.0.0" } }, - "node_modules/ts-loader/node_modules/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==", + "node_modules/serve-index/node_modules/http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", "dev": true, "dependencies": { - "color-name": "~1.1.4" + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" }, "engines": { - "node": ">=7.0.0" + "node": ">= 0.6" } }, - "node_modules/ts-loader/node_modules/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==", + "node_modules/serve-index/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", "dev": true }, - "node_modules/ts-loader/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } + "node_modules/serve-index/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true }, - "node_modules/ts-loader/node_modules/json5": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", - "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", + "node_modules/serve-index/node_modules/setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "node_modules/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", "dev": true, "dependencies": { - "minimist": "^1.2.5" - }, - "bin": { - "json5": "lib/cli.js" + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" }, "engines": { - "node": ">=6" + "node": ">= 0.8.0" } }, - "node_modules/ts-loader/node_modules/loader-utils": { + "node_modules/set-blocking": { "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==", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", "dev": true, "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" }, "engines": { - "node": ">=8.9.0" + "node": ">= 0.4" } }, - "node_modules/ts-loader/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", "dev": true, "dependencies": { - "has-flag": "^4.0.0" + "kind-of": "^6.0.2" }, "engines": { "node": ">=8" } }, - "node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "node_modules/tsutils": { - "version": "3.19.1", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.19.1.tgz", - "integrity": "sha512-GEdoBf5XI324lu7ycad7s6laADfnAqCw6wLGI+knxvw9vsIYBaJfYdmeCEG3FMMUiSm3OGgNb+m6utsWf5h9Vw==", + "node_modules/side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", "dev": true, "dependencies": { - "tslib": "^1.8.1" + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" }, "engines": { - "node": ">= 6" + "node": ">= 0.4" }, - "peerDependencies": { - "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/simple-get": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.1.tgz", + "integrity": "sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA==", "dev": true, "dependencies": { - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": "*" + "decompress-response": "^4.2.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" } }, - "node_modules/tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", "dev": true }, - "node_modules/type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, - "dependencies": { - "prelude-ls": "~1.1.2" - }, "engines": { - "node": ">= 0.8.0" + "node": ">=8" } }, - "node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "node_modules/sockjs": { + "version": "0.3.24", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", + "dev": true, + "dependencies": { + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, - "node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "node_modules/source-map-support": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", "dev": true, - "engines": { - "node": ">=8" + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" } }, - "node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "node_modules/spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", "dev": true, "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" }, "engines": { - "node": ">= 0.6" + "node": ">=6.0.0" } }, - "node_modules/typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "node_modules/spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", "dev": true, "dependencies": { - "is-typedarray": "^1.0.0" + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" } }, - "node_modules/typescript": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.1.3.tgz", - "integrity": "sha512-B3ZIOf1IKeH2ixgHhj6la6xdwR9QrLC5d1VKeCSY4tvkqhF2eqd9O7txNlS0PO3GrBAFIdr3L1ndNwteUbZLYg==", + "node_modules/spdy-transport/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" }, "engines": { - "node": ">=4.2.0" + "node": ">= 6" } }, - "node_modules/union-value": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", - "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "node_modules/stack-utils": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz", + "integrity": "sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==", "dev": true, "dependencies": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" + "escape-string-regexp": "^2.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "node_modules/stack-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", "dev": true, "engines": { - "node": ">= 4.0.0" + "node": ">=8" } }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", "dev": true, "engines": { - "node": ">= 0.8" + "node": ">= 0.6" } }, - "node_modules/unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "dependencies": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" + "safe-buffer": "~5.1.0" } }, - "node_modules/unset-value/node_modules/has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "node_modules/string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", "dev": true, "dependencies": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, "dependencies": { - "isarray": "1.0.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/unset-value/node_modules/has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/upath": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", - "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", "dev": true, "engines": { - "node": ">=4", - "yarn": "*" - } - }, - "node_modules/uri-js": { - "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, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", - "deprecated": "Please see https://github.com/lydell/urix#deprecated", - "dev": true - }, - "node_modules/url": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", - "dev": true, - "dependencies": { - "punycode": "1.3.2", - "querystring": "0.2.0" + "node": ">=8" } }, - "node_modules/url-parse": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.1.tgz", - "integrity": "sha512-HOfCOUJt7iSYzEx/UqgtwKRMC6EU91NFhsCHMv9oM03VJcVo2Qrp8T8kI9D7amFf1cu+/3CEhgb3rF9zL7k85Q==", + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", "dev": true, - "dependencies": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" + "engines": { + "node": ">=6" } }, - "node_modules/url/node_modules/punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", - "dev": true - }, - "node_modules/use": { + "node_modules/strip-json-comments": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true - }, - "node_modules/util.promisify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", - "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "dependencies": { - "define-properties": "^1.1.2", - "object.getownpropertydescriptors": "^2.0.3" - } - }, - "node_modules/utila": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", - "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=", - "dev": true - }, - "node_modules/utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", - "dev": true, + "has-flag": "^3.0.0" + }, "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/uuid": { - "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, - "bin": { - "uuid": "dist/bin/uuid" + "node": ">=4" } }, - "node_modules/v8-compile-cache": { + "node_modules/supports-hyperlinks": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz", - "integrity": "sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q==", - "dev": true - }, - "node_modules/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==", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz", + "integrity": "sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==", "dev": true, "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^1.6.0", - "source-map": "^0.7.3" + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" }, "engines": { - "node": ">=10.10.0" + "node": ">=8" } }, - "node_modules/v8-to-istanbul/node_modules/source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "node_modules/supports-hyperlinks/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "engines": { - "node": ">= 8" + "node": ">=8" } }, - "node_modules/validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "node_modules/supports-hyperlinks/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "node_modules/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", - "dev": true, + "has-flag": "^4.0.0" + }, "engines": { - "node": ">= 0.8" - } - }, - "node_modules/verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "dev": true, - "engines": [ - "node >=0.6.0" - ], - "dependencies": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "node_modules/w3c-hr-time": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", - "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", - "dev": true, - "dependencies": { - "browser-process-hrtime": "^1.0.0" + "node": ">=8" } }, - "node_modules/w3c-xmlserializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", - "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true, - "dependencies": { - "xml-name-validator": "^3.0.0" - }, "engines": { - "node": ">=10" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/walker": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", - "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", "dev": true, - "dependencies": { - "makeerror": "1.0.x" + "engines": { + "node": ">=6" } }, - "node_modules/watchpack": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.1.0.tgz", - "integrity": "sha512-UjgD1mqjkG99+3lgG36at4wPnUXNvis2v1utwTgQ43C22c4LD71LsYMExdWXh4HZ+RmW+B0t1Vrg2GpXAkTOQw==", + "node_modules/tar": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", + "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", "dev": true, "dependencies": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" }, "engines": { - "node": ">=10.13.0" + "node": ">=10" } }, - "node_modules/wbuf": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", - "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "node_modules/tar/node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", "dev": true, - "dependencies": { - "minimalistic-assert": "^1.0.0" + "engines": { + "node": ">=8" } }, - "node_modules/webidl-conversions": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", - "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", + "node_modules/tar/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, "engines": { - "node": ">=10.4" + "node": ">=10" } }, - "node_modules/webpack": { - "version": "5.12.3", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.12.3.tgz", - "integrity": "sha512-7tiQmcTnKhZwbf7X7sEfXe0pgkGjUZjT6JfYkZHvvIb4/ZsXl1rJu5PxsJoN7W3v5sNSP/8TgBoiOdDqVdvK5w==", - "dev": true, - "dependencies": { - "@types/eslint-scope": "^3.7.0", - "@types/estree": "^0.0.45", - "@webassemblyjs/ast": "1.11.0", - "@webassemblyjs/wasm-edit": "1.11.0", - "@webassemblyjs/wasm-parser": "1.11.0", - "acorn": "^8.0.4", - "browserslist": "^4.14.5", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.3.1", - "eslint-scope": "^5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.4", - "json-parse-better-errors": "^1.0.2", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "pkg-dir": "^5.0.0", - "schema-utils": "^3.0.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.1.1", - "watchpack": "^2.0.0", - "webpack-sources": "^2.1.1" - }, - "bin": { - "webpack": "bin/webpack.js" + "node_modules/terminal-link": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", + "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", + "dev": true, + "dependencies": { + "ansi-escapes": "^4.2.1", + "supports-hyperlinks": "^2.0.0" }, "engines": { - "node": ">=10.13.0" + "node": ">=8" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - } + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/webpack-cli": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.3.1.tgz", - "integrity": "sha512-/F4+9QNZM/qKzzL9/06Am8NXIkGV+/NqQ62Dx7DSqudxxpAgBqYn6V7+zp+0Y7JuWksKUbczRY3wMTd+7Uj6OA==", + "node_modules/terser": { + "version": "5.31.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.31.1.tgz", + "integrity": "sha512-37upzU1+viGvuFtBo9NPufCb9dwM0+l9hMxYyWfBA+fbwrPqNJAhbZ6W47bBFnZHKHTUBnMvi87434qq+qnxOg==", "dev": true, "dependencies": { - "@discoveryjs/json-ext": "^0.5.0", - "@webpack-cli/info": "^1.2.1", - "@webpack-cli/serve": "^1.2.1", - "colorette": "^1.2.1", - "commander": "^6.2.0", - "enquirer": "^2.3.6", - "execa": "^5.0.0", - "fastest-levenshtein": "^1.0.12", - "import-local": "^3.0.2", - "interpret": "^2.2.0", - "rechoir": "^0.7.0", - "v8-compile-cache": "^2.2.0", - "webpack-merge": "^4.2.2" + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" }, "bin": { - "webpack-cli": "bin/cli.js" + "terser": "bin/terser" }, "engines": { - "node": ">=10.13.0" + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.3.10", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", + "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.20", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.1", + "terser": "^5.26.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "webpack": "4.x.x || 5.x.x" + "webpack": "^5.1.0" }, "peerDependenciesMeta": { - "@webpack-cli/generators": { - "optional": true - }, - "@webpack-cli/init": { - "optional": true - }, - "@webpack-cli/migrate": { + "@swc/core": { "optional": true }, - "webpack-bundle-analyzer": { + "esbuild": { "optional": true }, - "webpack-dev-server": { + "uglify-js": { "optional": true } } }, - "node_modules/webpack-cli/node_modules/commander": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", - "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", + "node_modules/terser-webpack-plugin/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "engines": { - "node": ">= 6" + "node": ">=8" } }, - "node_modules/webpack-cli/node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "node_modules/terser-webpack-plugin/node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", "dev": true, "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" }, "engines": { - "node": ">= 8" + "node": ">= 10.13.0" } }, - "node_modules/webpack-cli/node_modules/execa": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.0.0.tgz", - "integrity": "sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ==", + "node_modules/terser-webpack-plugin/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" + "has-flag": "^4.0.0" }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/webpack-cli/node_modules/get-stream": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.0.tgz", - "integrity": "sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg==", - "dev": true, "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/webpack-cli/node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true, - "engines": { - "node": ">=10.17.0" - } + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true }, - "node_modules/webpack-cli/node_modules/is-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", - "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", + "node_modules/terser/node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "dev": true, - "engines": { - "node": ">=8" + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" } }, - "node_modules/webpack-cli/node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", "dev": true, "dependencies": { - "path-key": "^3.0.0" + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" }, "engines": { "node": ">=8" } }, - "node_modules/webpack-cli/node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "node_modules/thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "dev": true + }, + "node_modules/tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "dev": true + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", "dev": true, "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/webpack-cli/node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, "dependencies": { - "shebang-regex": "^3.0.0" + "is-number": "^7.0.0" }, "engines": { - "node": ">=8" + "node": ">=8.0" } }, - "node_modules/webpack-cli/node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", "dev": true, "engines": { - "node": ">=8" - } - }, - "node_modules/webpack-cli/node_modules/webpack-merge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.2.tgz", - "integrity": "sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==", - "dev": true, - "dependencies": { - "lodash": "^4.17.15" + "node": ">=0.6" } }, - "node_modules/webpack-cli/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "node_modules/ts-jest": { + "version": "28.0.8", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-28.0.8.tgz", + "integrity": "sha512-5FaG0lXmRPzApix8oFG8RKjAz4ehtm8yMKOTy5HX3fY6W8kmvOrmcY0hKDElW52FJov+clhUbrKAqofnj4mXTg==", "dev": true, "dependencies": { - "isexe": "^2.0.0" + "bs-logger": "0.x", + "fast-json-stable-stringify": "2.x", + "jest-util": "^28.0.0", + "json5": "^2.2.1", + "lodash.memoize": "4.x", + "make-error": "1.x", + "semver": "7.x", + "yargs-parser": "^21.0.1" }, "bin": { - "node-which": "bin/node-which" + "ts-jest": "cli.js" }, "engines": { - "node": ">= 8" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + }, + "peerDependencies": { + "@babel/core": ">=7.0.0-beta.0 <8", + "@jest/types": "^28.0.0", + "babel-jest": "^28.0.0", + "jest": "^28.0.0", + "typescript": ">=4.3" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "@jest/types": { + "optional": true + }, + "babel-jest": { + "optional": true + }, + "esbuild": { + "optional": true + } } }, - "node_modules/webpack-dev-middleware": { - "version": "3.7.3", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz", - "integrity": "sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ==", + "node_modules/ts-loader": { + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.3.1.tgz", + "integrity": "sha512-OkyShkcZTsTwyS3Kt7a4rsT/t2qvEVQuKCTg4LJmpj9fhFR7ukGdZwV6Qq3tRUkqcXtfGpPR7+hFKHCG/0d3Lw==", "dev": true, "dependencies": { - "memory-fs": "^0.4.1", - "mime": "^2.4.4", - "mkdirp": "^0.5.1", - "range-parser": "^1.2.1", - "webpack-log": "^2.0.0" + "chalk": "^4.1.0", + "enhanced-resolve": "^5.0.0", + "micromatch": "^4.0.0", + "semver": "^7.3.4" }, "engines": { - "node": ">= 6" + "node": ">=12.0.0" }, "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" + "typescript": "*", + "webpack": "^5.0.0" } }, - "node_modules/webpack-dev-middleware/node_modules/memory-fs": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", - "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "node_modules/ts-loader/node_modules/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, "dependencies": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - } - }, - "node_modules/webpack-dev-middleware/node_modules/mime": { - "version": "2.4.7", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.7.tgz", - "integrity": "sha512-dhNd1uA2u397uQk3Nv5LM4lm93WYDUXFn3Fu291FJerns4jyTudqhIWe4W04YLy7Uk1tm1Ore04NpjRvQp/NPA==", - "dev": true, - "bin": { - "mime": "cli.js" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=4.0.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/webpack-dev-server": { - "version": "3.11.1", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.1.tgz", - "integrity": "sha512-u4R3mRzZkbxQVa+MBWi2uVpB5W59H3ekZAJsQlKUTdl7Elcah2EhygTPLmeFXybQkf9i2+L0kn7ik9SnXa6ihQ==", + "node_modules/ts-loader/node_modules/chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", "dev": true, "dependencies": { - "ansi-html": "0.0.7", - "bonjour": "^3.5.0", - "chokidar": "^2.1.8", - "compression": "^1.7.4", - "connect-history-api-fallback": "^1.6.0", - "debug": "^4.1.1", - "del": "^4.1.1", - "express": "^4.17.1", - "html-entities": "^1.3.1", - "http-proxy-middleware": "0.19.1", - "import-local": "^2.0.0", - "internal-ip": "^4.3.0", - "ip": "^1.1.5", - "is-absolute-url": "^3.0.3", - "killable": "^1.0.1", - "loglevel": "^1.6.8", - "opn": "^5.5.0", - "p-retry": "^3.0.1", - "portfinder": "^1.0.26", - "schema-utils": "^1.0.0", - "selfsigned": "^1.10.8", - "semver": "^6.3.0", - "serve-index": "^1.9.1", - "sockjs": "^0.3.21", - "sockjs-client": "^1.5.0", - "spdy": "^4.0.2", - "strip-ansi": "^3.0.1", - "supports-color": "^6.1.0", - "url": "^0.11.0", - "webpack-dev-middleware": "^3.7.2", - "webpack-log": "^2.0.0", - "ws": "^6.2.1", - "yargs": "^13.3.2" - }, - "bin": { - "webpack-dev-server": "bin/webpack-dev-server.js" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">= 6.11.5" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" + "node": ">=10" }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - } + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/webpack-dev-server/node_modules/ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "node_modules/ts-loader/node_modules/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, + "dependencies": { + "color-name": "~1.1.4" + }, "engines": { - "node": ">=6" + "node": ">=7.0.0" } }, - "node_modules/webpack-dev-server/node_modules/cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "node_modules/ts-loader/node_modules/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 + }, + "node_modules/ts-loader/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "dependencies": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" + "engines": { + "node": ">=8" } }, - "node_modules/webpack-dev-server/node_modules/cliui/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "node_modules/ts-loader/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { - "ansi-regex": "^4.1.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/webpack-dev-server/node_modules/emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true }, - "node_modules/webpack-dev-server/node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", "dev": true, "dependencies": { - "locate-path": "^3.0.0" + "tslib": "^1.8.1" }, "engines": { - "node": ">=6" + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" } }, - "node_modules/webpack-dev-server/node_modules/import-local": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", - "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", "dev": true, - "dependencies": { - "pkg-dir": "^3.0.0", - "resolve-cwd": "^2.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" - }, "engines": { - "node": ">=6" + "node": ">=4" } }, - "node_modules/webpack-dev-server/node_modules/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=", + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true, "engines": { - "node": ">=4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/webpack-dev-server/node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", "dev": true, "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "media-typer": "0.3.0", + "mime-types": "~2.1.24" }, "engines": { - "node": ">=6" + "node": ">= 0.6" } }, - "node_modules/webpack-dev-server/node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "node_modules/typescript": { + "version": "4.8.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.2.tgz", + "integrity": "sha512-C0I1UsrrDHo2fYI5oaCGbSejwX4ch+9Y5jTQELvovfmFkK3HHSZJB8MSJcWLmCUBzQBchCrZ9rMRV6GuNrvGtw==", "dev": true, - "dependencies": { - "p-limit": "^2.0.0" + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" }, "engines": { - "node": ">=6" + "node": ">=4.2.0" } }, - "node_modules/webpack-dev-server/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", "dev": true, "engines": { - "node": ">=4" + "node": ">= 0.8" } }, - "node_modules/webpack-dev-server/node_modules/pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "node_modules/update-browserslist-db": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz", + "integrity": "sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==", "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "dependencies": { - "find-up": "^3.0.0" + "escalade": "^3.1.2", + "picocolors": "^1.0.1" }, - "engines": { - "node": ">=6" + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" } }, - "node_modules/webpack-dev-server/node_modules/resolve-cwd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", - "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "node_modules/uri-js": { + "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, "dependencies": { - "resolve-from": "^3.0.0" - }, - "engines": { - "node": ">=4" + "punycode": "^2.1.0" } }, - "node_modules/webpack-dev-server/node_modules/resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", - "dev": true, - "engines": { - "node": ">=4" - } + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true }, - "node_modules/webpack-dev-server/node_modules/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==", + "node_modules/utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==", + "dev": true + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", "dev": true, - "dependencies": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - }, "engines": { - "node": ">= 4" + "node": ">= 0.4.0" } }, - "node_modules/webpack-dev-server/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", "dev": true, "bin": { - "semver": "bin/semver.js" + "uuid": "dist/bin/uuid" } }, - "node_modules/webpack-dev-server/node_modules/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==", + "node_modules/v8-to-istanbul": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.0.1.tgz", + "integrity": "sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w==", "dev": true, "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^1.6.0" }, "engines": { - "node": ">=6" + "node": ">=10.12.0" } }, - "node_modules/webpack-dev-server/node_modules/string-width/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", "dev": true, - "dependencies": { - "ansi-regex": "^4.1.0" - }, "engines": { - "node": ">=6" + "node": ">= 0.8" } }, - "node_modules/webpack-dev-server/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "node_modules/walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", "dev": true, "dependencies": { - "has-flag": "^3.0.0" + "makeerror": "1.0.12" + } + }, + "node_modules/watchpack": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.1.tgz", + "integrity": "sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==", + "dev": true, + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" }, "engines": { - "node": ">=6" + "node": ">=10.13.0" } }, - "node_modules/webpack-dev-server/node_modules/wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "node_modules/wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", "dev": true, "dependencies": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/webpack": { + "version": "5.92.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.92.1.tgz", + "integrity": "sha512-JECQ7IwJb+7fgUFBlrJzbyu3GEuNBcdqr1LD7IbSzwkSmIevTm8PF+wej3Oxuz/JFBUZ6O1o43zsPkwm1C4TmA==", + "dev": true, + "dependencies": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^1.0.5", + "@webassemblyjs/ast": "^1.12.1", + "@webassemblyjs/wasm-edit": "^1.12.1", + "@webassemblyjs/wasm-parser": "^1.12.1", + "acorn": "^8.7.1", + "acorn-import-attributes": "^1.9.5", + "browserslist": "^4.21.10", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.17.0", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.11", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.2.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.10", + "watchpack": "^2.4.1", + "webpack-sources": "^3.2.3" + }, + "bin": { + "webpack": "bin/webpack.js" }, "engines": { - "node": ">=6" + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } } }, - "node_modules/webpack-dev-server/node_modules/wrap-ansi/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "node_modules/webpack-cli": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.10.0.tgz", + "integrity": "sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w==", "dev": true, "dependencies": { - "ansi-regex": "^4.1.0" + "@discoveryjs/json-ext": "^0.5.0", + "@webpack-cli/configtest": "^1.2.0", + "@webpack-cli/info": "^1.5.0", + "@webpack-cli/serve": "^1.7.0", + "colorette": "^2.0.14", + "commander": "^7.0.0", + "cross-spawn": "^7.0.3", + "fastest-levenshtein": "^1.0.12", + "import-local": "^3.0.2", + "interpret": "^2.2.0", + "rechoir": "^0.7.0", + "webpack-merge": "^5.7.3" + }, + "bin": { + "webpack-cli": "bin/cli.js" }, "engines": { - "node": ">=6" + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "4.x.x || 5.x.x" + }, + "peerDependenciesMeta": { + "@webpack-cli/generators": { + "optional": true + }, + "@webpack-cli/migrate": { + "optional": true + }, + "webpack-bundle-analyzer": { + "optional": true + }, + "webpack-dev-server": { + "optional": true + } } }, - "node_modules/webpack-dev-server/node_modules/ws": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", - "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", + "node_modules/webpack-cli/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", "dev": true, - "dependencies": { - "async-limiter": "~1.0.0" + "engines": { + "node": ">= 10" } }, - "node_modules/webpack-dev-server/node_modules/yargs": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "node_modules/webpack-cli/node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, "dependencies": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.2" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" } }, - "node_modules/webpack-dev-server/node_modules/yargs-parser": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "node_modules/webpack-cli/node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" + "engines": { + "node": ">=8" } }, - "node_modules/webpack-log": { + "node_modules/webpack-cli/node_modules/shebang-command": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz", - "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, "dependencies": { - "ansi-colors": "^3.0.0", - "uuid": "^3.3.2" + "shebang-regex": "^3.0.0" }, "engines": { - "node": ">= 6" + "node": ">=8" } }, - "node_modules/webpack-log/node_modules/uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "node_modules/webpack-cli/node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, - "bin": { - "uuid": "bin/uuid" + "engines": { + "node": ">=8" } }, - "node_modules/webpack-merge": { - "version": "5.7.3", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.7.3.tgz", - "integrity": "sha512-6/JUQv0ELQ1igjGDzHkXbVDRxkfA57Zw7PfiupdLFJYrgFqY5ZP8xxbpp2lU3EPwYx89ht5Z/aDkD40hFCm5AA==", + "node_modules/webpack-cli/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, "dependencies": { - "clone-deep": "^4.0.1", - "wildcard": "^2.0.0" + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" }, "engines": { - "node": ">=10.0.0" + "node": ">= 8" } }, - "node_modules/webpack-sources": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.2.0.tgz", - "integrity": "sha512-bQsA24JLwcnWGArOKUxYKhX3Mz/nK1Xf6hxullKERyktjNMC4x8koOeaDNTA2fEJ09BdWLbM/iTW0ithREUP0w==", + "node_modules/webpack-dev-middleware": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.4.tgz", + "integrity": "sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q==", "dev": true, "dependencies": { - "source-list-map": "^2.0.1", - "source-map": "^0.6.1" + "colorette": "^2.0.10", + "memfs": "^3.4.3", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" }, "engines": { - "node": ">=10.13.0" + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" } }, - "node_modules/webpack/node_modules/acorn": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.0.4.tgz", - "integrity": "sha512-XNP0PqF1XD19ZlLKvB7cMmnZswW4C/03pRHgirB30uSJTaS3A3V1/P4sS3HPvFmjoriPCJQs+JDSbm4bL1TxGQ==", + "node_modules/webpack-dev-middleware/node_modules/ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", "dev": true, - "bin": { - "acorn": "bin/acorn" + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" }, - "engines": { - "node": ">=0.4.0" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/webpack/node_modules/enhanced-resolve": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.5.0.tgz", - "integrity": "sha512-b4a6BasBCoLzri4MdaeOlDMpls2oioI28CF17csMiav9dq46yvQaKPFNUrCHB6VqQokBDG2VIEEL81jMiQ6Wtw==", + "node_modules/webpack-dev-middleware/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", "dev": true, "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" + "fast-deep-equal": "^3.1.3" }, - "engines": { - "node": ">=10.13.0" + "peerDependencies": { + "ajv": "^8.8.2" } }, - "node_modules/webpack/node_modules/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==", + "node_modules/webpack-dev-middleware/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/webpack-dev-middleware/node_modules/schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", "dev": true, "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" }, "engines": { - "node": ">=10" + "node": ">= 12.13.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, - "node_modules/webpack/node_modules/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, - "dependencies": { - "p-locate": "^5.0.0" + "node_modules/webpack-dev-server": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.10.0.tgz", + "integrity": "sha512-7dezwAs+k6yXVFZ+MaL8VnE+APobiO3zvpp3rBHe/HmWQ+avwh0Q3d0xxacOiBybZZ3syTZw9HXzpa3YNbAZDQ==", + "dev": true, + "dependencies": { + "@types/bonjour": "^3.5.9", + "@types/connect-history-api-fallback": "^1.3.5", + "@types/express": "^4.17.13", + "@types/serve-index": "^1.9.1", + "@types/serve-static": "^1.13.10", + "@types/sockjs": "^0.3.33", + "@types/ws": "^8.5.1", + "ansi-html-community": "^0.0.8", + "bonjour-service": "^1.0.11", + "chokidar": "^3.5.3", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^2.0.0", + "default-gateway": "^6.0.3", + "express": "^4.17.3", + "graceful-fs": "^4.2.6", + "html-entities": "^2.3.2", + "http-proxy-middleware": "^2.0.3", + "ipaddr.js": "^2.0.1", + "open": "^8.0.9", + "p-retry": "^4.5.0", + "rimraf": "^3.0.2", + "schema-utils": "^4.0.0", + "selfsigned": "^2.0.1", + "serve-index": "^1.9.1", + "sockjs": "^0.3.24", + "spdy": "^4.0.2", + "webpack-dev-middleware": "^5.3.1", + "ws": "^8.4.2" + }, + "bin": { + "webpack-dev-server": "bin/webpack-dev-server.js" }, "engines": { - "node": ">=10" + "node": ">= 12.13.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.37.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } } }, - "node_modules/webpack/node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "node_modules/webpack-dev-server/node_modules/ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", "dev": true, "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/webpack/node_modules/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==", + "node_modules/webpack-dev-server/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", "dev": true, "dependencies": { - "p-limit": "^3.0.2" + "fast-deep-equal": "^3.1.3" }, - "engines": { - "node": ">=10" + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/webpack-dev-server/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/webpack-dev-server/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/webpack/node_modules/path-exists": { + "node_modules/webpack-dev-server/node_modules/schema-utils": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + }, "engines": { - "node": ">=8" + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, - "node_modules/webpack/node_modules/pkg-dir": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-5.0.0.tgz", - "integrity": "sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==", + "node_modules/webpack-merge": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", + "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", "dev": true, "dependencies": { - "find-up": "^5.0.0" + "clone-deep": "^4.0.1", + "wildcard": "^2.0.0" }, "engines": { - "node": ">=10" + "node": ">=10.0.0" } }, - "node_modules/webpack/node_modules/tapable": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.0.tgz", - "integrity": "sha512-FBk4IesMV1rBxX2tfiK8RAmogtWn53puLOQlvO8XuwlgxcYbP4mVPS9Ph4aeamSyyVjOl24aYWAuc8U5kCVwMw==", + "node_modules/webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", "dev": true, "engines": { - "node": ">=6" + "node": ">=10.13.0" } }, "node_modules/websocket-driver": { @@ -14509,60 +10303,13 @@ "node": ">=0.8.0" } }, - "node_modules/whatwg-encoding": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", - "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", - "dev": true, - "dependencies": { - "iconv-lite": "0.4.24" - } - }, - "node_modules/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==", - "dev": true - }, - "node_modules/whatwg-url": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.4.0.tgz", - "integrity": "sha512-vwTUFf6V4zhcPkWp/4CQPr1TW9Ml6SF4lVyaIMBdJw5i6qUUJ1QWM4Z6YYVkfka0OUIzVo/0aNtGVGk256IKWw==", - "dev": true, - "dependencies": { - "lodash.sortby": "^4.7.0", - "tr46": "^2.0.2", - "webidl-conversions": "^6.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", - "dev": true - }, "node_modules/wide-align": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", - "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", "dev": true, "dependencies": { - "string-width": "^1.0.2 || 2" + "string-width": "^1.0.2 || 2 || 3 || 4" } }, "node_modules/wildcard": { @@ -14572,18 +10319,18 @@ "dev": true }, "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", "dev": true, "engines": { "node": ">=0.10.0" } }, "node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, "dependencies": { "ansi-styles": "^4.0.0", @@ -14591,16 +10338,10 @@ "strip-ansi": "^6.0.0" }, "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true, - "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, "node_modules/wrap-ansi/node_modules/ansi-styles": { @@ -14631,45 +10372,10 @@ } }, "node_modules/wrap-ansi/node_modules/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 - }, - "node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi/node_modules/string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi/node_modules/strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.0" - }, - "engines": { - "node": ">=8" - } + "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 }, "node_modules/wrappy": { "version": "1.0.2", @@ -14678,28 +10384,29 @@ "dev": true }, "node_modules/write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", "dev": true, "dependencies": { "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" + "signal-exit": "^3.0.7" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/ws": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.1.tgz", - "integrity": "sha512-pTsP8UAfhy3sk1lSk/O/s4tjD0CRwvMnzvwr4OKGX7ZvqZtUyx4KIJB5JWbkykPoc55tixMGgTNoh3k4FkNGFQ==", + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", + "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", "dev": true, "engines": { - "node": ">=8.3.0" + "node": ">=10.0.0" }, "peerDependencies": { "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" + "utf-8-validate": ">=5.0.2" }, "peerDependenciesMeta": { "bufferutil": { @@ -14710,23 +10417,14 @@ } } }, - "node_modules/xml-name-validator": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", - "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", - "dev": true - }, - "node_modules/xmlchars": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", - "dev": true - }, "node_modules/y18n": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.1.tgz", - "integrity": "sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==", - "dev": true + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } }, "node_modules/yallist": { "version": "4.0.0", @@ -14735,104 +10433,30 @@ "dev": true }, "node_modules/yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "version": "17.5.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.5.1.tgz", + "integrity": "sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA==", "dev": true, "dependencies": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.0.0" }, "engines": { - "node": ">=8" + "node": ">=12" } }, "node_modules/yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "dev": true, - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/yargs/node_modules/ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/yargs/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/yargs/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/yargs/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/yargs/node_modules/string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/yargs/node_modules/strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", "dev": true, - "dependencies": { - "ansi-regex": "^5.0.0" - }, "engines": { - "node": ">=8" + "node": ">=12" } }, "node_modules/yocto-queue": { @@ -14850,12 +10474,13 @@ }, "dependencies": { "@babel/code-frame": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", - "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", + "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", "dev": true, "requires": { - "@babel/highlight": "^7.10.4" + "@babel/highlight": "^7.24.7", + "picocolors": "^1.0.0" } }, "@babel/core": { @@ -14881,19 +10506,10 @@ "source-map": "^0.5.0" }, "dependencies": { - "json5": { - "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" - } - }, "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true }, "source-map": { @@ -14905,42 +10521,43 @@ } }, "@babel/generator": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.12.11.tgz", - "integrity": "sha512-Ggg6WPOJtSi8yYQvLVjG8F/TlpWDlKx0OpS4Kt+xMQPs5OaGYWy+v1A+1TvxI6sAMGZpKWWoAQ1DaeQbImlItA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.7.tgz", + "integrity": "sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==", "dev": true, "requires": { - "@babel/types": "^7.12.11", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" - }, - "dependencies": { - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - } + "@babel/types": "^7.24.7", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^2.5.1" + } + }, + "@babel/helper-environment-visitor": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz", + "integrity": "sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==", + "dev": true, + "requires": { + "@babel/types": "^7.24.7" } }, "@babel/helper-function-name": { - "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==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.24.7.tgz", + "integrity": "sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.12.10", - "@babel/template": "^7.12.7", - "@babel/types": "^7.12.11" + "@babel/template": "^7.24.7", + "@babel/types": "^7.24.7" } }, - "@babel/helper-get-function-arity": { - "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==", + "@babel/helper-hoist-variables": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.7.tgz", + "integrity": "sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==", "dev": true, "requires": { - "@babel/types": "^7.12.10" + "@babel/types": "^7.24.7" } }, "@babel/helper-member-expression-to-functions": { @@ -14988,9 +10605,9 @@ } }, "@babel/helper-plugin-utils": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", - "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.9.tgz", + "integrity": "sha512-aBXPT3bmtLryXaoJLyYPXPlSD4p1ld9aYeR+sJNOZjJJGiOpb+fKfh3NkcCu7J54nUJwCERPBExCCpyCOHnu/w==", "dev": true }, "@babel/helper-replace-supers": { @@ -15015,18 +10632,24 @@ } }, "@babel/helper-split-export-declaration": { - "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==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz", + "integrity": "sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==", "dev": true, "requires": { - "@babel/types": "^7.12.11" + "@babel/types": "^7.24.7" } }, + "@babel/helper-string-parser": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.7.tgz", + "integrity": "sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg==", + "dev": true + }, "@babel/helper-validator-identifier": { - "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==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", + "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", "dev": true }, "@babel/helpers": { @@ -15041,20 +10664,21 @@ } }, "@babel/highlight": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", - "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", + "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" + "@babel/helper-validator-identifier": "^7.24.7", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" } }, "@babel/parser": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.12.11.tgz", - "integrity": "sha512-N3UxG+uuF4CMYoNj8AhnbAcJF0PiuJ9KHuy1lQmkYsxTer/MAH9UBNHsBoAX/4s6NvlDD047No8mYVGGzLL4hg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.7.tgz", + "integrity": "sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==", "dev": true }, "@babel/plugin-syntax-async-generators": { @@ -15076,12 +10700,12 @@ } }, "@babel/plugin-syntax-class-properties": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.1.tgz", - "integrity": "sha512-U40A76x5gTwmESz+qiqssqmeEsKvcSyvtgktrm0uzcARAmM9I1jR221f6Oq+GmHrcD+LvZDag1UTOTe2fL3TeA==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-syntax-import-meta": { @@ -15157,40 +10781,50 @@ } }, "@babel/plugin-syntax-top-level-await": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.1.tgz", - "integrity": "sha512-i7ooMZFS+a/Om0crxZodrTzNEPJHZrlMVGMTEpFAj6rYY/bKCddB0Dk/YxfPuYXOopuhKk/e1jV6h+WUU9XN3A==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-typescript": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.18.6.tgz", + "integrity": "sha512-mAWAuq4rvOepWCBid55JuRNvpTNf2UGVgoz4JV0fXEKolsVZDzsa4NqCef758WZJj/GDu0gVGItjKFiClTAmZA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/template": { - "version": "7.12.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.7.tgz", - "integrity": "sha512-GkDzmHS6GV7ZeXfJZ0tLRBhZcMcY0/Lnb+eEbXDBfCAcZCjrZKe6p3J4we/D24O9Y8enxWAg1cWwof59yLh2ow==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.7.tgz", + "integrity": "sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==", "dev": true, "requires": { - "@babel/code-frame": "^7.10.4", - "@babel/parser": "^7.12.7", - "@babel/types": "^7.12.7" + "@babel/code-frame": "^7.24.7", + "@babel/parser": "^7.24.7", + "@babel/types": "^7.24.7" } }, "@babel/traverse": { - "version": "7.12.10", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.12.10.tgz", - "integrity": "sha512-6aEtf0IeRgbYWzta29lePeYSk+YAFIC3kyqESeft8o5CkFlYIMX+EQDDWEiAQ9LHOA3d0oHdgrSsID/CKqXJlg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.7.tgz", + "integrity": "sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==", "dev": true, "requires": { - "@babel/code-frame": "^7.10.4", - "@babel/generator": "^7.12.10", - "@babel/helper-function-name": "^7.10.4", - "@babel/helper-split-export-declaration": "^7.11.0", - "@babel/parser": "^7.12.10", - "@babel/types": "^7.12.10", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.19" + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.24.7", + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-function-name": "^7.24.7", + "@babel/helper-hoist-variables": "^7.24.7", + "@babel/helper-split-export-declaration": "^7.24.7", + "@babel/parser": "^7.24.7", + "@babel/types": "^7.24.7", + "debug": "^4.3.1", + "globals": "^11.1.0" }, "dependencies": { "globals": { @@ -15202,13 +10836,13 @@ } }, "@babel/types": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.11.tgz", - "integrity": "sha512-ukA9SQtKThINm++CX1CwmliMrE54J6nIYB5XTwL5f/CLFW9owfls+YSU8tVW15RQ2w+a3fSbPjC6HdQNtWZkiA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.7.tgz", + "integrity": "sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.12.11", - "lodash": "^4.17.19", + "@babel/helper-string-parser": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7", "to-fast-properties": "^2.0.0" } }, @@ -15218,16 +10852,6 @@ "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", "dev": true }, - "@cnakazawa/watch": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz", - "integrity": "sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==", - "dev": true, - "requires": { - "exec-sh": "^0.3.2", - "minimist": "^1.2.0" - } - }, "@discoveryjs/json-ext": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.2.tgz", @@ -15235,37 +10859,51 @@ "dev": true }, "@eslint/eslintrc": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.2.2.tgz", - "integrity": "sha512-EfB5OHNYp1F4px/LI/FEnGylop7nOqkQ1LRzCM0KccA2U8tvV8w01KBv37LbO7nW4H+YhKyo2LcJhRwjjV17QQ==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.1.tgz", + "integrity": "sha512-OhSY22oQQdw3zgPOOwdoj01l/Dzl1Z+xyUP33tkSN+aqyEhymJCcPHyXt+ylW8FSe0TfRC2VG+ROQOapD0aZSQ==", "dev": true, "requires": { "ajv": "^6.12.4", - "debug": "^4.1.1", - "espree": "^7.3.0", - "globals": "^12.1.0", - "ignore": "^4.0.6", + "debug": "^4.3.2", + "espree": "^9.4.0", + "globals": "^13.15.0", + "ignore": "^5.2.0", "import-fresh": "^3.2.1", - "js-yaml": "^3.13.1", - "lodash": "^4.17.19", - "minimatch": "^3.0.4", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", "strip-json-comments": "^3.1.1" - }, - "dependencies": { - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true - }, - "strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true - } } }, + "@humanwhocodes/config-array": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.10.4.tgz", + "integrity": "sha512-mXAIHxZT3Vcpg83opl1wGlVZ9xydbfZO3r5YfRSH6Gpp2J/PfdBP0wbDa2sO6/qRbcalpoevVyW6A/fI6LfeMw==", + "dev": true, + "requires": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + } + }, + "@humanwhocodes/gitignore-to-minimatch": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@humanwhocodes/gitignore-to-minimatch/-/gitignore-to-minimatch-1.0.2.tgz", + "integrity": "sha512-rSqmMJDdLFUsyxR6FMtD00nfQKKLFb1kv+qBbOVKqErvloEIJLo5bDTJTQNTYgeyp78JsA7u/NPi5jT1GR/MuA==", + "dev": true + }, + "@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true + }, + "@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, "@istanbuljs/load-nyc-config": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", @@ -15279,21 +10917,24 @@ "resolve-from": "^5.0.0" }, "dependencies": { - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "sprintf-js": "~1.0.2" } }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true + "js-yaml": { + "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", + "esprima": "^4.0.0" + } }, "resolve-from": { "version": "5.0.0", @@ -15304,22 +10945,22 @@ } }, "@istanbuljs/schema": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.2.tgz", - "integrity": "sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw==", + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", "dev": true }, "@jest/console": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-26.6.2.tgz", - "integrity": "sha512-IY1R2i2aLsLr7Id3S6p2BA82GNWryt4oSvEXLAKc+L2zdi89dSkE8xC1C+0kpATG4JhBJREnQOH7/zmccM2B0g==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-28.1.3.tgz", + "integrity": "sha512-QPAkP5EwKdK/bxIr6C1I4Vs0rm2nHiANzj/Z5X2JQkrZo6IqvC4ldZ9K95tF0HdidhA8Bo6egxSzUFPYKcEXLw==", "dev": true, "requires": { - "@jest/types": "^26.6.2", + "@jest/types": "^28.1.3", "@types/node": "*", "chalk": "^4.0.0", - "jest-message-util": "^26.6.2", - "jest-util": "^26.6.2", + "jest-message-util": "^28.1.3", + "jest-util": "^28.1.3", "slash": "^3.0.0" }, "dependencies": { @@ -15333,9 +10974,9 @@ } }, "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "requires": { "ansi-styles": "^4.1.0", @@ -15375,47 +11016,42 @@ } }, "@jest/core": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-26.6.3.tgz", - "integrity": "sha512-xvV1kKbhfUqFVuZ8Cyo+JPpipAHHAV3kcDBftiduK8EICXmTFddryy3P7NfZt8Pv37rA9nEJBKCCkglCPt/Xjw==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-28.1.3.tgz", + "integrity": "sha512-CIKBrlaKOzA7YG19BEqCw3SLIsEwjZkeJzf5bdooVnW4bH5cktqe3JX+G2YV1aK5vP8N9na1IGWFzYaTp6k6NA==", "dev": true, "requires": { - "@jest/console": "^26.6.2", - "@jest/reporters": "^26.6.2", - "@jest/test-result": "^26.6.2", - "@jest/transform": "^26.6.2", - "@jest/types": "^26.6.2", + "@jest/console": "^28.1.3", + "@jest/reporters": "^28.1.3", + "@jest/test-result": "^28.1.3", + "@jest/transform": "^28.1.3", + "@jest/types": "^28.1.3", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", + "ci-info": "^3.2.0", "exit": "^0.1.2", - "graceful-fs": "^4.2.4", - "jest-changed-files": "^26.6.2", - "jest-config": "^26.6.3", - "jest-haste-map": "^26.6.2", - "jest-message-util": "^26.6.2", - "jest-regex-util": "^26.0.0", - "jest-resolve": "^26.6.2", - "jest-resolve-dependencies": "^26.6.3", - "jest-runner": "^26.6.3", - "jest-runtime": "^26.6.3", - "jest-snapshot": "^26.6.2", - "jest-util": "^26.6.2", - "jest-validate": "^26.6.2", - "jest-watcher": "^26.6.2", - "micromatch": "^4.0.2", - "p-each-series": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^28.1.3", + "jest-config": "^28.1.3", + "jest-haste-map": "^28.1.3", + "jest-message-util": "^28.1.3", + "jest-regex-util": "^28.0.2", + "jest-resolve": "^28.1.3", + "jest-resolve-dependencies": "^28.1.3", + "jest-runner": "^28.1.3", + "jest-runtime": "^28.1.3", + "jest-snapshot": "^28.1.3", + "jest-util": "^28.1.3", + "jest-validate": "^28.1.3", + "jest-watcher": "^28.1.3", + "micromatch": "^4.0.4", + "pretty-format": "^28.1.3", "rimraf": "^3.0.0", "slash": "^3.0.0", "strip-ansi": "^6.0.0" }, "dependencies": { - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true - }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -15426,15 +11062,21 @@ } }, "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, + "ci-info": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.2.tgz", + "integrity": "sha512-xmDt/QIAdeZ9+nfdPsaBCpMvHNLFiLdjj59qjqn+6iPe6YmHGQ35sBnQ8uslRBXFmXkiZQOJRjvQeoGppoTjjg==", + "dev": true + }, "color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -15465,15 +11107,6 @@ "glob": "^7.1.3" } }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.0" - } - }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -15486,73 +11119,92 @@ } }, "@jest/environment": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-26.6.2.tgz", - "integrity": "sha512-nFy+fHl28zUrRsCeMB61VDThV1pVTtlEokBRgqPrcT1JNq4yRNIyTHfyht6PqtUvY9IsuLGTrbG8kPXjSZIZwA==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-28.1.3.tgz", + "integrity": "sha512-1bf40cMFTEkKyEf585R9Iz1WayDjHoHqvts0XFYEqyKM3cFWDpeMoqKKTAF9LSYQModPUlh8FKptoM2YcMWAXA==", "dev": true, "requires": { - "@jest/fake-timers": "^26.6.2", - "@jest/types": "^26.6.2", + "@jest/fake-timers": "^28.1.3", + "@jest/types": "^28.1.3", "@types/node": "*", - "jest-mock": "^26.6.2" + "jest-mock": "^28.1.3" + } + }, + "@jest/expect": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-28.1.3.tgz", + "integrity": "sha512-lzc8CpUbSoE4dqT0U+g1qODQjBRHPpCPXissXD4mS9+sWQdmmpeJ9zSH1rS1HEkrsMN0fb7nKrJ9giAR1d3wBw==", + "dev": true, + "requires": { + "expect": "^28.1.3", + "jest-snapshot": "^28.1.3" + } + }, + "@jest/expect-utils": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-28.1.3.tgz", + "integrity": "sha512-wvbi9LUrHJLn3NlDW6wF2hvIMtd4JUl2QNVrjq+IBSHirgfrR3o9RnVtxzdEGO2n9JyIWwHnLfby5KzqBGg2YA==", + "dev": true, + "requires": { + "jest-get-type": "^28.0.2" } }, "@jest/fake-timers": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-26.6.2.tgz", - "integrity": "sha512-14Uleatt7jdzefLPYM3KLcnUl1ZNikaKq34enpb5XG9i81JpppDb5muZvonvKyrl7ftEHkKS5L5/eB/kxJ+bvA==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-28.1.3.tgz", + "integrity": "sha512-D/wOkL2POHv52h+ok5Oj/1gOG9HSywdoPtFsRCUmlCILXNn5eIWmcnd3DIiWlJnpGvQtmajqBP95Ei0EimxfLw==", "dev": true, "requires": { - "@jest/types": "^26.6.2", - "@sinonjs/fake-timers": "^6.0.1", + "@jest/types": "^28.1.3", + "@sinonjs/fake-timers": "^9.1.2", "@types/node": "*", - "jest-message-util": "^26.6.2", - "jest-mock": "^26.6.2", - "jest-util": "^26.6.2" + "jest-message-util": "^28.1.3", + "jest-mock": "^28.1.3", + "jest-util": "^28.1.3" } }, "@jest/globals": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-26.6.2.tgz", - "integrity": "sha512-85Ltnm7HlB/KesBUuALwQ68YTU72w9H2xW9FjZ1eL1U3lhtefjjl5c2MiUbpXt/i6LaPRvoOFJ22yCBSfQ0JIA==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-28.1.3.tgz", + "integrity": "sha512-XFU4P4phyryCXu1pbcqMO0GSQcYe1IsalYCDzRNyhetyeyxMcIxa11qPNDpVNLeretItNqEmYYQn1UYz/5x1NA==", "dev": true, "requires": { - "@jest/environment": "^26.6.2", - "@jest/types": "^26.6.2", - "expect": "^26.6.2" + "@jest/environment": "^28.1.3", + "@jest/expect": "^28.1.3", + "@jest/types": "^28.1.3" } }, "@jest/reporters": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-26.6.2.tgz", - "integrity": "sha512-h2bW53APG4HvkOnVMo8q3QXa6pcaNt1HkwVsOPMBV6LD/q9oSpxNSYZQYkAnjdMjrJ86UuYeLo+aEZClV6opnw==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-28.1.3.tgz", + "integrity": "sha512-JuAy7wkxQZVNU/V6g9xKzCGC5LVXx9FDcABKsSXp5MiKPEE2144a/vXTEDoyzjUpZKfVwp08Wqg5A4WfTMAzjg==", "dev": true, "requires": { "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^26.6.2", - "@jest/test-result": "^26.6.2", - "@jest/transform": "^26.6.2", - "@jest/types": "^26.6.2", + "@jest/console": "^28.1.3", + "@jest/test-result": "^28.1.3", + "@jest/transform": "^28.1.3", + "@jest/types": "^28.1.3", + "@jridgewell/trace-mapping": "^0.3.13", + "@types/node": "*", "chalk": "^4.0.0", "collect-v8-coverage": "^1.0.0", "exit": "^0.1.2", - "glob": "^7.1.2", - "graceful-fs": "^4.2.4", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^4.0.3", + "istanbul-lib-instrument": "^5.1.0", "istanbul-lib-report": "^3.0.0", "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.0.2", - "jest-haste-map": "^26.6.2", - "jest-resolve": "^26.6.2", - "jest-util": "^26.6.2", - "jest-worker": "^26.6.2", - "node-notifier": "^8.0.0", + "istanbul-reports": "^3.1.3", + "jest-message-util": "^28.1.3", + "jest-util": "^28.1.3", + "jest-worker": "^28.1.3", "slash": "^3.0.0", - "source-map": "^0.6.0", "string-length": "^4.0.1", + "strip-ansi": "^6.0.0", "terminal-link": "^2.0.0", - "v8-to-istanbul": "^7.0.0" + "v8-to-istanbul": "^9.0.1" }, "dependencies": { "ansi-styles": { @@ -15565,9 +11217,9 @@ } }, "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "requires": { "ansi-styles": "^4.1.0", @@ -15606,63 +11258,71 @@ } } }, + "@jest/schemas": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-28.1.3.tgz", + "integrity": "sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg==", + "dev": true, + "requires": { + "@sinclair/typebox": "^0.24.1" + } + }, "@jest/source-map": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-26.6.2.tgz", - "integrity": "sha512-YwYcCwAnNmOVsZ8mr3GfnzdXDAl4LaenZP5z+G0c8bzC9/dugL8zRmxZzdoTl4IaS3CryS1uWnROLPFmb6lVvA==", + "version": "28.1.2", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-28.1.2.tgz", + "integrity": "sha512-cV8Lx3BeStJb8ipPHnqVw/IM2VCMWO3crWZzYodSIkxXnRcXJipCdx1JCK0K5MsJJouZQTH73mzf4vgxRaH9ww==", "dev": true, "requires": { + "@jridgewell/trace-mapping": "^0.3.13", "callsites": "^3.0.0", - "graceful-fs": "^4.2.4", - "source-map": "^0.6.0" + "graceful-fs": "^4.2.9" } }, "@jest/test-result": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-26.6.2.tgz", - "integrity": "sha512-5O7H5c/7YlojphYNrK02LlDIV2GNPYisKwHm2QTKjNZeEzezCbwYs9swJySv2UfPMyZ0VdsmMv7jIlD/IKYQpQ==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-28.1.3.tgz", + "integrity": "sha512-kZAkxnSE+FqE8YjW8gNuoVkkC9I7S1qmenl8sGcDOLropASP+BkcGKwhXoyqQuGOGeYY0y/ixjrd/iERpEXHNg==", "dev": true, "requires": { - "@jest/console": "^26.6.2", - "@jest/types": "^26.6.2", + "@jest/console": "^28.1.3", + "@jest/types": "^28.1.3", "@types/istanbul-lib-coverage": "^2.0.0", "collect-v8-coverage": "^1.0.0" } }, "@jest/test-sequencer": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-26.6.3.tgz", - "integrity": "sha512-YHlVIjP5nfEyjlrSr8t/YdNfU/1XEt7c5b4OxcXCjyRhjzLYu/rO69/WHPuYcbCWkz8kAeZVZp2N2+IOLLEPGw==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-28.1.3.tgz", + "integrity": "sha512-NIMPEqqa59MWnDi1kvXXpYbqsfQmSJsIbnd85mdVGkiDfQ9WQQTXOLsvISUfonmnBT+w85WEgneCigEEdHDFxw==", "dev": true, "requires": { - "@jest/test-result": "^26.6.2", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^26.6.2", - "jest-runner": "^26.6.3", - "jest-runtime": "^26.6.3" + "@jest/test-result": "^28.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^28.1.3", + "slash": "^3.0.0" } }, "@jest/transform": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-26.6.2.tgz", - "integrity": "sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-28.1.3.tgz", + "integrity": "sha512-u5dT5di+oFI6hfcLOHGTAfmUxFRrjK+vnaP0kkVow9Md/M7V/MxqQMOz/VV25UZO8pzeA9PjfTpOu6BDuwSPQA==", "dev": true, "requires": { - "@babel/core": "^7.1.0", - "@jest/types": "^26.6.2", - "babel-plugin-istanbul": "^6.0.0", + "@babel/core": "^7.11.6", + "@jest/types": "^28.1.3", + "@jridgewell/trace-mapping": "^0.3.13", + "babel-plugin-istanbul": "^6.1.1", "chalk": "^4.0.0", "convert-source-map": "^1.4.0", "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^26.6.2", - "jest-regex-util": "^26.0.0", - "jest-util": "^26.6.2", - "micromatch": "^4.0.2", - "pirates": "^4.0.1", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^28.1.3", + "jest-regex-util": "^28.0.2", + "jest-util": "^28.1.3", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", "slash": "^3.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "^3.0.0" + "write-file-atomic": "^4.0.1" }, "dependencies": { "ansi-styles": { @@ -15675,9 +11335,9 @@ } }, "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "requires": { "ansi-styles": "^4.1.0", @@ -15717,15 +11377,16 @@ } }, "@jest/types": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", - "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz", + "integrity": "sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==", "dev": true, "requires": { + "@jest/schemas": "^28.1.3", "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", "@types/node": "*", - "@types/yargs": "^15.0.0", + "@types/yargs": "^17.0.8", "chalk": "^4.0.0" }, "dependencies": { @@ -15739,9 +11400,9 @@ } }, "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "requires": { "ansi-styles": "^4.1.0", @@ -15775,65 +11436,148 @@ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { - "has-flag": "^4.0.0" + "has-flag": "^4.0.0" + } + } + } + }, + "@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true + }, + "@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true + }, + "@jridgewell/source-map": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", + "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", + "dev": true, + "requires": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true + }, + "@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "@leichtgewicht/ip-codec": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz", + "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==", + "dev": true + }, + "@mapbox/node-pre-gyp": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.9.tgz", + "integrity": "sha512-aDF3S3rK9Q2gey/WAttUlISduDItz5BU3306M9Eyv6/oS40aMprnopshtlKTykxRNIBEZuRMaZAnbrQ4QtKGyw==", + "dev": true, + "requires": { + "detect-libc": "^2.0.0", + "https-proxy-agent": "^5.0.0", + "make-dir": "^3.1.0", + "node-fetch": "^2.6.7", + "nopt": "^5.0.0", + "npmlog": "^5.0.1", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.11" + }, + "dependencies": { + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" } } } }, "@nodelib/fs.scandir": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz", - "integrity": "sha512-33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA==", + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, "requires": { - "@nodelib/fs.stat": "2.0.4", + "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" } }, "@nodelib/fs.stat": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz", - "integrity": "sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true }, "@nodelib/fs.walk": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.6.tgz", - "integrity": "sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow==", + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, "requires": { - "@nodelib/fs.scandir": "2.1.4", + "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" } }, + "@sinclair/typebox": { + "version": "0.24.28", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.28.tgz", + "integrity": "sha512-dgJd3HLOkLmz4Bw50eZx/zJwtBq65nms3N9VBYu5LTjJ883oBFkTyXRlCB/ZGGwqYpJJHA5zW2Ibhl5ngITfow==", + "dev": true + }, "@sinonjs/commons": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.1.tgz", - "integrity": "sha512-892K+kWUUi3cl+LlqEWIDrhvLgdL79tECi8JZUyq6IviKy/DNhuzCRlbHUjxK89f4ypPMMaFnFuR9Ie6DoIMsw==", + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", + "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", "dev": true, "requires": { "type-detect": "4.0.8" } }, "@sinonjs/fake-timers": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz", - "integrity": "sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA==", + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-9.1.2.tgz", + "integrity": "sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw==", "dev": true, "requires": { "@sinonjs/commons": "^1.7.0" } }, - "@types/anymatch": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@types/anymatch/-/anymatch-1.3.1.tgz", - "integrity": "sha512-/+CRPXpBDpo2RK9C68N3b2cOvO0Cf5B9aPijHsoDQTHivnGSObdOF2BRQOYjojWTDy6nQvMjmqRXIxH55VjxxA==", - "dev": true - }, "@types/babel__core": { - "version": "7.1.12", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.12.tgz", - "integrity": "sha512-wMTHiiTiBAAPebqaPiPDLFA4LYPKr6Ph0Xq/6rq1Ur3v66HXyG+clfR9CNETkD7MQS8ZHvpQOtA53DLws5WAEQ==", + "version": "7.1.19", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.19.tgz", + "integrity": "sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==", "dev": true, "requires": { "@babel/parser": "^7.1.0", @@ -15844,18 +11588,18 @@ } }, "@types/babel__generator": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.2.tgz", - "integrity": "sha512-MdSJnBjl+bdwkLskZ3NGFp9YcXGx5ggLpQQPqtgakVhsWK0hTtNYhjpZLlWQTviGTvF8at+Bvli3jV7faPdgeQ==", + "version": "7.6.4", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", + "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", "dev": true, "requires": { "@babel/types": "^7.0.0" } }, "@types/babel__template": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.0.tgz", - "integrity": "sha512-NTPErx4/FiPCGScH7foPyr+/1Dkzkni+rHiYHHoTjvwou7AQzJkNeD60A9CXRy+ZEN2B1bggmkTMCDb+Mv5k+A==", + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", + "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", "dev": true, "requires": { "@babel/parser": "^7.1.0", @@ -15863,18 +11607,56 @@ } }, "@types/babel__traverse": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.11.0.tgz", - "integrity": "sha512-kSjgDMZONiIfSH1Nxcr5JIRMwUetDki63FSQfpTCz8ogF3Ulqm8+mr5f78dUYs6vMiB6gBusQqfQmBvHZj/lwg==", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.0.tgz", + "integrity": "sha512-v4Vwdko+pgymgS+A2UIaJru93zQd85vIGWObM5ekZNdXCKtDYqATlEYnWgfo86Q6I1Lh0oXnksDnMU1cwmlPDw==", "dev": true, "requires": { "@babel/types": "^7.3.0" } }, + "@types/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "dev": true, + "requires": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "@types/bonjour": { + "version": "3.5.10", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.10.tgz", + "integrity": "sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/connect": { + "version": "3.4.35", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", + "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/connect-history-api-fallback": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz", + "integrity": "sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==", + "dev": true, + "requires": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, "@types/eslint": { - "version": "7.2.6", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.2.6.tgz", - "integrity": "sha512-I+1sYH+NPQ3/tVqCeUSBwTE/0heyvtXqpIopUUArlBm0Kpocb8FbMa3AZ/ASKIFpN3rnEx932TTXDbt9OXsNDw==", + "version": "8.4.6", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.6.tgz", + "integrity": "sha512-/fqTbjxyFUaYNO7VcW5g+4npmqVACz1bB7RTHYuLj+PRjw9hrCwrUXVQFpChUS0JsyEFvMZ7U/PfmvWgxJhI9g==", "dev": true, "requires": { "@types/estree": "*", @@ -15882,9 +11664,9 @@ } }, "@types/eslint-scope": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.0.tgz", - "integrity": "sha512-O/ql2+rrCUe2W2rs7wMR+GqPRcgB6UiqN5RhrR5xruFlY7l9YLMn0ZkDzjoHLeiFkR8MCQZVudUuuvQ2BLC9Qw==", + "version": "3.7.4", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", + "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", "dev": true, "requires": { "@types/eslint": "*", @@ -15892,11 +11674,34 @@ } }, "@types/estree": { - "version": "0.0.45", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.45.tgz", - "integrity": "sha512-jnqIUKDUqJbDIUxm0Uj7bnlMnRm1T/eZ9N+AVMqhPgzrba2GhGG5o/jCTwmdPK709nEZsGoMzXEDUjcXHa3W0g==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", "dev": true }, + "@types/express": { + "version": "4.17.13", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", + "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", + "dev": true, + "requires": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.18", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "@types/express-serve-static-core": { + "version": "4.17.30", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.30.tgz", + "integrity": "sha512-gstzbTWro2/nFed1WXtf+TtrpwxH7Ggs4RLYTLbeVgIkUQOI3WG/JKjgeOU1zXDvezllupjrf8OPIdvTbIaVOQ==", + "dev": true, + "requires": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*" + } + }, "@types/glob": { "version": "7.1.3", "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz", @@ -15908,20 +11713,29 @@ } }, "@types/graceful-fs": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.4.tgz", - "integrity": "sha512-mWA/4zFQhfvOA8zWkXobwJvBD7vzcxgrOQ0J5CH1votGqdq9m7+FwtGaqyCZqC3NyyBkc9z4m+iry4LlqcMWJg==", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", + "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==", "dev": true, "requires": { "@types/node": "*" } }, "@types/html-minifier-terser": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz", - "integrity": "sha512-giAlZwstKbmvMk1OO7WXSj4OZ0keXAcl2TQq4LWHiiPH2ByaH7WeUzng+Qej8UPxxv+8lRTuouo0iaNDBuzIBA==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==", "dev": true }, + "@types/http-proxy": { + "version": "1.17.9", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.9.tgz", + "integrity": "sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, "@types/istanbul-lib-coverage": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz", @@ -15938,28 +11752,24 @@ } }, "@types/istanbul-reports": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz", - "integrity": "sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", "dev": true, "requires": { "@types/istanbul-lib-report": "*" } }, - "@types/jest": { - "version": "26.0.19", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-26.0.19.tgz", - "integrity": "sha512-jqHoirTG61fee6v6rwbnEuKhpSKih0tuhqeFbCmMmErhtu3BYlOZaXWjffgOstMM4S/3iQD31lI5bGLTrs97yQ==", - "dev": true, - "requires": { - "jest-diff": "^26.0.0", - "pretty-format": "^26.0.0" - } - }, "@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==", + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "dev": true + }, + "@types/mime": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz", + "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==", "dev": true }, "@types/minimatch": { @@ -15974,82 +11784,77 @@ "integrity": "sha512-UHnOPWVWV1z+VV8k6L1HhG7UbGBgIdghqF3l9Ny9ApPghbjICXkUJSd/b9gOgQfjM1r+37cipdw/HJ3F6ICEnQ==", "dev": true }, - "@types/normalize-package-data": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==", - "dev": true - }, "@types/prettier": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.1.5.tgz", - "integrity": "sha512-UEyp8LwZ4Dg30kVU2Q3amHHyTn1jEdhCIE59ANed76GaT1Vp76DD3ZWSAxgCrw6wJ0TqeoBpqmfUHiUDPs//HQ==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.0.tgz", + "integrity": "sha512-RI1L7N4JnW5gQw2spvL7Sllfuf1SaHdrZpCHiBlCXjIlufi1SMNnbu2teze3/QE67Fg2tBlH7W+mi4hVNk4p0A==", "dev": true }, - "@types/source-list-map": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@types/source-list-map/-/source-list-map-0.1.2.tgz", - "integrity": "sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA==", + "@types/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", "dev": true }, - "@types/stack-utils": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.0.tgz", - "integrity": "sha512-RJJrrySY7A8havqpGObOB4W92QXKJo63/jFLLgpvOtsGUqbQZ9Sbgl35KMm1DjC6j7AvmmU2bIno+3IyEaemaw==", + "@types/range-parser": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", "dev": true }, - "@types/tapable": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@types/tapable/-/tapable-1.0.6.tgz", - "integrity": "sha512-W+bw9ds02rAQaMvaLYxAbJ6cvguW/iJXNT6lTssS1ps6QdrMKttqEAMEG/b5CR8TZl3/L7/lH0ZV5nNR1LXikA==", + "@types/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", "dev": true }, - "@types/uglify-js": { - "version": "3.11.1", - "resolved": "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.11.1.tgz", - "integrity": "sha512-7npvPKV+jINLu1SpSYVWG8KvyJBhBa8tmzMMdDoVc2pWUYHN8KIXlPJhjJ4LT97c4dXJA2SHL/q6ADbDriZN+Q==", + "@types/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==", "dev": true, "requires": { - "source-map": "^0.6.1" + "@types/express": "*" } }, - "@types/webpack": { - "version": "4.41.25", - "resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.25.tgz", - "integrity": "sha512-cr6kZ+4m9lp86ytQc1jPOJXgINQyz3kLLunZ57jznW+WIAL0JqZbGubQk4GlD42MuQL5JGOABrxdpqqWeovlVQ==", + "@types/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==", "dev": true, "requires": { - "@types/anymatch": "*", - "@types/node": "*", - "@types/tapable": "*", - "@types/uglify-js": "*", - "@types/webpack-sources": "*", - "source-map": "^0.6.0" + "@types/mime": "*", + "@types/node": "*" } }, - "@types/webpack-sources": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-2.1.0.tgz", - "integrity": "sha512-LXn/oYIpBeucgP1EIJbKQ2/4ZmpvRl+dlrFdX7+94SKRUV3Evy3FsfMZY318vGhkWUS5MPhtOM3w1/hCOAOXcg==", + "@types/sockjs": { + "version": "0.3.33", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz", + "integrity": "sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==", "dev": true, "requires": { - "@types/node": "*", - "@types/source-list-map": "*", - "source-map": "^0.7.3" - }, - "dependencies": { - "source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true - } + "@types/node": "*" + } + }, + "@types/stack-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", + "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", + "dev": true + }, + "@types/ws": { + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz", + "integrity": "sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==", + "dev": true, + "requires": { + "@types/node": "*" } }, "@types/yargs": { - "version": "15.0.12", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.12.tgz", - "integrity": "sha512-f+fD/fQAo3BCbCDlrUpznF1A5Zp9rB0noS5vnoormHSIPFKL0Z2DcUJ3Gxp5ytH4uLRNxy7AwYUC9exZzqGMAw==", + "version": "17.0.11", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.11.tgz", + "integrity": "sha512-aB4y9UDUXTSMxmM4MH+YnuR0g5Cph3FLQBoWoMB21DSvFVAxRVEHEMx3TLh+zUZYMCQtKiqazz0Q4Rre31f/OA==", "dev": true, "requires": { "@types/yargs-parser": "*" @@ -16062,77 +11867,74 @@ "dev": true }, "@typescript-eslint/eslint-plugin": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.13.0.tgz", - "integrity": "sha512-ygqDUm+BUPvrr0jrXqoteMqmIaZ/bixYOc3A4BRwzEPTZPi6E+n44rzNZWaB0YvtukgP+aoj0i/fyx7FkM2p1w==", + "version": "5.35.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.35.1.tgz", + "integrity": "sha512-RBZZXZlI4XCY4Wzgy64vB+0slT9+yAPQRjj/HSaRwUot33xbDjF1oN9BLwOLTewoOI0jothIltZRe9uJCHf8gg==", "dev": true, "requires": { - "@typescript-eslint/experimental-utils": "4.13.0", - "@typescript-eslint/scope-manager": "4.13.0", - "debug": "^4.1.1", + "@typescript-eslint/scope-manager": "5.35.1", + "@typescript-eslint/type-utils": "5.35.1", + "@typescript-eslint/utils": "5.35.1", + "debug": "^4.3.4", "functional-red-black-tree": "^1.0.1", - "lodash": "^4.17.15", - "regexpp": "^3.0.0", - "semver": "^7.3.2", - "tsutils": "^3.17.1" + "ignore": "^5.2.0", + "regexpp": "^3.2.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" } }, - "@typescript-eslint/experimental-utils": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.13.0.tgz", - "integrity": "sha512-/ZsuWmqagOzNkx30VWYV3MNB/Re/CGv/7EzlqZo5RegBN8tMuPaBgNK6vPBCQA8tcYrbsrTdbx3ixMRRKEEGVw==", + "@typescript-eslint/parser": { + "version": "5.35.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.35.1.tgz", + "integrity": "sha512-XL2TBTSrh3yWAsMYpKseBYTVpvudNf69rPOWXWVBI08My2JVT5jR66eTt4IgQFHA/giiKJW5dUD4x/ZviCKyGg==", "dev": true, "requires": { - "@types/json-schema": "^7.0.3", - "@typescript-eslint/scope-manager": "4.13.0", - "@typescript-eslint/types": "4.13.0", - "@typescript-eslint/typescript-estree": "4.13.0", - "eslint-scope": "^5.0.0", - "eslint-utils": "^2.0.0" + "@typescript-eslint/scope-manager": "5.35.1", + "@typescript-eslint/types": "5.35.1", + "@typescript-eslint/typescript-estree": "5.35.1", + "debug": "^4.3.4" } }, - "@typescript-eslint/parser": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.13.0.tgz", - "integrity": "sha512-KO0J5SRF08pMXzq9+abyHnaGQgUJZ3Z3ax+pmqz9vl81JxmTTOUfQmq7/4awVfq09b6C4owNlOgOwp61pYRBSg==", + "@typescript-eslint/scope-manager": { + "version": "5.35.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.35.1.tgz", + "integrity": "sha512-kCYRSAzIW9ByEIzmzGHE50NGAvAP3wFTaZevgWva7GpquDyFPFcmvVkFJGWJJktg/hLwmys/FZwqM9EKr2u24Q==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "4.13.0", - "@typescript-eslint/types": "4.13.0", - "@typescript-eslint/typescript-estree": "4.13.0", - "debug": "^4.1.1" + "@typescript-eslint/types": "5.35.1", + "@typescript-eslint/visitor-keys": "5.35.1" } }, - "@typescript-eslint/scope-manager": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.13.0.tgz", - "integrity": "sha512-UpK7YLG2JlTp/9G4CHe7GxOwd93RBf3aHO5L+pfjIrhtBvZjHKbMhBXTIQNkbz7HZ9XOe++yKrXutYm5KmjWgQ==", + "@typescript-eslint/type-utils": { + "version": "5.35.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.35.1.tgz", + "integrity": "sha512-8xT8ljvo43Mp7BiTn1vxLXkjpw8wS4oAc00hMSB4L1/jIiYbjjnc3Qp2GAUOG/v8zsNCd1qwcqfCQ0BuishHkw==", "dev": true, "requires": { - "@typescript-eslint/types": "4.13.0", - "@typescript-eslint/visitor-keys": "4.13.0" + "@typescript-eslint/utils": "5.35.1", + "debug": "^4.3.4", + "tsutils": "^3.21.0" } }, "@typescript-eslint/types": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.13.0.tgz", - "integrity": "sha512-/+aPaq163oX+ObOG00M0t9tKkOgdv9lq0IQv/y4SqGkAXmhFmCfgsELV7kOCTb2vVU5VOmVwXBXJTDr353C1rQ==", + "version": "5.35.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.35.1.tgz", + "integrity": "sha512-FDaujtsH07VHzG0gQ6NDkVVhi1+rhq0qEvzHdJAQjysN+LHDCKDKCBRlZFFE0ec0jKxiv0hN63SNfExy0KrbQQ==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.13.0.tgz", - "integrity": "sha512-9A0/DFZZLlGXn5XA349dWQFwPZxcyYyCFX5X88nWs2uachRDwGeyPz46oTsm9ZJE66EALvEns1lvBwa4d9QxMg==", + "version": "5.35.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.35.1.tgz", + "integrity": "sha512-JUqE1+VRTGyoXlDWWjm6MdfpBYVq+hixytrv1oyjYIBEOZhBCwtpp5ZSvBt4wIA1MKWlnaC2UXl2XmYGC3BoQA==", "dev": true, "requires": { - "@typescript-eslint/types": "4.13.0", - "@typescript-eslint/visitor-keys": "4.13.0", - "debug": "^4.1.1", - "globby": "^11.0.1", - "is-glob": "^4.0.1", - "lodash": "^4.17.15", - "semver": "^7.3.2", - "tsutils": "^3.17.1" + "@typescript-eslint/types": "5.35.1", + "@typescript-eslint/visitor-keys": "5.35.1", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" }, "dependencies": { "array-union": { @@ -16142,190 +11944,211 @@ "dev": true }, "globby": { - "version": "11.0.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.2.tgz", - "integrity": "sha512-2ZThXDvvV8fYFRVIxnrMQBipZQDr7MxKAmQK1vujaj9/7eF0efG7BPUKJ7jP7G5SLF37xKDXvO4S/KKLj/Z0og==", + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dev": true, "requires": { "array-union": "^2.1.0", "dir-glob": "^3.0.1", - "fast-glob": "^3.1.1", - "ignore": "^5.1.4", - "merge2": "^1.3.0", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", "slash": "^3.0.0" } } } }, + "@typescript-eslint/utils": { + "version": "5.35.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.35.1.tgz", + "integrity": "sha512-v6F8JNXgeBWI4pzZn36hT2HXXzoBBBJuOYvoQiaQaEEjdi5STzux3Yj8v7ODIpx36i/5s8TdzuQ54TPc5AITQQ==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "@typescript-eslint/scope-manager": "5.35.1", + "@typescript-eslint/types": "5.35.1", + "@typescript-eslint/typescript-estree": "5.35.1", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" + } + }, "@typescript-eslint/visitor-keys": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.13.0.tgz", - "integrity": "sha512-6RoxWK05PAibukE7jElqAtNMq+RWZyqJ6Q/GdIxaiUj2Ept8jh8+FUVlbq9WxMYxkmEOPvCE5cRSyupMpwW31g==", + "version": "5.35.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.35.1.tgz", + "integrity": "sha512-cEB1DvBVo1bxbW/S5axbGPE6b7FIMAbo3w+AGq6zNDA7+NYJOIkKj/sInfTv4edxd4PxJSgdN4t6/pbvgA+n5g==", "dev": true, "requires": { - "@typescript-eslint/types": "4.13.0", - "eslint-visitor-keys": "^2.0.0" + "@typescript-eslint/types": "5.35.1", + "eslint-visitor-keys": "^3.3.0" } }, "@webassemblyjs/ast": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.0.tgz", - "integrity": "sha512-kX2W49LWsbthrmIRMbQZuQDhGtjyqXfEmmHyEi4XWnSZtPmxY0+3anPIzsnRb45VH/J55zlOfWvZuY47aJZTJg==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", + "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==", "dev": true, "requires": { - "@webassemblyjs/helper-numbers": "1.11.0", - "@webassemblyjs/helper-wasm-bytecode": "1.11.0" + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" } }, "@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.0.tgz", - "integrity": "sha512-Q/aVYs/VnPDVYvsCBL/gSgwmfjeCb4LW8+TMrO3cSzJImgv8lxxEPM2JA5jMrivE7LSz3V+PFqtMbls3m1exDA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", "dev": true }, "@webassemblyjs/helper-api-error": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.0.tgz", - "integrity": "sha512-baT/va95eXiXb2QflSx95QGT5ClzWpGaa8L7JnJbgzoYeaA27FCvuBXU758l+KXWRndEmUXjP0Q5fibhavIn8w==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", "dev": true }, "@webassemblyjs/helper-buffer": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.0.tgz", - "integrity": "sha512-u9HPBEl4DS+vA8qLQdEQ6N/eJQ7gT7aNvMIo8AAWvAl/xMrcOSiI2M0MAnMCy3jIFke7bEee/JwdX1nUpCtdyA==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz", + "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==", "dev": true }, "@webassemblyjs/helper-numbers": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.0.tgz", - "integrity": "sha512-DhRQKelIj01s5IgdsOJMKLppI+4zpmcMQ3XboFPLwCpSNH6Hqo1ritgHgD0nqHeSYqofA6aBN/NmXuGjM1jEfQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", "dev": true, "requires": { - "@webassemblyjs/floating-point-hex-parser": "1.11.0", - "@webassemblyjs/helper-api-error": "1.11.0", + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", "@xtuc/long": "4.2.2" } }, "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.0.tgz", - "integrity": "sha512-MbmhvxXExm542tWREgSFnOVo07fDpsBJg3sIl6fSp9xuu75eGz5lz31q7wTLffwL3Za7XNRCMZy210+tnsUSEA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", "dev": true }, "@webassemblyjs/helper-wasm-section": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.0.tgz", - "integrity": "sha512-3Eb88hcbfY/FCukrg6i3EH8H2UsD7x8Vy47iVJrP967A9JGqgBVL9aH71SETPx1JrGsOUVLo0c7vMCN22ytJew==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz", + "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.11.0", - "@webassemblyjs/helper-buffer": "1.11.0", - "@webassemblyjs/helper-wasm-bytecode": "1.11.0", - "@webassemblyjs/wasm-gen": "1.11.0" + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.12.1" } }, "@webassemblyjs/ieee754": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.0.tgz", - "integrity": "sha512-KXzOqpcYQwAfeQ6WbF6HXo+0udBNmw0iXDmEK5sFlmQdmND+tr773Ti8/5T/M6Tl/413ArSJErATd8In3B+WBA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", "dev": true, "requires": { "@xtuc/ieee754": "^1.2.0" } }, "@webassemblyjs/leb128": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.0.tgz", - "integrity": "sha512-aqbsHa1mSQAbeeNcl38un6qVY++hh8OpCOzxhixSYgbRfNWcxJNJQwe2rezK9XEcssJbbWIkblaJRwGMS9zp+g==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", "dev": true, "requires": { "@xtuc/long": "4.2.2" } }, "@webassemblyjs/utf8": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.0.tgz", - "integrity": "sha512-A/lclGxH6SpSLSyFowMzO/+aDEPU4hvEiooCMXQPcQFPPJaYcPQNKGOCLUySJsYJ4trbpr+Fs08n4jelkVTGVw==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", "dev": true }, "@webassemblyjs/wasm-edit": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.0.tgz", - "integrity": "sha512-JHQ0damXy0G6J9ucyKVXO2j08JVJ2ntkdJlq1UTiUrIgfGMmA7Ik5VdC/L8hBK46kVJgujkBIoMtT8yVr+yVOQ==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz", + "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.11.0", - "@webassemblyjs/helper-buffer": "1.11.0", - "@webassemblyjs/helper-wasm-bytecode": "1.11.0", - "@webassemblyjs/helper-wasm-section": "1.11.0", - "@webassemblyjs/wasm-gen": "1.11.0", - "@webassemblyjs/wasm-opt": "1.11.0", - "@webassemblyjs/wasm-parser": "1.11.0", - "@webassemblyjs/wast-printer": "1.11.0" + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-opt": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1", + "@webassemblyjs/wast-printer": "1.12.1" } }, "@webassemblyjs/wasm-gen": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.0.tgz", - "integrity": "sha512-BEUv1aj0WptCZ9kIS30th5ILASUnAPEvE3tVMTrItnZRT9tXCLW2LEXT8ezLw59rqPP9klh9LPmpU+WmRQmCPQ==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz", + "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.11.0", - "@webassemblyjs/helper-wasm-bytecode": "1.11.0", - "@webassemblyjs/ieee754": "1.11.0", - "@webassemblyjs/leb128": "1.11.0", - "@webassemblyjs/utf8": "1.11.0" + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" } }, "@webassemblyjs/wasm-opt": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.0.tgz", - "integrity": "sha512-tHUSP5F4ywyh3hZ0+fDQuWxKx3mJiPeFufg+9gwTpYp324mPCQgnuVKwzLTZVqj0duRDovnPaZqDwoyhIO8kYg==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz", + "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.11.0", - "@webassemblyjs/helper-buffer": "1.11.0", - "@webassemblyjs/wasm-gen": "1.11.0", - "@webassemblyjs/wasm-parser": "1.11.0" + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1" } }, "@webassemblyjs/wasm-parser": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.0.tgz", - "integrity": "sha512-6L285Sgu9gphrcpDXINvm0M9BskznnzJTE7gYkjDbxET28shDqp27wpruyx3C2S/dvEwiigBwLA1cz7lNUi0kw==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz", + "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.11.0", - "@webassemblyjs/helper-api-error": "1.11.0", - "@webassemblyjs/helper-wasm-bytecode": "1.11.0", - "@webassemblyjs/ieee754": "1.11.0", - "@webassemblyjs/leb128": "1.11.0", - "@webassemblyjs/utf8": "1.11.0" + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" } }, "@webassemblyjs/wast-printer": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.0.tgz", - "integrity": "sha512-Fg5OX46pRdTgB7rKIUojkh9vXaVN6sGYCnEiJN1GYkb0RPwShZXp6KTDqmoMdQPKhcroOXh3fEzmkWmCYaKYhQ==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz", + "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.11.0", + "@webassemblyjs/ast": "1.12.1", "@xtuc/long": "4.2.2" } }, + "@webpack-cli/configtest": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.2.0.tgz", + "integrity": "sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg==", + "dev": true, + "requires": {} + }, "@webpack-cli/info": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.2.1.tgz", - "integrity": "sha512-fLnDML5HZ5AEKzHul8xLAksoKN2cibu6MgonkUj8R9V7bbeVRkd1XbGEGWrAUNYHbX1jcqCsDEpBviE5StPMzQ==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.5.0.tgz", + "integrity": "sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ==", "dev": true, "requires": { "envinfo": "^7.7.3" } }, "@webpack-cli/serve": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.2.1.tgz", - "integrity": "sha512-Zj1z6AyS+vqV6Hfi7ngCjFGdHV5EwZNIHo6QfFTNe9PyW+zBU1zJ9BiOW1pmUEq950RC4+Dym6flyA/61/vhyw==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.7.0.tgz", + "integrity": "sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q==", "dev": true, "requires": {} }, @@ -16341,12 +12164,6 @@ "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", "dev": true }, - "abab": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", - "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==", - "dev": true - }, "abbrev": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", @@ -16354,43 +12171,43 @@ "dev": true }, "accepts": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", - "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", "dev": true, "requires": { - "mime-types": "~2.1.24", - "negotiator": "0.6.2" + "mime-types": "~2.1.34", + "negotiator": "0.6.3" } }, "acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.0.tgz", + "integrity": "sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw==", "dev": true }, - "acorn-globals": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", - "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", + "acorn-import-attributes": { + "version": "1.9.5", + "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", + "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", "dev": true, - "requires": { - "acorn": "^7.1.1", - "acorn-walk": "^7.1.1" - } + "requires": {} }, "acorn-jsx": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", - "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, "requires": {} }, - "acorn-walk": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", - "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", - "dev": true + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "requires": { + "debug": "4" + } }, "ajv": { "version": "6.12.6", @@ -16404,12 +12221,34 @@ "uri-js": "^4.2.2" } }, - "ajv-errors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", - "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", + "ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", "dev": true, - "requires": {} + "requires": { + "ajv": "^8.0.0" + }, + "dependencies": { + "ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + } + } }, "ajv-keywords": { "version": "3.5.2", @@ -16418,39 +12257,33 @@ "dev": true, "requires": {} }, - "ansi-colors": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", - "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==", - "dev": true - }, "ansi-escapes": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", - "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "dev": true, "requires": { - "type-fest": "^0.11.0" + "type-fest": "^0.21.3" }, "dependencies": { "type-fest": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", - "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==", + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "dev": true } } }, - "ansi-html": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", - "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=", + "ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", "dev": true }, "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true }, "ansi-styles": { @@ -16463,9 +12296,9 @@ } }, "anymatch": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", - "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", "dev": true, "requires": { "normalize-path": "^3.0.0", @@ -16473,166 +12306,73 @@ } }, "aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", "dev": true }, "are-we-there-yet": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", - "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", - "dev": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true - }, - "arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", - "dev": true - }, - "array-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", - "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", - "dev": true - }, - "array-flatten": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", - "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", - "dev": true - }, - "array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", - "dev": true, - "requires": { - "array-uniq": "^1.0.1" - } - }, - "array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true - }, - "asn1": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", - "dev": true, - "requires": { - "safer-buffer": "~2.1.0" - } - }, - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true - }, - "assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", - "dev": true - }, - "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 - }, - "async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", + "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", "dev": true, "requires": { - "lodash": "^4.17.14" - } - }, - "async-each": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", - "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", - "dev": true - }, - "async-limiter": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", - "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", - "dev": true + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true }, - "atob": { + "array-flatten": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", "dev": true }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", - "dev": true + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "requires": { + "array-uniq": "^1.0.1" + } }, - "aws4": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", - "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", "dev": true }, "babel-jest": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-26.6.3.tgz", - "integrity": "sha512-pl4Q+GAVOHwvjrck6jKjvmGhnO3jHX/xuB9d27f+EJZ/6k+6nMuPjorrYp7s++bKKdANwzElBWnLWaObvTnaZA==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-28.1.3.tgz", + "integrity": "sha512-epUaPOEWMk3cWX0M/sPvCHHCe9fMFAa/9hXEgKP8nFfNl/jlGkE9ucq9NqkZGXLDduCJYS0UvSlPUwC0S+rH6Q==", "dev": true, "requires": { - "@jest/transform": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/babel__core": "^7.1.7", - "babel-plugin-istanbul": "^6.0.0", - "babel-preset-jest": "^26.6.2", + "@jest/transform": "^28.1.3", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^28.1.3", "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", + "graceful-fs": "^4.2.9", "slash": "^3.0.0" }, "dependencies": { @@ -16646,9 +12386,9 @@ } }, "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "requires": { "ansi-styles": "^4.1.0", @@ -16688,27 +12428,27 @@ } }, "babel-plugin-istanbul": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz", - "integrity": "sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", "@istanbuljs/load-nyc-config": "^1.0.0", "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^4.0.0", + "istanbul-lib-instrument": "^5.0.4", "test-exclude": "^6.0.0" } }, "babel-plugin-jest-hoist": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.6.2.tgz", - "integrity": "sha512-PO9t0697lNTmcEHH69mdtYiOIkkOlj9fySqfO3K1eCcdISevLAE0xY59VLLUj0SoiPiTX/JU2CYFpILydUa5Lw==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-28.1.3.tgz", + "integrity": "sha512-Ys3tUKAmfnkRUpPdpa98eYrAR0nV+sSFUZZEGuQ2EbFd1y4SOLtD5QDNHAq+bb9a+bbXvYQC4b+ID/THIMcU6Q==", "dev": true, "requires": { "@babel/template": "^7.3.3", "@babel/types": "^7.3.3", - "@types/babel__core": "^7.0.0", + "@types/babel__core": "^7.1.14", "@types/babel__traverse": "^7.0.6" } }, @@ -16733,12 +12473,12 @@ } }, "babel-preset-jest": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-26.6.2.tgz", - "integrity": "sha512-YvdtlVm9t3k777c5NPQIv6cxFFFapys25HiUmuSgHwIZhfifweR5c5Sf5nwE3MAbfu327CYSvps8Yx6ANLyleQ==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-28.1.3.tgz", + "integrity": "sha512-L+fupJvlWAHbQfn74coNX3zf60LXMJsezNvvx8eIh7iOR1luJ1poxYgQk1F8PYtNq/6QODDHCqsSnTFSWC491A==", "dev": true, "requires": { - "babel-plugin-jest-hoist": "^26.6.2", + "babel-plugin-jest-hoist": "^28.1.3", "babel-preset-current-node-syntax": "^1.0.0" } }, @@ -16748,120 +12488,42 @@ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", "dev": true }, - "base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "dev": true, - "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, "batch": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", "dev": true }, - "bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", - "dev": true, - "requires": { - "tweetnacl": "^0.14.3" - } - }, - "big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "dev": true - }, "binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", "dev": true }, - "bindings": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "dev": true, - "optional": true, - "requires": { - "file-uri-to-path": "1.0.0" - } - }, "body-parser": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", - "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", + "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", "dev": true, "requires": { - "bytes": "3.1.0", - "content-type": "~1.0.4", + "bytes": "3.1.2", + "content-type": "~1.0.5", "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "1.7.2", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", - "qs": "6.7.0", - "raw-body": "2.4.0", - "type-is": "~1.6.17" + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" }, "dependencies": { "bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", "dev": true }, "debug": { @@ -16873,38 +12535,36 @@ "ms": "2.0.0" } }, - "ms": { + "depd": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", "dev": true }, - "qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true } } }, - "bonjour": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", - "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", + "bonjour-service": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.0.13.tgz", + "integrity": "sha512-LWKRU/7EqDUC9CTAQtuZl5HzBALoCYwtLhffW3et7vZMwv3bWLpJf8bRYlMD5OCcDpTfnPgNCV4yo9ZIaJGMiA==", "dev": true, "requires": { - "array-flatten": "^2.1.0", - "deep-equal": "^1.0.1", + "array-flatten": "^2.1.2", "dns-equal": "^1.0.0", - "dns-txt": "^2.0.2", - "multicast-dns": "^6.0.1", - "multicast-dns-service-types": "^1.1.0" + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.5" } }, "boolbase": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", "dev": true }, "brace-expansion": { @@ -16918,57 +12578,24 @@ } }, "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, "requires": { - "fill-range": "^7.0.1" + "fill-range": "^7.1.1" } }, - "browser-process-hrtime": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", - "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", - "dev": true - }, "browserslist": { - "version": "4.16.6", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz", - "integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==", + "version": "4.23.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.1.tgz", + "integrity": "sha512-TUfofFo/KsK/bWZ9TWQ5O26tsWW4Uhmt8IYklbnUa70udB6P2wA7w7o4PY4muaEPBQaAX+CEnmmIA41NVHtPVw==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001219", - "colorette": "^1.2.2", - "electron-to-chromium": "^1.3.723", - "escalade": "^3.1.1", - "node-releases": "^1.1.71" - }, - "dependencies": { - "caniuse-lite": { - "version": "1.0.30001230", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001230.tgz", - "integrity": "sha512-5yBd5nWCBS+jWKTcHOzXwo5xzcj4ePE/yjtkZyUV1BTUmrBaA9MRGC+e7mxnqXSA90CmCA8L3eKLaSUkt099IQ==", - "dev": true - }, - "colorette": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", - "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", - "dev": true - }, - "electron-to-chromium": { - "version": "1.3.739", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.739.tgz", - "integrity": "sha512-+LPJVRsN7hGZ9EIUUiWCpO7l4E3qBYHNadazlucBfsXBbccDFNKUBAgzE68FnkWGJPwD/AfKhSzL+G+Iqb8A4A==", - "dev": true - }, - "node-releases": { - "version": "1.1.72", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.72.tgz", - "integrity": "sha512-LLUo+PpH3dU6XizX3iVoubUNheF/owjXCZZ5yACDxNnPtgFuludV1ZL3ayK1kVep42Rmm0+R9/Y60NQbZ2bifw==", - "dev": true - } + "caniuse-lite": "^1.0.30001629", + "electron-to-chromium": "^1.4.796", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.16" } }, "bs-logger": { @@ -16990,15 +12617,9 @@ } }, "buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", - "dev": true - }, - "buffer-indexof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", - "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true }, "bytes": { @@ -17007,31 +12628,17 @@ "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", "dev": true }, - "cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "dev": true, - "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - } - }, "call-bind": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.0.tgz", - "integrity": "sha512-AEXsYIyyDY3MCzbwdhzG3Jx1R0J2wetQyUynn6dYHAO+bg8l1k7jwZtRv4ryryFs7EP+NDlikJlVe59jr0cM2w==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", "dev": true, "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.0" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" } }, "callsites": { @@ -17051,9 +12658,9 @@ }, "dependencies": { "tslib": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", - "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", "dev": true } } @@ -17064,32 +12671,23 @@ "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true }, + "caniuse-lite": { + "version": "1.0.30001636", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001636.tgz", + "integrity": "sha512-bMg2vmr8XBsbL6Lr0UHXy/21m84FTxDLWn2FSqMd5PrlbMxwJlQnC2YWYxVgp66PZE+BBNF2jYQUBKCo1FDeZg==", + "dev": true + }, "canvas": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/canvas/-/canvas-2.6.1.tgz", - "integrity": "sha512-S98rKsPcuhfTcYbtF53UIJhcbgIAK533d1kJKMwsMwAIFgfd58MOyxRud3kktlzWiEkFliaJtvyZCBtud/XVEA==", + "version": "2.11.2", + "resolved": "https://registry.npmjs.org/canvas/-/canvas-2.11.2.tgz", + "integrity": "sha512-ItanGBMrmRV7Py2Z+Xhs7cT+FNt5K0vPL4p9EZ/UX/Mu7hFbkxSjKF2KVtPwX7UYWp7dRKnrTvReflgrItJbdw==", "dev": true, "requires": { - "nan": "^2.14.0", - "node-pre-gyp": "^0.11.0", + "@mapbox/node-pre-gyp": "^1.0.0", + "nan": "^2.17.0", "simple-get": "^3.0.3" } }, - "capture-exit": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz", - "integrity": "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==", - "dev": true, - "requires": { - "rsvp": "^4.8.4" - } - }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", - "dev": true - }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", @@ -17108,187 +12706,36 @@ "dev": true }, "chokidar": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", - "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", "dev": true, "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "fsevents": "^1.2.7", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" }, "dependencies": { - "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dev": true, - "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - }, - "dependencies": { - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - } - } - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "fsevents": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", - "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", - "dev": true, - "optional": true, - "requires": { - "bindings": "^1.5.0", - "nan": "^2.12.1" - } - }, "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dev": true, - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - } - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" + "is-glob": "^4.0.1" } } } }, "chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", "dev": true }, "chrome-trace-event": { @@ -17300,103 +12747,39 @@ "tslib": "^1.9.0" } }, - "ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "dev": true - }, "cjs-module-lexer": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-0.6.0.tgz", - "integrity": "sha512-uc2Vix1frTfnuzxxu1Hp4ktSvM3QaI4oXl4ZUqL1wjTu/BGki9TrCWoqLTg/drR1KwAEarXuRFCG2Svr1GxPFw==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", + "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==", "dev": true }, - "class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, "clean-css": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.3.tgz", - "integrity": "sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.1.tgz", + "integrity": "sha512-lCr8OHhiWCTw4v8POJovCoh4T7I9U11yVsPjMWWnnMmp9ZowCxyad1Pathle/9HjaDp+fdQKjO9fQydE6RHTZg==", "dev": true, "requires": { "source-map": "~0.6.0" } }, "clean-webpack-plugin": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/clean-webpack-plugin/-/clean-webpack-plugin-3.0.0.tgz", - "integrity": "sha512-MciirUH5r+cYLGCOL5JX/ZLzOZbVr1ot3Fw+KcvbhUb6PM+yycqd9ZhIlcigQ5gl+XhppNmw3bEFuaaMNyLj3A==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/clean-webpack-plugin/-/clean-webpack-plugin-4.0.0.tgz", + "integrity": "sha512-WuWE1nyTNAyW5T7oNyys2EN0cfP2fdRxhxnIQWiAp0bMabPdHhoGxM8A6YL2GhqwgrPnnaemVE7nv5XJ2Fhh2w==", "dev": true, "requires": { - "@types/webpack": "^4.4.31", "del": "^4.1.1" } }, "cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "dev": true, "requires": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - } - }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.0" - } - } + "wrap-ansi": "^7.0.0" } }, "clone-deep": { @@ -17413,13 +12796,7 @@ "co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", - "dev": true - }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", "dev": true }, "collect-v8-coverage": { @@ -17428,16 +12805,6 @@ "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", "dev": true }, - "collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", - "dev": true, - "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - } - }, "color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", @@ -17450,40 +12817,25 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "colorette": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.1.tgz", - "integrity": "sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "dev": true }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "commander": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", - "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", "dev": true }, - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "colorette": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", + "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", "dev": true }, - "component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", "dev": true }, "compressible": { @@ -17534,30 +12886,38 @@ "dev": true }, "connect-history-api-fallback": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", - "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", + "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", "dev": true }, "console-control-strings": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", "dev": true }, "content-disposition": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", - "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", "dev": true, "requires": { - "safe-buffer": "5.1.2" + "safe-buffer": "5.2.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } } }, "content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", "dev": true }, "convert-source-map": { @@ -17570,21 +12930,15 @@ } }, "cookie": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", - "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", "dev": true }, "cookie-signature": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", - "dev": true - }, - "copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", "dev": true }, "core-util-is": { @@ -17593,115 +12947,34 @@ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", "dev": true }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } - } - }, "css-select": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", - "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", "dev": true, "requires": { "boolbase": "^1.0.0", - "css-what": "^3.2.1", - "domutils": "^1.7.0", - "nth-check": "^1.0.2" + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" } }, "css-what": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", - "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==", - "dev": true - }, - "cssom": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", - "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", "dev": true }, - "cssstyle": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", - "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", - "dev": true, - "requires": { - "cssom": "~0.3.6" - }, - "dependencies": { - "cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", - "dev": true - } - } - }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0" - } - }, - "data-urls": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", - "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", - "dev": true, - "requires": { - "abab": "^2.0.3", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.0.0" - } - }, "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, "requires": { "ms": "2.1.2" } }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true - }, - "decimal.js": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.2.1.tgz", - "integrity": "sha512-KaL7+6Fw6i5A2XSnsbhm/6B+NuEA7TZ4vqxnd5tXz9sbKtrN9Srj8ab4vKVdK8YAqZO9P1kg45Y6YLoduPf+kw==", - "dev": true - }, - "decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", - "dev": true - }, "decompress-response": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz", @@ -17711,24 +12984,10 @@ "mimic-response": "^2.0.0" } }, - "deep-equal": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", - "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", - "dev": true, - "requires": { - "is-arguments": "^1.0.4", - "is-date-object": "^1.0.1", - "is-regex": "^1.0.4", - "object-is": "^1.0.1", - "object-keys": "^1.1.1", - "regexp.prototype.flags": "^1.2.0" - } - }, - "deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", "dev": true }, "deep-is": { @@ -17744,65 +13003,112 @@ "dev": true }, "default-gateway": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz", - "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==", - "dev": true, - "requires": { - "execa": "^1.0.0", - "ip-regex": "^2.1.0" - } - }, - "define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "dev": true, - "requires": { - "object-keys": "^1.0.12" - } - }, - "define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", "dev": true, "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" + "execa": "^5.0.0" }, "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, "requires": { - "kind-of": "^6.0.0" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" } }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + } + }, + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, "requires": { - "kind-of": "^6.0.0" + "shebang-regex": "^3.0.0" } }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "isexe": "^2.0.0" } } } }, + "define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "requires": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + } + }, + "define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true + }, "del": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", @@ -17818,16 +13124,10 @@ "rimraf": "^2.6.3" } }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "dev": true - }, "delegates": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", "dev": true }, "depd": { @@ -17837,15 +13137,15 @@ "dev": true }, "destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", "dev": true }, "detect-libc": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", - "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", + "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==", "dev": true }, "detect-newline": { @@ -17861,9 +13161,9 @@ "dev": true }, "diff-sequences": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz", - "integrity": "sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==", + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-28.1.1.tgz", + "integrity": "sha512-FU0iFaH/E23a+a718l8Qa/19bF9p06kgE0KipMOMadwa3SjnaElKzPaUC0vnibs6/B/9ni97s61mcejk8W1fQw==", "dev": true }, "dir-glob": { @@ -17886,26 +13186,16 @@ "dns-equal": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", - "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=", + "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==", "dev": true }, "dns-packet": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.4.tgz", - "integrity": "sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.4.0.tgz", + "integrity": "sha512-EgqGeaBB8hLiHLZtp/IbaDQTL8pZ0+IvwzSHA6d7VyMDM+B9hgddEMa9xjK5oYnw0ci0JQ6g2XCD7/f6cafU6g==", "dev": true, "requires": { - "ip": "^1.1.0", - "safe-buffer": "^5.0.1" - } - }, - "dns-txt": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", - "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", - "dev": true, - "requires": { - "buffer-indexof": "^1.0.0" + "@leichtgewicht/ip-codec": "^2.0.1" } }, "doctrine": { @@ -17927,63 +13217,40 @@ } }, "dom-serializer": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", - "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", "dev": true, "requires": { "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", "entities": "^2.0.0" - }, - "dependencies": { - "domelementtype": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.1.0.tgz", - "integrity": "sha512-LsTgx/L5VpD+Q8lmsXSHW2WpA+eBlZ9HPf3erD1IoPF00/3JKHZ3BknUVA2QGDNu69ZNmyFmCWBSO45XjYKC5w==", - "dev": true - } } }, "domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", "dev": true }, - "domexception": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", - "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", - "dev": true, - "requires": { - "webidl-conversions": "^5.0.0" - }, - "dependencies": { - "webidl-conversions": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", - "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", - "dev": true - } - } - }, "domhandler": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", - "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", "dev": true, "requires": { - "domelementtype": "1" + "domelementtype": "^2.2.0" } }, "domutils": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", - "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", "dev": true, "requires": { - "dom-serializer": "0", - "domelementtype": "1" + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" } }, "dot-case": { @@ -17997,33 +13264,29 @@ }, "dependencies": { "tslib": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", - "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", "dev": true } } }, - "ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", - "dev": true, - "requires": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, "ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true + }, + "electron-to-chromium": { + "version": "1.4.810", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.810.tgz", + "integrity": "sha512-Kaxhu4T7SJGpRQx99tq216gCq2nMxJo+uuT6uzz9l8TVN2stL7M06MIIXAtr9jsrLs2Glflgf2vMQRepxawOdQ==", "dev": true }, "emittery": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.7.2.tgz", - "integrity": "sha512-A8OG5SR/ij3SsJdWDJdkkSYUjQdCUx6APQXem0SaEePBSRg4eymGYwBkKo1Y6DU+af/Jn2dBQqDBvjnr9Vi8nQ==", + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.10.2.tgz", + "integrity": "sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw==", "dev": true }, "emoji-regex": { @@ -18032,76 +13295,34 @@ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, - "emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "dev": true - }, "encodeurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", "dev": true }, - "end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, - "requires": { - "once": "^1.4.0" - } - }, "enhanced-resolve": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", - "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.5.0", - "tapable": "^1.0.0" - } - }, - "enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "version": "5.17.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.0.tgz", + "integrity": "sha512-dwDPwZL0dmye8Txp2gzFmA6sxALaSvdRDjPH0viLcKrtlOL3tw62nWWweVD1SdILDTJrbrL6tdWVN58Wo6U3eA==", "dev": true, "requires": { - "ansi-colors": "^4.1.1" - }, - "dependencies": { - "ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true - } + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" } }, "entities": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", - "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", "dev": true }, "envinfo": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.7.3.tgz", - "integrity": "sha512-46+j5QxbPWza0PB1i15nZx0xQ4I/EfQxg9J8Had3b408SV63nEtor2e+oiY63amTo9KTuh2a3XLObNwduxYwwA==", + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", + "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", "dev": true }, - "errno": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", - "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", - "dev": true, - "requires": { - "prr": "~1.0.1" - } - }, "error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", @@ -18111,41 +13332,31 @@ "is-arrayish": "^0.2.1" } }, - "es-abstract": { - "version": "1.18.0-next.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.1.tgz", - "integrity": "sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA==", + "es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", "dev": true, "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.2", - "is-negative-zero": "^2.0.0", - "is-regex": "^1.1.1", - "object-inspect": "^1.8.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.1", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" + "get-intrinsic": "^1.2.4" } }, - "es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } + "es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true + }, + "es-module-lexer": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz", + "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==", + "dev": true }, "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", "dev": true }, "escape-html": { @@ -18157,73 +13368,56 @@ "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true }, - "escodegen": { - "version": "1.14.3", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", - "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", - "dev": true, - "requires": { - "esprima": "^4.0.1", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.6.1" - } - }, "eslint": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.17.0.tgz", - "integrity": "sha512-zJk08MiBgwuGoxes5sSQhOtibZ75pz0J35XTRlZOk9xMffhpA9BTbQZxoXZzOl5zMbleShbGwtw+1kGferfFwQ==", + "version": "8.23.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.23.0.tgz", + "integrity": "sha512-pBG/XOn0MsJcKcTRLr27S5HpzQo4kLr+HjLQIyK4EiCsijDl/TB+h5uEuJU6bQ8Edvwz1XWOjpaP2qgnXGpTcA==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", - "@eslint/eslintrc": "^0.2.2", + "@eslint/eslintrc": "^1.3.1", + "@humanwhocodes/config-array": "^0.10.4", + "@humanwhocodes/gitignore-to-minimatch": "^1.0.2", + "@humanwhocodes/module-importer": "^1.0.1", "ajv": "^6.10.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", - "debug": "^4.0.1", + "debug": "^4.3.2", "doctrine": "^3.0.0", - "enquirer": "^2.3.5", - "eslint-scope": "^5.1.1", - "eslint-utils": "^2.1.0", - "eslint-visitor-keys": "^2.0.0", - "espree": "^7.3.1", - "esquery": "^1.2.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.4.0", + "esquery": "^1.4.0", "esutils": "^2.0.2", - "file-entry-cache": "^6.0.0", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.0.0", - "globals": "^12.1.0", - "ignore": "^4.0.6", + "glob-parent": "^6.0.1", + "globals": "^13.15.0", + "globby": "^11.1.0", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", + "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", - "lodash": "^4.17.19", - "minimatch": "^3.0.4", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", "natural-compare": "^1.4.0", "optionator": "^0.9.1", - "progress": "^2.0.0", - "regexpp": "^3.1.0", - "semver": "^7.2.1", - "strip-ansi": "^6.0.0", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", "strip-json-comments": "^3.1.0", - "table": "^6.0.4", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" + "text-table": "^0.2.0" }, "dependencies": { - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true - }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -18233,6 +13427,12 @@ "color-convert": "^2.0.1" } }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + }, "chalk": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", @@ -18269,26 +13469,75 @@ "which": "^2.0.1" } }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true + }, + "eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "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" + } + }, + "globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + } + }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true - }, "levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, "requires": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" + "prelude-ls": "^1.2.1", + "type-check": "~0.4.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" } }, "optionator": { @@ -18305,6 +13554,24 @@ "word-wrap": "^1.2.3" } }, + "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" + } + }, "path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", @@ -18332,21 +13599,6 @@ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.0" - } - }, - "strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true - }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -18377,71 +13629,25 @@ } }, "eslint-config-prettier": { - "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==", + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz", + "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==", "dev": true, "requires": {} }, - "eslint-loader": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/eslint-loader/-/eslint-loader-4.0.2.tgz", - "integrity": "sha512-EDpXor6lsjtTzZpLUn7KmXs02+nIjGcgees9BYjNkWra3jVq5vVa8IoCKgzT2M7dNNeoMBtaSG83Bd40N3poLw==", - "dev": true, - "requires": { - "find-cache-dir": "^3.3.1", - "fs-extra": "^8.1.0", - "loader-utils": "^2.0.0", - "object-hash": "^2.0.3", - "schema-utils": "^2.6.5" - }, - "dependencies": { - "json5": { - "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" - } - }, - "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==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - }, - "schema-utils": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", - "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.5", - "ajv": "^6.12.4", - "ajv-keywords": "^3.5.2" - } - } - } - }, "eslint-plugin-jest": { - "version": "24.1.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-24.1.3.tgz", - "integrity": "sha512-dNGGjzuEzCE3d5EPZQ/QGtmlMotqnYWD/QpCZ1UuZlrMAdhG5rldh0N0haCvhGnUkSeuORS5VNROwF9Hrgn3Lg==", + "version": "26.8.7", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-26.8.7.tgz", + "integrity": "sha512-nJJVv3VY6ZZvJGDMC8h1jN/TIGT4We1JkNn1lvstPURicr/eZPVnlFULQ4W2qL9ByCuCr1hPmlBOc2aZ1ktw4Q==", "dev": true, "requires": { - "@typescript-eslint/experimental-utils": "^4.0.1" + "@typescript-eslint/utils": "^5.10.0" } }, "eslint-plugin-prettier": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.3.1.tgz", - "integrity": "sha512-Rq3jkcFY8RYeQLgk2cCwuc0P7SEFwDravPhsJZOQ5N4YI4DSg50NyqJ/9gdZHzQlHf8MvafSesbNJCcP/FF6pQ==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz", + "integrity": "sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==", "dev": true, "requires": { "prettier-linter-helpers": "^1.0.0" @@ -18458,47 +13664,93 @@ } }, "eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", "dev": true, "requires": { - "eslint-visitor-keys": "^1.1.0" + "eslint-visitor-keys": "^2.0.0" }, "dependencies": { "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", "dev": true } } }, "eslint-visitor-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz", - "integrity": "sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", "dev": true }, - "espree": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", - "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "eslint-webpack-plugin": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/eslint-webpack-plugin/-/eslint-webpack-plugin-3.2.0.tgz", + "integrity": "sha512-avrKcGncpPbPSUHX6B3stNGzkKFto3eL+DKM4+VyMrVnhPc3vRczVlCq3uhuFOdRvDHTVXuzwk1ZKUrqDQHQ9w==", "dev": true, "requires": { - "acorn": "^7.4.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^1.3.0" + "@types/eslint": "^7.29.0 || ^8.4.1", + "jest-worker": "^28.0.2", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "schema-utils": "^4.0.0" }, "dependencies": { - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.3" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dev": true + }, + "schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + } } } }, + "espree": { + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.0.tgz", + "integrity": "sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw==", + "dev": true, + "requires": { + "acorn": "^8.8.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.3.0" + } + }, "esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", @@ -18506,18 +13758,18 @@ "dev": true }, "esquery": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz", - "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", "dev": true, "requires": { "estraverse": "^5.1.0" }, "dependencies": { "estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true } } @@ -18554,7 +13806,7 @@ "etag": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", "dev": true }, "eventemitter3": { @@ -18569,165 +13821,59 @@ "integrity": "sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg==", "dev": true }, - "eventsource": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.0.7.tgz", - "integrity": "sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ==", - "dev": true, - "requires": { - "original": "^1.0.0" - } - }, - "exec-sh": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.4.tgz", - "integrity": "sha512-sEFIkc61v75sWeOe72qyrqg2Qg0OuLESziUDk/O/z2qgS15y2gWVFrI6f2Qn/qw/0/NCfCEsmNA4zOjkwEZT1A==", - "dev": true - }, - "execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "dev": true, - "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, "exit": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", "dev": true }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } - } - }, "expect": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/expect/-/expect-26.6.2.tgz", - "integrity": "sha512-9/hlOBkQl2l/PLHJx6JjoDF6xPKcJEsUlWKb23rKE7KzeDqUZKXKNMW27KIue5JMdBV9HgmoJPcc8HtO85t9IA==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/expect/-/expect-28.1.3.tgz", + "integrity": "sha512-eEh0xn8HlsuOBxFgIss+2mX85VAS4Qy3OSkjV7rlBWljtA4oWH37glVGyOZSZvErDT/yBywZdPGwCXuTvSG85g==", "dev": true, "requires": { - "@jest/types": "^26.6.2", - "ansi-styles": "^4.0.0", - "jest-get-type": "^26.3.0", - "jest-matcher-utils": "^26.6.2", - "jest-message-util": "^26.6.2", - "jest-regex-util": "^26.0.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" - } - }, - "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 - } + "@jest/expect-utils": "^28.1.3", + "jest-get-type": "^28.0.2", + "jest-matcher-utils": "^28.1.3", + "jest-message-util": "^28.1.3", + "jest-util": "^28.1.3" } }, "express": { - "version": "4.17.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", - "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", + "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", "dev": true, "requires": { - "accepts": "~1.3.7", + "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.19.0", - "content-disposition": "0.5.3", + "body-parser": "1.20.2", + "content-disposition": "0.5.4", "content-type": "~1.0.4", - "cookie": "0.4.0", + "cookie": "0.6.0", "cookie-signature": "1.0.6", "debug": "2.6.9", - "depd": "~1.1.2", + "depd": "2.0.0", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "etag": "~1.8.1", - "finalhandler": "~1.1.2", + "finalhandler": "1.2.0", "fresh": "0.5.2", + "http-errors": "2.0.0", "merge-descriptors": "1.0.1", "methods": "~1.1.2", - "on-finished": "~2.3.0", + "on-finished": "2.4.1", "parseurl": "~1.3.3", "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.5", - "qs": "6.7.0", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", "range-parser": "~1.2.1", - "safe-buffer": "5.1.2", - "send": "0.17.1", - "serve-static": "1.14.1", - "setprototypeof": "1.1.1", - "statuses": "~1.5.0", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", "type-is": "~1.6.18", "utils-merge": "1.0.1", "vary": "~1.1.2" @@ -18736,7 +13882,7 @@ "array-flatten": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", "dev": true }, "debug": { @@ -18748,118 +13894,32 @@ "ms": "2.0.0" } }, + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true + }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, - "qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "dev": true - } - } - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true - }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "dev": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } }, - "extend-shallow": { + "statuses": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true } } }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", - "dev": true - }, "fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -18873,17 +13933,27 @@ "dev": true }, "fast-glob": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.4.tgz", - "integrity": "sha512-kr/Oo6PX51265qeuCYsyGypiO5uJFgBS0jksyG7FUeCyQzNwYnzrNIMR1NXfkZXsMYXYLRAHgISHBz8gQcxKHQ==", + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", + "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", "dev": true, "requires": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.0", + "glob-parent": "^5.1.2", "merge2": "^1.3.0", - "micromatch": "^4.0.2", - "picomatch": "^2.2.1" + "micromatch": "^4.0.4" + }, + "dependencies": { + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + } } }, "fast-json-stable-stringify": { @@ -18905,18 +13975,18 @@ "dev": true }, "fastq": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.10.0.tgz", - "integrity": "sha512-NL2Qc5L3iQEsyYzweq7qfgy5OtXCmGzGvhElGEd/SoFWEMOEczNh5s5ocaF01HDetxz+p8ecjNPA6cZxxIHmzA==", + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", "dev": true, "requires": { "reusify": "^1.0.4" } }, "faye-websocket": { - "version": "0.11.3", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz", - "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==", + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", "dev": true, "requires": { "websocket-driver": ">=0.5.1" @@ -18932,42 +14002,35 @@ } }, "file-entry-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.0.tgz", - "integrity": "sha512-fqoO76jZ3ZnYrXLDRxBR1YvOvc0k844kcOg40bgsPrE25LAb/PDqTY+ho64Xh2c8ZXgIKldchCFHczG2UVRcWA==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, "requires": { "flat-cache": "^3.0.4" } }, - "file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", - "dev": true, - "optional": true - }, "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, "requires": { "to-regex-range": "^5.0.1" } }, "finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", "dev": true, "requires": { "debug": "2.6.9", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", - "on-finished": "~2.3.0", + "on-finished": "2.4.1", "parseurl": "~1.3.3", - "statuses": "~1.5.0", + "statuses": "2.0.1", "unpipe": "~1.0.0" }, "dependencies": { @@ -18983,22 +14046,17 @@ "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "dev": true } } }, - "find-cache-dir": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz", - "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - } - }, "find-up": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", @@ -19030,82 +14088,45 @@ } } }, - "flatted": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.0.tgz", - "integrity": "sha512-tW+UkmtNg/jv9CSofAKvgVcO7c2URjhTdW1ZTkcAritblu8tajiYy7YisnIflEwtKssCtOxpnBRoCB7iap0/TA==", - "dev": true - }, - "follow-redirects": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.1.tgz", - "integrity": "sha512-SSG5xmZh1mkPGyKzjZP8zLjltIfpW32Y5QpdNJyjcfGxK3qo3NDDkZOZSFiGn1A6SclQxY9GzEwAHQ3dmYRWpg==", - "dev": true - }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "dev": true - }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "flatted": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", "dev": true }, - "form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } + "follow-redirects": { + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", + "dev": true }, "forwarded": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", - "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", "dev": true }, - "fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", - "dev": true, - "requires": { - "map-cache": "^0.2.2" - } - }, "fresh": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", "dev": true }, - "fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, "fs-minipass": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", - "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", "dev": true, "requires": { - "minipass": "^2.6.0" + "minipass": "^3.0.0" } }, + "fs-monkey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", + "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==", + "dev": true + }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -19113,16 +14134,16 @@ "dev": true }, "fsevents": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.2.1.tgz", - "integrity": "sha512-bTLYHSeC0UH/EFXS9KqWnXuOl/wHK5Z/d+ghd5AsFMYN7wIGkUCOJyzy88+wJKkZPGON8u4Z9f6U4FdgURE9qA==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", "dev": true, "optional": true }, "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "dev": true }, "functional-red-black-tree": { @@ -19132,19 +14153,20 @@ "dev": true }, "gauge": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", + "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", "dev": true, "requires": { - "aproba": "^1.0.3", + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.2", "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", + "has-unicode": "^2.0.1", + "object-assign": "^4.1.1", "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.2" } }, "gensync": { @@ -19160,14 +14182,16 @@ "dev": true }, "get-intrinsic": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.0.2.tgz", - "integrity": "sha512-aeX0vrFm21ILl3+JpFFRNe9aUvp6VFZb2/CTbgLb8j75kOhvoNYjt9d8KA/tJG4gSo8nzEDedRl0h7vDmBYRVg==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "dev": true, "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" } }, "get-package-type": { @@ -19176,30 +14200,6 @@ "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", "dev": true }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, - "get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", - "dev": true - }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0" - } - }, "glob": { "version": "7.1.6", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", @@ -19215,12 +14215,12 @@ } }, "glob-parent": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", - "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, "requires": { - "is-glob": "^4.0.1" + "is-glob": "^4.0.3" } }, "glob-to-regexp": { @@ -19230,12 +14230,12 @@ "dev": true }, "globals": { - "version": "12.4.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", - "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "version": "13.17.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", + "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", "dev": true, "requires": { - "type-fest": "^0.8.1" + "type-fest": "^0.20.2" } }, "globby": { @@ -19259,18 +14259,26 @@ } } }, + "gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.3" + } + }, "graceful-fs": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", - "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", "dev": true }, - "growly": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", - "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=", - "dev": true, - "optional": true + "grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "dev": true }, "handle-thing": { "version": "2.0.1", @@ -19278,22 +14286,6 @@ "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", "dev": true }, - "har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", - "dev": true - }, - "har-validator": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", - "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", - "dev": true, - "requires": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" - } - }, "has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", @@ -19306,71 +14298,43 @@ "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, + "requires": { + "es-define-property": "^1.0.0" + } + }, + "has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", "dev": true }, "has-symbols": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", - "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", "dev": true }, "has-unicode": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", "dev": true }, - "has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", - "dev": true, - "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - } - }, - "has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "dev": true, "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } + "function-bind": "^1.1.2" } }, "he": { @@ -19379,12 +14343,6 @@ "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", "dev": true }, - "hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true - }, "hpack.js": { "version": "2.1.6", "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", @@ -19397,19 +14355,10 @@ "wbuf": "^1.1.0" } }, - "html-encoding-sniffer": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", - "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", - "dev": true, - "requires": { - "whatwg-encoding": "^1.0.5" - } - }, "html-entities": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.4.0.tgz", - "integrity": "sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA==", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.3.tgz", + "integrity": "sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==", "dev": true }, "html-escaper": { @@ -19419,68 +14368,43 @@ "dev": true }, "html-minifier-terser": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz", - "integrity": "sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", "dev": true, "requires": { - "camel-case": "^4.1.1", - "clean-css": "^4.2.3", - "commander": "^4.1.1", + "camel-case": "^4.1.2", + "clean-css": "^5.2.2", + "commander": "^8.3.0", "he": "^1.2.0", - "param-case": "^3.0.3", + "param-case": "^3.0.4", "relateurl": "^0.2.7", - "terser": "^4.6.3" + "terser": "^5.10.0" } }, "html-webpack-plugin": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-4.5.1.tgz", - "integrity": "sha512-yzK7RQZwv9xB+pcdHNTjcqbaaDZ+5L0zJHXfi89iWIZmb/FtzxhLk0635rmJihcQbs3ZUF27Xp4oWGx6EK56zg==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.0.tgz", + "integrity": "sha512-sy88PC2cRTVxvETRgUHFrL4No3UxvcH8G1NepGhqaTT+GXN2kTamqasot0inS5hXeg1cMbFDt27zzo9p35lZVw==", "dev": true, "requires": { - "@types/html-minifier-terser": "^5.0.0", - "@types/tapable": "^1.0.5", - "@types/webpack": "^4.41.8", - "html-minifier-terser": "^5.0.1", - "loader-utils": "^1.2.3", - "lodash": "^4.17.20", - "pretty-error": "^2.1.1", - "tapable": "^1.1.3", - "util.promisify": "1.0.0" + "@types/html-minifier-terser": "^6.0.0", + "html-minifier-terser": "^6.0.2", + "lodash": "^4.17.21", + "pretty-error": "^4.0.0", + "tapable": "^2.0.0" } }, "htmlparser2": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", - "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", "dev": true, "requires": { - "domelementtype": "^1.3.1", - "domhandler": "^2.3.0", - "domutils": "^1.5.1", - "entities": "^1.1.1", - "inherits": "^2.0.1", - "readable-stream": "^3.1.1" - }, - "dependencies": { - "entities": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", - "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", - "dev": true - }, - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" } }, "http-deceiver": { @@ -19490,30 +14414,36 @@ "dev": true }, "http-errors": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", - "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", "dev": true, "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" }, "dependencies": { - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true + }, + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "dev": true } } }, "http-parser-js": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.3.tgz", - "integrity": "sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg==", + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", + "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", "dev": true }, "http-proxy": { @@ -19528,137 +14458,32 @@ } }, "http-proxy-middleware": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz", - "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", + "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", "dev": true, "requires": { - "http-proxy": "^1.17.0", - "is-glob": "^4.0.0", - "lodash": "^4.17.11", - "micromatch": "^3.1.10" - }, - "dependencies": { - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - } + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" } }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", "dev": true, "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" + "agent-base": "6", + "debug": "4" } }, "human-signals": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", - "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "dev": true }, "iconv-lite": { @@ -19671,20 +14496,11 @@ } }, "ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", "dev": true }, - "ignore-walk": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz", - "integrity": "sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==", - "dev": true, - "requires": { - "minimatch": "^3.0.4" - } - }, "import-fresh": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", @@ -19724,221 +14540,76 @@ "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==", - "dev": true, - "requires": { - "find-up": "^4.0.0" - } - } - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true - }, - "internal-ip": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz", - "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==", - "dev": true, - "requires": { - "default-gateway": "^4.2.0", - "ipaddr.js": "^1.9.0" - } - }, - "interpret": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", - "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", - "dev": true - }, - "invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "dev": true, - "requires": { - "loose-envify": "^1.0.0" - } - }, - "ip": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", - "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", - "dev": true - }, - "ip-regex": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", - "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=", - "dev": true - }, - "ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", - "dev": true - }, - "is-absolute-url": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", - "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==", - "dev": true - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, "requires": { - "is-buffer": "^1.1.5" + "find-up": "^4.0.0" } } } }, - "is-arguments": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.0.tgz", - "integrity": "sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg==", + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, "requires": { - "call-bind": "^1.0.0" + "once": "^1.3.0", + "wrappy": "1" } }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, - "is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", - "dev": true, - "requires": { - "binary-extensions": "^1.0.0" - } + "interpret": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", + "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", + "dev": true }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "ipaddr.js": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", + "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==", "dev": true }, - "is-callable": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.2.tgz", - "integrity": "sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA==", + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", "dev": true }, - "is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dev": true, "requires": { - "ci-info": "^2.0.0" + "binary-extensions": "^2.0.0" } }, "is-core-module": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", - "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz", + "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==", "dev": true, "requires": { "has": "^1.0.3" } }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-date-object": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", - "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", - "dev": true - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, "is-docker": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.1.1.tgz", - "integrity": "sha512-ZOoqiXfEwtGknTiuDEy8pN2CfE3TxMHprvNer1mXiqwkOT77Rw3YVrUQ52EqAOU3QAWDQ+bQdx7HJzrv7LS2Hw==", - "dev": true, - "optional": true - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", "dev": true }, "is-extglob": { @@ -19948,13 +14619,10 @@ "dev": true }, "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true }, "is-generator-fn": { "version": "2.1.0", @@ -19963,20 +14631,14 @@ "dev": true }, "is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, "requires": { "is-extglob": "^2.1.1" } }, - "is-negative-zero": { - "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": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -20007,6 +14669,12 @@ "path-is-inside": "^1.0.2" } }, + "is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "dev": true + }, "is-plain-object": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", @@ -20016,54 +14684,11 @@ "isobject": "^3.0.1" } }, - "is-potential-custom-element-name": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.0.tgz", - "integrity": "sha1-DFLlS8yjkbssSUsh6GJtczbG45c=", - "dev": true - }, - "is-regex": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", - "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", - "dev": true, - "requires": { - "has-symbols": "^1.0.1" - } - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "dev": true - }, - "is-symbol": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", - "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", - "dev": true, - "requires": { - "has-symbols": "^1.0.1" - } - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true - }, - "is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true - }, "is-wsl": { "version": "2.2.0", "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" } @@ -20086,34 +14711,29 @@ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", - "dev": true - }, "istanbul-lib-coverage": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz", - "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", + "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", "dev": true }, "istanbul-lib-instrument": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", - "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.0.tgz", + "integrity": "sha512-6Lthe1hqXHBNsqvgDzGO6l03XNeu3CrG4RqQ1KM9+l5+jNGpEJfIELx1NS3SEHmJQA8np/u+E4EPRKRiu6m19A==", "dev": true, "requires": { - "@babel/core": "^7.7.5", + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-coverage": "^3.2.0", "semver": "^6.3.0" }, "dependencies": { "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true } } @@ -20147,9 +14767,9 @@ } }, "istanbul-lib-source-maps": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz", - "integrity": "sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", "dev": true, "requires": { "debug": "^4.1.1", @@ -20158,9 +14778,9 @@ } }, "istanbul-reports": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.2.tgz", - "integrity": "sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", + "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", "dev": true, "requires": { "html-escaper": "^2.0.0", @@ -20168,97 +14788,25 @@ } }, "jest": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/jest/-/jest-26.6.3.tgz", - "integrity": "sha512-lGS5PXGAzR4RF7V5+XObhqz2KZIDUA1yD0DG6pBVmy10eh0ZIXQImRuzocsI/N2XZ1GrLFwTS27In2i2jlpq1Q==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest/-/jest-28.1.3.tgz", + "integrity": "sha512-N4GT5on8UkZgH0O5LUavMRV1EDEhNTL0KEfRmDIeZHSV7p2XgLoY9t9VDUgL6o+yfdgYHVxuz81G8oB9VG5uyA==", "dev": true, "requires": { - "@jest/core": "^26.6.3", + "@jest/core": "^28.1.3", + "@jest/types": "^28.1.3", "import-local": "^3.0.2", - "jest-cli": "^26.6.3" - }, - "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" - } - }, - "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "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 - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "jest-cli": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-26.6.3.tgz", - "integrity": "sha512-GF9noBSa9t08pSyl3CY4frMrqp+aQXFGFkf5hEPbh/pIUFYWMK6ZLTfbmadxJVcJrdRoChlWQsA2VkJcDFK8hg==", - "dev": true, - "requires": { - "@jest/core": "^26.6.3", - "@jest/test-result": "^26.6.2", - "@jest/types": "^26.6.2", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.4", - "import-local": "^3.0.2", - "is-ci": "^2.0.0", - "jest-config": "^26.6.3", - "jest-util": "^26.6.2", - "jest-validate": "^26.6.2", - "prompts": "^2.0.1", - "yargs": "^15.4.1" - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "jest-cli": "^28.1.3" } }, "jest-changed-files": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-26.6.2.tgz", - "integrity": "sha512-fDS7szLcY9sCtIip8Fjry9oGf3I2ht/QT21bAHm5Dmf0mD4X3ReNUf17y+bO6fR8WgbIZTlbyG1ak/53cbRzKQ==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-28.1.3.tgz", + "integrity": "sha512-esaOfUWJXk2nfZt9SPyC8gA1kNfdKLkQWyzsMlqq8msYSlNKfmZxfRgZn4Cd4MGVUF+7v6dBs0d5TOAKa7iIiA==", "dev": true, "requires": { - "@jest/types": "^26.6.2", - "execa": "^4.0.0", - "throat": "^5.0.0" + "execa": "^5.0.0", + "p-limit": "^3.1.0" }, "dependencies": { "cross-spawn": { @@ -20273,35 +14821,32 @@ } }, "execa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", - "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dev": true, "requires": { - "cross-spawn": "^7.0.0", - "get-stream": "^5.0.0", - "human-signals": "^1.1.1", + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", "is-stream": "^2.0.0", "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.0", - "onetime": "^5.1.0", - "signal-exit": "^3.0.2", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", "strip-final-newline": "^2.0.0" } }, "get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true }, "is-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", - "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "dev": true }, "npm-run-path": { @@ -20313,6 +14858,15 @@ "path-key": "^3.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" + } + }, "path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", @@ -20325,113 +14879,51 @@ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "jest-config": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-26.6.3.tgz", - "integrity": "sha512-t5qdIj/bCj2j7NFVHb2nFB4aUdfucDn3JRKgrZnplb8nieAirAzRSHP8uDEd+qV6ygzg9Pz4YG7UTJf94LPSyg==", - "dev": true, - "requires": { - "@babel/core": "^7.1.0", - "@jest/test-sequencer": "^26.6.3", - "@jest/types": "^26.6.2", - "babel-jest": "^26.6.3", - "chalk": "^4.0.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.1", - "graceful-fs": "^4.2.4", - "jest-environment-jsdom": "^26.6.2", - "jest-environment-node": "^26.6.2", - "jest-get-type": "^26.3.0", - "jest-jasmine2": "^26.6.3", - "jest-regex-util": "^26.0.0", - "jest-resolve": "^26.6.2", - "jest-util": "^26.6.2", - "jest-validate": "^26.6.2", - "micromatch": "^4.0.2", - "pretty-format": "^26.6.2" - }, - "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" - } - }, - "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "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" + "shebang-regex": "^3.0.0" } }, - "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 - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, "requires": { - "has-flag": "^4.0.0" + "isexe": "^2.0.0" } } } }, - "jest-diff": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-26.6.2.tgz", - "integrity": "sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==", + "jest-circus": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-28.1.3.tgz", + "integrity": "sha512-cZ+eS5zc79MBwt+IhQhiEp0OeBddpc1n8MBo1nMB8A7oPMKEO+Sre+wHaLJexQUj9Ya/8NOBY0RESUgYjB6fow==", "dev": true, "requires": { + "@jest/environment": "^28.1.3", + "@jest/expect": "^28.1.3", + "@jest/test-result": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/node": "*", "chalk": "^4.0.0", - "diff-sequences": "^26.6.2", - "jest-get-type": "^26.3.0", - "pretty-format": "^26.6.2" + "co": "^4.6.0", + "dedent": "^0.7.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^28.1.3", + "jest-matcher-utils": "^28.1.3", + "jest-message-util": "^28.1.3", + "jest-runtime": "^28.1.3", + "jest-snapshot": "^28.1.3", + "jest-util": "^28.1.3", + "p-limit": "^3.1.0", + "pretty-format": "^28.1.3", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" }, "dependencies": { "ansi-styles": { @@ -20444,9 +14936,9 @@ } }, "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "requires": { "ansi-styles": "^4.1.0", @@ -20474,6 +14966,15 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, + "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" + } + }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -20485,26 +14986,24 @@ } } }, - "jest-docblock": { - "version": "26.0.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-26.0.0.tgz", - "integrity": "sha512-RDZ4Iz3QbtRWycd8bUEPxQsTlYazfYn/h5R65Fc6gOfwozFhoImx+affzky/FFBuqISPTqjXomoIGJVKBWoo0w==", - "dev": true, - "requires": { - "detect-newline": "^3.0.0" - } - }, - "jest-each": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-26.6.2.tgz", - "integrity": "sha512-Mer/f0KaATbjl8MCJ+0GEpNdqmnVmDYqCTJYTvoo7rqmRiDllmp2AYN+06F93nXcY3ur9ShIjS+CO/uD+BbH4A==", + "jest-cli": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-28.1.3.tgz", + "integrity": "sha512-roY3kvrv57Azn1yPgdTebPAXvdR2xfezaKKYzVxZ6It/5NCxzJym6tUI5P1zkdWhfUYkxEI9uZWcQdaFLo8mJQ==", "dev": true, "requires": { - "@jest/types": "^26.6.2", + "@jest/core": "^28.1.3", + "@jest/test-result": "^28.1.3", + "@jest/types": "^28.1.3", "chalk": "^4.0.0", - "jest-get-type": "^26.3.0", - "jest-util": "^26.6.2", - "pretty-format": "^26.6.2" + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "import-local": "^3.0.2", + "jest-config": "^28.1.3", + "jest-util": "^28.1.3", + "jest-validate": "^28.1.3", + "prompts": "^2.0.1", + "yargs": "^17.3.1" }, "dependencies": { "ansi-styles": { @@ -20517,9 +15016,9 @@ } }, "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "requires": { "ansi-styles": "^4.1.0", @@ -20558,725 +15057,176 @@ } } }, - "jest-environment-jsdom": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-26.6.2.tgz", - "integrity": "sha512-jgPqCruTlt3Kwqg5/WVFyHIOJHsiAvhcp2qiR2QQstuG9yWox5+iHpU3ZrcBxW14T4fe5Z68jAfLRh7joCSP2Q==", - "dev": true, - "requires": { - "@jest/environment": "^26.6.2", - "@jest/fake-timers": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/node": "*", - "jest-mock": "^26.6.2", - "jest-util": "^26.6.2", - "jsdom": "^16.4.0" - } - }, - "jest-environment-jsdom-fifteen": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom-fifteen/-/jest-environment-jsdom-fifteen-1.0.2.tgz", - "integrity": "sha512-nfrnAfwklE1872LIB31HcjM65cWTh1wzvMSp10IYtPJjLDUbTTvDpajZgIxUnhRmzGvogdHDayCIlerLK0OBBg==", + "jest-config": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-28.1.3.tgz", + "integrity": "sha512-MG3INjByJ0J4AsNBm7T3hsuxKQqFIiRo/AUqb1q9LRKI5UU6Aar9JHbr9Ivn1TVwfUD9KirRoM/T6u8XlcQPHQ==", "dev": true, "requires": { - "@jest/environment": "^24.3.0", - "@jest/fake-timers": "^24.3.0", - "@jest/types": "^24.3.0", - "jest-mock": "^24.0.0", - "jest-util": "^24.0.0", - "jsdom": "^15.2.1" + "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^28.1.3", + "@jest/types": "^28.1.3", + "babel-jest": "^28.1.3", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-circus": "^28.1.3", + "jest-environment-node": "^28.1.3", + "jest-get-type": "^28.0.2", + "jest-regex-util": "^28.0.2", + "jest-resolve": "^28.1.3", + "jest-runner": "^28.1.3", + "jest-util": "^28.1.3", + "jest-validate": "^28.1.3", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^28.1.3", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" }, "dependencies": { - "@jest/console": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-24.9.0.tgz", - "integrity": "sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ==", - "dev": true, - "requires": { - "@jest/source-map": "^24.9.0", - "chalk": "^2.0.1", - "slash": "^2.0.0" - } - }, - "@jest/environment": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-24.9.0.tgz", - "integrity": "sha512-5A1QluTPhvdIPFYnO3sZC3smkNeXPVELz7ikPbhUj0bQjB07EoE9qtLrem14ZUYWdVayYbsjVwIiL4WBIMV4aQ==", - "dev": true, - "requires": { - "@jest/fake-timers": "^24.9.0", - "@jest/transform": "^24.9.0", - "@jest/types": "^24.9.0", - "jest-mock": "^24.9.0" - } - }, - "@jest/fake-timers": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-24.9.0.tgz", - "integrity": "sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A==", - "dev": true, - "requires": { - "@jest/types": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-mock": "^24.9.0" - } - }, - "@jest/source-map": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-24.9.0.tgz", - "integrity": "sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg==", - "dev": true, - "requires": { - "callsites": "^3.0.0", - "graceful-fs": "^4.1.15", - "source-map": "^0.6.0" - } - }, - "@jest/test-result": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-24.9.0.tgz", - "integrity": "sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA==", - "dev": true, - "requires": { - "@jest/console": "^24.9.0", - "@jest/types": "^24.9.0", - "@types/istanbul-lib-coverage": "^2.0.0" - } - }, - "@jest/transform": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-24.9.0.tgz", - "integrity": "sha512-TcQUmyNRxV94S0QpMOnZl0++6RMiqpbH/ZMccFB/amku6Uwvyb1cjYX7xkp5nGNkbX4QPH/FcB6q1HBTHynLmQ==", - "dev": true, - "requires": { - "@babel/core": "^7.1.0", - "@jest/types": "^24.9.0", - "babel-plugin-istanbul": "^5.1.0", - "chalk": "^2.0.1", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.1.15", - "jest-haste-map": "^24.9.0", - "jest-regex-util": "^24.9.0", - "jest-util": "^24.9.0", - "micromatch": "^3.1.10", - "pirates": "^4.0.1", - "realpath-native": "^1.1.0", - "slash": "^2.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "2.4.1" - } - }, - "@jest/types": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz", - "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^13.0.0" - } - }, - "@types/istanbul-reports": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz", - "integrity": "sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "*", - "@types/istanbul-lib-report": "*" - } - }, - "@types/stack-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-1.0.1.tgz", - "integrity": "sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw==", - "dev": true - }, - "@types/yargs": { - "version": "13.0.11", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.11.tgz", - "integrity": "sha512-NRqD6T4gktUrDi1o1wLH3EKC1o2caCr7/wR87ODcbVITQF106OM3sFN92ysZ++wqelOd1CTzatnOBRDYYG6wGQ==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "acorn-globals": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.4.tgz", - "integrity": "sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==", - "dev": true, - "requires": { - "acorn": "^6.0.1", - "acorn-walk": "^6.0.1" - }, - "dependencies": { - "acorn": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", - "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", - "dev": true - } - } - }, - "acorn-walk": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz", - "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==", - "dev": true - }, - "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dev": true, - "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - } - }, - "babel-plugin-istanbul": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz", - "integrity": "sha512-5LphC0USA8t4i1zCtjbbNb6jJj/9+X6P37Qfirc/70EQ34xKlMW+a1RHGwxGI+SwWpNwZ27HqvzAobeqaXwiZw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "find-up": "^3.0.0", - "istanbul-lib-instrument": "^3.3.0", - "test-exclude": "^5.2.3" - } - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "data-urls": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", - "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", - "dev": true, - "requires": { - "abab": "^2.0.0", - "whatwg-mimetype": "^2.2.0", - "whatwg-url": "^7.0.0" - } - }, - "domexception": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", - "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", - "dev": true, - "requires": { - "webidl-conversions": "^4.0.2" - } - }, - "escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "dev": true - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "fsevents": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", - "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", - "dev": true, - "optional": true, - "requires": { - "bindings": "^1.5.0", - "nan": "^2.12.1" - } - }, - "html-encoding-sniffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", - "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", - "dev": true, - "requires": { - "whatwg-encoding": "^1.0.1" - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "istanbul-lib-coverage": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", - "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", - "dev": true - }, - "istanbul-lib-instrument": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz", - "integrity": "sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==", - "dev": true, - "requires": { - "@babel/generator": "^7.4.0", - "@babel/parser": "^7.4.3", - "@babel/template": "^7.4.0", - "@babel/traverse": "^7.4.3", - "@babel/types": "^7.4.0", - "istanbul-lib-coverage": "^2.0.5", - "semver": "^6.0.0" - } - }, - "jest-haste-map": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-24.9.0.tgz", - "integrity": "sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ==", - "dev": true, - "requires": { - "@jest/types": "^24.9.0", - "anymatch": "^2.0.0", - "fb-watchman": "^2.0.0", - "fsevents": "^1.2.7", - "graceful-fs": "^4.1.15", - "invariant": "^2.2.4", - "jest-serializer": "^24.9.0", - "jest-util": "^24.9.0", - "jest-worker": "^24.9.0", - "micromatch": "^3.1.10", - "sane": "^4.0.3", - "walker": "^1.0.7" - } - }, - "jest-message-util": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-24.9.0.tgz", - "integrity": "sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "@jest/test-result": "^24.9.0", - "@jest/types": "^24.9.0", - "@types/stack-utils": "^1.0.1", - "chalk": "^2.0.1", - "micromatch": "^3.1.10", - "slash": "^2.0.0", - "stack-utils": "^1.0.1" - } - }, - "jest-mock": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-24.9.0.tgz", - "integrity": "sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w==", - "dev": true, - "requires": { - "@jest/types": "^24.9.0" - } - }, - "jest-regex-util": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-24.9.0.tgz", - "integrity": "sha512-05Cmb6CuxaA+Ys6fjr3PhvV3bGQmO+2p2La4hFbU+W5uOc479f7FdLXUWXw4pYMAhhSZIuKHwSXSu6CsSBAXQA==", - "dev": true - }, - "jest-serializer": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-24.9.0.tgz", - "integrity": "sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ==", - "dev": true - }, - "jest-util": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-24.9.0.tgz", - "integrity": "sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg==", - "dev": true, - "requires": { - "@jest/console": "^24.9.0", - "@jest/fake-timers": "^24.9.0", - "@jest/source-map": "^24.9.0", - "@jest/test-result": "^24.9.0", - "@jest/types": "^24.9.0", - "callsites": "^3.0.0", - "chalk": "^2.0.1", - "graceful-fs": "^4.1.15", - "is-ci": "^2.0.0", - "mkdirp": "^0.5.1", - "slash": "^2.0.0", - "source-map": "^0.6.0" - } - }, - "jest-worker": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz", - "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==", - "dev": true, - "requires": { - "merge-stream": "^2.0.0", - "supports-color": "^6.1.0" - } - }, - "jsdom": { - "version": "15.2.1", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-15.2.1.tgz", - "integrity": "sha512-fAl1W0/7T2G5vURSyxBzrJ1LSdQn6Tr5UX/xD4PXDx/PDgwygedfW6El/KIj3xJ7FU61TTYnc/l/B7P49Eqt6g==", - "dev": true, - "requires": { - "abab": "^2.0.0", - "acorn": "^7.1.0", - "acorn-globals": "^4.3.2", - "array-equal": "^1.0.0", - "cssom": "^0.4.1", - "cssstyle": "^2.0.0", - "data-urls": "^1.1.0", - "domexception": "^1.0.1", - "escodegen": "^1.11.1", - "html-encoding-sniffer": "^1.0.2", - "nwsapi": "^2.2.0", - "parse5": "5.1.0", - "pn": "^1.1.0", - "request": "^2.88.0", - "request-promise-native": "^1.0.7", - "saxes": "^3.1.9", - "symbol-tree": "^3.2.2", - "tough-cookie": "^3.0.1", - "w3c-hr-time": "^1.0.1", - "w3c-xmlserializer": "^1.1.2", - "webidl-conversions": "^4.0.2", - "whatwg-encoding": "^1.0.5", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^7.0.0", - "ws": "^7.0.0", - "xml-name-validator": "^3.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "parse5": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", - "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==", - "dev": true - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - }, - "read-pkg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", - "dev": true, - "requires": { - "load-json-file": "^4.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" - } - }, - "read-pkg-up": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-4.0.0.tgz", - "integrity": "sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA==", + "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": { - "find-up": "^3.0.0", - "read-pkg": "^3.0.0" + "color-convert": "^2.0.1" } }, - "saxes": { - "version": "3.1.11", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-3.1.11.tgz", - "integrity": "sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g==", + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "requires": { - "xmlchars": "^2.1.1" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" } }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - }, - "slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "ci-info": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.2.tgz", + "integrity": "sha512-xmDt/QIAdeZ9+nfdPsaBCpMvHNLFiLdjj59qjqn+6iPe6YmHGQ35sBnQ8uslRBXFmXkiZQOJRjvQeoGppoTjjg==", "dev": true }, - "stack-utils": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.4.tgz", - "integrity": "sha512-IPDJfugEGbfizBwBZRZ3xpccMdRyP5lqsBWXGQWimVjua/ccLCeMOAVjlc1R7LxFjo5sEDhyNIXd8mo/AiDS9w==", + "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": { - "escape-string-regexp": "^2.0.0" + "color-name": "~1.1.4" } }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } + "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 + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true }, - "test-exclude": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-5.2.3.tgz", - "integrity": "sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g==", + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { - "glob": "^7.1.3", - "minimatch": "^3.0.4", - "read-pkg-up": "^4.0.0", - "require-main-filename": "^2.0.0" + "has-flag": "^4.0.0" } - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + } + } + }, + "jest-diff": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-28.1.3.tgz", + "integrity": "sha512-8RqP1B/OXzjjTWkqMX67iqgwBVJRgCyKD3L9nq+6ZqJMdvjE8RgHktqZ6jNrkdMT+dJuYNI3rhQpxaz7drJHfw==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "diff-sequences": "^28.1.1", + "jest-get-type": "^28.0.2", + "pretty-format": "^28.1.3" + }, + "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": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" + "color-convert": "^2.0.1" } }, - "tr46": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "requires": { - "punycode": "^2.1.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" } }, - "w3c-xmlserializer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz", - "integrity": "sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg==", + "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": { - "domexception": "^1.0.1", - "webidl-conversions": "^4.0.2", - "xml-name-validator": "^3.0.0" + "color-name": "~1.1.4" } }, - "webidl-conversions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "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 }, - "whatwg-url": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", - "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", - "dev": true, - "requires": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true }, - "write-file-atomic": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.1.tgz", - "integrity": "sha512-TGHFeZEZMnv+gBFRfjAcxL5bPHrsGKtnb4qsFAws7/vlh+QfwAaySIw4AXP9ZskTTh5GWu3FLuJhsWVdiJPGvg==", + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { - "graceful-fs": "^4.1.11", - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.2" + "has-flag": "^4.0.0" } } } }, - "jest-environment-node": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-26.6.2.tgz", - "integrity": "sha512-zhtMio3Exty18dy8ee8eJ9kjnRyZC1N4C1Nt/VShN1apyXc8rWGtJ9lI7vqiWcyyXS4BVSEn9lxAM2D+07/Tag==", + "jest-docblock": { + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-28.1.1.tgz", + "integrity": "sha512-3wayBVNiOYx0cwAbl9rwm5kKFP8yHH3d/fkEaL02NPTkDojPtheGB7HZSFY4wzX+DxyrvhXz0KSCVksmCknCuA==", "dev": true, "requires": { - "@jest/environment": "^26.6.2", - "@jest/fake-timers": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/node": "*", - "jest-mock": "^26.6.2", - "jest-util": "^26.6.2" + "detect-newline": "^3.0.0" } }, - "jest-get-type": { - "version": "26.3.0", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", - "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==", - "dev": true - }, - "jest-haste-map": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-26.6.2.tgz", - "integrity": "sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w==", + "jest-each": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-28.1.3.tgz", + "integrity": "sha512-arT1z4sg2yABU5uogObVPvSlSMQlDA48owx07BDPAiasW0yYpYHYOo4HHLz9q0BVzDVU4hILFjzJw0So9aCL/g==", "dev": true, "requires": { - "@jest/types": "^26.6.2", - "@types/graceful-fs": "^4.1.2", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "fsevents": "^2.1.2", - "graceful-fs": "^4.2.4", - "jest-regex-util": "^26.0.0", - "jest-serializer": "^26.6.2", - "jest-util": "^26.6.2", - "jest-worker": "^26.6.2", - "micromatch": "^4.0.2", - "sane": "^4.0.3", - "walker": "^1.0.7" - } - }, - "jest-jasmine2": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-26.6.3.tgz", - "integrity": "sha512-kPKUrQtc8aYwBV7CqBg5pu+tmYXlvFlSFYn18ev4gPFtrRzB15N2gW/Roew3187q2w2eHuu0MU9TJz6w0/nPEg==", - "dev": true, - "requires": { - "@babel/traverse": "^7.1.0", - "@jest/environment": "^26.6.2", - "@jest/source-map": "^26.6.2", - "@jest/test-result": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/node": "*", + "@jest/types": "^28.1.3", "chalk": "^4.0.0", - "co": "^4.6.0", - "expect": "^26.6.2", - "is-generator-fn": "^2.0.0", - "jest-each": "^26.6.2", - "jest-matcher-utils": "^26.6.2", - "jest-message-util": "^26.6.2", - "jest-runtime": "^26.6.3", - "jest-snapshot": "^26.6.2", - "jest-util": "^26.6.2", - "pretty-format": "^26.6.2", - "throat": "^5.0.0" + "jest-get-type": "^28.0.2", + "jest-util": "^28.1.3", + "pretty-format": "^28.1.3" }, "dependencies": { "ansi-styles": { @@ -21289,9 +15239,9 @@ } }, "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "requires": { "ansi-styles": "^4.1.0", @@ -21330,26 +15280,66 @@ } } }, + "jest-environment-node": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-28.1.3.tgz", + "integrity": "sha512-ugP6XOhEpjAEhGYvp5Xj989ns5cB1K6ZdjBYuS30umT4CQEETaxSiPcZ/E1kFktX4GkrcM4qu07IIlDYX1gp+A==", + "dev": true, + "requires": { + "@jest/environment": "^28.1.3", + "@jest/fake-timers": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/node": "*", + "jest-mock": "^28.1.3", + "jest-util": "^28.1.3" + } + }, + "jest-get-type": { + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-28.0.2.tgz", + "integrity": "sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA==", + "dev": true + }, + "jest-haste-map": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-28.1.3.tgz", + "integrity": "sha512-3S+RQWDXccXDKSWnkHa/dPwt+2qwA8CJzR61w3FoYCvoo3Pn8tvGcysmMF0Bj0EX5RYvAI2EIvC57OmotfdtKA==", + "dev": true, + "requires": { + "@jest/types": "^28.1.3", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "fsevents": "^2.3.2", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^28.0.2", + "jest-util": "^28.1.3", + "jest-worker": "^28.1.3", + "micromatch": "^4.0.4", + "walker": "^1.0.8" + } + }, "jest-leak-detector": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-26.6.2.tgz", - "integrity": "sha512-i4xlXpsVSMeKvg2cEKdfhh0H39qlJlP5Ex1yQxwF9ubahboQYMgTtz5oML35AVA3B4Eu+YsmwaiKVev9KCvLxg==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-28.1.3.tgz", + "integrity": "sha512-WFVJhnQsiKtDEo5lG2mM0v40QWnBM+zMdHHyJs8AWZ7J0QZJS59MsyKeJHWhpBZBH32S48FOVvGyOFT1h0DlqA==", "dev": true, "requires": { - "jest-get-type": "^26.3.0", - "pretty-format": "^26.6.2" + "jest-get-type": "^28.0.2", + "pretty-format": "^28.1.3" } }, "jest-matcher-utils": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-26.6.2.tgz", - "integrity": "sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-28.1.3.tgz", + "integrity": "sha512-kQeJ7qHemKfbzKoGjHHrRKH6atgxMk8Enkk2iPQ3XwO6oE/KYD8lMYOziCkeSB9G4adPM4nR1DE8Tf5JeWH6Bw==", "dev": true, "requires": { "chalk": "^4.0.0", - "jest-diff": "^26.6.2", - "jest-get-type": "^26.3.0", - "pretty-format": "^26.6.2" + "jest-diff": "^28.1.3", + "jest-get-type": "^28.0.2", + "pretty-format": "^28.1.3" }, "dependencies": { "ansi-styles": { @@ -21362,9 +15352,9 @@ } }, "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "requires": { "ansi-styles": "^4.1.0", @@ -21404,20 +15394,20 @@ } }, "jest-message-util": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-26.6.2.tgz", - "integrity": "sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-28.1.3.tgz", + "integrity": "sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", - "@jest/types": "^26.6.2", + "@babel/code-frame": "^7.12.13", + "@jest/types": "^28.1.3", "@types/stack-utils": "^2.0.0", "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "micromatch": "^4.0.2", - "pretty-format": "^26.6.2", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^28.1.3", "slash": "^3.0.0", - "stack-utils": "^2.0.2" + "stack-utils": "^2.0.3" }, "dependencies": { "ansi-styles": { @@ -21430,9 +15420,9 @@ } }, "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "requires": { "ansi-styles": "^4.1.0", @@ -21472,12 +15462,12 @@ } }, "jest-mock": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-26.6.2.tgz", - "integrity": "sha512-YyFjePHHp1LzpzYcmgqkJ0nm0gg/lJx2aZFzFy1S6eUqNjXsOqTK10zNRff2dNfssgokjkG65OlWNcIlgd3zew==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-28.1.3.tgz", + "integrity": "sha512-o3J2jr6dMMWYVH4Lh/NKmDXdosrsJgi4AviS8oXLujcjpCMBb1FMsblDnOXKZKfSiHLxYub1eS0IHuRXsio9eA==", "dev": true, "requires": { - "@jest/types": "^26.6.2", + "@jest/types": "^28.1.3", "@types/node": "*" } }, @@ -21489,24 +15479,25 @@ "requires": {} }, "jest-regex-util": { - "version": "26.0.0", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-26.0.0.tgz", - "integrity": "sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==", + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-28.0.2.tgz", + "integrity": "sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw==", "dev": true }, "jest-resolve": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-26.6.2.tgz", - "integrity": "sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-28.1.3.tgz", + "integrity": "sha512-Z1W3tTjE6QaNI90qo/BJpfnvpxtaFTFw5CDgwpyE/Kz8U/06N1Hjf4ia9quUhCh39qIGWF1ZuxFiBiJQwSEYKQ==", "dev": true, "requires": { - "@jest/types": "^26.6.2", "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^28.1.3", "jest-pnp-resolver": "^1.2.2", - "jest-util": "^26.6.2", - "read-pkg-up": "^7.0.1", - "resolve": "^1.18.1", + "jest-util": "^28.1.3", + "jest-validate": "^28.1.3", + "resolve": "^1.20.0", + "resolve.exports": "^1.1.0", "slash": "^3.0.0" }, "dependencies": { @@ -21520,9 +15511,9 @@ } }, "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "requires": { "ansi-styles": "^4.1.0", @@ -21562,42 +15553,42 @@ } }, "jest-resolve-dependencies": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-26.6.3.tgz", - "integrity": "sha512-pVwUjJkxbhe4RY8QEWzN3vns2kqyuldKpxlxJlzEYfKSvY6/bMvxoFrYYzUO1Gx28yKWN37qyV7rIoIp2h8fTg==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-28.1.3.tgz", + "integrity": "sha512-qa0QO2Q0XzQoNPouMbCc7Bvtsem8eQgVPNkwn9LnS+R2n8DaVDPL/U1gngC0LTl1RYXJU0uJa2BMC2DbTfFrHA==", "dev": true, "requires": { - "@jest/types": "^26.6.2", - "jest-regex-util": "^26.0.0", - "jest-snapshot": "^26.6.2" + "jest-regex-util": "^28.0.2", + "jest-snapshot": "^28.1.3" } }, "jest-runner": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-26.6.3.tgz", - "integrity": "sha512-atgKpRHnaA2OvByG/HpGA4g6CSPS/1LK0jK3gATJAoptC1ojltpmVlYC3TYgdmGp+GLuhzpH30Gvs36szSL2JQ==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-28.1.3.tgz", + "integrity": "sha512-GkMw4D/0USd62OVO0oEgjn23TM+YJa2U2Wu5zz9xsQB1MxWKDOlrnykPxnMsN0tnJllfLPinHTka61u0QhaxBA==", "dev": true, "requires": { - "@jest/console": "^26.6.2", - "@jest/environment": "^26.6.2", - "@jest/test-result": "^26.6.2", - "@jest/types": "^26.6.2", + "@jest/console": "^28.1.3", + "@jest/environment": "^28.1.3", + "@jest/test-result": "^28.1.3", + "@jest/transform": "^28.1.3", + "@jest/types": "^28.1.3", "@types/node": "*", "chalk": "^4.0.0", - "emittery": "^0.7.1", - "exit": "^0.1.2", - "graceful-fs": "^4.2.4", - "jest-config": "^26.6.3", - "jest-docblock": "^26.0.0", - "jest-haste-map": "^26.6.2", - "jest-leak-detector": "^26.6.2", - "jest-message-util": "^26.6.2", - "jest-resolve": "^26.6.2", - "jest-runtime": "^26.6.3", - "jest-util": "^26.6.2", - "jest-worker": "^26.6.2", - "source-map-support": "^0.5.6", - "throat": "^5.0.0" + "emittery": "^0.10.2", + "graceful-fs": "^4.2.9", + "jest-docblock": "^28.1.1", + "jest-environment-node": "^28.1.3", + "jest-haste-map": "^28.1.3", + "jest-leak-detector": "^28.1.3", + "jest-message-util": "^28.1.3", + "jest-resolve": "^28.1.3", + "jest-runtime": "^28.1.3", + "jest-util": "^28.1.3", + "jest-watcher": "^28.1.3", + "jest-worker": "^28.1.3", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" }, "dependencies": { "ansi-styles": { @@ -21610,9 +15601,9 @@ } }, "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "requires": { "ansi-styles": "^4.1.0", @@ -21640,6 +15631,15 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, + "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" + } + }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -21652,38 +15652,33 @@ } }, "jest-runtime": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-26.6.3.tgz", - "integrity": "sha512-lrzyR3N8sacTAMeonbqpnSka1dHNux2uk0qqDXVkMv2c/A3wYnvQ4EXuI013Y6+gSKSCxdaczvf4HF0mVXHRdw==", - "dev": true, - "requires": { - "@jest/console": "^26.6.2", - "@jest/environment": "^26.6.2", - "@jest/fake-timers": "^26.6.2", - "@jest/globals": "^26.6.2", - "@jest/source-map": "^26.6.2", - "@jest/test-result": "^26.6.2", - "@jest/transform": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/yargs": "^15.0.0", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-28.1.3.tgz", + "integrity": "sha512-NU+881ScBQQLc1JHG5eJGU7Ui3kLKrmwCPPtYsJtBykixrM2OhVQlpMmFWJjMyDfdkGgBMNjXCGB/ebzsgNGQw==", + "dev": true, + "requires": { + "@jest/environment": "^28.1.3", + "@jest/fake-timers": "^28.1.3", + "@jest/globals": "^28.1.3", + "@jest/source-map": "^28.1.2", + "@jest/test-result": "^28.1.3", + "@jest/transform": "^28.1.3", + "@jest/types": "^28.1.3", "chalk": "^4.0.0", - "cjs-module-lexer": "^0.6.0", + "cjs-module-lexer": "^1.0.0", "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", + "execa": "^5.0.0", "glob": "^7.1.3", - "graceful-fs": "^4.2.4", - "jest-config": "^26.6.3", - "jest-haste-map": "^26.6.2", - "jest-message-util": "^26.6.2", - "jest-mock": "^26.6.2", - "jest-regex-util": "^26.0.0", - "jest-resolve": "^26.6.2", - "jest-snapshot": "^26.6.2", - "jest-util": "^26.6.2", - "jest-validate": "^26.6.2", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^28.1.3", + "jest-message-util": "^28.1.3", + "jest-mock": "^28.1.3", + "jest-regex-util": "^28.0.2", + "jest-resolve": "^28.1.3", + "jest-snapshot": "^28.1.3", + "jest-util": "^28.1.3", "slash": "^3.0.0", - "strip-bom": "^4.0.0", - "yargs": "^15.4.1" + "strip-bom": "^4.0.0" }, "dependencies": { "ansi-styles": { @@ -21696,9 +15691,9 @@ } }, "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "requires": { "ansi-styles": "^4.1.0", @@ -21720,12 +15715,82 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + } + }, + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true + }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -21734,41 +15799,47 @@ "requires": { "has-flag": "^4.0.0" } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } } } }, - "jest-serializer": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-26.6.2.tgz", - "integrity": "sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==", - "dev": true, - "requires": { - "@types/node": "*", - "graceful-fs": "^4.2.4" - } - }, "jest-snapshot": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-26.6.2.tgz", - "integrity": "sha512-OLhxz05EzUtsAmOMzuupt1lHYXCNib0ECyuZ/PZOx9TrZcC8vL0x+DUG3TL+GLX3yHG45e6YGjIm0XwDc3q3og==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-28.1.3.tgz", + "integrity": "sha512-4lzMgtiNlc3DU/8lZfmqxN3AYD6GGLbl+72rdBpXvcV+whX7mDrREzkPdp2RnmfIiWBg1YbuFSkXduF2JcafJg==", "dev": true, "requires": { - "@babel/types": "^7.0.0", - "@jest/types": "^26.6.2", - "@types/babel__traverse": "^7.0.4", - "@types/prettier": "^2.0.0", + "@babel/core": "^7.11.6", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/traverse": "^7.7.2", + "@babel/types": "^7.3.3", + "@jest/expect-utils": "^28.1.3", + "@jest/transform": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/babel__traverse": "^7.0.6", + "@types/prettier": "^2.1.5", + "babel-preset-current-node-syntax": "^1.0.0", "chalk": "^4.0.0", - "expect": "^26.6.2", - "graceful-fs": "^4.2.4", - "jest-diff": "^26.6.2", - "jest-get-type": "^26.3.0", - "jest-haste-map": "^26.6.2", - "jest-matcher-utils": "^26.6.2", - "jest-message-util": "^26.6.2", - "jest-resolve": "^26.6.2", + "expect": "^28.1.3", + "graceful-fs": "^4.2.9", + "jest-diff": "^28.1.3", + "jest-get-type": "^28.0.2", + "jest-haste-map": "^28.1.3", + "jest-matcher-utils": "^28.1.3", + "jest-message-util": "^28.1.3", + "jest-util": "^28.1.3", "natural-compare": "^1.4.0", - "pretty-format": "^26.6.2", - "semver": "^7.3.2" + "pretty-format": "^28.1.3", + "semver": "^7.3.5" }, "dependencies": { "ansi-styles": { @@ -21781,9 +15852,9 @@ } }, "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "requires": { "ansi-styles": "^4.1.0", @@ -21823,17 +15894,17 @@ } }, "jest-util": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz", - "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-28.1.3.tgz", + "integrity": "sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==", "dev": true, "requires": { - "@jest/types": "^26.6.2", + "@jest/types": "^28.1.3", "@types/node": "*", "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "is-ci": "^2.0.0", - "micromatch": "^4.0.2" + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" }, "dependencies": { "ansi-styles": { @@ -21846,15 +15917,21 @@ } }, "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, + "ci-info": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.2.tgz", + "integrity": "sha512-xmDt/QIAdeZ9+nfdPsaBCpMvHNLFiLdjj59qjqn+6iPe6YmHGQ35sBnQ8uslRBXFmXkiZQOJRjvQeoGppoTjjg==", + "dev": true + }, "color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -21888,17 +15965,17 @@ } }, "jest-validate": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-26.6.2.tgz", - "integrity": "sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-28.1.3.tgz", + "integrity": "sha512-SZbOGBWEsaTxBGCOpsRWlXlvNkvTkY0XxRfh7zYmvd8uL5Qzyg0CHAXiXKROflh801quA6+/DsT4ODDthOC/OA==", "dev": true, "requires": { - "@jest/types": "^26.6.2", - "camelcase": "^6.0.0", + "@jest/types": "^28.1.3", + "camelcase": "^6.2.0", "chalk": "^4.0.0", - "jest-get-type": "^26.3.0", + "jest-get-type": "^28.0.2", "leven": "^3.1.0", - "pretty-format": "^26.6.2" + "pretty-format": "^28.1.3" }, "dependencies": { "ansi-styles": { @@ -21911,15 +15988,15 @@ } }, "camelcase": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", - "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true }, "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "requires": { "ansi-styles": "^4.1.0", @@ -21959,17 +16036,18 @@ } }, "jest-watcher": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-26.6.2.tgz", - "integrity": "sha512-WKJob0P/Em2csiVthsI68p6aGKTIcsfjH9Gsx1f0A3Italz43e3ho0geSAVsmj09RWOELP1AZ/DXyJgOgDKxXQ==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-28.1.3.tgz", + "integrity": "sha512-t4qcqj9hze+jviFPUN3YAtAEeFnr/azITXQEMARf5cMwKY2SMBRnCQTXLixTl20OR6mLh9KLMrgVJgJISym+1g==", "dev": true, "requires": { - "@jest/test-result": "^26.6.2", - "@jest/types": "^26.6.2", + "@jest/test-result": "^28.1.3", + "@jest/types": "^28.1.3", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", - "jest-util": "^26.6.2", + "emittery": "^0.10.2", + "jest-util": "^28.1.3", "string-length": "^4.0.1" }, "dependencies": { @@ -21983,9 +16061,9 @@ } }, "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "requires": { "ansi-styles": "^4.1.0", @@ -22025,14 +16103,14 @@ } }, "jest-worker": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", - "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-28.1.3.tgz", + "integrity": "sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g==", "dev": true, "requires": { "@types/node": "*", "merge-stream": "^2.0.0", - "supports-color": "^7.0.0" + "supports-color": "^8.0.0" }, "dependencies": { "has-flag": { @@ -22042,9 +16120,9 @@ "dev": true }, "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, "requires": { "has-flag": "^4.0.0" @@ -22059,53 +16137,12 @@ "dev": true }, "js-yaml": { - "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", - "esprima": "^4.0.0" - } - }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "dev": true - }, - "jsdom": { - "version": "16.4.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.4.0.tgz", - "integrity": "sha512-lYMm3wYdgPhrl7pDcRmvzPhhrGVBeVhPIqeHjzeiHN3DFmD1RBpbExbi8vU7BJdH8VAZYovR8DMt0PNNDM7k8w==", - "dev": true, - "requires": { - "abab": "^2.0.3", - "acorn": "^7.1.1", - "acorn-globals": "^6.0.0", - "cssom": "^0.4.4", - "cssstyle": "^2.2.0", - "data-urls": "^2.0.0", - "decimal.js": "^10.2.0", - "domexception": "^2.0.1", - "escodegen": "^1.14.1", - "html-encoding-sniffer": "^2.0.1", - "is-potential-custom-element-name": "^1.0.0", - "nwsapi": "^2.2.0", - "parse5": "5.1.1", - "request": "^2.88.2", - "request-promise-native": "^1.0.8", - "saxes": "^5.0.0", - "symbol-tree": "^3.2.4", - "tough-cookie": "^3.0.1", - "w3c-hr-time": "^1.0.2", - "w3c-xmlserializer": "^2.0.0", - "webidl-conversions": "^6.1.0", - "whatwg-encoding": "^1.0.5", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.0.0", - "ws": "^7.2.3", - "xml-name-validator": "^3.0.0" + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "requires": { + "argparse": "^2.0.1" } }, "jsesc": { @@ -22114,24 +16151,12 @@ "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", "dev": true }, - "json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true - }, "json-parse-even-better-errors": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", "dev": true }, - "json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", - "dev": true - }, "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -22144,52 +16169,10 @@ "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", "dev": true }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", - "dev": true - }, - "json3": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz", - "integrity": "sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==", - "dev": true - }, "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" - } - }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", - "dev": true, - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" - } - }, - "killable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", - "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true }, "kind-of": { @@ -22210,75 +16193,18 @@ "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", "dev": true }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - } - }, "lines-and-columns": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", - "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", "dev": true }, - "load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" - }, - "dependencies": { - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", - "dev": true, - "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - } - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true - } - } - }, "loader-runner": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==", "dev": true }, - "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" - } - }, "locate-path": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", @@ -22300,27 +16226,12 @@ "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", "dev": true }, - "lodash.sortby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", - "dev": true - }, - "loglevel": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.7.1.tgz", - "integrity": "sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw==", + "lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true }, - "loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dev": true, - "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" - } - }, "lower-case": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", @@ -22331,22 +16242,13 @@ }, "dependencies": { "tslib": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", - "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", "dev": true } } }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, "make-dir": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", @@ -22357,9 +16259,9 @@ }, "dependencies": { "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true } } @@ -22371,49 +16273,33 @@ "dev": true }, "makeerror": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", - "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", - "dev": true, - "requires": { - "tmpl": "1.0.x" - } - }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", - "dev": true - }, - "map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", "dev": true, "requires": { - "object-visit": "^1.0.0" + "tmpl": "1.0.5" } }, "media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", "dev": true }, - "memory-fs": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", - "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", + "memfs": { + "version": "3.4.7", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.7.tgz", + "integrity": "sha512-ygaiUSNalBX85388uskeCyhSAoOSgzBbtVCr9jA2RROssFL9Q19/ZXFqS+2Th2sr1ewNIWgFdLzLC3Yl1Zv+lw==", "dev": true, "requires": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" + "fs-monkey": "^1.0.3" } }, "merge-descriptors": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", "dev": true }, "merge-stream": { @@ -22431,17 +16317,17 @@ "methods": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", "dev": true }, "micromatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", - "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", "dev": true, "requires": { - "braces": "^3.0.1", - "picomatch": "^2.0.5" + "braces": "^3.0.2", + "picomatch": "^2.3.1" } }, "mime": { @@ -22451,18 +16337,18 @@ "dev": true }, "mime-db": { - "version": "1.44.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", - "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==", + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "dev": true }, "mime-types": { - "version": "2.1.27", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", - "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, "requires": { - "mime-db": "1.44.0" + "mime-db": "1.52.0" } }, "mimic-fn": { @@ -22477,481 +16363,196 @@ "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==", "dev": true }, - "minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - }, - "minipass": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", - "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", - "dev": true, - "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - }, - "dependencies": { - "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - } - } - }, - "minizlib": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", - "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", - "dev": true, - "requires": { - "minipass": "^2.9.0" - } - }, - "mixin-deep": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", - "dev": true, - "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "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" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "multicast-dns": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", - "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", - "dev": true, - "requires": { - "dns-packet": "^1.3.1", - "thunky": "^1.0.2" - } - }, - "multicast-dns-service-types": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", - "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", - "dev": true - }, - "nan": { - "version": "2.14.2", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.2.tgz", - "integrity": "sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ==", - "dev": true - }, - "nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - } - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", - "dev": true - }, - "needle": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/needle/-/needle-2.6.0.tgz", - "integrity": "sha512-KKYdza4heMsEfSWD7VPUIz3zX2XDwOyX2d+geb4vrERZMT5RMU6ujjaD+I5Yr54uZxQ2w6XRTAhHBbSCyovZBg==", - "dev": true, - "requires": { - "debug": "^3.2.6", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - } - } - }, - "negotiator": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", - "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", - "dev": true - }, - "neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true - }, - "nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "dev": true - }, - "no-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", - "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", - "dev": true, - "requires": { - "lower-case": "^2.0.2", - "tslib": "^2.0.3" - }, - "dependencies": { - "tslib": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", - "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", - "dev": true - } - } - }, - "node-forge": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", - "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==", - "dev": true - }, - "node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", - "dev": true - }, - "node-modules-regexp": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz", - "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=", - "dev": true - }, - "node-notifier": { - "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", - "semver": "^7.3.2", - "shellwords": "^0.1.1", - "uuid": "^8.3.0", - "which": "^2.0.2" - }, - "dependencies": { - "which": { - "version": "2.0.2", - "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" - } - } - } - }, - "node-pre-gyp": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.11.0.tgz", - "integrity": "sha512-TwWAOZb0j7e9eGaf9esRx3ZcLaE5tQ2lvYy1pb5IAaG1a2e2Kv5Lms1Y4hpj+ciXJRofIxxlt5haeQ/2ANeE0Q==", - "dev": true, - "requires": { - "detect-libc": "^1.0.2", - "mkdirp": "^0.5.1", - "needle": "^2.2.1", - "nopt": "^4.0.1", - "npm-packlist": "^1.1.6", - "npmlog": "^4.0.2", - "rc": "^1.2.7", - "rimraf": "^2.6.1", - "semver": "^5.3.0", - "tar": "^4" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } - } - }, - "nopt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz", - "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==", - "dev": true, - "requires": { - "abbrev": "1", - "osenv": "^0.1.4" - } - }, - "normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, - "requires": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } - } - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true - }, - "npm-bundled": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.1.tgz", - "integrity": "sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA==", - "dev": true, - "requires": { - "npm-normalize-package-bin": "^1.0.1" - } - }, - "npm-normalize-package-bin": { + "minimalistic-assert": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", - "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", "dev": true }, - "npm-packlist": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.8.tgz", - "integrity": "sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A==", + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "requires": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1", - "npm-normalize-package-bin": "^1.0.1" + "brace-expansion": "^1.1.7" } }, - "npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "minipass": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.4.tgz", + "integrity": "sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==", "dev": true, "requires": { - "path-key": "^2.0.0" + "yallist": "^4.0.0" } }, - "npmlog": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", - "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", "dev": true, "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" + "minipass": "^3.0.0", + "yallist": "^4.0.0" } }, - "nth-check": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", - "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "multicast-dns": { + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", + "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", "dev": true, "requires": { - "boolbase": "~1.0.0" + "dns-packet": "^5.2.2", + "thunky": "^1.0.2" } }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "nan": { + "version": "2.20.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.20.0.tgz", + "integrity": "sha512-bk3gXBZDGILuuo/6sKtr0DQmSThYHLtNCdSdXk9YkxD/jK6X2vmCyyXBBxyqZ4XcnzTyYEAThfX3DCEnLf6igw==", "dev": true }, - "nwsapi": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", - "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", "dev": true }, - "oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", "dev": true }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", "dev": true }, - "object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", "dev": true, "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" + "lower-case": "^2.0.2", + "tslib": "^2.0.3" }, "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + } + } + }, + "node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "dev": true, + "requires": { + "whatwg-url": "^5.0.0" + }, + "dependencies": { + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true + }, + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", "dev": true, "requires": { - "is-buffer": "^1.1.5" + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" } } } }, - "object-hash": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-2.1.1.tgz", - "integrity": "sha512-VOJmgmS+7wvXf8CjbQmimtCnEx3IAoLxI3fp2fbWehxrWBcAQFbk+vcwb6vzR0VZv/eNCJ/27j151ZTwqW/JeQ==", + "node-forge": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", "dev": true }, - "object-inspect": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", - "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==", + "node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", "dev": true }, - "object-is": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.4.tgz", - "integrity": "sha512-1ZvAZ4wlF7IyPVOcE1Omikt7UpaFlOQq0HlSti+ZvDH3UiD2brwGMwDbyV43jao2bKJ+4+WdPJHSd7kgzKYVqg==", - "dev": true, - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3" - } - }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "node-releases": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", "dev": true }, - "object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", "dev": true, "requires": { - "isobject": "^3.0.0" + "abbrev": "1" } }, - "object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "npmlog": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", + "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", "dev": true, "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" + "are-we-there-yet": "^2.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^3.0.0", + "set-blocking": "^2.0.0" } }, - "object.getownpropertydescriptors": { + "nth-check": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.1.tgz", - "integrity": "sha512-6DtXgZ/lIZ9hqx4GtZETobXLR/ZLaa0aqV0kzbn80Rf8Z2e/XFnhA0I7p07N2wH8bBBltr2xQPi6sbKWAY2Eng==", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", "dev": true, "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.1" + "boolbase": "^1.0.0" } }, - "object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "object-inspect": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", + "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", + "dev": true }, "obuf": { "version": "1.1.2", @@ -22960,9 +16561,9 @@ "dev": true }, "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", "dev": true, "requires": { "ee-first": "1.1.1" @@ -22992,80 +16593,17 @@ "mimic-fn": "^2.1.0" } }, - "opn": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", - "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", - "dev": true, - "requires": { - "is-wsl": "^1.1.0" - }, - "dependencies": { - "is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", - "dev": true - } - } - }, - "optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "dev": true, - "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - } - }, - "original": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz", - "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==", - "dev": true, - "requires": { - "url-parse": "^1.4.3" - } - }, - "os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", - "dev": true - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "dev": true - }, - "osenv": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", - "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "open": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", + "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", "dev": true, "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" } }, - "p-each-series": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-2.2.0.tgz", - "integrity": "sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA==", - "dev": true - }, - "p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", - "dev": true - }, "p-limit": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", @@ -23091,12 +16629,13 @@ "dev": true }, "p-retry": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-3.0.1.tgz", - "integrity": "sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==", + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", + "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", "dev": true, "requires": { - "retry": "^0.12.0" + "@types/retry": "0.12.0", + "retry": "^0.13.1" } }, "p-try": { @@ -23116,9 +16655,9 @@ }, "dependencies": { "tslib": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", - "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", "dev": true } } @@ -23133,9 +16672,9 @@ } }, "parse-json": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.1.0.tgz", - "integrity": "sha512-+mi/lmVVNKFNVyLXV31ERiy2CY5E1/F6QtJFEzoChPRwwngMNXRDQ9GJ5WdE2Z2P4AujsOi0/+2qHID68KwfIQ==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", @@ -23144,12 +16683,6 @@ "lines-and-columns": "^1.1.6" } }, - "parse5": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", - "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==", - "dev": true - }, "parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", @@ -23167,25 +16700,13 @@ }, "dependencies": { "tslib": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", - "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", "dev": true } } }, - "pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", - "dev": true - }, - "path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", - "dev": true - }, "path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -23204,51 +16725,28 @@ "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", "dev": true }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true - }, "path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, "path-to-regexp": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", "dev": true }, - "path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "dev": true, - "requires": { - "pify": "^3.0.0" - }, - "dependencies": { - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - } - } - }, - "performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "picocolors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", "dev": true }, "picomatch": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", - "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true }, "pify": { @@ -23273,67 +16771,15 @@ } }, "pirates": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz", - "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==", - "dev": true, - "requires": { - "node-modules-regexp": "^1.0.0" - } - }, - "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==", - "dev": true, - "requires": { - "find-up": "^4.0.0" - } - }, - "pn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", - "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==", - "dev": true - }, - "portfinder": { - "version": "1.0.28", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", - "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", - "dev": true, - "requires": { - "async": "^2.6.2", - "debug": "^3.1.1", - "mkdirp": "^0.5.5" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - } - } - }, - "posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", - "dev": true - }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", + "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", "dev": true }, "prettier": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.2.1.tgz", - "integrity": "sha512-PqyhM2yCjg/oKkFPtTGUojv7gnZAoG80ttl45O6x2Ug/rMJw4wcc9k6aaf2hibP7BGVCCM33gZoGjyvt9mm16Q==", + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz", + "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==", "dev": true }, "prettier-linter-helpers": { @@ -23346,55 +16792,31 @@ } }, "pretty-error": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.2.tgz", - "integrity": "sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", + "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", "dev": true, "requires": { "lodash": "^4.17.20", - "renderkid": "^2.0.4" + "renderkid": "^3.0.0" } }, "pretty-format": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", - "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", + "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==", "dev": true, "requires": { - "@jest/types": "^26.6.2", - "ansi-regex": "^5.0.0", - "ansi-styles": "^4.0.0", - "react-is": "^17.0.1" + "@jest/schemas": "^28.1.3", + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" }, "dependencies": { - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true - }, "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==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true } } @@ -23405,52 +16827,32 @@ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true }, - "progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true - }, "prompts": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.0.tgz", - "integrity": "sha512-awZAKrk3vN6CroQukBL+R9051a4R3zCZBlJm/HBfrSZ8iTpYix3VX1vU4mveiLpiwmOJT4wokTF9m6HUk4KqWQ==", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", "dev": true, "requires": { "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - } - }, - "proxy-addr": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", - "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", - "dev": true, - "requires": { - "forwarded": "~0.1.2", - "ipaddr.js": "1.9.1" - } - }, - "prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", - "dev": true - }, - "psl": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", - "dev": true + "sisteransi": "^1.0.5" + } }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", "dev": true, "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "dependencies": { + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true + } } }, "punycode": { @@ -23465,21 +16867,18 @@ "integrity": "sha512-HM7yY8O2ilqhmULxGMpcHSF1EhJJ9yBj8gvDEuZ6M+KGJ0YY2hKpnXvRD+hZPLrDVck3ExIGhmPtSdcjC+guuw==" }, "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", - "dev": true - }, - "querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", - "dev": true + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dev": true, + "requires": { + "side-channel": "^1.0.4" + } }, - "querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", "dev": true }, "randombytes": { @@ -23498,92 +16897,31 @@ "dev": true }, "raw-body": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", - "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", "dev": true, "requires": { - "bytes": "3.1.0", - "http-errors": "1.7.2", + "bytes": "3.1.2", + "http-errors": "2.0.0", "iconv-lite": "0.4.24", "unpipe": "1.0.0" }, "dependencies": { "bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", "dev": true } } }, - "rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "dev": true, - "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - } - }, "react-is": { - "version": "17.0.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.1.tgz", - "integrity": "sha512-NAnt2iGDXohE5LI7uBnLnqvLQMtzhkiAOLXTmv+qnF9Ky7xAPcX8Up/xWIhxvLVGJvuLiNc4xQLtuqDRzb4fSA==", + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", "dev": true }, - "read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", - "dev": true, - "requires": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - }, - "dependencies": { - "type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", - "dev": true - } - } - }, - "read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", - "dev": true, - "requires": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" - }, - "dependencies": { - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - } - } - }, "readable-stream": { "version": "2.3.7", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", @@ -23600,128 +16938,12 @@ } }, "readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - }, - "dependencies": { - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - } - } - }, - "realpath-native": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-1.1.0.tgz", - "integrity": "sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, "requires": { - "util.promisify": "^1.0.0" + "picomatch": "^2.2.1" } }, "rechoir": { @@ -23733,172 +16955,35 @@ "resolve": "^1.9.0" } }, - "regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "dev": true, - "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - } - }, - "regexp.prototype.flags": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz", - "integrity": "sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1" - }, - "dependencies": { - "es-abstract": { - "version": "1.17.7", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", - "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", - "dev": true, - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.2", - "is-regex": "^1.1.1", - "object-inspect": "^1.8.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.1", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" - } - } - } - }, "regexpp": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", - "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", "dev": true }, "relateurl": { "version": "0.2.7", "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", - "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", - "dev": true - }, - "remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", "dev": true }, "renderkid": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.5.tgz", - "integrity": "sha512-ccqoLg+HLOHq1vdfYNm4TBeaCDIi1FLt3wGojTDSvdewUv65oTmI3cnT2E4hRjl1gzKZIPK+KZrXzlUYKnR+vQ==", - "dev": true, - "requires": { - "css-select": "^2.0.2", - "dom-converter": "^0.2", - "htmlparser2": "^3.10.1", - "lodash": "^4.17.20", - "strip-ansi": "^3.0.0" - } - }, - "repeat-element": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", - "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", - "dev": true - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "dev": true - }, - "request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "dev": true, - "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "dependencies": { - "tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "dev": true, - "requires": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - } - }, - "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "dev": true - } - } - }, - "request-promise-core": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz", - "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==", - "dev": true, - "requires": { - "lodash": "^4.17.19" - } - }, - "request-promise-native": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.9.tgz", - "integrity": "sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", + "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", "dev": true, "requires": { - "request-promise-core": "1.1.4", - "stealthy-require": "^1.1.1", - "tough-cookie": "^2.3.3" - }, - "dependencies": { - "tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "dev": true, - "requires": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - } - } + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^6.0.1" } }, "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "dev": true }, "require-from-string": { @@ -23907,26 +16992,21 @@ "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", "dev": true }, - "require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true - }, "requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", "dev": true }, "resolve": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz", - "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==", + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", "dev": true, "requires": { - "is-core-module": "^2.1.0", - "path-parse": "^1.0.6" + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" } }, "resolve-cwd": { @@ -23940,247 +17020,73 @@ "dependencies": { "resolve-from": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true - } - } - }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true - }, - "resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", - "dev": true - }, - "ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "dev": true - }, - "retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", - "dev": true - }, - "reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true - }, - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "rsvp": { - "version": "4.8.5", - "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz", - "integrity": "sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==", - "dev": true - }, - "run-parallel": { - "version": "1.1.10", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.10.tgz", - "integrity": "sha512-zb/1OuZ6flOlH6tQyMPUrE3x3Ulxjlo9WIVXR4yVYi4H9UXQaeIsPbLn2R3O3vQCnDKkAl2qHiuocKKX4Tz/Sw==", - "dev": true - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", - "dev": true, - "requires": { - "ret": "~0.1.10" - } - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "sane": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/sane/-/sane-4.1.0.tgz", - "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==", - "dev": true, - "requires": { - "@cnakazawa/watch": "^1.0.3", - "anymatch": "^2.0.0", - "capture-exit": "^2.0.0", - "exec-sh": "^0.3.2", - "execa": "^1.0.0", - "fb-watchman": "^2.0.0", - "micromatch": "^3.1.4", - "minimist": "^1.1.1", - "walker": "~1.0.5" - }, - "dependencies": { - "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dev": true, - "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - } - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true } } }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true }, - "saxes": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", - "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "resolve.exports": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz", + "integrity": "sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==", + "dev": true + }, + "retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "dev": true + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", "dev": true, "requires": { - "xmlchars": "^2.2.0" + "queue-microtask": "^1.2.2" } }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, "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": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "dev": true, "requires": { - "@types/json-schema": "^7.0.6", + "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", "ajv-keywords": "^3.5.2" } @@ -24192,42 +17098,39 @@ "dev": true }, "selfsigned": { - "version": "1.10.8", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.8.tgz", - "integrity": "sha512-2P4PtieJeEwVgTU9QEcwIRDQ/mXJLX8/+I3ur+Pg16nS8oNbrGxEso9NyYWy8NAmXiNl4dlAp5MwoNeCWzON4w==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.0.1.tgz", + "integrity": "sha512-LmME957M1zOsUhG+67rAjKfiWFox3SBxE/yymatMZsAx+oMrJ0YQ8AToOnyCm7xbeg2ep37IHLxdu0o2MavQOQ==", "dev": true, "requires": { - "node-forge": "^0.10.0" + "node-forge": "^1" } }, "semver": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", - "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "dev": true }, "send": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", - "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", "dev": true, "requires": { "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", + "depd": "2.0.0", + "destroy": "1.2.0", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "etag": "~1.8.1", "fresh": "0.5.2", - "http-errors": "~1.7.2", + "http-errors": "2.0.0", "mime": "1.6.0", - "ms": "2.1.1", - "on-finished": "~2.3.0", + "ms": "2.1.3", + "on-finished": "2.4.1", "range-parser": "~1.2.1", - "statuses": "~1.5.0" + "statuses": "2.0.1" }, "dependencies": { "debug": { @@ -24242,23 +17145,35 @@ "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true } } }, + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true + }, "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "dev": true } } }, "serialize-javascript": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", - "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", "dev": true, "requires": { "randombytes": "^2.1.0" @@ -24312,415 +17227,135 @@ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true }, - "setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", - "dev": true - } - } - }, - "serve-static": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", - "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", - "dev": true, - "requires": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.17.1" - } - }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true - }, - "set-value": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", - "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "setprototypeof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", - "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", - "dev": true - }, - "shallow-clone": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", - "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", - "dev": true, - "requires": { - "kind-of": "^6.0.2" - } - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "dev": true, - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", - "dev": true - }, - "shellwords": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", - "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", - "dev": true, - "optional": true - }, - "signal-exit": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", - "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", - "dev": true - }, - "simple-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", - "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", - "dev": true - }, - "simple-get": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.0.tgz", - "integrity": "sha512-bCR6cP+aTdScaQCnQKbPKtJOKDp/hj9EDLJo3Nw4y1QksqaovlW/bnptB6/c1e+qmNIDHRK+oXFDdEqBT8WzUA==", - "dev": true, - "requires": { - "decompress-response": "^4.2.0", - "once": "^1.3.1", - "simple-concat": "^1.0.0" - } - }, - "sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "dev": true - }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "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" - }, - "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" - } - }, - "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 - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - } - } - }, - "snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "dev": true, - "requires": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - } - } - }, - "snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "dev": true, - "requires": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "dev": true, - "requires": { - "kind-of": "^3.2.0" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true } } }, - "sockjs": { - "version": "0.3.21", - "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.21.tgz", - "integrity": "sha512-DhbPFGpxjc6Z3I+uX07Id5ZO2XwYsWOrYjaSeieES78cq+JaJvVe5q/m1uvjIQhXinhIeCFRH6JgXe+mvVMyXw==", + "serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", "dev": true, "requires": { - "faye-websocket": "^0.11.3", - "uuid": "^3.4.0", - "websocket-driver": "^0.7.4" - }, - "dependencies": { - "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "dev": true - } + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" } }, - "sockjs-client": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.5.0.tgz", - "integrity": "sha512-8Dt3BDi4FYNrCFGTL/HtwVzkARrENdwOUf1ZoW/9p3M8lZdFT35jVdrHza+qgxuG9H3/shR4cuX/X9umUrjP8Q==", + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", "dev": true, "requires": { - "debug": "^3.2.6", - "eventsource": "^1.0.7", - "faye-websocket": "^0.11.3", - "inherits": "^2.0.4", - "json3": "^3.3.3", - "url-parse": "^1.4.7" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - } + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" } }, - "source-list-map": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", - "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", "dev": true }, - "source-map-resolve": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", - "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", "dev": true, "requires": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" + "kind-of": "^6.0.2" } }, - "source-map-support": { - "version": "0.5.19", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", - "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", "dev": true, "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" } }, - "source-map-url": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", "dev": true }, - "spdx-correct": { + "simple-get": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.1.tgz", + "integrity": "sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA==", "dev": true, "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" + "decompress-response": "^4.2.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" } }, - "spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", "dev": true }, - "spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "sockjs": { + "version": "0.3.24", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", "dev": true, "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" } }, - "spdx-license-ids": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz", - "integrity": "sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ==", + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true }, + "source-map-support": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, "spdy": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", @@ -24761,42 +17396,16 @@ } } }, - "split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "dev": true, - "requires": { - "extend-shallow": "^3.0.0" - } - }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", "dev": true }, - "sshpk": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", - "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", - "dev": true, - "requires": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - } - }, "stack-utils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.3.tgz", - "integrity": "sha512-gL//fkxfWUsIlFL2Tl42Cl6+HFALEaB1FU76I/Fy+oZjRreP7OPMXFlGbxM7NQsI0ZpUfw76sHnv0WNYuTb7Iw==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz", + "integrity": "sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==", "dev": true, "requires": { "escape-string-regexp": "^2.0.0" @@ -24810,39 +17419,12 @@ } } }, - "static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", - "dev": true, - "requires": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, "statuses": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", "dev": true }, - "stealthy-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", - "dev": true - }, "string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", @@ -24853,70 +17435,33 @@ } }, "string-length": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.1.tgz", - "integrity": "sha512-PKyXUd0LK0ePjSOnWn34V2uD6acUWev9uy0Ft05k0E8xRW+SKcA0F7eMr7h5xlzfn+4O3N+55rduYyet3Jk+jw==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", "dev": true, "requires": { "char-regex": "^1.0.2", "strip-ansi": "^6.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true - }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.0" - } - } } }, "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "string.prototype.trimend": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.3.tgz", - "integrity": "sha512-ayH0pB+uf0U28CtjlLvL7NaohvR1amUvVZk+y3DYb0Ey2PUV5zPkkKy9+U1ndVEIXO8hNg18eIv9Jntbii+dKw==", - "dev": true, - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3" - } - }, - "string.prototype.trimstart": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.3.tgz", - "integrity": "sha512-oBIBUy5lea5tt0ovtOFiEQaBkoBBkyJhZXzJYrSmDo5IUUqbOPvVezuRs/agBIdZ2p2Eo1FD6bD9USyBLfl3xg==", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" } }, "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "^5.0.1" } }, "strip-bom": { @@ -24925,12 +17470,6 @@ "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", "dev": true }, - "strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", - "dev": true - }, "strip-final-newline": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", @@ -24938,9 +17477,9 @@ "dev": true }, "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true }, "supports-color": { @@ -24953,9 +17492,9 @@ } }, "supports-hyperlinks": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.1.0.tgz", - "integrity": "sha512-zoE5/e+dnEijk6ASB6/qrK+oYdm2do1hjoLWrqUC/8WEIW1gbxFcKuBof7sW8ArN6e+AYvsE8HBGiVRWL/F5CA==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz", + "integrity": "sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==", "dev": true, "requires": { "has-flag": "^4.0.0", @@ -24979,101 +17518,42 @@ } } }, - "symbol-tree": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true }, - "table": { - "version": "6.0.7", - "resolved": "https://registry.npmjs.org/table/-/table-6.0.7.tgz", - "integrity": "sha512-rxZevLGTUzWna/qBLObOe16kB2RTnnbhciwgPbMMlazz1yZGVEgnZK762xyVdVznhqxrfCeBMmMkgOOaPwjH7g==", - "dev": true, - "requires": { - "ajv": "^7.0.2", - "lodash": "^4.17.20", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.0" - }, - "dependencies": { - "ajv": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-7.0.3.tgz", - "integrity": "sha512-R50QRlXSxqXcQP5SvKUrw8VZeypvo12i2IX0EeR5PiZ7bEKeHWgzgo264LDadUsCU42lTJVhFikTqJwNeH34gQ==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - } - }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.0" - } - } - } - }, "tapable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", - "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", "dev": true }, "tar": { - "version": "4.4.13", - "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz", - "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", + "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", "dev": true, "requires": { - "chownr": "^1.1.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.8.6", - "minizlib": "^1.2.1", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.2", - "yallist": "^3.0.3" + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" }, "dependencies": { - "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "dev": true + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "dev": true } } @@ -25089,14 +17569,15 @@ } }, "terser": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", - "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", + "version": "5.31.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.31.1.tgz", + "integrity": "sha512-37upzU1+viGvuFtBo9NPufCb9dwM0+l9hMxYyWfBA+fbwrPqNJAhbZ6W47bBFnZHKHTUBnMvi87434qq+qnxOg==", "dev": true, "requires": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", "commander": "^2.20.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.12" + "source-map-support": "~0.5.20" }, "dependencies": { "commander": { @@ -25104,55 +17585,56 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true + }, + "source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } } } }, "terser-webpack-plugin": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.1.1.tgz", - "integrity": "sha512-5XNNXZiR8YO6X6KhSGXfY0QrGrCRlSwAEjIIrlRQR4W8nP69TaJUlh3bkuac6zzgspiGPfKEHcY295MMVExl5Q==", + "version": "5.3.10", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", + "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", "dev": true, "requires": { - "jest-worker": "^26.6.2", - "p-limit": "^3.1.0", - "schema-utils": "^3.0.0", - "serialize-javascript": "^5.0.1", - "source-map": "^0.6.1", - "terser": "^5.5.1" + "@jridgewell/trace-mapping": "^0.3.20", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.1", + "terser": "^5.26.0" }, "dependencies": { - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", "dev": true, "requires": { - "yocto-queue": "^0.1.0" + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" } }, - "terser": { - "version": "5.5.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.5.1.tgz", - "integrity": "sha512-6VGWZNVP2KTUcltUQJ25TtNjx/XgdDsBDKGt8nN0MpydU36LmbPPcMBd2kmtZNNGVVDLg44k7GKeHHj+4zPIBQ==", + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, "requires": { - "commander": "^2.20.0", - "source-map": "~0.7.2", - "source-map-support": "~0.5.19" - }, - "dependencies": { - "source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true - } + "has-flag": "^4.0.0" } } } @@ -25174,61 +17656,23 @@ "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", "dev": true }, - "throat": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz", - "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==", - "dev": true - }, "thunky": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", "dev": true }, - "tmpl": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", - "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=", - "dev": true - }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true - }, - "to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "dev": true, - "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - } + "tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "dev": true + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true }, "to-regex-range": { "version": "5.0.1", @@ -25240,82 +17684,35 @@ } }, "toidentifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", - "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", "dev": true }, - "tough-cookie": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-3.0.1.tgz", - "integrity": "sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg==", - "dev": true, - "requires": { - "ip-regex": "^2.1.0", - "psl": "^1.1.28", - "punycode": "^2.1.1" - } - }, - "tr46": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.0.2.tgz", - "integrity": "sha512-3n1qG+/5kg+jrbTzwAykB5yRYtQCTqOGKq5U5PE3b0a1/mzo6snDhjGS0zJVJunO0NrT3Dg1MLy5TjWP/UJppg==", - "dev": true, - "requires": { - "punycode": "^2.1.1" - } - }, "ts-jest": { - "version": "26.4.4", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-26.4.4.tgz", - "integrity": "sha512-3lFWKbLxJm34QxyVNNCgXX1u4o/RV0myvA2y2Bxm46iGIjKlaY0own9gIckbjZJPn+WaJEnfPPJ20HHGpoq4yg==", + "version": "28.0.8", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-28.0.8.tgz", + "integrity": "sha512-5FaG0lXmRPzApix8oFG8RKjAz4ehtm8yMKOTy5HX3fY6W8kmvOrmcY0hKDElW52FJov+clhUbrKAqofnj4mXTg==", "dev": true, "requires": { - "@types/jest": "26.x", "bs-logger": "0.x", - "buffer-from": "1.x", "fast-json-stable-stringify": "2.x", - "jest-util": "^26.1.0", - "json5": "2.x", + "jest-util": "^28.0.0", + "json5": "^2.2.1", "lodash.memoize": "4.x", "make-error": "1.x", - "mkdirp": "1.x", "semver": "7.x", - "yargs-parser": "20.x" - }, - "dependencies": { - "json5": { - "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" - } - }, - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true - }, - "yargs-parser": { - "version": "20.2.4", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", - "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", - "dev": true - } + "yargs-parser": "^21.0.1" } }, "ts-loader": { - "version": "8.0.14", - "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-8.0.14.tgz", - "integrity": "sha512-Jt/hHlUnApOZjnSjTmZ+AbD5BGlQFx3f1D0nYuNKwz0JJnuDGHJas6az+FlWKwwRTu+26GXpv249A8UAnYUpqA==", + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.3.1.tgz", + "integrity": "sha512-OkyShkcZTsTwyS3Kt7a4rsT/t2qvEVQuKCTg4LJmpj9fhFR7ukGdZwV6Qq3tRUkqcXtfGpPR7+hFKHCG/0d3Lw==", "dev": true, "requires": { "chalk": "^4.1.0", - "enhanced-resolve": "^4.0.0", - "loader-utils": "^2.0.0", + "enhanced-resolve": "^5.0.0", "micromatch": "^4.0.0", "semver": "^7.3.4" }, @@ -25360,26 +17757,6 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "json5": { - "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" - } - }, - "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==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -25398,38 +17775,14 @@ "dev": true }, "tsutils": { - "version": "3.19.1", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.19.1.tgz", - "integrity": "sha512-GEdoBf5XI324lu7ycad7s6laADfnAqCw6wLGI+knxvw9vsIYBaJfYdmeCEG3FMMUiSm3OGgNb+m6utsWf5h9Vw==", + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", "dev": true, "requires": { "tslib": "^1.8.1" } }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "dev": true, - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", - "dev": true - }, - "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2" - } - }, "type-detect": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", @@ -25437,9 +17790,9 @@ "dev": true }, "type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true }, "type-is": { @@ -25452,91 +17805,28 @@ "mime-types": "~2.1.24" } }, - "typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "dev": true, - "requires": { - "is-typedarray": "^1.0.0" - } - }, "typescript": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.1.3.tgz", - "integrity": "sha512-B3ZIOf1IKeH2ixgHhj6la6xdwR9QrLC5d1VKeCSY4tvkqhF2eqd9O7txNlS0PO3GrBAFIdr3L1ndNwteUbZLYg==", - "dev": true - }, - "union-value": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", - "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" - } - }, - "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "version": "4.8.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.2.tgz", + "integrity": "sha512-C0I1UsrrDHo2fYI5oaCGbSejwX4ch+9Y5jTQELvovfmFkK3HHSZJB8MSJcWLmCUBzQBchCrZ9rMRV6GuNrvGtw==", "dev": true }, "unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", "dev": true }, - "unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "update-browserslist-db": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz", + "integrity": "sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==", "dev": true, "requires": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "dependencies": { - "has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", - "dev": true, - "requires": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "requires": { - "isarray": "1.0.0" - } - } - } - }, - "has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", - "dev": true - } + "escalade": "^3.1.2", + "picocolors": "^1.0.1" } }, - "upath": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", - "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", - "dev": true - }, "uri-js": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.0.tgz", @@ -25546,114 +17836,39 @@ "punycode": "^2.1.0" } }, - "urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", - "dev": true - }, - "url": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", - "dev": true, - "requires": { - "punycode": "1.3.2", - "querystring": "0.2.0" - }, - "dependencies": { - "punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", - "dev": true - } - } - }, - "url-parse": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.1.tgz", - "integrity": "sha512-HOfCOUJt7iSYzEx/UqgtwKRMC6EU91NFhsCHMv9oM03VJcVo2Qrp8T8kI9D7amFf1cu+/3CEhgb3rF9zL7k85Q==", - "dev": true, - "requires": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, - "use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", - "dev": true - }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, - "util.promisify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", - "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", - "dev": true, - "requires": { - "define-properties": "^1.1.2", - "object.getownpropertydescriptors": "^2.0.3" - } - }, "utila": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", - "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=", + "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==", "dev": true }, "utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", "dev": true }, "uuid": { "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", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz", - "integrity": "sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q==", "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": "9.0.1", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.0.1.tgz", + "integrity": "sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w==", "dev": true, "requires": { + "@jridgewell/trace-mapping": "^0.3.12", "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^1.6.0", - "source-map": "^0.7.3" - }, - "dependencies": { - "source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true - } - } - }, - "validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" + "convert-source-map": "^1.6.0" } }, "vary": { @@ -25662,48 +17877,19 @@ "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", "dev": true }, - "verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "w3c-hr-time": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", - "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", - "dev": true, - "requires": { - "browser-process-hrtime": "^1.0.0" - } - }, - "w3c-xmlserializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", - "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", - "dev": true, - "requires": { - "xml-name-validator": "^3.0.0" - } - }, "walker": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", - "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", "dev": true, "requires": { - "makeerror": "1.0.x" + "makeerror": "1.0.12" } }, "watchpack": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.1.0.tgz", - "integrity": "sha512-UjgD1mqjkG99+3lgG36at4wPnUXNvis2v1utwTgQ43C22c4LD71LsYMExdWXh4HZ+RmW+B0t1Vrg2GpXAkTOQw==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.1.tgz", + "integrity": "sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==", "dev": true, "requires": { "glob-to-regexp": "^0.4.1", @@ -25719,199 +17905,73 @@ "minimalistic-assert": "^1.0.0" } }, - "webidl-conversions": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", - "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", - "dev": true - }, "webpack": { - "version": "5.12.3", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.12.3.tgz", - "integrity": "sha512-7tiQmcTnKhZwbf7X7sEfXe0pgkGjUZjT6JfYkZHvvIb4/ZsXl1rJu5PxsJoN7W3v5sNSP/8TgBoiOdDqVdvK5w==", - "dev": true, - "requires": { - "@types/eslint-scope": "^3.7.0", - "@types/estree": "^0.0.45", - "@webassemblyjs/ast": "1.11.0", - "@webassemblyjs/wasm-edit": "1.11.0", - "@webassemblyjs/wasm-parser": "1.11.0", - "acorn": "^8.0.4", - "browserslist": "^4.14.5", + "version": "5.92.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.92.1.tgz", + "integrity": "sha512-JECQ7IwJb+7fgUFBlrJzbyu3GEuNBcdqr1LD7IbSzwkSmIevTm8PF+wej3Oxuz/JFBUZ6O1o43zsPkwm1C4TmA==", + "dev": true, + "requires": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^1.0.5", + "@webassemblyjs/ast": "^1.12.1", + "@webassemblyjs/wasm-edit": "^1.12.1", + "@webassemblyjs/wasm-parser": "^1.12.1", + "acorn": "^8.7.1", + "acorn-import-attributes": "^1.9.5", + "browserslist": "^4.21.10", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.3.1", - "eslint-scope": "^5.1.1", + "enhanced-resolve": "^5.17.0", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", "events": "^3.2.0", "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.4", - "json-parse-better-errors": "^1.0.2", + "graceful-fs": "^4.2.11", + "json-parse-even-better-errors": "^2.3.1", "loader-runner": "^4.2.0", "mime-types": "^2.1.27", "neo-async": "^2.6.2", - "pkg-dir": "^5.0.0", - "schema-utils": "^3.0.0", + "schema-utils": "^3.2.0", "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.1.1", - "watchpack": "^2.0.0", - "webpack-sources": "^2.1.1" - }, - "dependencies": { - "acorn": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.0.4.tgz", - "integrity": "sha512-XNP0PqF1XD19ZlLKvB7cMmnZswW4C/03pRHgirB30uSJTaS3A3V1/P4sS3HPvFmjoriPCJQs+JDSbm4bL1TxGQ==", - "dev": true - }, - "enhanced-resolve": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.5.0.tgz", - "integrity": "sha512-b4a6BasBCoLzri4MdaeOlDMpls2oioI28CF17csMiav9dq46yvQaKPFNUrCHB6VqQokBDG2VIEEL81jMiQ6Wtw==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - } - }, - "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" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, - "pkg-dir": { - "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": "^5.0.0" - } - }, - "tapable": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.0.tgz", - "integrity": "sha512-FBk4IesMV1rBxX2tfiK8RAmogtWn53puLOQlvO8XuwlgxcYbP4mVPS9Ph4aeamSyyVjOl24aYWAuc8U5kCVwMw==", - "dev": true - } + "terser-webpack-plugin": "^5.3.10", + "watchpack": "^2.4.1", + "webpack-sources": "^3.2.3" } }, "webpack-cli": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.3.1.tgz", - "integrity": "sha512-/F4+9QNZM/qKzzL9/06Am8NXIkGV+/NqQ62Dx7DSqudxxpAgBqYn6V7+zp+0Y7JuWksKUbczRY3wMTd+7Uj6OA==", + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.10.0.tgz", + "integrity": "sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w==", "dev": true, "requires": { "@discoveryjs/json-ext": "^0.5.0", - "@webpack-cli/info": "^1.2.1", - "@webpack-cli/serve": "^1.2.1", - "colorette": "^1.2.1", - "commander": "^6.2.0", - "enquirer": "^2.3.6", - "execa": "^5.0.0", + "@webpack-cli/configtest": "^1.2.0", + "@webpack-cli/info": "^1.5.0", + "@webpack-cli/serve": "^1.7.0", + "colorette": "^2.0.14", + "commander": "^7.0.0", + "cross-spawn": "^7.0.3", "fastest-levenshtein": "^1.0.12", - "import-local": "^3.0.2", - "interpret": "^2.2.0", - "rechoir": "^0.7.0", - "v8-compile-cache": "^2.2.0", - "webpack-merge": "^4.2.2" - }, - "dependencies": { - "commander": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", - "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", - "dev": true - }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "execa": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.0.0.tgz", - "integrity": "sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - } - }, - "get-stream": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.0.tgz", - "integrity": "sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg==", - "dev": true - }, - "human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true - }, - "is-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", - "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", + "import-local": "^3.0.2", + "interpret": "^2.2.0", + "rechoir": "^0.7.0", + "webpack-merge": "^5.7.3" + }, + "dependencies": { + "commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", "dev": true }, - "npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, "requires": { - "path-key": "^3.0.0" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" } }, "path-key": { @@ -25935,15 +17995,6 @@ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true }, - "webpack-merge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.2.tgz", - "integrity": "sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==", - "dev": true, - "requires": { - "lodash": "^4.17.15" - } - }, "which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -25956,316 +18007,150 @@ } }, "webpack-dev-middleware": { - "version": "3.7.3", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz", - "integrity": "sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ==", + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.4.tgz", + "integrity": "sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q==", "dev": true, "requires": { - "memory-fs": "^0.4.1", - "mime": "^2.4.4", - "mkdirp": "^0.5.1", + "colorette": "^2.0.10", + "memfs": "^3.4.3", + "mime-types": "^2.1.31", "range-parser": "^1.2.1", - "webpack-log": "^2.0.0" + "schema-utils": "^4.0.0" }, "dependencies": { - "memory-fs": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", - "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", "dev": true, "requires": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" + "fast-deep-equal": "^3.1.3" } }, - "mime": { - "version": "2.4.7", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.7.tgz", - "integrity": "sha512-dhNd1uA2u397uQk3Nv5LM4lm93WYDUXFn3Fu291FJerns4jyTudqhIWe4W04YLy7Uk1tm1Ore04NpjRvQp/NPA==", + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dev": true + }, + "schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + } } } }, "webpack-dev-server": { - "version": "3.11.1", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.1.tgz", - "integrity": "sha512-u4R3mRzZkbxQVa+MBWi2uVpB5W59H3ekZAJsQlKUTdl7Elcah2EhygTPLmeFXybQkf9i2+L0kn7ik9SnXa6ihQ==", - "dev": true, - "requires": { - "ansi-html": "0.0.7", - "bonjour": "^3.5.0", - "chokidar": "^2.1.8", + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.10.0.tgz", + "integrity": "sha512-7dezwAs+k6yXVFZ+MaL8VnE+APobiO3zvpp3rBHe/HmWQ+avwh0Q3d0xxacOiBybZZ3syTZw9HXzpa3YNbAZDQ==", + "dev": true, + "requires": { + "@types/bonjour": "^3.5.9", + "@types/connect-history-api-fallback": "^1.3.5", + "@types/express": "^4.17.13", + "@types/serve-index": "^1.9.1", + "@types/serve-static": "^1.13.10", + "@types/sockjs": "^0.3.33", + "@types/ws": "^8.5.1", + "ansi-html-community": "^0.0.8", + "bonjour-service": "^1.0.11", + "chokidar": "^3.5.3", + "colorette": "^2.0.10", "compression": "^1.7.4", - "connect-history-api-fallback": "^1.6.0", - "debug": "^4.1.1", - "del": "^4.1.1", - "express": "^4.17.1", - "html-entities": "^1.3.1", - "http-proxy-middleware": "0.19.1", - "import-local": "^2.0.0", - "internal-ip": "^4.3.0", - "ip": "^1.1.5", - "is-absolute-url": "^3.0.3", - "killable": "^1.0.1", - "loglevel": "^1.6.8", - "opn": "^5.5.0", - "p-retry": "^3.0.1", - "portfinder": "^1.0.26", - "schema-utils": "^1.0.0", - "selfsigned": "^1.10.8", - "semver": "^6.3.0", + "connect-history-api-fallback": "^2.0.0", + "default-gateway": "^6.0.3", + "express": "^4.17.3", + "graceful-fs": "^4.2.6", + "html-entities": "^2.3.2", + "http-proxy-middleware": "^2.0.3", + "ipaddr.js": "^2.0.1", + "open": "^8.0.9", + "p-retry": "^4.5.0", + "rimraf": "^3.0.2", + "schema-utils": "^4.0.0", + "selfsigned": "^2.0.1", "serve-index": "^1.9.1", - "sockjs": "^0.3.21", - "sockjs-client": "^1.5.0", + "sockjs": "^0.3.24", "spdy": "^4.0.2", - "strip-ansi": "^3.0.1", - "supports-color": "^6.1.0", - "url": "^0.11.0", - "webpack-dev-middleware": "^3.7.2", - "webpack-log": "^2.0.0", - "ws": "^6.2.1", - "yargs": "^13.3.2" + "webpack-dev-middleware": "^5.3.1", + "ws": "^8.4.2" }, "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 - }, - "cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", - "dev": true, - "requires": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - }, - "dependencies": { - "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" - } - } - } - }, - "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 - }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "import-local": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", - "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", - "dev": true, - "requires": { - "pkg-dir": "^3.0.0", - "resolve-cwd": "^2.0.0" - } - }, - "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 - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - }, - "pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", "dev": true, "requires": { - "find-up": "^3.0.0" + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" } }, - "resolve-cwd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", - "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", "dev": true, "requires": { - "resolve-from": "^3.0.0" + "fast-deep-equal": "^3.1.3" } }, - "resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", - "dev": true - }, - "schema-utils": { + "json-schema-traverse": { "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" - } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "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" - }, - "dependencies": { - "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" - } - } - } - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, - "wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" - }, - "dependencies": { - "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" - } - } - } - }, - "ws": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", - "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", - "dev": true, - "requires": { - "async-limiter": "~1.0.0" - } - }, - "yargs": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, "requires": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.2" + "glob": "^7.1.3" } }, - "yargs-parser": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", "dev": true, "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" } } } }, - "webpack-log": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz", - "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==", - "dev": true, - "requires": { - "ansi-colors": "^3.0.0", - "uuid": "^3.3.2" - }, - "dependencies": { - "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "dev": true - } - } - }, "webpack-merge": { - "version": "5.7.3", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.7.3.tgz", - "integrity": "sha512-6/JUQv0ELQ1igjGDzHkXbVDRxkfA57Zw7PfiupdLFJYrgFqY5ZP8xxbpp2lU3EPwYx89ht5Z/aDkD40hFCm5AA==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", + "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", "dev": true, "requires": { "clone-deep": "^4.0.1", @@ -26273,14 +18158,10 @@ } }, "webpack-sources": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.2.0.tgz", - "integrity": "sha512-bQsA24JLwcnWGArOKUxYKhX3Mz/nK1Xf6hxullKERyktjNMC4x8koOeaDNTA2fEJ09BdWLbM/iTW0ithREUP0w==", - "dev": true, - "requires": { - "source-list-map": "^2.0.1", - "source-map": "^0.6.1" - } + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true }, "websocket-driver": { "version": "0.7.4", @@ -26299,54 +18180,13 @@ "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", "dev": true }, - "whatwg-encoding": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", - "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", - "dev": true, - "requires": { - "iconv-lite": "0.4.24" - } - }, - "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==", - "dev": true - }, - "whatwg-url": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.4.0.tgz", - "integrity": "sha512-vwTUFf6V4zhcPkWp/4CQPr1TW9Ml6SF4lVyaIMBdJw5i6qUUJ1QWM4Z6YYVkfka0OUIzVo/0aNtGVGk256IKWw==", - "dev": true, - "requires": { - "lodash.sortby": "^4.7.0", - "tr46": "^2.0.2", - "webidl-conversions": "^6.1.0" - } - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", - "dev": true - }, "wide-align": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", - "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", "dev": true, "requires": { - "string-width": "^1.0.2 || 2" + "string-width": "^1.0.2 || 2 || 3 || 4" } }, "wildcard": { @@ -26356,15 +18196,15 @@ "dev": true }, "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", "dev": true }, "wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, "requires": { "ansi-styles": "^4.0.0", @@ -26372,12 +18212,6 @@ "strip-ansi": "^6.0.0" }, "dependencies": { - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true - }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -26401,32 +18235,6 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - } - }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.0" - } } } }, @@ -26437,40 +18245,26 @@ "dev": true }, "write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", "dev": true, "requires": { "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" + "signal-exit": "^3.0.7" } }, "ws": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.1.tgz", - "integrity": "sha512-pTsP8UAfhy3sk1lSk/O/s4tjD0CRwvMnzvwr4OKGX7ZvqZtUyx4KIJB5JWbkykPoc55tixMGgTNoh3k4FkNGFQ==", + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", + "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", "dev": true, "requires": {} }, - "xml-name-validator": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", - "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", - "dev": true - }, - "xmlchars": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", - "dev": true - }, "y18n": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.1.tgz", - "integrity": "sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==", + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "dev": true }, "yallist": { @@ -26480,83 +18274,25 @@ "dev": true }, "yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "version": "17.5.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.5.1.tgz", + "integrity": "sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA==", "dev": true, "requires": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true - }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, - "string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - } - }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.0" - } - } + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.0.0" } }, "yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true }, "yocto-queue": { "version": "0.1.0", diff --git a/package.json b/package.json index 631aabee..882e025b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "qr-code-styling", - "version": "1.5.0", + "version": "1.6.0", "description": "Add a style and an image to your QR code", "main": "lib/qr-code-styling.js", "types": "lib/index.d.ts", @@ -8,29 +8,28 @@ "lib" ], "dependencies": { - "qrcode-generator": "^1.4.3" + "qrcode-generator": "^1.4.4" }, "devDependencies": { - "@typescript-eslint/eslint-plugin": "^4.13.0", - "@typescript-eslint/parser": "^4.13.0", - "canvas": "^2.6.1", - "clean-webpack-plugin": "^3.0.0", - "eslint": "^7.17.0", - "eslint-config-prettier": "^7.1.0", - "eslint-loader": "^4.0.2", - "eslint-plugin-jest": "^24.1.3", - "eslint-plugin-prettier": "^3.3.1", - "html-webpack-plugin": "^4.5.1", - "jest": "^26.6.3", - "jest-environment-jsdom-fifteen": "^1.0.0", - "prettier": "^2.2.1", - "ts-jest": "^26.4.4", - "ts-loader": "^8.0.14", - "typescript": "^4.1.3", - "webpack": "^5.12.3", - "webpack-cli": "^4.3.1", - "webpack-dev-server": "^3.11.1", - "webpack-merge": "^5.7.3" + "@typescript-eslint/eslint-plugin": "^5.35.1", + "@typescript-eslint/parser": "^5.35.1", + "canvas": "^2.11.2", + "clean-webpack-plugin": "^4.0.0", + "eslint": "^8.23.0", + "eslint-config-prettier": "^8.5.0", + "eslint-plugin-jest": "^26.8.7", + "eslint-plugin-prettier": "^4.2.1", + "eslint-webpack-plugin": "^3.2.0", + "html-webpack-plugin": "^5.5.0", + "jest": "^28.1.3", + "prettier": "^2.7.1", + "ts-jest": "^28.0.8", + "ts-loader": "^9.3.1", + "typescript": "^4.8.2", + "webpack": "^5.74.0", + "webpack-cli": "^4.10.0", + "webpack-dev-server": "^4.10.0", + "webpack-merge": "^5.8.0" }, "scripts": { "build": "webpack --mode=production --config webpack.config.build.js", diff --git a/src/core/QRCanvas.ts b/src/core/QRCanvas.ts index 786aa9ee..2730087b 100644 --- a/src/core/QRCanvas.ts +++ b/src/core/QRCanvas.ts @@ -96,6 +96,8 @@ export default class QRCanvas { this.clear(); this.drawBackground(); + + //Draw the dots with the given filter function this.drawDots((i: number, j: number): boolean => { if (this._options.imageOptions.hideBackgroundDots) { if ( @@ -187,14 +189,27 @@ export default class QRCanvas { if (!this._qr.isDark(i, j)) { continue; } + + const x = this._options.useLegacyDotRotation ? xBeginning + i * dotSize : yBeginning + j * dotSize; + const y = this._options.useLegacyDotRotation ? yBeginning + j * dotSize : xBeginning + i * dotSize; + dot.draw( - yBeginning + j * dotSize, - xBeginning + i * dotSize, + x, + y, dotSize, + //Get neighbor function (xOffset: number, yOffset: number): boolean => { - if (i + xOffset < 0 || j + yOffset < 0 || i + xOffset >= count || j + yOffset >= count) return false; - if (filter && !filter(i + xOffset, j + yOffset)) return false; - return !!this._qr && this._qr.isDark(i + xOffset, j + yOffset); + //Out of bounds check + + if (this._options.useLegacyDotRotation) { + if (i + xOffset < 0 || j + yOffset < 0 || i + xOffset >= count || j + yOffset >= count) return false; + if (filter && !filter(i + xOffset, j + yOffset)) return false; + return !!this._qr && this._qr.isDark(i + xOffset, j + yOffset); + } else { + if (j + xOffset < 0 || i + yOffset < 0 || j + xOffset >= count || i + yOffset >= count) return false; + if (filter && !filter(j + xOffset, i + yOffset)) return false; + return !!this._qr && this._qr.isDark(i + yOffset, j + xOffset); + } } ); } diff --git a/src/core/QRCodeStyling.ts b/src/core/QRCodeStyling.ts index 3454d09e..125fabe4 100644 --- a/src/core/QRCodeStyling.ts +++ b/src/core/QRCodeStyling.ts @@ -30,7 +30,9 @@ export default class QRCodeStyling { } } - async _getQRStylingElement(extension: Extension = "png"): Promise { + async _getQRStylingElement(extension: "svg"): Promise; + async _getQRStylingElement(extension: Omit): Promise; + async _getQRStylingElement(extension: Extension): Promise { if (!this._qr) throw "QR code is empty"; if (extension.toLowerCase() === "svg") { @@ -113,34 +115,42 @@ export default class QRCodeStyling { this._container = container; } - async getRawData(extension: Extension = "png"): Promise { + async getRawData(extension: Extension = "png", quality?: number): Promise { if (!this._qr) throw "QR code is empty"; - const element = await this._getQRStylingElement(extension); - if (extension.toLowerCase() === "svg") { - const serializer = new XMLSerializer(); - const source = serializer.serializeToString(((element as unknown) as QRSVG).getElement()); + //A bit trickery to get typescript to behave + const lowerCasedExtension = extension.toLocaleLowerCase(); + if (lowerCasedExtension === "svg") { + const element = await this._getQRStylingElement(lowerCasedExtension); + const serializer = new XMLSerializer(); + const source = serializer.serializeToString(element.getElement()); return new Blob(['\r\n' + source], { type: "image/svg+xml" }); } else { - return new Promise((resolve) => - ((element as unknown) as QRCanvas).getCanvas().toBlob(resolve, `image/${extension}`, 1) - ); + const element = await this._getQRStylingElement(lowerCasedExtension); + return new Promise((resolve) => element.getCanvas().toBlob(resolve, `image/${lowerCasedExtension}`, quality)); } } - async download(downloadOptions?: Partial | string): Promise { + /** + * + * @param extension file format of the returned image + * @param quality [0-1] with 1 being the highest quality + * @returns + */ + async toDataUrl(extension: Omit = "png", quality?: number): Promise { + if (!this._qr) throw "QR code is empty"; + const lowerCasedExtension = extension.toLocaleLowerCase(); + const element = await this._getQRStylingElement(lowerCasedExtension); + return element.getCanvas().toDataURL(`image/${lowerCasedExtension}`, quality); + } + + async download(downloadOptions?: Partial): Promise { if (!this._qr) throw "QR code is empty"; let extension = "png" as Extension; let name = "qr"; - //TODO remove deprecated code in the v2 - if (typeof downloadOptions === "string") { - extension = downloadOptions as Extension; - console.warn( - "Extension is deprecated as argument for 'download' method, please pass object { name: '...', extension: '...' } as argument" - ); - } else if (typeof downloadOptions === "object" && downloadOptions !== null) { + if (typeof downloadOptions === "object" && downloadOptions !== null) { if (downloadOptions.name) { name = downloadOptions.name; } @@ -149,17 +159,20 @@ export default class QRCodeStyling { } } - const element = await this._getQRStylingElement(extension); + //A bit trickery to get typescript to behave + const lowerCasedExtension = extension.toLocaleLowerCase(); - if (extension.toLowerCase() === "svg") { + if (lowerCasedExtension === "svg") { + const element = await this._getQRStylingElement(lowerCasedExtension); const serializer = new XMLSerializer(); - let source = serializer.serializeToString(((element as unknown) as QRSVG).getElement()); + let source = serializer.serializeToString((element as unknown as QRSVG).getElement()); source = '\r\n' + source; const url = "data:image/svg+xml;charset=utf-8," + encodeURIComponent(source); downloadURI(url, `${name}.svg`); } else { - const url = ((element as unknown) as QRCanvas).getCanvas().toDataURL(`image/${extension}`); + const element = await this._getQRStylingElement(lowerCasedExtension); + const url = element.getCanvas().toDataURL(`image/${extension}`); downloadURI(url, `${name}.${extension}`); } } diff --git a/src/core/QROptions.ts b/src/core/QROptions.ts index bed6cf66..103c18c3 100644 --- a/src/core/QROptions.ts +++ b/src/core/QROptions.ts @@ -29,6 +29,7 @@ export interface RequiredOptions extends Options { color: string; gradient?: Gradient; }; + useLegacyDotRotation: boolean; } const defaultOptions: RequiredOptions = { @@ -54,7 +55,8 @@ const defaultOptions: RequiredOptions = { }, backgroundOptions: { color: "#FFFFFF00" - } + }, + useLegacyDotRotation: false }; export default defaultOptions; diff --git a/src/core/QRSVG.ts b/src/core/QRSVG.ts index 33461237..d219da5e 100644 --- a/src/core/QRSVG.ts +++ b/src/core/QRSVG.ts @@ -219,16 +219,20 @@ export default class QRSVG { continue; } - dot.draw( - yBeginning + j * dotSize, - xBeginning + i * dotSize, - dotSize, - (xOffset: number, yOffset: number): boolean => { + const x = this._options.useLegacyDotRotation ? xBeginning + i * dotSize : yBeginning + j * dotSize; + const y = this._options.useLegacyDotRotation ? yBeginning + j * dotSize : xBeginning + i * dotSize; + + dot.draw(x, y, dotSize, (xOffset: number, yOffset: number): boolean => { + if (this._options.useLegacyDotRotation) { if (i + xOffset < 0 || j + yOffset < 0 || i + xOffset >= count || j + yOffset >= count) return false; if (filter && !filter(i + xOffset, j + yOffset)) return false; return !!this._qr && this._qr.isDark(i + xOffset, j + yOffset); + } else { + if (j + xOffset < 0 || i + yOffset < 0 || j + xOffset >= count || i + yOffset >= count) return false; + if (filter && !filter(j + xOffset, i + yOffset)) return false; + return !!this._qr && this._qr.isDark(i + yOffset, j + xOffset); } - ); + }); if (dot._element && this._dotsClipPath) { this._dotsClipPath.appendChild(dot._element); diff --git a/src/figures/dot/canvas/QRDot.test.js b/src/figures/dot/canvas/QRDot.test.js index fedcc432..f67f891e 100644 --- a/src/figures/dot/canvas/QRDot.test.js +++ b/src/figures/dot/canvas/QRDot.test.js @@ -51,7 +51,7 @@ describe("Test QRDot class", () => { [0, 0, 0, 0, 0], [1, 1, 0, 1, 1], [0, 1, 0, 1, 1], - [0, 0, 1, 0, 0], + [0, 0, 1, 0, 0] ]; const imgFile = fs.readFileSync(path.resolve(__dirname, "../../../assets/test/rounded_dots.png"), "base64"); const dot = new QRDot({ context: canvasContext, type: "rounded" }); diff --git a/src/index.html b/src/index.html index fa2f1dea..2e561b6b 100644 --- a/src/index.html +++ b/src/index.html @@ -1,45 +1,82 @@ + + + QR Code Styling - - - QR Code Styling - - - -
-
- - + + + diff --git a/src/tools/merge.ts b/src/tools/merge.ts index be71b893..ba023544 100644 --- a/src/tools/merge.ts +++ b/src/tools/merge.ts @@ -1,3 +1,4 @@ +// eslint-disable-next-line prettier/prettier import { UnknownObject } from "../types"; const isObject = (obj: Record): boolean => !!obj && typeof obj === "object" && !Array.isArray(obj); diff --git a/tsconfig.json b/tsconfig.json index 8139233c..a021f4c3 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -3,7 +3,7 @@ "outDir": "./lib/", "sourceMap": true, "module": "es6", - "target": "es5", + "target": "ES2017", "allowJs": true, "moduleResolution": "node", "declaration": true, diff --git a/webpack.config.common.js b/webpack.config.common.js index e24fbc36..db0adf3b 100644 --- a/webpack.config.common.js +++ b/webpack.config.common.js @@ -1,5 +1,6 @@ const path = require("path"); const { CleanWebpackPlugin } = require("clean-webpack-plugin"); +const ESLintPlugin = require("eslint-webpack-plugin"); const rootPath = path.resolve(__dirname, "./"); const srcPath = path.resolve(rootPath, "src"); @@ -20,16 +21,10 @@ module.exports = { test: /\.ts$/, loader: "ts-loader", exclude: /node_modules/ - }, - { - enforce: "pre", - test: /\.ts$/, - loader: "eslint-loader", - exclude: /node_modules/ } ] }, - plugins: [new CleanWebpackPlugin()], + plugins: [new CleanWebpackPlugin(), new ESLintPlugin()], resolve: { extensions: [".ts", ".js"] } diff --git a/webpack.config.dev-server.js b/webpack.config.dev-server.js index 471c7338..ec0993ca 100644 --- a/webpack.config.dev-server.js +++ b/webpack.config.dev-server.js @@ -1,17 +1,16 @@ -const { merge } = require('webpack-merge'); -const HtmlWebpackPlugin = require('html-webpack-plugin'); -const commonConfig = require('./webpack.config.common.js'); +const { merge } = require("webpack-merge"); +const HtmlWebpackPlugin = require("html-webpack-plugin"); +const commonConfig = require("./webpack.config.common.js"); module.exports = merge(commonConfig, { - mode: 'development', - devServer: { - injectClient: false //workaround for bug https://github.com/webpack/webpack-dev-server/issues/2484 - }, + mode: "development", + devServer: {}, devtool: "inline-source-map", plugins: [ new HtmlWebpackPlugin({ - template: './src/index.html', - inject: 'head' + template: "./src/index.html", + inject: "head", + scriptLoading: "blocking" }) ] });