diff --git a/bower.json b/bower.json index 78f5f53af..c3a3c47c2 100644 --- a/bower.json +++ b/bower.json @@ -67,7 +67,7 @@ "rollup-plugin-license": "^2.1.0", "rollup-plugin-node-resolve": "4.2.3", "rollup-plugin-preprocess": "0.0.4", - "rollup-plugin-terser": "^6.1.0", + "@rollup/plugin-terser": "^0.4.4", "typescript": "^3.9.6" }, "license": "MIT", diff --git a/package-lock.json b/package-lock.json index 6e84c6c3f..badab61cf 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,8 +10,7 @@ "license": "MIT", "dependencies": { "@babel/runtime": "^7.26.9", - "atob": "^2.1.2", - "btoa": "^1.2.1", + "fast-png": "^6.2.0", "fflate": "^0.8.1" }, "devDependencies": { @@ -20,6 +19,7 @@ "@babel/preset-env": "^7.10.4", "@rollup/plugin-babel": "^5.3.0", "@rollup/plugin-replace": "^2.3.3", + "@rollup/plugin-terser": "^0.4.4", "@rollup/plugin-typescript": "^8.0.0", "@types/jasmine": "^3.5.11", "@types/node": "^20.16.5", @@ -62,7 +62,6 @@ "rollup-plugin-license": "^2.1.0", "rollup-plugin-node-resolve": "5.2.0", "rollup-plugin-preprocess": "0.0.4", - "rollup-plugin-terser": "^6.1.0", "typescript": "^5.6.2", "yarpm": "^0.2.1" }, @@ -74,12 +73,18 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", - "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", + "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/highlight": "^7.10.4" + "@babel/helper-validator-identifier": "^7.27.1", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/compat-data": { @@ -125,15 +130,20 @@ } }, "node_modules/@babel/generator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.10.4.tgz", - "integrity": "sha512-toLIHUIAgcQygFZRAQcsLQV3CBuX6yOIru1kJk/qqqvcRmZrYe6WavZTSG+bB8MxhnL9YPf+pKQfuiP161q7ng==", + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.3.tgz", + "integrity": "sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.10.4", - "jsesc": "^2.5.1", - "lodash": "^4.17.13", - "source-map": "^0.5.0" + "@babel/parser": "^7.28.3", + "@babel/types": "^7.28.2", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-annotate-as-pure": { @@ -232,18 +242,6 @@ "@babel/core": "^7.4.0-0" } }, - "node_modules/@babel/helper-define-polyfill-provider/node_modules/@babel/code-frame": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", - "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-define-polyfill-provider/node_modules/@babel/compat-data": { "version": "7.14.7", "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.14.7.tgz", @@ -253,20 +251,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-define-polyfill-provider/node_modules/@babel/generator": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.5.tgz", - "integrity": "sha512-y3rlP+/G25OIX3mYKKIOlQRcqj7YgrvHxOLbVmyLJ9bPmi5ttvUmpydVjcFjZphOktWuA7ovbx91ECloWTfjIA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.14.5", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-define-polyfill-provider/node_modules/@babel/helper-compilation-targets": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.14.5.tgz", @@ -285,44 +269,6 @@ "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-define-polyfill-provider/node_modules/@babel/helper-function-name": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz", - "integrity": "sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ==", - "dev": true, - "dependencies": { - "@babel/helper-get-function-arity": "^7.14.5", - "@babel/template": "^7.14.5", - "@babel/types": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-define-polyfill-provider/node_modules/@babel/helper-get-function-arity": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz", - "integrity": "sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-define-polyfill-provider/node_modules/@babel/helper-hoist-variables": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.14.5.tgz", - "integrity": "sha512-R1PXiz31Uc0Vxy4OEOm07x0oSjKAdPPCh3tPivn/Eo8cvz6gveAeuyUUPB21Hoiif0uoPQSSdhIPS3352nvdyQ==", - "dev": true, - "dependencies": { - "@babel/types": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-define-polyfill-provider/node_modules/@babel/helper-module-imports": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.14.5.tgz", @@ -344,163 +290,12 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-define-polyfill-provider/node_modules/@babel/helper-split-export-declaration": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz", - "integrity": "sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-define-polyfill-provider/node_modules/@babel/helper-validator-identifier": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.5.tgz", - "integrity": "sha512-5lsetuxCLilmVGyiLEfoHBRX8UCFD+1m2x3Rj97WrW3V7H3u4RWRXA4evMjImCsin2J2YT0QaVDGf+z8ondbAg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-define-polyfill-provider/node_modules/@babel/highlight": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", - "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.14.5", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-define-polyfill-provider/node_modules/@babel/parser": { - "version": "7.14.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.7.tgz", - "integrity": "sha512-X67Z5y+VBJuHB/RjwECp8kSl5uYi0BvRbNeWqkaJCVh+LiTPl19WBUfG627psSgp9rSf6ojuXghQM3ha6qHHdA==", - "dev": true, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/helper-define-polyfill-provider/node_modules/@babel/template": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz", - "integrity": "sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.14.5", - "@babel/parser": "^7.14.5", - "@babel/types": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-define-polyfill-provider/node_modules/@babel/traverse": { - "version": "7.14.7", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.7.tgz", - "integrity": "sha512-9vDr5NzHu27wgwejuKL7kIOm4bwEtaPQ4Z6cpCmjSuaRqpH/7xc4qcGEscwMqlkwgcXl6MvqoAjZkQ24uSdIZQ==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.14.5", - "@babel/generator": "^7.14.5", - "@babel/helper-function-name": "^7.14.5", - "@babel/helper-hoist-variables": "^7.14.5", - "@babel/helper-split-export-declaration": "^7.14.5", - "@babel/parser": "^7.14.7", - "@babel/types": "^7.14.5", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-define-polyfill-provider/node_modules/@babel/types": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", - "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.14.5", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-define-polyfill-provider/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/@babel/helper-define-polyfill-provider/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/@babel/helper-define-polyfill-provider/node_modules/electron-to-chromium": { - "version": "1.3.779", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.779.tgz", - "integrity": "sha512-nreave0y/1Qhmo8XtO6C/LpawNyC6U26+q7d814/e+tIqUK073pM+4xW7WUXyqCRa5K4wdxHmNMBAi8ap9nEew==", - "dev": true - }, - "node_modules/@babel/helper-define-polyfill-provider/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/@babel/helper-define-polyfill-provider/node_modules/node-releases": { - "version": "1.1.73", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.73.tgz", - "integrity": "sha512-uW7fodD6pyW2FZNZnp/Z3hvWKeEW1Y8R1+1CnErE8cXFXzl5blBOoVB41CvMer6P6Q0S5FXDwcHgFd1Wj0U9zg==", - "dev": true - }, "node_modules/@babel/helper-define-polyfill-provider/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, + "license": "ISC", "bin": { "semver": "bin/semver.js" } @@ -535,6 +330,16 @@ "@babel/types": "^7.10.4" } }, + "node_modules/@babel/helper-globals": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/helper-hoist-variables": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz", @@ -645,11 +450,25 @@ "@babel/types": "^7.10.4" } }, + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", - "dev": true + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", + "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } }, "node_modules/@babel/helper-validator-option": { "version": "7.14.5", @@ -673,46 +492,28 @@ } }, "node_modules/@babel/helpers": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.10.4.tgz", - "integrity": "sha512-L2gX/XeUONeEbI78dXSrJzGdz4GQ+ZTA/aazfUsFaWjSe95kiCuOZ5HsXvkiw3iwF+mFHSRUfJU8t6YavocdXA==", - "dev": true, - "dependencies": { - "@babel/template": "^7.10.4", - "@babel/traverse": "^7.10.4", - "@babel/types": "^7.10.4" - } - }, - "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/highlight/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==", + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.3.tgz", + "integrity": "sha512-PTNtvUQihsAsDHMOP5pfobP8C6CM4JWXmP8DrEIt46c3r2bf87Ua1zoqevsMo9g+tWDwgWrFP5EIxuBx5RudAw==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "@babel/template": "^7.27.2", + "@babel/types": "^7.28.2" }, "engines": { - "node": ">=4" + "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.10.4.tgz", - "integrity": "sha512-8jHII4hf+YVDsskTF6WuMB3X4Eh+PsUkC2ljq22so5rHvH+T8BzyL94VOdyFLNR8tBSVXOTbNHOKpR4TfRxVtA==", + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.3.tgz", + "integrity": "sha512-7+Ey1mAgYqFAx2h0RuoxcQT5+MlG3GTV0TQrgr7/ZliKsm/MNDxVVutlWaziMq7wJNAz8MTqz55XLpWvva6StA==", "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.28.2" + }, "bin": { "parser": "bin/babel-parser.js" }, @@ -1364,33 +1165,12 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/plugin-transform-runtime/node_modules/@babel/helper-validator-identifier": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.5.tgz", - "integrity": "sha512-5lsetuxCLilmVGyiLEfoHBRX8UCFD+1m2x3Rj97WrW3V7H3u4RWRXA4evMjImCsin2J2YT0QaVDGf+z8ondbAg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/plugin-transform-runtime/node_modules/@babel/types": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", - "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.14.5", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/plugin-transform-runtime/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, + "license": "ISC", "bin": { "semver": "bin/semver.js" } @@ -1574,86 +1354,158 @@ } }, "node_modules/@babel/runtime": { - "version": "7.26.9", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.9.tgz", - "integrity": "sha512-aA63XwOkcl4xxQa3HjPMqOP6LiK0ZDv3mUPYEFXkpHbaFjtGggE1A61FjFzJnB+p7/oy2gA8E+rcBNl/zC1tMg==", + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.3.tgz", + "integrity": "sha512-9uIQ10o0WGdpP6GDhXcdOJPJuDgFtIDtN/9+ArJQ2NAfAmiuhTQdzkaTGR33v43GYS2UrSA0eX2pPPHoFVvpxA==", "license": "MIT", - "dependencies": { - "regenerator-runtime": "^0.14.0" - }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/runtime-corejs3": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.10.4.tgz", - "integrity": "sha512-BFlgP2SoLO9HJX9WBwN67gHWMBhDX/eDz64Jajd6mR/UAUzqrNMm99d4qHnVaKscAElZoFiPv+JpR/Siud5lXw==", + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.28.3.tgz", + "integrity": "sha512-LKYxD2CIfocUFNREQ1yk+dW+8OH8CRqmgatBZYXb+XhuObO8wsDpEoCNri5bKld9cnj8xukqZjxSX8p1YiRF8Q==", "dev": true, + "license": "MIT", "dependencies": { - "core-js-pure": "^3.0.0", - "regenerator-runtime": "^0.13.4" + "core-js-pure": "^3.43.0" + }, + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@babel/runtime/node_modules/regenerator-runtime": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", - "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", - "license": "MIT" - }, "node_modules/@babel/template": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", - "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", + "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.10.4", - "@babel/parser": "^7.10.4", - "@babel/types": "^7.10.4" + "@babel/code-frame": "^7.27.1", + "@babel/parser": "^7.27.2", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.10.4.tgz", - "integrity": "sha512-aSy7p5THgSYm4YyxNGz6jZpXf+Ok40QF3aA2LyIONkDHpAcJzDUqlCKXv6peqYUs2gmic849C/t2HKw2a2K20Q==", + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.3.tgz", + "integrity": "sha512-7w4kZYHneL3A6NP2nxzHvT3HCZ7puDZZjFMqDpBPECub79sTtSO5CGXDkKrTQq8ksAwfD/XI2MRFX23njdDaIQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.10.4", - "@babel/generator": "^7.10.4", - "@babel/helper-function-name": "^7.10.4", - "@babel/helper-split-export-declaration": "^7.10.4", - "@babel/parser": "^7.10.4", - "@babel/types": "^7.10.4", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.13" + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.28.3", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.28.3", + "@babel/template": "^7.27.2", + "@babel/types": "^7.28.2", + "debug": "^4.3.1" + }, + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@babel/types": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.4.tgz", - "integrity": "sha512-UTCFOxC3FsFHb7lkRMVvgLzaRVamXuAs2Tz4wajva4WxtVY82eZeaUBtC2Zt95FU9TiznuC0Zk35tsim8jeVpg==", + "node_modules/@babel/traverse/node_modules/debug": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/@istanbuljs/schema": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.2.tgz", + "node_modules/@babel/types": { + "version": "7.28.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.2.tgz", + "integrity": "sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "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/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz", + "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.30", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.30.tgz", + "integrity": "sha512-GQ7Nw5G2lTu/BtHTKfXhKHok2WGetd4XYcVKGx00SjAk8GMwgJM3zr6zORiPGuOE+/vkc90KtTosSSvaCjKb2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, "node_modules/@koa/cors": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@koa/cors/-/cors-3.1.0.tgz", - "integrity": "sha512-7ulRC1da/rBa6kj6P4g2aJfnET3z8Uf3SWu60cjbtxTA5g8lxRdX/Bd2P92EagGwwAhANeNw8T8if99rJliR6Q==", + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/@koa/cors/-/cors-3.4.3.tgz", + "integrity": "sha512-WPXQUaAeAMVaLTEFpoq3T2O1C+FstkjJnDQqy95Ck1UdILajsRhu6mhJ8H2f4NFPRBoCNN+qywTJfq/gGki5mw==", "dev": true, + "license": "MIT", "dependencies": { "vary": "^1.1.2" }, @@ -1697,6 +1549,78 @@ "rollup": "^1.20.0 || ^2.0.0" } }, + "node_modules/@rollup/plugin-terser": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/@rollup/plugin-terser/-/plugin-terser-0.4.4.tgz", + "integrity": "sha512-XHeJC5Bgvs8LfukDwWZp7yeqin6ns8RTl2B9avbejt6tZqsqvVoWI7ZTQrcNsfKEDWBTnTxM8nMDkO2IFFbd0A==", + "dev": true, + "license": "MIT", + "dependencies": { + "serialize-javascript": "^6.0.1", + "smob": "^1.0.0", + "terser": "^5.17.4" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-terser/node_modules/acorn": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/@rollup/plugin-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, + "license": "MIT" + }, + "node_modules/@rollup/plugin-terser/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, + "license": "BSD-3-Clause", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/@rollup/plugin-terser/node_modules/terser": { + "version": "5.43.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.43.1.tgz", + "integrity": "sha512-+6erLbBm0+LROX2sPXlUYx/ux5PyE9K/a92Wrt6oA+WDAoFTdpHE5tCYCI5PNzq2y8df4rA+QgHLJuR4jNymsg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.14.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@rollup/plugin-typescript": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/@rollup/plugin-typescript/-/plugin-typescript-8.0.0.tgz", @@ -1771,6 +1695,31 @@ "integrity": "sha512-7+2BITlgjgDhH0vvwZU/HZJVyk+2XUlvxXe8dFMedNX/aMkaOq++rMAFXc0tM7ij15QaWlbdQASBR9dihi+bDQ==", "dev": true }, + "node_modules/@types/linkify-it": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/markdown-it": { + "version": "12.2.3", + "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-12.2.3.tgz", + "integrity": "sha512-GKMHFfv3458yYy+v/N8gjufHO6MSZKCOXpZc5GXIWWy8uldwfmPn98vp81gZ5f9SVw8YYBctgfJ22a2d7AOMeQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/linkify-it": "*", + "@types/mdurl": "*" + } + }, + "node_modules/@types/mdurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/node": { "version": "20.16.5", "resolved": "https://registry.npmjs.org/@types/node/-/node-20.16.5.tgz", @@ -1781,6 +1730,12 @@ "undici-types": "~6.19.2" } }, + "node_modules/@types/pako": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/pako/-/pako-2.0.4.tgz", + "integrity": "sha512-VWDCbrLeVXJM9fihYodcLiIv0ku+AlOa/TQ1SvYOaBuyrSKgEcro95LJyIsJ4vSo6BXIxOKxiJAat04CmST9Fw==", + "license": "MIT" + }, "node_modules/@types/raf": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/@types/raf/-/raf-3.4.0.tgz", @@ -1834,10 +1789,11 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", - "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -1938,10 +1894,11 @@ } }, "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", - "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -2040,8 +1997,9 @@ "node_modules/after": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", - "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=", - "dev": true + "integrity": "sha512-QbJ0NTQ/I9DI3uSJA4cbexiwQeRAfjPScqIbSjUDd9TOrcg6pTkdgziesOqxBMBzit8vFCTwrP27t13vFOORRA==", + "dev": true, + "license": "MIT" }, "node_modules/ajv": { "version": "6.12.3", @@ -2090,10 +2048,11 @@ } }, "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, + "license": "MIT", "engines": { "node": ">=8" } @@ -2147,17 +2106,12 @@ "node": ">=8" } }, - "node_modules/array-filter": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-1.0.0.tgz", - "integrity": "sha1-uveeYubvTCpMC4MSMtr/7CUfnYM=", - "dev": true - }, "node_modules/array-find-index": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", - "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", + "integrity": "sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -2166,7 +2120,8 @@ "version": "0.0.7", "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz", "integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/asn1": { "version": "0.2.4", @@ -2230,36 +2185,20 @@ "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", "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==", - "bin": { - "atob": "bin/atob.js" - }, - "engines": { - "node": ">= 4.5.0" - } - }, "node_modules/available-typed-arrays": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.2.tgz", - "integrity": "sha512-XWX3OX8Onv97LMk/ftVyBibpGwY5a8SmuxZPzeOxqmuEqUCOM9ZE+uIaD1VNJ5QnvU2UQusvmKbuM1FR8QWGfQ==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", "dev": true, + "license": "MIT", "dependencies": { - "array-filter": "^1.0.0" + "possible-typed-array-names": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -2316,10 +2255,11 @@ } }, "node_modules/babel-plugin-polyfill-corejs2/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, + "license": "ISC", "bin": { "semver": "bin/semver.js" } @@ -2337,73 +2277,6 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/babel-plugin-polyfill-corejs3/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/babel-plugin-polyfill-corejs3/node_modules/core-js-compat": { - "version": "3.15.2", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.15.2.tgz", - "integrity": "sha512-Wp+BJVvwopjI+A1EFqm2dwUmWYXrvucmtIB2LgXn/Rb+gWPKYxtmb4GKHGKG/KGF1eK9jfjzT38DITbTOCX/SQ==", - "dev": true, - "dependencies": { - "browserslist": "^4.16.6", - "semver": "7.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "node_modules/babel-plugin-polyfill-corejs3/node_modules/electron-to-chromium": { - "version": "1.3.779", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.779.tgz", - "integrity": "sha512-nreave0y/1Qhmo8XtO6C/LpawNyC6U26+q7d814/e+tIqUK073pM+4xW7WUXyqCRa5K4wdxHmNMBAi8ap9nEew==", - "dev": true - }, - "node_modules/babel-plugin-polyfill-corejs3/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/babel-plugin-polyfill-corejs3/node_modules/node-releases": { - "version": "1.1.73", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.73.tgz", - "integrity": "sha512-uW7fodD6pyW2FZNZnp/Z3hvWKeEW1Y8R1+1CnErE8cXFXzl5blBOoVB41CvMer6P6Q0S5FXDwcHgFd1Wj0U9zg==", - "dev": true - }, - "node_modules/babel-plugin-polyfill-corejs3/node_modules/semver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", - "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/babel-plugin-polyfill-regenerator": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.2.tgz", @@ -2419,8 +2292,9 @@ "node_modules/backo2": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", - "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=", - "dev": true + "integrity": "sha512-zj6Z6M7Eq+PBZ7PQxl5NT665MvJdAkzp0f60nAJ+sLaSCBPMwVak5ZegFbgVCzFcCJTKFoMizvM5Ld7+JrRJHA==", + "dev": true, + "license": "MIT" }, "node_modules/balanced-match": { "version": "1.0.0", @@ -2448,6 +2322,7 @@ "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", "dev": true, + "license": "MIT", "engines": { "node": "^4.5.0 || >= 5.9" } @@ -2479,18 +2354,6 @@ "tweetnacl": "^0.14.3" } }, - "node_modules/better-assert": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", - "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=", - "dev": true, - "dependencies": { - "callsite": "1.0.0" - }, - "engines": { - "node": "*" - } - }, "node_modules/binary-extensions": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz", @@ -2504,7 +2367,8 @@ "version": "0.0.5", "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz", "integrity": "sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/bluebird": { "version": "3.7.2", @@ -2513,30 +2377,35 @@ "dev": true }, "node_modules/bn.js": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.2.tgz", - "integrity": "sha512-40rZaf3bUNKTVYu9sIeeEGOg7g14Yvnj9kH7b50EiwX0Q7A6umbvfI5tvHaOERH0XigqKkfLkFQxzb4e6CIXnA==", - "dev": true + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.2.tgz", + "integrity": "sha512-v2YAxEmKaBLahNwE1mjp4WON6huMNeuDvagFZW+ASCuA/ku0bXR9hSMw0XpiqMoA3+rmnyck/tPRSFQkoC9Cuw==", + "dev": true, + "license": "MIT" }, "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.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", + "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", "dev": true, + "license": "MIT", "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.13.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/debug": { @@ -2548,38 +2417,114 @@ "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, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/body-parser/node_modules/http-errors": { + "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, + "license": "MIT", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "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=", "dev": true }, + "node_modules/body-parser/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, + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, "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.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/body-parser/node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true, + "license": "ISC" + }, + "node_modules/body-parser/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, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/body-parser/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, + "license": "MIT", "engines": { "node": ">=0.6" } }, "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==", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, + "license": "MIT", "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==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, + "license": "MIT", "dependencies": { - "fill-range": "^7.0.1" + "fill-range": "^7.1.1" }, "engines": { "node": ">=8" @@ -2639,50 +2584,75 @@ } }, "node_modules/browserify-rsa": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", - "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.1.tgz", + "integrity": "sha512-YBjSAiTqM04ZVei6sXighu679a3SqWORA3qZTEqZImnlkDIFtKc6pNutpjyZ8RJTjQtuYfeetkxM11GwoYXMIQ==", "dev": true, + "license": "MIT", "dependencies": { - "bn.js": "^4.1.0", - "randombytes": "^2.0.1" + "bn.js": "^5.2.1", + "randombytes": "^2.1.0", + "safe-buffer": "^5.2.1" + }, + "engines": { + "node": ">= 0.10" } }, - "node_modules/browserify-rsa/node_modules/bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", - "dev": true + "node_modules/browserify-rsa/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" + } + ], + "license": "MIT" }, "node_modules/browserify-sign": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.0.tgz", - "integrity": "sha512-hEZC1KEeYuoHRqhGhTy6gWrpJA3ZDjFWv0DE61643ZnOXAKJb3u7yWcrU0mMc9SwAqK1n7myPGndkp0dFG7NFA==", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.3.tgz", + "integrity": "sha512-JWCZW6SKhfhjJxO8Tyiiy+XYB7cqd2S5/+WeYHsKdNKFlCBhKbblba1A/HN/90YwtxKc8tCErjffZl++UNmGiw==", "dev": true, + "license": "ISC", "dependencies": { - "bn.js": "^5.1.1", - "browserify-rsa": "^4.0.1", + "bn.js": "^5.2.1", + "browserify-rsa": "^4.1.0", "create-hash": "^1.2.0", "create-hmac": "^1.1.7", - "elliptic": "^6.5.2", + "elliptic": "^6.5.5", + "hash-base": "~3.0", "inherits": "^2.0.4", - "parse-asn1": "^5.1.5", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" + "parse-asn1": "^5.1.7", + "readable-stream": "^2.3.8", + "safe-buffer": "^5.2.1" + }, + "engines": { + "node": ">= 0.12" } }, - "node_modules/browserify-sign/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/browserify-sign/node_modules/hash-base": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.5.tgz", + "integrity": "sha512-vXm0l45VbcHEVlTCzs8M+s0VeYsB2lnlAaThoLKGXr3bE/VWDOelNUnycUPEhKEaXARL2TEFjBOyUiM6+55KBg==", "dev": true, + "license": "MIT", "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "inherits": "^2.0.4", + "safe-buffer": "^5.2.1" }, "engines": { - "node": ">= 6" + "node": ">= 0.10" } }, "node_modules/browserify-sign/node_modules/safe-buffer": { @@ -2721,36 +2691,36 @@ "dev": true }, "node_modules/browserslist": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.13.0.tgz", - "integrity": "sha512-MINatJ5ZNrLnQ6blGvePd/QOz9Xtu+Ne+x29iQSCHfkU5BugKVJwZKn/iiL8UbpIpa3JhviKjz+XxMo0m2caFQ==", + "version": "4.25.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.25.3.tgz", + "integrity": "sha512-cDGv1kkDI4/0e5yON9yM5G/0A5u8sf5TnmdX5C9qHzI9PPu++sQ9zjm1k9NiOrf3riY4OkK0zSGqfvJyJsgCBQ==", "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" + } + ], + "license": "MIT", "dependencies": { - "caniuse-lite": "^1.0.30001093", - "electron-to-chromium": "^1.3.488", - "escalade": "^3.0.1", - "node-releases": "^1.1.58" + "caniuse-lite": "^1.0.30001735", + "electron-to-chromium": "^1.5.204", + "node-releases": "^2.0.19", + "update-browserslist-db": "^1.1.3" }, "bin": { "browserslist": "cli.js" }, "engines": { "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - }, - "funding": { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - } - }, - "node_modules/btoa": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/btoa/-/btoa-1.2.1.tgz", - "integrity": "sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g==", - "bin": { - "btoa": "bin/btoa.js" - }, - "engines": { - "node": ">= 0.4.0" } }, "node_modules/buffer": { @@ -2800,10 +2770,11 @@ } }, "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, + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -2821,13 +2792,54 @@ "node": ">= 6.0.0" } }, - "node_modules/callsite": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", - "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=", + "node_modules/call-bind": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.0", + "es-define-property": "^1.0.0", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.2" + }, "engines": { - "node": "*" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/callsites": { @@ -2849,14 +2861,25 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001245", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001245.tgz", - "integrity": "sha512-768fM9j1PKXpOCKws6eTo3RHmvTUsG9UrpT4WoREFeZgJBTi4/X9g565azS/rVUGtqb8nt7FjLeF5u4kukERnA==", + "version": "1.0.30001736", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001736.tgz", + "integrity": "sha512-ImpN5gLEY8gWeqfLUyEF4b7mYWcYoR2Si1VhnrbM4JizRFmfGaAQ12PhNykq6nvI4XvKLrsp8Xde74D5phJOSw==", "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - } + "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" + } + ], + "license": "CC-BY-4.0" }, "node_modules/canvg": { "version": "3.0.11", @@ -2884,15 +2907,16 @@ "dev": true }, "node_modules/catharsis": { - "version": "0.8.11", - "resolved": "https://registry.npmjs.org/catharsis/-/catharsis-0.8.11.tgz", - "integrity": "sha512-a+xUyMV7hD1BrDQA/3iPV7oc+6W26BgVJO05PGEoatMyIuPScQKsde6i3YorWX1qs+AZjnJ18NqdKoCtKiNh1g==", + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/catharsis/-/catharsis-0.9.0.tgz", + "integrity": "sha512-prMTQVpcns/tzFgFVkVp6ak6RykZyWb3gu8ckUpd6YkTlacOd3DXGJjIpD4Q6zJirizvaiAjSSHlOsA+6sNh2A==", "dev": true, + "license": "MIT", "dependencies": { - "lodash": "^4.17.14" + "lodash": "^4.17.15" }, "engines": { - "node": ">= 8" + "node": ">= 10" } }, "node_modules/chalk": { @@ -3073,8 +3097,9 @@ "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, + "license": "MIT", "engines": { "iojs": ">= 1.0.0", "node": ">= 0.12.0" @@ -3126,12 +3151,6 @@ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, - "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/colors": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", @@ -3281,7 +3300,7 @@ "node_modules/component-bind": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", - "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=", + "integrity": "sha512-WZveuKPeKAG9qY+FkYDeADzdHyTYdIboXS59ixDeRJL5ZhxpqUnxSOwop4FQjMsiYm3/Or8cegVbpAHNA7pHxw==", "dev": true }, "node_modules/component-emitter": { @@ -3293,7 +3312,7 @@ "node_modules/component-inherit": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", - "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=", + "integrity": "sha512-w+LhYREhatpVqTESyGFg3NlP6Iu0kEKUHETY9GoZP/pQyW4mHFZuFWRUCIqVPZ36ueVLtoOEZaAqbCF2RDndaA==", "dev": true }, "node_modules/compressible": { @@ -3369,10 +3388,11 @@ } }, "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, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -3387,19 +3407,21 @@ } }, "node_modules/cookie": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", - "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/cookies": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/cookies/-/cookies-0.8.0.tgz", - "integrity": "sha512-8aPsApQfebXnuI+537McwYsDtjVxGm8gTIzQI3FDW6t5t/DAhERxtnbEPN/8RX+uZthoz4eCOgloXaE5cYyNow==", + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/cookies/-/cookies-0.9.1.tgz", + "integrity": "sha512-TG2hpqe4ELx54QER/S3HQ9SRVnQnGBtKUz5bLQWtYAQ+o6GpgMs6sYUvaiJjVxb+UXwhRhAEP3m7LbsIZ77Hmw==", "dev": true, + "license": "MIT", "dependencies": { "depd": "~2.0.0", "keygrip": "~1.1.0" @@ -3413,6 +3435,7 @@ "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -3430,35 +3453,26 @@ "devOptional": true }, "node_modules/core-js-compat": { - "version": "3.6.5", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.6.5.tgz", - "integrity": "sha512-7ItTKOhOZbznhXAQ2g/slGg1PJV5zDO/WdkTwi7UEOJmkvsE32PWvx6mKtDjiMpjnR2CNf6BAD6sSxIlv7ptng==", + "version": "3.45.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.45.1.tgz", + "integrity": "sha512-tqTt5T4PzsMIZ430XGviK4vzYSoeNJ6CXODi6c/voxOT6IZqBht5/EKaSNnYiEjjRYxjVz7DQIsOsY0XNi8PIA==", "dev": true, + "license": "MIT", "dependencies": { - "browserslist": "^4.8.5", - "semver": "7.0.0" + "browserslist": "^4.25.3" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/core-js" } }, - "node_modules/core-js-compat/node_modules/semver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", - "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/core-js-pure": { - "version": "3.6.5", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.6.5.tgz", - "integrity": "sha512-lacdXOimsiD0QyNf9BC/mxivNJ/ybBGJXQFKzRekp1WTHoVUWsUHEn+2T8GJAzzIhyOuXA+gOxCVN3l+5PLPUA==", - "deprecated": "core-js-pure@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js-pure.", + "version": "3.45.1", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.45.1.tgz", + "integrity": "sha512-OHnWFKgTUshEU8MK+lOs1H8kC8GkTi9Z1tvNkxrCcw9wl3MJIO7q2ld77wjWn4/xuGrVu2X+nME1iIIPBSdyEQ==", "dev": true, "hasInstallScript": true, + "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/core-js" @@ -3522,6 +3536,21 @@ "node": ">=10" } }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/crypto-browserify": { "version": "3.12.0", "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", @@ -3572,11 +3601,11 @@ } }, "node_modules/date-format": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/date-format/-/date-format-3.0.0.tgz", - "integrity": "sha512-eyTcpKOcamdhWJXj56DpQMo1ylSQpcGtGKXcU0Tb97+K56/CF5amAqqqNj0+KvA0iw2ynxtHWFsPDSClCxe48w==", - "deprecated": "3.x is no longer supported. Please upgrade to 4.x or higher.", + "version": "4.0.14", + "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.14.tgz", + "integrity": "sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==", "dev": true, + "license": "MIT", "engines": { "node": ">=4.0" } @@ -3639,6 +3668,24 @@ "clone": "^1.0.2" } }, + "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, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/define-properties": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", @@ -3686,10 +3733,15 @@ } }, "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, + "license": "MIT", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } }, "node_modules/di": { "version": "0.0.1", @@ -3776,6 +3828,21 @@ "@types/trusted-types": "^2.0.7" } }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", @@ -3793,24 +3860,26 @@ "dev": true }, "node_modules/electron-to-chromium": { - "version": "1.3.492", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.492.tgz", - "integrity": "sha512-AD6v9Y2wN0HuoRH4LwCmlSHjkKq51D1U52bTuvM5uPzisbHVm3Hms15c42TBFLewxnSqxAynK/tbeaUi4Rnjqw==", - "dev": true + "version": "1.5.207", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.207.tgz", + "integrity": "sha512-mryFrrL/GXDTmAtIVMVf+eIXM09BBPlO5IQ7lUyKmK8d+A4VpRGG+M3ofoVef6qyF8s60rJei8ymlJxjUA8Faw==", + "dev": true, + "license": "ISC" }, "node_modules/elliptic": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.3.tgz", - "integrity": "sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==", + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.6.1.tgz", + "integrity": "sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==", "dev": true, + "license": "MIT", "dependencies": { - "bn.js": "^4.4.0", - "brorand": "^1.0.1", + "bn.js": "^4.11.9", + "brorand": "^1.1.0", "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.0" + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" } }, "node_modules/elliptic/node_modules/bn.js": { @@ -3835,73 +3904,88 @@ } }, "node_modules/engine.io": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.4.2.tgz", - "integrity": "sha512-b4Q85dFkGw+TqgytGPrGgACRUhsdKc9S9ErRAXpPGy/CXKs4tYoHDkvIRdsseAF7NjfVwjRFIn6KTnbw7LwJZg==", + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.6.2.tgz", + "integrity": "sha512-C4JjGQZLY3kWlIDx0BQNKizbrfpb7NahxDztGdN5jrPK2ghmXiNDN+E/t0JzDeNRZxPVaszxEng42Pmj27X/0w==", "dev": true, + "license": "MIT", "dependencies": { "accepts": "~1.3.4", "base64id": "2.0.0", - "cookie": "0.3.1", + "cookie": "~0.4.1", "debug": "~4.1.0", "engine.io-parser": "~2.2.0", - "ws": "^7.1.2" + "ws": "~7.5.10" }, "engines": { "node": ">=8.0.0" } }, "node_modules/engine.io-client": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.4.3.tgz", - "integrity": "sha512-0NGY+9hioejTEJCaSJZfWZLk4FPI9dN+1H1C4+wj2iuFba47UgZbJzfWs4aNFajnX/qAaYKbe2lLTfEEWzCmcw==", + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.5.4.tgz", + "integrity": "sha512-ydc8uuMMDxC5KCKNJN3zZKYJk2sgyTuTZQ7Aj1DJSsLKAcizA/PzWivw8fZMIjJVBo2CJOYzntv4FSjY/Lr//g==", "dev": true, + "license": "MIT", "dependencies": { "component-emitter": "~1.3.0", "component-inherit": "0.0.3", - "debug": "~4.1.0", + "debug": "~3.1.0", "engine.io-parser": "~2.2.0", "has-cors": "1.1.0", "indexof": "0.0.1", - "parseqs": "0.0.5", - "parseuri": "0.0.5", - "ws": "~6.1.0", - "xmlhttprequest-ssl": "~1.5.4", + "parseqs": "0.0.6", + "parseuri": "0.0.6", + "ws": "~7.5.10", + "xmlhttprequest-ssl": "~1.6.2", "yeast": "0.1.2" } }, "node_modules/engine.io-client/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 + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz", + "integrity": "sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "node_modules/engine.io-client/node_modules/ws": { - "version": "6.1.4", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.1.4.tgz", - "integrity": "sha512-eqZfL+NE/YQc1/ZynhojeV8q+H050oR8AZ2uIev7RU10svA9ZnJUddHcOUZTJLinZ9yEfdA2kSATS2qZK5fhJA==", + "node_modules/engine.io-client/node_modules/debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", "dev": true, + "license": "MIT", "dependencies": { - "async-limiter": "~1.0.0" + "ms": "2.0.0" } }, + "node_modules/engine.io-client/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "license": "MIT" + }, "node_modules/engine.io-parser": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.2.0.tgz", - "integrity": "sha512-6I3qD9iUxotsC5HEMuuGsKA0cXerGz+4uGcXQEkfBidgKf0amsjrrtwcbwK/nzpZBxclXlV7gGl9dgWvu4LF6w==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.2.1.tgz", + "integrity": "sha512-x+dN/fBH8Ro8TFwJ+rkB2AmuVw9Yu2mockR/p3W8f8YtExwFgDvBDi0GWyb4ZLkpahtDGZgtr3zLovanJghPqg==", "dev": true, + "license": "MIT", "dependencies": { "after": "0.8.2", "arraybuffer.slice": "~0.0.7", - "base64-arraybuffer": "0.1.5", + "base64-arraybuffer": "0.1.4", "blob": "0.0.5", "has-binary2": "~1.0.2" } }, "node_modules/engine.io-parser/node_modules/base64-arraybuffer": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", - "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=", + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.4.tgz", + "integrity": "sha512-a1eIFi4R9ySrbiMuyTGx5e92uRH5tQY6kArNcFaKBUleIoLjdjBg7Zxm3Mqm3Kmkf27HLR/1fnxX9q8GQ7Iavg==", "dev": true, "engines": { "node": ">= 0.6.0" @@ -3926,10 +4010,14 @@ "dev": true }, "node_modules/entities": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.3.tgz", - "integrity": "sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ==", - "dev": true + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", + "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==", + "dev": true, + "license": "BSD-2-Clause", + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } }, "node_modules/es-abstract": { "version": "1.17.6", @@ -3952,8 +4040,41 @@ "engines": { "node": ">= 0.4" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "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, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" } }, "node_modules/es-to-primitive": { @@ -3980,10 +4101,11 @@ "dev": true }, "node_modules/escalade": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.0.1.tgz", - "integrity": "sha512-DR6NO3h9niOT+MZs7bjxlj2a1k+POu5RN8CLTPX2+i78bRi9eLe7+0zXgUHMnGXWybYcL61E9hGhPKqedy8tQA==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -4103,20 +4225,6 @@ "node": ">=4" } }, - "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/globals": { "version": "12.4.0", "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", @@ -4146,10 +4254,11 @@ } }, "node_modules/eslint/node_modules/semver": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", - "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -4329,6 +4438,17 @@ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", "dev": true }, + "node_modules/fast-png": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/fast-png/-/fast-png-6.4.0.tgz", + "integrity": "sha512-kAqZq1TlgBjZcLr5mcN6NP5Rv4V2f22z00c3g8vRrwkcqjerx7BEhPbOnWCPqaHUl2XWQBJQvOT/FQhdMT7X/Q==", + "license": "MIT", + "dependencies": { + "@types/pako": "^2.0.3", + "iobuffer": "^5.3.2", + "pako": "^2.1.0" + } + }, "node_modules/fflate": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.1.tgz", @@ -4359,10 +4479,11 @@ } }, "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, + "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -4470,9 +4591,9 @@ } }, "node_modules/follow-redirects": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.12.1.tgz", - "integrity": "sha512-tmRv0AVuR7ZyouUHLeNSiO6pqulF7dYa3s19c6t+wz9LD69/uSzdMxJ2S91nTI9U3rt/IldxpzMOFejp6f0hjg==", + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", + "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", "dev": true, "funding": [ { @@ -4480,15 +4601,31 @@ "url": "https://github.com/sponsors/RubenVerborgh" } ], + "license": "MIT", "engines": { "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } } }, - "node_modules/foreach": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", - "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", - "dev": true + "node_modules/for-each": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/forever-agent": { "version": "0.6.1", @@ -4527,6 +4664,7 @@ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", "dev": true, + "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^4.0.0", @@ -4558,10 +4696,14 @@ } }, "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, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/functional-red-black-tree": { "version": "1.0.1", @@ -4587,6 +4729,45 @@ "node": "6.* || 8.* || >= 10.*" } }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/getpass": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", @@ -4597,16 +4778,17 @@ } }, "node_modules/glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, + "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^3.0.4", + "minimatch": "^3.1.1", "once": "^1.3.0", "path-is-absolute": "^1.0.0" }, @@ -4618,10 +4800,11 @@ } }, "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": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, + "license": "ISC", "dependencies": { "is-glob": "^4.0.1" }, @@ -4638,6 +4821,19 @@ "node": ">=4" } }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "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", @@ -4690,6 +4886,7 @@ "resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz", "integrity": "sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==", "dev": true, + "license": "MIT", "dependencies": { "isarray": "2.0.1" } @@ -4697,8 +4894,9 @@ "node_modules/has-cors": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", - "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=", - "dev": true + "integrity": "sha512-g5VNKdkFuUuVCP9gYfDJHjK2nqdQJ7aDLTnycnc2+RvsOQbuLdF5pm7vuE5J76SEBIQjs4kQY/BWq74JUmjbXA==", + "dev": true, + "license": "MIT" }, "node_modules/has-flag": { "version": "3.0.0", @@ -4709,11 +4907,41 @@ "node": ">=4" } }, + "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, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "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==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "dev": true, + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, "engines": { "node": ">= 0.4" }, @@ -4779,6 +5007,19 @@ "minimalistic-assert": "^1.0.1" } }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/hmac-drbg": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", @@ -4956,7 +5197,7 @@ "node_modules/indexof": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", - "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", + "integrity": "sha512-i0G7hLJ1z0DE8dsqJa2rycj9dBmNKgXBvotXtZYXakU9oivfB9Uj2ZBC27qqef2U58/ZLwalxa1X/RDCdkHtVg==", "dev": true }, "node_modules/inflation": { @@ -5019,10 +5260,11 @@ } }, "node_modules/inquirer/node_modules/ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -5079,10 +5321,11 @@ } }, "node_modules/inquirer/node_modules/strip-ansi/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, + "license": "MIT", "engines": { "node": ">=6" } @@ -5096,6 +5339,12 @@ "loose-envify": "^1.0.0" } }, + "node_modules/iobuffer": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/iobuffer/-/iobuffer-5.4.0.tgz", + "integrity": "sha512-DRebOWuqDvxunfkNJAlc3IzWIPD5xVxwUNbHr7xKB8E6aLJxIPfNX3CoMJghcFjpv6RWQsrcJbghtEwSPoJqMA==", + "license": "MIT" + }, "node_modules/is-arguments": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", @@ -5118,10 +5367,11 @@ } }, "node_modules/is-callable": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz", - "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -5215,6 +5465,7 @@ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.12.0" } @@ -5259,15 +5510,13 @@ } }, "node_modules/is-typed-array": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.3.tgz", - "integrity": "sha512-BSYUBOK/HJibQ30wWkWold5txYwMUXQct9YHAQJr8fSwvZoiglcqB0pd7vEN23+Tsi9IUEjztdOSzl4qLVYGTQ==", + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", "dev": true, + "license": "MIT", "dependencies": { - "available-typed-arrays": "^1.0.0", - "es-abstract": "^1.17.4", - "foreach": "^2.0.5", - "has-symbols": "^1.0.1" + "which-typed-array": "^1.1.16" }, "engines": { "node": ">= 0.4" @@ -5349,10 +5598,11 @@ } }, "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, + "license": "ISC", "bin": { "semver": "bin/semver.js" } @@ -5396,10 +5646,11 @@ } }, "node_modules/istanbul-lib-report/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, + "license": "ISC", "bin": { "semver": "bin/semver.js" } @@ -5480,40 +5731,6 @@ "add-matchers": "0.6.2" } }, - "node_modules/jest-worker": { - "version": "26.1.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.1.0.tgz", - "integrity": "sha512-Z9P5pZ6UC+kakMbNJn+tA2RdVdNX5WH1x+5UCBZ9MxIK24pjYtFt96fK+UwBTrjLYm232g1xz0L3eTh51OW+yQ==", - "dev": true, - "dependencies": { - "merge-stream": "^2.0.0", - "supports-color": "^7.0.0" - }, - "engines": { - "node": ">= 10.14.2" - } - }, - "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.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", - "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", @@ -5521,12 +5738,13 @@ "dev": true }, "node_modules/js2xmlparser": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/js2xmlparser/-/js2xmlparser-4.0.1.tgz", - "integrity": "sha512-KrPTolcw6RocpYjdC7pL7v62e55q7qOMHvLX1UCLc5AAS8qeJ6nukarEJAF2KL2PZxlbGueEbINqZR2bDe/gUw==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/js2xmlparser/-/js2xmlparser-4.0.2.tgz", + "integrity": "sha512-6n4D8gLlLf1n5mNLQPRfViYzu9RATblzPEtm1SthMX1Pjao0r9YI9nw7ZIfRxQMERS87mcswrg+r/OYrPRX6jA==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "xmlcreate": "^2.0.3" + "xmlcreate": "^2.0.4" } }, "node_modules/jsbn": { @@ -5536,31 +5754,33 @@ "dev": true }, "node_modules/jsdoc": { - "version": "3.6.4", - "resolved": "https://registry.npmjs.org/jsdoc/-/jsdoc-3.6.4.tgz", - "integrity": "sha512-3G9d37VHv7MFdheviDCjUfQoIjdv4TC5zTTf5G9VODLtOnVS6La1eoYBDlbWfsRT3/Xo+j2MIqki2EV12BZfwA==", + "version": "3.6.11", + "resolved": "https://registry.npmjs.org/jsdoc/-/jsdoc-3.6.11.tgz", + "integrity": "sha512-8UCU0TYeIYD9KeLzEcAu2q8N/mx9O3phAGl32nmHlE0LpaJL71mMkP4d+QE5zWfNt50qheHtOZ0qoxVrsX5TUg==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@babel/parser": "^7.9.4", + "@types/markdown-it": "^12.2.3", "bluebird": "^3.7.2", - "catharsis": "^0.8.11", + "catharsis": "^0.9.0", "escape-string-regexp": "^2.0.0", - "js2xmlparser": "^4.0.1", + "js2xmlparser": "^4.0.2", "klaw": "^3.0.0", - "markdown-it": "^10.0.0", - "markdown-it-anchor": "^5.2.7", - "marked": "^0.8.2", + "markdown-it": "^12.3.2", + "markdown-it-anchor": "^8.4.1", + "marked": "^4.0.10", "mkdirp": "^1.0.4", "requizzle": "^0.2.3", "strip-json-comments": "^3.1.0", "taffydb": "2.6.2", - "underscore": "~1.10.2" + "underscore": "~1.13.2" }, "bin": { "jsdoc": "jsdoc.js" }, "engines": { - "node": ">=8.15.0" + "node": ">=12.0.0" } }, "node_modules/jsdoc/node_modules/escape-string-regexp": { @@ -5585,22 +5805,24 @@ } }, "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", "dev": true, + "license": "MIT", "bin": { "jsesc": "bin/jsesc" }, "engines": { - "node": ">=4" + "node": ">=6" } }, "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 + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", + "dev": true, + "license": "(AFL-2.1 OR BSD-3-Clause)" }, "node_modules/json-schema-traverse": { "version": "0.4.1", @@ -5621,13 +5843,11 @@ "dev": true }, "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" - }, + "license": "MIT", "bin": { "json5": "lib/cli.js" }, @@ -5638,8 +5858,9 @@ "node_modules/jsonfile": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", "dev": true, + "license": "MIT", "optionalDependencies": { "graceful-fs": "^4.1.6" } @@ -5670,18 +5891,19 @@ } }, "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" - ], + "license": "MIT", "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/karma": { @@ -5841,10 +6063,11 @@ } }, "node_modules/karma-mocha-reporter/node_modules/ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -5961,10 +6184,11 @@ } }, "node_modules/karma-typescript/node_modules/async": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz", - "integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==", - "dev": true + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", + "dev": true, + "license": "MIT" }, "node_modules/karma-typescript/node_modules/readable-stream": { "version": "3.6.0", @@ -6019,9 +6243,9 @@ } }, "node_modules/karma-typescript/node_modules/tmp": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.3.tgz", - "integrity": "sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==", + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.5.tgz", + "integrity": "sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow==", "dev": true, "license": "MIT", "engines": { @@ -6082,6 +6306,7 @@ "resolved": "https://registry.npmjs.org/keygrip/-/keygrip-1.1.0.tgz", "integrity": "sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==", "dev": true, + "license": "MIT", "dependencies": { "tsscmp": "1.0.6" }, @@ -6099,19 +6324,20 @@ } }, "node_modules/koa": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/koa/-/koa-2.13.0.tgz", - "integrity": "sha512-i/XJVOfPw7npbMv67+bOeXr3gPqOAw6uh5wFyNs3QvJ47tUx3M3V9rIE0//WytY42MKz4l/MXKyGkQ2LQTfLUQ==", + "version": "2.16.2", + "resolved": "https://registry.npmjs.org/koa/-/koa-2.16.2.tgz", + "integrity": "sha512-+CCssgnrWKx9aI3OeZwroa/ckG4JICxvIFnSiOUyl2Uv+UTI+xIw0FfFrWS7cQFpoePpr9o8csss7KzsTzNL8Q==", "dev": true, + "license": "MIT", "dependencies": { "accepts": "^1.3.5", "cache-content-type": "^1.0.0", "content-disposition": "~0.5.2", "content-type": "^1.0.4", - "cookies": "~0.8.0", - "debug": "~3.1.0", + "cookies": "~0.9.0", + "debug": "^4.3.2", "delegates": "^1.0.0", - "depd": "^1.1.2", + "depd": "^2.0.0", "destroy": "^1.0.4", "encodeurl": "^1.0.2", "escape-html": "^1.0.3", @@ -6120,7 +6346,7 @@ "http-errors": "^1.6.3", "is-generator-function": "^1.0.7", "koa-compose": "^4.1.0", - "koa-convert": "^1.2.0", + "koa-convert": "^2.0.0", "on-finished": "^2.3.0", "only": "~0.0.2", "parseurl": "^1.3.2", @@ -6173,25 +6399,17 @@ "dev": true }, "node_modules/koa-convert": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/koa-convert/-/koa-convert-1.2.0.tgz", - "integrity": "sha1-2kCHXfSd4FOQmNFwC1CCDOvNIdA=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/koa-convert/-/koa-convert-2.0.0.tgz", + "integrity": "sha512-asOvN6bFlSnxewce2e/DK3p4tltyfC4VM7ZwuTuepI7dEQVcvpyFuBcEARu1+Hxg8DIwytce2n7jrZtRlPrARA==", "dev": true, + "license": "MIT", "dependencies": { "co": "^4.6.0", - "koa-compose": "^3.0.0" + "koa-compose": "^4.1.0" }, "engines": { - "node": ">= 4" - } - }, - "node_modules/koa-convert/node_modules/koa-compose": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/koa-compose/-/koa-compose-3.2.1.tgz", - "integrity": "sha1-qFzLQLfZhtjlo0Wzoazo6rz1Tec=", - "dev": true, - "dependencies": { - "any-promise": "^1.1.0" + "node": ">= 10" } }, "node_modules/koa-etag": { @@ -6259,10 +6477,11 @@ "dev": true }, "node_modules/koa-route/node_modules/path-to-regexp": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", - "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.9.0.tgz", + "integrity": "sha512-xIp7/apCFJuUHdDLWe8O1HIkb0kQrOMb/0u6FXQjemHn/ii5LrIzU6bdECnsiTF/GjZkMEKg1xdiZwNqDYlZ6g==", "dev": true, + "license": "MIT", "dependencies": { "isarray": "0.0.1" } @@ -6317,29 +6536,42 @@ } }, "node_modules/koa-static/node_modules/debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, + "license": "MIT", "dependencies": { "ms": "^2.1.1" } }, "node_modules/koa/node_modules/debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", "dev": true, + "license": "MIT", "dependencies": { - "ms": "2.0.0" + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/koa/node_modules/ms": { + "node_modules/koa/node_modules/depd": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } }, "node_modules/lcov-parse": { "version": "0.0.10", @@ -6382,10 +6614,11 @@ } }, "node_modules/linkify-it": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-2.2.0.tgz", - "integrity": "sha512-GnAl/knGn+i1U/wjBz3akz2stz+HrHLsxMwHQGofCDfPvlf+gDKN58UtfmUquTY4/MXeE2x7k19KQmeoZi94Iw==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz", + "integrity": "sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==", "dev": true, + "license": "MIT", "dependencies": { "uc.micro": "^1.0.1" } @@ -6527,25 +6760,51 @@ "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==", "dev": true, "engines": { - "node": ">=6" + "node": ">=6" + } + }, + "node_modules/log4js": { + "version": "6.9.1", + "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.9.1.tgz", + "integrity": "sha512-1somDdy9sChrr9/f4UlzhdaGfDR2c/SaD2a4T7qEkG4jTS57/B3qmnjLYePwQ8cqWnUHZI0iAKxMBpCZICiZ2g==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "date-format": "^4.0.14", + "debug": "^4.3.4", + "flatted": "^3.2.7", + "rfdc": "^1.3.0", + "streamroller": "^3.1.5" + }, + "engines": { + "node": ">=8.0" } }, - "node_modules/log4js": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.3.0.tgz", - "integrity": "sha512-Mc8jNuSFImQUIateBFwdOQcmC6Q5maU0VVvdC2R6XMb66/VnT+7WS4D/0EeNMZu1YODmJe5NIn2XftCzEocUgw==", + "node_modules/log4js/node_modules/debug": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", "dev": true, + "license": "MIT", "dependencies": { - "date-format": "^3.0.0", - "debug": "^4.1.1", - "flatted": "^2.0.1", - "rfdc": "^1.1.4", - "streamroller": "^2.2.4" + "ms": "^2.1.3" }, "engines": { - "node": ">=8.0" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, + "node_modules/log4js/node_modules/flatted": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "dev": true, + "license": "ISC" + }, "node_modules/loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", @@ -6660,10 +6919,11 @@ } }, "node_modules/lws-cors": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lws-cors/-/lws-cors-3.0.0.tgz", - "integrity": "sha512-diUkoyVZyzLB8LamdtUYYAfJdPAyu/+IjE3ZUcdnNQz9koECe4O2x3SWD7LSV43pd3CKgyiwwSxWJ4hTBZFIvQ==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lws-cors/-/lws-cors-3.1.1.tgz", + "integrity": "sha512-JMqRHdZ8wS17LB9MbHZvOAiDE/2MD3TSODvEAmNkIPEvutKq1Z6wfuFbfiNjAQRGyImUfiUM99vJOFHmLCg2cw==", "dev": true, + "license": "MIT", "dependencies": { "@koa/cors": "^3.0.0" }, @@ -6821,7 +7081,7 @@ "node_modules/markdown": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/markdown/-/markdown-0.5.0.tgz", - "integrity": "sha1-KCBbVlqK51kt4gdGPWY33BgnIrI=", + "integrity": "sha512-ctGPIcuqsYoJ493sCtFK7H4UEgMWAUdXeBhPbdsg1W0LsV9yJELAHRsMmWfTgao6nH0/x5gf9FmsbxiXnrgaIQ==", "dev": true, "dependencies": { "nopt": "~2.1.1" @@ -6834,14 +7094,15 @@ } }, "node_modules/markdown-it": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-10.0.0.tgz", - "integrity": "sha512-YWOP1j7UbDNz+TumYP1kpwnP0aEa711cJjrAQrzd0UXlbJfc5aAq0F/PZHjiioqDC1NKgvIMX+o+9Bk7yuM2dg==", + "version": "12.3.2", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz", + "integrity": "sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==", "dev": true, + "license": "MIT", "dependencies": { - "argparse": "^1.0.7", - "entities": "~2.0.0", - "linkify-it": "^2.0.0", + "argparse": "^2.0.1", + "entities": "~2.1.0", + "linkify-it": "^3.0.1", "mdurl": "^1.0.1", "uc.micro": "^1.0.5" }, @@ -6850,24 +7111,44 @@ } }, "node_modules/markdown-it-anchor": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/markdown-it-anchor/-/markdown-it-anchor-5.3.0.tgz", - "integrity": "sha512-/V1MnLL/rgJ3jkMWo84UR+K+jF1cxNG1a+KwqeXqTIJ+jtA8aWSHuigx8lTzauiIjBDbwF3NcWQMotd0Dm39jA==", + "version": "8.6.7", + "resolved": "https://registry.npmjs.org/markdown-it-anchor/-/markdown-it-anchor-8.6.7.tgz", + "integrity": "sha512-FlCHFwNnutLgVTflOYHPW2pPcl2AACqVzExlkGQNsi4CJgqOHN7YTgDd4LuhgN1BFO3TS0vLAruV1Td6dwWPJA==", "dev": true, + "license": "Unlicense", "peerDependencies": { + "@types/markdown-it": "*", "markdown-it": "*" } }, + "node_modules/markdown-it/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, + "license": "Python-2.0" + }, "node_modules/marked": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/marked/-/marked-0.8.2.tgz", - "integrity": "sha512-EGwzEeCcLniFX51DhTpmTom+dSA/MG/OBUDjnWtHbEnjAH180VzUeAw+oE4+Zv+CoYBWyRlYOTR0N8SO9R1PVw==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz", + "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==", "dev": true, + "license": "MIT", "bin": { - "marked": "bin/marked" + "marked": "bin/marked.js" }, "engines": { - "node": ">= 8.16.2" + "node": ">= 12" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" } }, "node_modules/md5.js": { @@ -6884,8 +7165,9 @@ "node_modules/mdurl": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", - "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=", - "dev": true + "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==", + "dev": true, + "license": "MIT" }, "node_modules/media-typer": { "version": "0.3.0", @@ -6896,12 +7178,6 @@ "node": ">= 0.6" } }, - "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/methods": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", @@ -6985,10 +7261,11 @@ "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, + "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -6997,10 +7274,14 @@ } }, "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, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/mkdirp": { "version": "0.5.5", @@ -7015,25 +7296,27 @@ } }, "node_modules/moment": { - "version": "2.25.1", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.25.1.tgz", - "integrity": "sha512-nRKMf9wDS4Fkyd0C9LXh2FFXinD+iwbJ5p/lh3CHitW9kZbRbJ8hCruiadiIXZVbeAqKZzqcTvHnK3mRhFjb6w==", + "version": "2.29.4", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", + "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", "dev": true, + "license": "MIT", "engines": { "node": "*" } }, "node_modules/morgan": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz", - "integrity": "sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==", + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.1.tgz", + "integrity": "sha512-223dMRJtI/l25dJKWpgij2cMtywuG/WiUKXdvwfbhGKBhy1puASqXwFzmWZ7+K73vUPoR7SS2Qz2cI/g9MKw0A==", "dev": true, + "license": "MIT", "dependencies": { "basic-auth": "~2.0.1", "debug": "2.6.9", "depd": "~2.0.0", "on-finished": "~2.3.0", - "on-headers": "~1.0.2" + "on-headers": "~1.1.0" }, "engines": { "node": ">= 0.8.0" @@ -7064,10 +7347,11 @@ "dev": true }, "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 + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" }, "node_modules/mute-stream": { "version": "0.0.7", @@ -7102,10 +7386,11 @@ } }, "node_modules/node-releases": { - "version": "1.1.59", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.59.tgz", - "integrity": "sha512-H3JrdUczbdiwxN5FuJPyCHnGHIFqQ0wWxo+9j1kAXAzqNMAHlo+4I/sYYxpyK0irQ73HgdiyzD32oqQDcU2Osw==", - "dev": true + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", + "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", + "dev": true, + "license": "MIT" }, "node_modules/node-version-matches": { "version": "2.0.1", @@ -7120,10 +7405,11 @@ } }, "node_modules/node-version-matches/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, + "license": "ISC", "bin": { "semver": "bin/semver.js" } @@ -7167,17 +7453,15 @@ "node": ">=0.10.0" } }, - "node_modules/object-component": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz", - "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=", - "dev": true - }, "node_modules/object-inspect": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz", - "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==", + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -7235,10 +7519,11 @@ } }, "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==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.1.0.tgz", + "integrity": "sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -7355,10 +7640,17 @@ } }, "node_modules/package-name-regex": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/package-name-regex/-/package-name-regex-1.0.8.tgz", - "integrity": "sha512-g3vB2J62dLqf4m50VM4tJUC4sixw3JB+Igd0cF3P/gJhAvmvsmFEV2eWZTeLbwfkKEWTf3+gwQ2C6JFFRxWHEQ==", - "dev": true + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/package-name-regex/-/package-name-regex-2.0.6.tgz", + "integrity": "sha512-gFL35q7kbE/zBaPA3UKhp2vSzcPYx2ecbYuwv1ucE9Il6IIgBDweBlH8D68UFGZic2MkllKa2KHCfC1IQBQUYA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/dword-design" + } }, "node_modules/pad": { "version": "3.2.0", @@ -7372,6 +7664,12 @@ "node": ">= 4.0.0" } }, + "node_modules/pako": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/pako/-/pako-2.1.0.tgz", + "integrity": "sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==", + "license": "(MIT AND Zlib)" + }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -7385,36 +7683,71 @@ } }, "node_modules/parse-asn1": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz", - "integrity": "sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ==", + "version": "5.1.7", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.7.tgz", + "integrity": "sha512-CTM5kuWR3sx9IFamcl5ErfPl6ea/N8IYwiJ+vpeB2g+1iknv7zBl5uPwbMbRVznRVbrNY6lGuDoE5b30grmbqg==", "dev": true, + "license": "ISC", "dependencies": { - "asn1.js": "^4.0.0", - "browserify-aes": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3", - "safe-buffer": "^5.1.1" + "asn1.js": "^4.10.1", + "browserify-aes": "^1.2.0", + "evp_bytestokey": "^1.0.3", + "hash-base": "~3.0", + "pbkdf2": "^3.1.2", + "safe-buffer": "^5.2.1" + }, + "engines": { + "node": ">= 0.10" } }, - "node_modules/parseqs": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz", - "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=", + "node_modules/parse-asn1/node_modules/hash-base": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.5.tgz", + "integrity": "sha512-vXm0l45VbcHEVlTCzs8M+s0VeYsB2lnlAaThoLKGXr3bE/VWDOelNUnycUPEhKEaXARL2TEFjBOyUiM6+55KBg==", "dev": true, + "license": "MIT", "dependencies": { - "better-assert": "~1.0.0" + "inherits": "^2.0.4", + "safe-buffer": "^5.2.1" + }, + "engines": { + "node": ">= 0.10" } }, + "node_modules/parse-asn1/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" + } + ], + "license": "MIT" + }, + "node_modules/parseqs": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.6.tgz", + "integrity": "sha512-jeAGzMDbfSHHA091hr0r31eYfTig+29g3GKKE/PPbEQ65X0lmMwlEoqmhzu0iztID5uJpZsFlUPDP8ThPL7M8w==", + "dev": true, + "license": "MIT" + }, "node_modules/parseuri": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz", - "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=", + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.6.tgz", + "integrity": "sha512-AUjen8sAkGgao7UyCX6Ahv0gIK2fABKmYjvP4xmy5JaKvcbTRueIqIPHLAfq30xJddqSE033IOMUSOMCcK3Sow==", "dev": true, - "dependencies": { - "better-assert": "~1.0.0" - } + "license": "MIT" }, "node_modules/parseurl": { "version": "1.3.3", @@ -7459,39 +7792,105 @@ } }, "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 + "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, + "license": "MIT" }, "node_modules/path-to-regexp": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.1.0.tgz", - "integrity": "sha512-h9DqehX3zZZDCEm+xbfU0ZmwCGFCAAraPJWMXJ4+v32NjZJilVg3k1TcKsRgIb8IQ/izZSaydDc1OhJCZvs2Dw==", - "dev": true + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.3.0.tgz", + "integrity": "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==", + "dev": true, + "license": "MIT" }, "node_modules/pbkdf2": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.1.tgz", - "integrity": "sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.3.tgz", + "integrity": "sha512-wfRLBZ0feWRhCIkoMB6ete7czJcnNnqRpcoWQBLqatqXXmelSRqfdDK4F3u9T2s2cXas/hQJcryI/4lAL+XTlA==", "dev": true, + "license": "MIT", "dependencies": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" + "create-hash": "~1.1.3", + "create-hmac": "^1.1.7", + "ripemd160": "=2.0.1", + "safe-buffer": "^5.2.1", + "sha.js": "^2.4.11", + "to-buffer": "^1.2.0" }, "engines": { "node": ">=0.12" } }, + "node_modules/pbkdf2/node_modules/create-hash": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.1.3.tgz", + "integrity": "sha512-snRpch/kwQhcdlnZKYanNF1m0RDlrCdSKQaH87w1FCFPVPNCQ/Il9QJKAX2jVBZddRdaHBMC+zXa9Gw9tmkNUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "sha.js": "^2.4.0" + } + }, + "node_modules/pbkdf2/node_modules/hash-base": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-2.0.2.tgz", + "integrity": "sha512-0TROgQ1/SxE6KmxWSvXHvRj90/Xo1JvZShofnYF+f6ZsGtR4eES7WfrQzPalmyagfKZCXpVnitiRebZulWsbiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.1" + } + }, + "node_modules/pbkdf2/node_modules/ripemd160": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.1.tgz", + "integrity": "sha512-J7f4wutN8mdbV08MJnXibYpCOPHR+yzy+iQ/AsjMv2j8cLavQ8VGagDFUwwTAdF8FmRKVeNpbTTEwNHCW1g94w==", + "dev": true, + "license": "MIT", + "dependencies": { + "hash-base": "^2.0.0", + "inherits": "^2.0.1" + } + }, + "node_modules/pbkdf2/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" + } + ], + "license": "MIT" + }, "node_modules/performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", "devOptional": true }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, "node_modules/picomatch": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", @@ -7504,6 +7903,16 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/possible-typed-array-names": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", + "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -7627,10 +8036,11 @@ } }, "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, + "license": "BSD-3-Clause", "engines": { "node": ">=0.6" } @@ -7692,13 +8102,14 @@ } }, "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.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", "dev": true, + "license": "MIT", "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" }, @@ -7706,11 +8117,66 @@ "node": ">= 0.8" } }, + "node_modules/raw-body/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, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-body/node_modules/http-errors": { + "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, + "license": "MIT", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-body/node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true, + "license": "ISC" + }, + "node_modules/raw-body/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, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-body/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, + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, "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==", + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dev": true, + "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -7885,10 +8351,11 @@ "dev": true }, "node_modules/requirejs": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/requirejs/-/requirejs-2.3.6.tgz", - "integrity": "sha512-ipEzlWQe6RK3jkzikgCupiTbTvm4S0/CAU5GlgptkN5SO6F3u0UD0K18wy6ErDqiCyP4J4YYe1HuAShvsxePLg==", + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/requirejs/-/requirejs-2.3.7.tgz", + "integrity": "sha512-DouTG8T1WanGok6Qjg2SXuCMzszOo0eHeH9hDZ5Y4x8Je+9JB38HdTLT4/VA8OaUhBa0JPVHJ0pyBkM1z+pDsw==", "dev": true, + "license": "MIT", "bin": { "r_js": "bin/r.js", "r.js": "bin/r.js" @@ -7987,10 +8454,11 @@ } }, "node_modules/rfdc": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.1.4.tgz", - "integrity": "sha512-5C9HXdzK8EAqN7JDif30jqsBzavB7wLpaubisuQIGHWf2gUXSpzy6ArX/+Da8RjFpagWsCn+pIgxTMAmKw9Zug==", - "dev": true + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", + "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", + "dev": true, + "license": "MIT" }, "node_modules/rgbcolor": { "version": "1.0.1", @@ -8064,20 +8532,21 @@ "dev": true }, "node_modules/rollup-plugin-license": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-license/-/rollup-plugin-license-2.1.0.tgz", - "integrity": "sha512-HvwwqCbG+//hAwGxOce+XadsEooq79SqDu3z2GTwU2y1rFQ/uqT5JbCzcmauFII+nKZ0/N2BzG76ZuP7OdfU7A==", + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/rollup-plugin-license/-/rollup-plugin-license-2.9.1.tgz", + "integrity": "sha512-C26f/bFXR52tzpBMllDnf5m2ETqRuyrrj3m8i3YY4imDwbXtunop+Lj1mO9mn/sZF8gKknOycN1Sm+kMGBd6RA==", "dev": true, + "license": "MIT", "dependencies": { - "commenting": "1.1.0", - "glob": "7.1.6", - "lodash": "4.17.15", - "magic-string": "0.25.7", - "mkdirp": "1.0.4", - "moment": "2.25.1", - "package-name-regex": "1.0.8", - "spdx-expression-validate": "2.0.0", - "spdx-satisfies": "5.0.0" + "commenting": "~1.1.0", + "glob": "~7.2.0", + "lodash": "~4.17.21", + "magic-string": "~0.26.2", + "mkdirp": "~1.0.4", + "moment": "~2.29.3", + "package-name-regex": "~2.0.6", + "spdx-expression-validate": "~2.0.0", + "spdx-satisfies": "~5.0.1" }, "engines": { "node": ">=10.0.0" @@ -8086,12 +8555,19 @@ "rollup": "^1.0.0 || ^2.0.0" } }, - "node_modules/rollup-plugin-license/node_modules/lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", - "dev": true - }, + "node_modules/rollup-plugin-license/node_modules/magic-string": { + "version": "0.26.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.7.tgz", + "integrity": "sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==", + "dev": true, + "license": "MIT", + "dependencies": { + "sourcemap-codec": "^1.4.8" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/rollup-plugin-license/node_modules/mkdirp": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", @@ -8135,22 +8611,6 @@ "npm": ">=3.0.0" } }, - "node_modules/rollup-plugin-terser": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-6.1.0.tgz", - "integrity": "sha512-4fB3M9nuoWxrwm39habpd4hvrbrde2W2GG4zEGPQg1YITNkM3Tqur5jSuXlWNzbv/2aMLJ+dZJaySc3GCD8oDw==", - "deprecated": "This package has been deprecated and is no longer maintained. Please use @rollup/plugin-terser", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.8.3", - "jest-worker": "^26.0.0", - "serialize-javascript": "^3.0.0", - "terser": "^4.7.0" - }, - "peerDependencies": { - "rollup": "^2.0.0" - } - }, "node_modules/rollup-pluginutils": { "version": "2.8.2", "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", @@ -8215,23 +8675,15 @@ "dev": true }, "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, + "license": "ISC", "bin": { "semver": "bin/semver" } }, - "node_modules/serialize-javascript": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-3.1.0.tgz", - "integrity": "sha512-JIJT1DGiWmIKhzRsG91aS6Ze4sFUrYbltlkg2onR5OrnNM02Kl/hnY/T4FN2omvyeBbQmMJv+K4cPOpGzOTFBg==", - "dev": true, - "dependencies": { - "randombytes": "^2.1.0" - } - }, "node_modules/serve-index-75lb": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/serve-index-75lb/-/serve-index-75lb-2.0.1.tgz", @@ -8298,6 +8750,24 @@ "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, + "license": "MIT", + "dependencies": { + "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": ">= 0.4" + } + }, "node_modules/setimmediate": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", @@ -8344,6 +8814,82 @@ "node": ">=8" } }, + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "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", @@ -8364,17 +8910,25 @@ "node": ">=6" } }, + "node_modules/smob": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/smob/-/smob-1.5.0.tgz", + "integrity": "sha512-g6T+p7QO8npa+/hNx9ohv1E5pVCmWrVCUzUXJyLdMmftX6ER0oiWY/w9knEonLpnOp6b6FenKnMfR8gqwWdwig==", + "dev": true, + "license": "MIT" + }, "node_modules/socket.io": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.3.0.tgz", - "integrity": "sha512-2A892lrj0GcgR/9Qk81EaY2gYhCBxurV0PfmmESO6p27QPrUK1J3zdns+5QPqvUYK2q657nSj0guoIil9+7eFg==", + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.5.1.tgz", + "integrity": "sha512-eaTE4tBKRD6RFoetquMbxgvcpvoDtRyIlkIMI/SMK2bsKvbENTsDeeu4GJ/z9c90yOWxB7b/eC+yKLPbHnH6bA==", "dev": true, + "license": "MIT", "dependencies": { "debug": "~4.1.0", - "engine.io": "~3.4.0", + "engine.io": "~3.6.0", "has-binary2": "~1.0.2", "socket.io-adapter": "~1.1.0", - "socket.io-client": "2.3.0", + "socket.io-client": "2.5.0", "socket.io-parser": "~3.4.0" } }, @@ -8385,62 +8939,64 @@ "dev": true }, "node_modules/socket.io-client": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.3.0.tgz", - "integrity": "sha512-cEQQf24gET3rfhxZ2jJ5xzAOo/xhZwK+mOqtGRg5IowZsMgwvHwnf/mCRapAAkadhM26y+iydgwsXGObBB5ZdA==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.5.0.tgz", + "integrity": "sha512-lOO9clmdgssDykiOmVQQitwBAF3I6mYcQAo7hQ7AM6Ny5X7fp8hIJ3HcQs3Rjz4SoggoxA1OgrQyY8EgTbcPYw==", "dev": true, + "license": "MIT", "dependencies": { "backo2": "1.0.2", - "base64-arraybuffer": "0.1.5", "component-bind": "1.0.0", - "component-emitter": "1.2.1", - "debug": "~4.1.0", - "engine.io-client": "~3.4.0", + "component-emitter": "~1.3.0", + "debug": "~3.1.0", + "engine.io-client": "~3.5.0", "has-binary2": "~1.0.2", - "has-cors": "1.1.0", "indexof": "0.0.1", - "object-component": "0.0.3", - "parseqs": "0.0.5", - "parseuri": "0.0.5", + "parseqs": "0.0.6", + "parseuri": "0.0.6", "socket.io-parser": "~3.3.0", "to-array": "0.1.4" } }, - "node_modules/socket.io-client/node_modules/base64-arraybuffer": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", - "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=", + "node_modules/socket.io-client/node_modules/component-emitter": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz", + "integrity": "sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==", "dev": true, - "engines": { - "node": ">= 0.6.0" + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/socket.io-client/node_modules/debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" } }, "node_modules/socket.io-client/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "license": "MIT" }, "node_modules/socket.io-client/node_modules/socket.io-parser": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.3.0.tgz", - "integrity": "sha512-hczmV6bDgdaEbVqhAeVMM/jfUfzuEZHsQg6eOmLgJht6G3mPKMxYm75w2+qhAQZ+4X+1+ATZ+QFKeOZD5riHng==", + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.3.4.tgz", + "integrity": "sha512-z/pFQB3x+EZldRRzORYW1vwVO8m/3ILkswtnpoeU6Ve3cbMWkmHEWDAVJn4QJtchiiFTo5j7UG2QvwxvaA9vow==", "dev": true, + "license": "MIT", "dependencies": { - "component-emitter": "1.2.1", + "component-emitter": "~1.3.0", "debug": "~3.1.0", "isarray": "2.0.1" } }, - "node_modules/socket.io-client/node_modules/socket.io-parser/node_modules/debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, "node_modules/socket.io-parser": { "version": "3.4.1", "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.4.1.tgz", @@ -8462,10 +9018,11 @@ } }, "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, + "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -8492,6 +9049,7 @@ "resolved": "https://registry.npmjs.org/spdx-compare/-/spdx-compare-1.0.0.tgz", "integrity": "sha512-C1mDZOX0hnu0ep9dfmuoi03+eOdDoz2yvK79RxbcrVEG1NO1Ph35yW102DHWKN4pk80nwCgeMmSY5L25VE4D9A==", "dev": true, + "license": "MIT", "dependencies": { "array-find-index": "^1.0.2", "spdx-expression-parse": "^3.0.0", @@ -8533,13 +9091,15 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/spdx-ranges/-/spdx-ranges-2.1.1.tgz", "integrity": "sha512-mcdpQFV7UDAgLpXEE/jOMqvK4LBoO0uTQg0uvXUewmEFhpiZx5yJSZITHB8w1ZahKdhfZqP5GPEOKLyEq5p8XA==", - "dev": true + "dev": true, + "license": "(MIT AND CC-BY-3.0)" }, "node_modules/spdx-satisfies": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/spdx-satisfies/-/spdx-satisfies-5.0.0.tgz", - "integrity": "sha512-/hGhwh20BeGmkA+P/lm06RvXD94JduwNxtx/oX3B5ClPt1/u/m5MCaDNo1tV3Y9laLkQr/NRde63b9lLMhlNfw==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/spdx-satisfies/-/spdx-satisfies-5.0.1.tgz", + "integrity": "sha512-Nwor6W6gzFp8XX4neaKQ7ChV4wmpSh2sSDemMFSzHxpTw460jxFYeOn+jq4ybnSSw/5sc3pjka9MQPouksQNpw==", "dev": true, + "license": "MIT", "dependencies": { "spdx-compare": "^1.0.0", "spdx-expression-parse": "^3.0.0", @@ -8694,28 +9254,36 @@ } }, "node_modules/streamroller": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-2.2.4.tgz", - "integrity": "sha512-OG79qm3AujAM9ImoqgWEY1xG4HX+Lw+yY6qZj9R1K2mhF5bEmQ849wvrb+4vt4jLMLzwXttJlQbOdPOQVRv7DQ==", - "deprecated": "2.x is no longer supported. Please upgrade to 3.x or higher.", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.1.5.tgz", + "integrity": "sha512-KFxaM7XT+irxvdqSP1LGLgNWbYN7ay5owZ3r/8t77p+EtSUAfUgtl7be3xtqtOmGUl9K9YPO2ca8133RlTjvKw==", "dev": true, + "license": "MIT", "dependencies": { - "date-format": "^2.1.0", - "debug": "^4.1.1", + "date-format": "^4.0.14", + "debug": "^4.3.4", "fs-extra": "^8.1.0" }, "engines": { "node": ">=8.0" } }, - "node_modules/streamroller/node_modules/date-format": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/date-format/-/date-format-2.1.0.tgz", - "integrity": "sha512-bYQuGLeFxhkxNOF3rcMtiZxvCBAquGzZm6oWA1oZ0g2THUzivaRhv8uOhdr19LmoobSOLoIAxeUK2RdbM8IFTA==", - "deprecated": "2.x is no longer supported. Please upgrade to 4.x or higher.", + "node_modules/streamroller/node_modules/debug": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, "engines": { - "node": ">=4.0" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, "node_modules/string_decoder": { @@ -8742,10 +9310,11 @@ } }, "node_modules/string-width/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, + "license": "MIT", "engines": { "node": ">=6" } @@ -8872,41 +9441,9 @@ "node_modules/taffydb": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/taffydb/-/taffydb-2.6.2.tgz", - "integrity": "sha1-fLy2S1oUG2ou/CxdLGe04VCyomg=", - "dev": true - }, - "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/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==", + "integrity": "sha512-y3JaeRSplks6NYQuCOj3ZFMO3j60rTwbuKCvZxsAraGYH2epusatvZ0baZYA01WsGqJBq/Dl6vOrMUJqyMj8kA==", "dev": true }, - "node_modules/terser/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/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -8976,23 +9513,58 @@ "node_modules/to-array": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", - "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=", + "integrity": "sha512-LhVdShQD/4Mk4zXNroIQZJC+Ap3zgLcDuwEdcmLv9CCO73NWockQDwyUnW/m8VX/EElfL6FcYx7EeutN4HJA6A==", "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=", + "node_modules/to-buffer": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.2.1.tgz", + "integrity": "sha512-tB82LpAIWjhLYbqjx3X4zEeHN6M8CiuOEy2JY8SEQVdYRe3CCHOFaqrBW1doLDrfpWhplcW7BL+bO3/6S3pcDQ==", "dev": true, + "license": "MIT", + "dependencies": { + "isarray": "^2.0.5", + "safe-buffer": "^5.2.1", + "typed-array-buffer": "^1.0.3" + }, "engines": { - "node": ">=4" + "node": ">= 0.4" } }, + "node_modules/to-buffer/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true, + "license": "MIT" + }, + "node_modules/to-buffer/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" + } + ], + "license": "MIT" + }, "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, + "license": "MIT", "dependencies": { "is-number": "^7.0.0" }, @@ -9033,6 +9605,7 @@ "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.6.tgz", "integrity": "sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.6.x" } @@ -9110,6 +9683,21 @@ "node": ">= 0.6" } }, + "node_modules/typed-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/typescript": { "version": "5.6.2", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.2.tgz", @@ -9146,13 +9734,15 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/underscore": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.10.2.tgz", - "integrity": "sha512-N4P+Q/BuyuEKFJ43B9gYuOj4TQUHXX+j2FqguVOpjkssLUUrnJofCcBccJSCoeturDoZU6GorDTHSvUDlSQbTg==", - "dev": true + "version": "1.13.7", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.7.tgz", + "integrity": "sha512-GMXzWtsc57XAtguZgaQViUOzs0KTkk8ojr3/xAxXLITqf/3EMwxC0inyETfDFjH/Krbhuep0HNbbjI9i/q3F3g==", + "dev": true, + "license": "MIT" }, "node_modules/undici-types": { "version": "6.19.8", @@ -9206,6 +9796,7 @@ "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4.0.0" } @@ -9219,6 +9810,37 @@ "node": ">= 0.8" } }, + "node_modules/update-browserslist-db": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", + "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", + "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" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, "node_modules/uri-js": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", @@ -9367,17 +9989,19 @@ "dev": true }, "node_modules/which-typed-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.2.tgz", - "integrity": "sha512-KT6okrd1tE6JdZAy3o2VhMoYPh3+J6EMZLyrxBQsZflI1QCZIxMrIYLkosd8Twf+YfknVIHmYQPgJt238p8dnQ==", + "version": "1.1.19", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", + "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", "dev": true, + "license": "MIT", "dependencies": { - "available-typed-arrays": "^1.0.2", - "es-abstract": "^1.17.5", - "foreach": "^2.0.5", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.1", - "is-typed-array": "^1.1.3" + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "for-each": "^0.3.5", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -9387,10 +10011,11 @@ } }, "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, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -9522,10 +10147,11 @@ } }, "node_modules/ws": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.3.1.tgz", - "integrity": "sha512-D3RuNkynyHmEJIpD2qrgVkc9DQ23OrN/moAwZX4L8DfvszsJxpjQuUq3LMx6HoYji9fbIOBY18XWBsAux1ZZUA==", + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8.3.0" }, @@ -9543,15 +10169,16 @@ } }, "node_modules/xmlcreate": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/xmlcreate/-/xmlcreate-2.0.3.tgz", - "integrity": "sha512-HgS+X6zAztGa9zIK3Y3LXuJes33Lz9x+YyTxgrkIdabu2vqcGOWwdfCpf1hWLRrd553wd4QCDf6BBO6FfdsRiQ==", - "dev": true + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/xmlcreate/-/xmlcreate-2.0.4.tgz", + "integrity": "sha512-nquOebG4sngPmGPICTS5EnxqhKbCmz5Ox5hsszI2T6U5qdrJizBc+0ilYSEjTSzU0yZcmvppztXe/5Al5fUwdg==", + "dev": true, + "license": "Apache-2.0" }, "node_modules/xmlhttprequest-ssl": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz", - "integrity": "sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4=", + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.6.3.tgz", + "integrity": "sha512-3XfeQE/wNkvrIktn2Kf0869fC0BN6UpydVasGIeSm2B1Llihf7/0UfZM+eCkOw3P7bP4+qPgqhm7ZoxuJtFU0Q==", "dev": true, "engines": { "node": ">=0.4.0" @@ -9576,10 +10203,11 @@ } }, "node_modules/y18n": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", - "dev": true + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true, + "license": "ISC" }, "node_modules/yallist": { "version": "2.1.2", @@ -9663,8 +10291,9 @@ "node_modules/yarpm": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/yarpm/-/yarpm-0.2.1.tgz", - "integrity": "sha1-X/m6t0PN0+d63+H21s8zlvpIHmQ=", + "integrity": "sha512-X9oqKXfOuhRkiv1QiW7PnNEi/JIGfs27QBsyY2ZemWJ9Ilf4agfbvNOKOS59NqxYFo8lGzEHOCdlkX6/NrYjZg==", "dev": true, + "license": "MIT", "dependencies": { "command-exists": "^1.2.2", "cross-spawn": "^5.1.0" @@ -9677,8 +10306,9 @@ "node_modules/yarpm/node_modules/cross-spawn": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "integrity": "sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==", "dev": true, + "license": "MIT", "dependencies": { "lru-cache": "^4.0.1", "shebang-command": "^1.2.0", @@ -9721,8 +10351,9 @@ "node_modules/yeast": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", - "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=", - "dev": true + "integrity": "sha512-8HFIh676uyGYP6wP13R/j6OJ/1HwJ46snpvzE7aHAN3Ryqh2yX6Xox2B4CUmTwwOIzlG3Bs7ocsP5dZH/R1Qbg==", + "dev": true, + "license": "MIT" }, "node_modules/ylru": { "version": "1.2.1", diff --git a/package.json b/package.json index 0ca945a52..a35be87fb 100644 --- a/package.json +++ b/package.json @@ -24,9 +24,8 @@ }, "dependencies": { "@babel/runtime": "^7.26.9", - "atob": "^2.1.2", - "btoa": "^1.2.1", - "fflate": "^0.8.1" + "fflate": "^0.8.1", + "fast-png": "^6.2.0" }, "optionalDependencies": { "canvg": "^3.0.11", @@ -40,6 +39,7 @@ "@babel/preset-env": "^7.10.4", "@rollup/plugin-babel": "^5.3.0", "@rollup/plugin-replace": "^2.3.3", + "@rollup/plugin-terser": "^0.4.4", "@rollup/plugin-typescript": "^8.0.0", "@types/jasmine": "^3.5.11", "@types/node": "^20.16.5", @@ -82,7 +82,6 @@ "rollup-plugin-license": "^2.1.0", "rollup-plugin-node-resolve": "5.2.0", "rollup-plugin-preprocess": "0.0.4", - "rollup-plugin-terser": "^6.1.0", "typescript": "^5.6.2", "yarpm": "^0.2.1" }, diff --git a/rollup.config.js b/rollup.config.js index 377012de9..f22fb09e4 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -1,4 +1,4 @@ -import { terser } from "rollup-plugin-terser"; +import terser from "@rollup/plugin-terser"; import { babel } from "@rollup/plugin-babel"; import RollupPluginPreprocess from "rollup-plugin-preprocess"; import resolve from "rollup-plugin-node-resolve"; @@ -37,6 +37,19 @@ const umdExternals = matchSubmodules([ ...Object.keys(pkg.peerDependencies || {}), ...Object.keys(pkg.optionalDependencies || {}) ]); + +const terserOptions = { + ecma: 2023, + module: true, + compress: { + ecma: 2023, + passes: 2 + }, + mangle: { + safari10: true + } +}; + const externals = matchSubmodules([ ...Object.keys(pkg.dependencies || {}), ...Object.keys(pkg.peerDependencies || {}), @@ -57,7 +70,7 @@ const umd = { file: "dist/jspdf.umd.min.js", format: "umd", name: "jspdf", - plugins: [terser({})], + plugins: [terser(terserOptions)], exports: "named", sourcemap: true } @@ -88,7 +101,7 @@ const es = { format: "es", name: "jspdf", sourcemap: true, - plugins: [terser({})] + plugins: [terser(terserOptions)] } ], external: externals, @@ -117,7 +130,7 @@ const node = { name: "jspdf", exports: "named", sourcemap: true, - plugins: [terser({})] + plugins: [terser(terserOptions)] } ], external: externals, @@ -136,7 +149,7 @@ const umdPolyfills = { file: "dist/polyfills.umd.js", format: "umd", name: "jspdf-polyfills", - plugins: [terser({})] + plugins: [terser(terserOptions)] } ], external: [], @@ -159,7 +172,7 @@ const esPolyfills = { file: "dist/polyfills.es.js", format: "es", name: "jspdf-polyfills", - plugins: [terser({})] + plugins: [terser(terserOptions)] } ], external: externals, diff --git a/src/libs/AtobBtoa.js b/src/libs/AtobBtoa.js index 798a66318..5e2c43861 100644 --- a/src/libs/AtobBtoa.js +++ b/src/libs/AtobBtoa.js @@ -1,18 +1,6 @@ import { globalObject } from "./globalObject.js"; -var atob, btoa; - -(function() { - // @if MODULE_FORMAT!='cjs' - atob = globalObject.atob.bind(globalObject); - btoa = globalObject.btoa.bind(globalObject); - return; - // @endif - - // @if MODULE_FORMAT='cjs' - atob = require("atob"); - btoa = require("btoa"); - // @endif -})(); +const atob = globalObject.atob.bind(globalObject); +const btoa = globalObject.btoa.bind(globalObject); export { atob, btoa }; diff --git a/src/libs/fast-png.js b/src/libs/fast-png.js new file mode 100644 index 000000000..7a0f4f3ec --- /dev/null +++ b/src/libs/fast-png.js @@ -0,0 +1 @@ +export { decode } from "fast-png"; diff --git a/src/libs/png.js b/src/libs/png.js deleted file mode 100644 index 807d43127..000000000 --- a/src/libs/png.js +++ /dev/null @@ -1,598 +0,0 @@ -// Generated by CoffeeScript 1.4.0 - -/** - * @license - * PNG.js - * Copyright (c) 2011 Devon Govett - * MIT LICENSE - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of this - * software and associated documentation files (the "Software"), to deal in the Software - * without restriction, including without limitation the rights to use, copy, modify, merge, - * publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons - * to whom the Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all copies or - * substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING - * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, - * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -import { unzlibSync } from "./fflate.js"; -import { globalObject } from "./globalObject.js"; - -var PNG = (function() { - var APNG_BLEND_OP_OVER, - APNG_BLEND_OP_SOURCE, - APNG_DISPOSE_OP_BACKGROUND, - APNG_DISPOSE_OP_NONE, - APNG_DISPOSE_OP_PREVIOUS, - makeImage, - scratchCanvas, - scratchCtx; - - APNG_DISPOSE_OP_NONE = 0; - - APNG_DISPOSE_OP_BACKGROUND = 1; - - APNG_DISPOSE_OP_PREVIOUS = 2; - - APNG_BLEND_OP_SOURCE = 0; - - APNG_BLEND_OP_OVER = 1; - - function PNG(data) { - var chunkSize, - colors, - palLen, - delayDen, - delayNum, - frame, - i, - index, - key, - section, - palShort, - text, - _i, - _j, - _ref; - this.data = data; - this.pos = 8; - this.palette = []; - this.imgData = []; - this.transparency = {}; - this.animation = null; - this.text = {}; - frame = null; - while (true) { - chunkSize = this.readUInt32(); - section = function() { - var _i, _results; - _results = []; - for (i = _i = 0; _i < 4; i = ++_i) { - _results.push(String.fromCharCode(this.data[this.pos++])); - } - return _results; - } - .call(this) - .join(""); - switch (section) { - case "IHDR": - this.width = this.readUInt32(); - this.height = this.readUInt32(); - this.bits = this.data[this.pos++]; - this.colorType = this.data[this.pos++]; - this.compressionMethod = this.data[this.pos++]; - this.filterMethod = this.data[this.pos++]; - this.interlaceMethod = this.data[this.pos++]; - break; - case "acTL": - this.animation = { - numFrames: this.readUInt32(), - numPlays: this.readUInt32() || Infinity, - frames: [] - }; - break; - case "PLTE": - this.palette = this.read(chunkSize); - break; - case "fcTL": - if (frame) { - this.animation.frames.push(frame); - } - this.pos += 4; - frame = { - width: this.readUInt32(), - height: this.readUInt32(), - xOffset: this.readUInt32(), - yOffset: this.readUInt32() - }; - delayNum = this.readUInt16(); - delayDen = this.readUInt16() || 100; - frame.delay = (1000 * delayNum) / delayDen; - frame.disposeOp = this.data[this.pos++]; - frame.blendOp = this.data[this.pos++]; - frame.data = []; - break; - case "IDAT": - case "fdAT": - if (section === "fdAT") { - this.pos += 4; - chunkSize -= 4; - } - data = (frame != null ? frame.data : void 0) || this.imgData; - for ( - i = _i = 0; - 0 <= chunkSize ? _i < chunkSize : _i > chunkSize; - i = 0 <= chunkSize ? ++_i : --_i - ) { - data.push(this.data[this.pos++]); - } - break; - case "tRNS": - this.transparency = {}; - switch (this.colorType) { - case 3: - palLen = this.palette.length / 3; - this.transparency.indexed = this.read(chunkSize); - if (this.transparency.indexed.length > palLen) - throw new Error("More transparent colors than palette size"); - /* - * According to the PNG spec trns should be increased to the same size as palette if shorter - */ - //palShort = 255 - this.transparency.indexed.length; - palShort = palLen - this.transparency.indexed.length; - if (palShort > 0) { - for ( - i = _j = 0; - 0 <= palShort ? _j < palShort : _j > palShort; - i = 0 <= palShort ? ++_j : --_j - ) { - this.transparency.indexed.push(255); - } - } - break; - case 0: - this.transparency.grayscale = this.read(chunkSize)[0]; - break; - case 2: - this.transparency.rgb = this.read(chunkSize); - } - break; - case "tEXt": - text = this.read(chunkSize); - index = text.indexOf(0); - key = String.fromCharCode.apply(String, text.slice(0, index)); - this.text[key] = String.fromCharCode.apply( - String, - text.slice(index + 1) - ); - break; - case "IEND": - if (frame) { - this.animation.frames.push(frame); - } - this.colors = function() { - switch (this.colorType) { - case 0: - case 3: - case 4: - return 1; - case 2: - case 6: - return 3; - } - }.call(this); - this.hasAlphaChannel = (_ref = this.colorType) === 4 || _ref === 6; - colors = this.colors + (this.hasAlphaChannel ? 1 : 0); - this.pixelBitlength = this.bits * colors; - this.colorSpace = function() { - switch (this.colors) { - case 1: - return "DeviceGray"; - case 3: - return "DeviceRGB"; - } - }.call(this); - this.imgData = new Uint8Array(this.imgData); - return; - default: - this.pos += chunkSize; - } - this.pos += 4; - if (this.pos > this.data.length) { - throw new Error("Incomplete or corrupt PNG file"); - } - } - } - - PNG.prototype.read = function(bytes) { - var i, _i, _results; - _results = []; - for ( - i = _i = 0; - 0 <= bytes ? _i < bytes : _i > bytes; - i = 0 <= bytes ? ++_i : --_i - ) { - _results.push(this.data[this.pos++]); - } - return _results; - }; - - PNG.prototype.readUInt32 = function() { - var b1, b2, b3, b4; - b1 = this.data[this.pos++] << 24; - b2 = this.data[this.pos++] << 16; - b3 = this.data[this.pos++] << 8; - b4 = this.data[this.pos++]; - return b1 | b2 | b3 | b4; - }; - - PNG.prototype.readUInt16 = function() { - var b1, b2; - b1 = this.data[this.pos++] << 8; - b2 = this.data[this.pos++]; - return b1 | b2; - }; - - PNG.prototype.decodePixels = function(data) { - var pixelBytes = this.pixelBitlength / 8; - var fullPixels = new Uint8Array(this.width * this.height * pixelBytes); - var pos = 0; - var _this = this; - - if (data == null) { - data = this.imgData; - } - if (data.length === 0) { - return new Uint8Array(0); - } - - data = unzlibSync(data); - function pass(x0, y0, dx, dy) { - var abyte, - c, - col, - i, - left, - length, - p, - pa, - paeth, - pb, - pc, - pixels, - row, - scanlineLength, - upper, - upperLeft, - _i, - _j, - _k, - _l, - _m; - var w = Math.ceil((_this.width - x0) / dx), - h = Math.ceil((_this.height - y0) / dy); - var isFull = _this.width == w && _this.height == h; - scanlineLength = pixelBytes * w; - pixels = isFull ? fullPixels : new Uint8Array(scanlineLength * h); - length = data.length; - row = 0; - c = 0; - while (row < h && pos < length) { - switch (data[pos++]) { - case 0: - for (i = _i = 0; _i < scanlineLength; i = _i += 1) { - pixels[c++] = data[pos++]; - } - break; - case 1: - for (i = _j = 0; _j < scanlineLength; i = _j += 1) { - abyte = data[pos++]; - left = i < pixelBytes ? 0 : pixels[c - pixelBytes]; - pixels[c++] = (abyte + left) % 256; - } - break; - case 2: - for (i = _k = 0; _k < scanlineLength; i = _k += 1) { - abyte = data[pos++]; - col = (i - (i % pixelBytes)) / pixelBytes; - upper = - row && - pixels[ - (row - 1) * scanlineLength + - col * pixelBytes + - (i % pixelBytes) - ]; - pixels[c++] = (upper + abyte) % 256; - } - break; - case 3: - for (i = _l = 0; _l < scanlineLength; i = _l += 1) { - abyte = data[pos++]; - col = (i - (i % pixelBytes)) / pixelBytes; - left = i < pixelBytes ? 0 : pixels[c - pixelBytes]; - upper = - row && - pixels[ - (row - 1) * scanlineLength + - col * pixelBytes + - (i % pixelBytes) - ]; - pixels[c++] = (abyte + Math.floor((left + upper) / 2)) % 256; - } - break; - case 4: - for (i = _m = 0; _m < scanlineLength; i = _m += 1) { - abyte = data[pos++]; - col = (i - (i % pixelBytes)) / pixelBytes; - left = i < pixelBytes ? 0 : pixels[c - pixelBytes]; - if (row === 0) { - upper = upperLeft = 0; - } else { - upper = - pixels[ - (row - 1) * scanlineLength + - col * pixelBytes + - (i % pixelBytes) - ]; - upperLeft = - col && - pixels[ - (row - 1) * scanlineLength + - (col - 1) * pixelBytes + - (i % pixelBytes) - ]; - } - p = left + upper - upperLeft; - pa = Math.abs(p - left); - pb = Math.abs(p - upper); - pc = Math.abs(p - upperLeft); - if (pa <= pb && pa <= pc) { - paeth = left; - } else if (pb <= pc) { - paeth = upper; - } else { - paeth = upperLeft; - } - pixels[c++] = (abyte + paeth) % 256; - } - break; - default: - throw new Error("Invalid filter algorithm: " + data[pos - 1]); - } - if (!isFull) { - var fullPos = ((y0 + row * dy) * _this.width + x0) * pixelBytes; - var partPos = row * scanlineLength; - for (i = 0; i < w; i += 1) { - for (var j = 0; j < pixelBytes; j += 1) - fullPixels[fullPos++] = pixels[partPos++]; - fullPos += (dx - 1) * pixelBytes; - } - } - row++; - } - } - if (_this.interlaceMethod == 1) { - /* - 1 6 4 6 2 6 4 6 - 7 7 7 7 7 7 7 7 - 5 6 5 6 5 6 5 6 - 7 7 7 7 7 7 7 7 - 3 6 4 6 3 6 4 6 - 7 7 7 7 7 7 7 7 - 5 6 5 6 5 6 5 6 - 7 7 7 7 7 7 7 7 - */ - pass(0, 0, 8, 8); // 1 - /* NOTE these seem to follow the pattern: - * pass(x, 0, 2*x, 2*x); - * pass(0, x, x, 2*x); - * with x being 4, 2, 1. - */ - pass(4, 0, 8, 8); // 2 - pass(0, 4, 4, 8); // 3 - - pass(2, 0, 4, 4); // 4 - pass(0, 2, 2, 4); // 5 - - pass(1, 0, 2, 2); // 6 - pass(0, 1, 1, 2); // 7 - } else { - pass(0, 0, 1, 1); - } - return fullPixels; - }; - - PNG.prototype.decodePalette = function() { - var c, i, length, palette, pos, ret, transparency, _i, _ref, _ref1; - palette = this.palette; - transparency = this.transparency.indexed || []; - ret = new Uint8Array((transparency.length || 0) + palette.length); - pos = 0; - length = palette.length; - c = 0; - for (i = _i = 0, _ref = length; _i < _ref; i = _i += 3) { - ret[pos++] = palette[i]; - ret[pos++] = palette[i + 1]; - ret[pos++] = palette[i + 2]; - ret[pos++] = (_ref1 = transparency[c++]) != null ? _ref1 : 255; - } - return ret; - }; - - PNG.prototype.copyToImageData = function(imageData, pixels) { - var alpha, colors, data, i, input, j, k, length, palette, v, _ref; - colors = this.colors; - palette = null; - alpha = this.hasAlphaChannel; - if (this.palette.length) { - palette = - (_ref = this._decodedPalette) != null - ? _ref - : (this._decodedPalette = this.decodePalette()); - colors = 4; - alpha = true; - } - data = imageData.data || imageData; - length = data.length; - input = palette || pixels; - i = j = 0; - if (colors === 1) { - while (i < length) { - k = palette ? pixels[i / 4] * 4 : j; - v = input[k++]; - data[i++] = v; - data[i++] = v; - data[i++] = v; - data[i++] = alpha ? input[k++] : 255; - j = k; - } - } else { - while (i < length) { - k = palette ? pixels[i / 4] * 4 : j; - data[i++] = input[k++]; - data[i++] = input[k++]; - data[i++] = input[k++]; - data[i++] = alpha ? input[k++] : 255; - j = k; - } - } - }; - - PNG.prototype.decode = function() { - var ret; - ret = new Uint8Array(this.width * this.height * 4); - this.copyToImageData(ret, this.decodePixels()); - return ret; - }; - - var hasBrowserCanvas = function() { - if (Object.prototype.toString.call(globalObject) === "[object Window]") { - try { - scratchCanvas = globalObject.document.createElement("canvas"); - scratchCtx = scratchCanvas.getContext("2d"); - } catch (e) { - return false; - } - return true; - } - return false; - }; - - hasBrowserCanvas(); - - makeImage = function(imageData) { - if (hasBrowserCanvas() === true) { - var img; - scratchCtx.width = imageData.width; - scratchCtx.height = imageData.height; - scratchCtx.clearRect(0, 0, imageData.width, imageData.height); - scratchCtx.putImageData(imageData, 0, 0); - img = new Image(); - img.src = scratchCanvas.toDataURL(); - return img; - } - throw new Error("This method requires a Browser with Canvas-capability."); - }; - - PNG.prototype.decodeFrames = function(ctx) { - var frame, i, imageData, pixels, _i, _len, _ref, _results; - if (!this.animation) { - return; - } - _ref = this.animation.frames; - _results = []; - for (i = _i = 0, _len = _ref.length; _i < _len; i = ++_i) { - frame = _ref[i]; - imageData = ctx.createImageData(frame.width, frame.height); - pixels = this.decodePixels(new Uint8Array(frame.data)); - this.copyToImageData(imageData, pixels); - frame.imageData = imageData; - _results.push((frame.image = makeImage(imageData))); - } - return _results; - }; - - PNG.prototype.renderFrame = function(ctx, number) { - var frame, frames, prev; - frames = this.animation.frames; - frame = frames[number]; - prev = frames[number - 1]; - if (number === 0) { - ctx.clearRect(0, 0, this.width, this.height); - } - if ( - (prev != null ? prev.disposeOp : void 0) === APNG_DISPOSE_OP_BACKGROUND - ) { - ctx.clearRect(prev.xOffset, prev.yOffset, prev.width, prev.height); - } else if ( - (prev != null ? prev.disposeOp : void 0) === APNG_DISPOSE_OP_PREVIOUS - ) { - ctx.putImageData(prev.imageData, prev.xOffset, prev.yOffset); - } - if (frame.blendOp === APNG_BLEND_OP_SOURCE) { - ctx.clearRect(frame.xOffset, frame.yOffset, frame.width, frame.height); - } - return ctx.drawImage(frame.image, frame.xOffset, frame.yOffset); - }; - - PNG.prototype.animate = function(ctx) { - var doFrame, - frameNumber, - frames, - numFrames, - numPlays, - _ref, - _this = this; - frameNumber = 0; - (_ref = this.animation), - (numFrames = _ref.numFrames), - (frames = _ref.frames), - (numPlays = _ref.numPlays); - return (doFrame = function() { - var f, frame; - f = frameNumber++ % numFrames; - frame = frames[f]; - _this.renderFrame(ctx, f); - if (numFrames > 1 && frameNumber / numFrames < numPlays) { - return (_this.animation._timeout = setTimeout(doFrame, frame.delay)); - } - })(); - }; - - PNG.prototype.stopAnimation = function() { - var _ref; - return clearTimeout( - (_ref = this.animation) != null ? _ref._timeout : void 0 - ); - }; - - PNG.prototype.render = function(canvas) { - var ctx, data; - if (canvas._png) { - canvas._png.stopAnimation(); - } - canvas._png = this; - canvas.width = this.width; - canvas.height = this.height; - ctx = canvas.getContext("2d"); - if (this.animation) { - this.decodeFrames(ctx); - return this.animate(ctx); - } else { - data = ctx.createImageData(this.width, this.height); - this.copyToImageData(data, this.decodePixels()); - return ctx.putImageData(data, 0, 0); - } - }; - - return PNG; -})(); - -export { PNG }; diff --git a/src/modules/addimage.js b/src/modules/addimage.js index 0c6e49aed..607daf039 100644 --- a/src/modules/addimage.js +++ b/src/modules/addimage.js @@ -33,7 +33,7 @@ */ import { jsPDF } from "../jspdf.js"; -import { atob, btoa } from "../libs/AtobBtoa.js"; +import { atob } from "../libs/AtobBtoa.js"; (function(jsPDFAPI) { "use strict"; @@ -286,10 +286,8 @@ import { atob, btoa } from "../libs/AtobBtoa.js"; // Soft mask if ("sMask" in image && typeof image.sMask !== "undefined") { var decodeParameters = - "/Predictor " + - image.predictor + - " /Colors 1 /BitsPerComponent " + - image.bitsPerComponent + + (image.predictor != null ? "/Predictor " + image.predictor : "") + + " /Colors 1 /BitsPerComponent 8" + " /Columns " + image.width; var sMask = { @@ -671,19 +669,6 @@ import { atob, btoa } from "../libs/AtobBtoa.js"; return dataUrl.substring(commaIndex + 1); }); - /** - * Check to see if ArrayBuffer is supported - * - * @name supportsArrayBuffer - * @function - * @returns {boolean} - */ - var supportsArrayBuffer = (jsPDFAPI.__addimage__.supportsArrayBuffer = function() { - return ( - typeof ArrayBuffer !== "undefined" && typeof Uint8Array !== "undefined" - ); - }); - /** * Tests supplied object to determine if ArrayBuffer * @@ -694,7 +679,7 @@ import { atob, btoa } from "../libs/AtobBtoa.js"; * @returns {boolean} */ jsPDFAPI.__addimage__.isArrayBuffer = function(object) { - return supportsArrayBuffer() && object instanceof ArrayBuffer; + return object instanceof ArrayBuffer; }; /** @@ -709,18 +694,15 @@ import { atob, btoa } from "../libs/AtobBtoa.js"; object ) { return ( - supportsArrayBuffer() && - typeof Uint32Array !== "undefined" && - (object instanceof Int8Array || - object instanceof Uint8Array || - (typeof Uint8ClampedArray !== "undefined" && - object instanceof Uint8ClampedArray) || - object instanceof Int16Array || - object instanceof Uint16Array || - object instanceof Int32Array || - object instanceof Uint32Array || - object instanceof Float32Array || - object instanceof Float64Array) + object instanceof Int8Array || + object instanceof Uint8Array || + object instanceof Uint8ClampedArray || + object instanceof Int16Array || + object instanceof Uint16Array || + object instanceof Int32Array || + object instanceof Uint32Array || + object instanceof Float32Array || + object instanceof Float64Array ); }); @@ -910,12 +892,10 @@ import { atob, btoa } from "../libs/AtobBtoa.js"; result = checkImagesForAlias.call(this, alias); if (!result) { - if (supportsArrayBuffer()) { - // no need to convert if imageData is already uint8array - if (!(imageData instanceof Uint8Array) && format !== "RGBA") { - dataAsBinaryString = imageData; - imageData = binaryStringToUint8Array(imageData); - } + // no need to convert if imageData is already uint8array + if (!(imageData instanceof Uint8Array) && format !== "RGBA") { + dataAsBinaryString = imageData; + imageData = binaryStringToUint8Array(imageData); } result = this["process" + format.toUpperCase()]( @@ -1007,7 +987,7 @@ import { atob, btoa } from "../libs/AtobBtoa.js"; ); } - if (supportsArrayBuffer() && !(imageData instanceof Uint8Array)) { + if (!(imageData instanceof Uint8Array)) { imageData = binaryStringToUint8Array(imageData); } diff --git a/src/modules/png_support.js b/src/modules/png_support.js index a09c0b251..a687e8d33 100644 --- a/src/modules/png_support.js +++ b/src/modules/png_support.js @@ -26,37 +26,125 @@ import { jsPDF } from "../jspdf.js"; import { zlibSync } from "../libs/fflate.js"; -import { PNG } from "../libs/png.js"; +import { decode as decodePng } from "../libs/fast-png.js"; -/** - * jsPDF PNG PlugIn - * @name png_support - * @module - */ -(function(jsPDFAPI) { - "use strict"; +/* + * @see http://www.w3.org/TR/PNG-Chunks.html + * + Color Allowed Interpretation + Type Bit Depths - /* - * @see http://www.w3.org/TR/PNG-Chunks.html - * - Color Allowed Interpretation - Type Bit Depths + 0 1,2,4,8,16 Each pixel is a grayscale sample. - 0 1,2,4,8,16 Each pixel is a grayscale sample. + 2 8,16 Each pixel is an R,G,B triple. - 2 8,16 Each pixel is an R,G,B triple. + 3 1,2,4,8 Each pixel is a palette index; + a PLTE chunk must appear. - 3 1,2,4,8 Each pixel is a palette index; - a PLTE chunk must appear. + 4 8,16 Each pixel is a grayscale sample, + followed by an alpha sample. - 4 8,16 Each pixel is a grayscale sample, - followed by an alpha sample. + 6 8,16 Each pixel is an R,G,B triple, + followed by an alpha sample. +*/ - 6 8,16 Each pixel is an R,G,B triple, - followed by an alpha sample. - */ +/* + * @name processPNG + * Entry point: process a PNG and return image dict and metadata for jsPDF + */ +jsPDF.API.processPNG = function(imageData, index, alias, compression) { + if (this.__addimage__.isArrayBuffer(imageData)) { + imageData = new Uint8Array(imageData); + } + if (!this.__addimage__.isArrayBufferView(imageData)) { + return; + } + + const decodedPng = decodePng(imageData, { checkCrc: true }); + const { + width, + height, + channels, + palette: decodedPalette, + depth: bitsPerComponent + } = decodedPng; + + let result; + if (decodedPalette && channels === 1) { + result = processIndexedPNG(decodedPng); + } else if (channels === 2 || channels === 4) { + result = processAlphaPNG(decodedPng); + } else { + result = processOpaquePNG(decodedPng); + } + + const { + colorSpace, + colorsPerPixel, + colorBytes, + alphaBytes, + needSMask, + palette, + mask + } = result; + + let predictor = null; + + let filter, decodeParameters, sMask; + if (canCompress(compression)) { + predictor = getPredictorFromCompression(compression); + filter = this.decode.FLATE_DECODE; + decodeParameters = `/Predictor ${predictor} `; + imageData = compressBytes( + colorBytes, + width * colorsPerPixel, + colorsPerPixel, + compression + ); + if (needSMask) { + sMask = compressBytes(alphaBytes, width, 1, compression); + } + } else { + filter = undefined; + decodeParameters = ""; + imageData = colorBytes; + if (needSMask) sMask = alphaBytes; + } + + decodeParameters += `/Colors ${colorsPerPixel} /BitsPerComponent ${bitsPerComponent} /Columns ${width}`; + + if ( + this.__addimage__.isArrayBuffer(imageData) || + this.__addimage__.isArrayBufferView(imageData) + ) { + imageData = this.__addimage__.arrayBufferToBinaryString(imageData); + } - /* + if ( + (sMask && this.__addimage__.isArrayBuffer(sMask)) || + this.__addimage__.isArrayBufferView(sMask) + ) { + sMask = this.__addimage__.arrayBufferToBinaryString(sMask); + } + + return { + alias, + data: imageData, + index, + filter, + decodeParameters, + transparency: mask, + palette, + sMask, + predictor, + width, + height, + bitsPerComponent, + colorSpace + }; +}; + +/* * PNG filter method types * * @see http://www.w3.org/TR/PNG-Filters.html @@ -74,419 +162,339 @@ import { PNG } from "../libs/png.js"; 4 Paeth */ - var canCompress = function(value) { - return value !== jsPDFAPI.image_compression.NONE && hasCompressionJS(); - }; - - var hasCompressionJS = function() { - return typeof zlibSync === "function"; - }; - var compressBytes = function(bytes, lineLength, colorsPerPixel, compression) { - var level = 4; - var filter_method = filterUp; - - switch (compression) { - case jsPDFAPI.image_compression.FAST: - level = 1; - filter_method = filterSub; - break; - - case jsPDFAPI.image_compression.MEDIUM: - level = 6; - filter_method = filterAverage; - break; - - case jsPDFAPI.image_compression.SLOW: - level = 9; - filter_method = filterPaeth; - break; - } - - bytes = applyPngFilterMethod( - bytes, - lineLength, - colorsPerPixel, - filter_method - ); - var dat = zlibSync(bytes, { level: level }); - return jsPDFAPI.__addimage__.arrayBufferToBinaryString(dat); - }; - - var applyPngFilterMethod = function( +function canCompress(value) { + return value !== jsPDF.API.image_compression.NONE && hasCompressionJS(); +} + +function hasCompressionJS() { + return typeof zlibSync === "function"; +} +function compressBytes(bytes, lineLength, colorsPerPixel, compression) { + let level = 4; + let filter_method = filterUp; + + switch (compression) { + case jsPDF.API.image_compression.FAST: + level = 1; + filter_method = filterSub; + break; + + case jsPDF.API.image_compression.MEDIUM: + level = 6; + filter_method = filterAverage; + break; + + case jsPDF.API.image_compression.SLOW: + level = 9; + filter_method = filterPaeth; + break; + } + + bytes = applyPngFilterMethod( bytes, lineLength, colorsPerPixel, filter_method - ) { - var lines = bytes.length / lineLength, - result = new Uint8Array(bytes.length + lines), - filter_methods = getFilterMethods(), - line, - prevLine, - offset; - - for (var i = 0; i < lines; i += 1) { - offset = i * lineLength; - line = bytes.subarray(offset, offset + lineLength); - - if (filter_method) { - result.set(filter_method(line, colorsPerPixel, prevLine), offset + i); - } else { - var len = filter_methods.length, - results = []; - - for (var j; j < len; j += 1) { - results[j] = filter_methods[j](line, colorsPerPixel, prevLine); - } - - var ind = getIndexOfSmallestSum(results.concat()); - - result.set(results[ind], offset + i); + ); + const dat = zlibSync(bytes, { level: level }); + return jsPDF.API.__addimage__.arrayBufferToBinaryString(dat); +} + +function applyPngFilterMethod( + bytes, + lineLength, + colorsPerPixel, + filter_method +) { + const lines = bytes.length / lineLength; + const result = new Uint8Array(bytes.length + lines); + const filter_methods = getFilterMethods(); + let prevLine; + + for (let i = 0; i < lines; i += 1) { + const offset = i * lineLength; + const line = bytes.subarray(offset, offset + lineLength); + + if (filter_method) { + result.set(filter_method(line, colorsPerPixel, prevLine), offset + i); + } else { + const len = filter_methods.length; + const results = []; + + for (let j = 0; j < len; j += 1) { + results[j] = filter_methods[j](line, colorsPerPixel, prevLine); } - prevLine = line; - } - - return result; - }; - - var filterNone = function(line) { - /*var result = new Uint8Array(line.length + 1); - result[0] = 0; - result.set(line, 1);*/ - - var result = Array.apply([], line); - result.unshift(0); - - return result; - }; - - var filterSub = function(line, colorsPerPixel) { - var result = [], - len = line.length, - left; - - result[0] = 1; - - for (var i = 0; i < len; i += 1) { - left = line[i - colorsPerPixel] || 0; - result[i + 1] = (line[i] - left + 0x0100) & 0xff; - } - - return result; - }; - - var filterUp = function(line, colorsPerPixel, prevLine) { - var result = [], - len = line.length, - up; - - result[0] = 2; + const ind = getIndexOfSmallestSum(results.concat()); - for (var i = 0; i < len; i += 1) { - up = (prevLine && prevLine[i]) || 0; - result[i + 1] = (line[i] - up + 0x0100) & 0xff; + result.set(results[ind], offset + i); } - return result; - }; + prevLine = line; + } - var filterAverage = function(line, colorsPerPixel, prevLine) { - var result = [], - len = line.length, - left, - up; + return result; +} - result[0] = 3; +function filterNone(line) { + /*const result = new Uint8Array(line.length + 1); + result[0] = 0; + result.set(line, 1);*/ - for (var i = 0; i < len; i += 1) { - left = line[i - colorsPerPixel] || 0; - up = (prevLine && prevLine[i]) || 0; - result[i + 1] = (line[i] + 0x0100 - ((left + up) >>> 1)) & 0xff; + const result = Array.apply([], line); + result.unshift(0); + + return result; +} + +function filterSub(line, colorsPerPixel) { + const len = line.length; + const result = []; + + result[0] = 1; + + for (let i = 0; i < len; i += 1) { + const left = line[i - colorsPerPixel] || 0; + result[i + 1] = (line[i] - left + 0x0100) & 0xff; + } + + return result; +} + +function filterUp(line, colorsPerPixel, prevLine) { + const len = line.length; + const result = []; + + result[0] = 2; + + for (let i = 0; i < len; i += 1) { + const up = (prevLine && prevLine[i]) || 0; + result[i + 1] = (line[i] - up + 0x0100) & 0xff; + } + + return result; +} + +function filterAverage(line, colorsPerPixel, prevLine) { + const len = line.length; + const result = []; + + result[0] = 3; + + for (let i = 0; i < len; i += 1) { + const left = line[i - colorsPerPixel] || 0; + const up = (prevLine && prevLine[i]) || 0; + result[i + 1] = (line[i] + 0x0100 - ((left + up) >>> 1)) & 0xff; + } + + return result; +} + +function filterPaeth(line, colorsPerPixel, prevLine) { + const len = line.length; + const result = []; + + result[0] = 4; + + for (let i = 0; i < len; i += 1) { + const left = line[i - colorsPerPixel] || 0; + const up = (prevLine && prevLine[i]) || 0; + const upLeft = (prevLine && prevLine[i - colorsPerPixel]) || 0; + const paeth = paethPredictor(left, up, upLeft); + result[i + 1] = (line[i] - paeth + 0x0100) & 0xff; + } + + return result; +} + +function paethPredictor(left, up, upLeft) { + if (left === up && up === upLeft) { + return left; + } + const pLeft = Math.abs(up - upLeft), + pUp = Math.abs(left - upLeft), + pUpLeft = Math.abs(left + up - upLeft - upLeft); + return pLeft <= pUp && pLeft <= pUpLeft ? left : pUp <= pUpLeft ? up : upLeft; +} + +function getFilterMethods() { + return [filterNone, filterSub, filterUp, filterAverage, filterPaeth]; +} + +function getIndexOfSmallestSum(arrays) { + const sum = arrays.map(function(value) { + return value.reduce(function(pv, cv) { + return pv + Math.abs(cv); + }, 0); + }); + return sum.indexOf(Math.min.apply(null, sum)); +} + +function getPredictorFromCompression(compression) { + let predictor; + switch (compression) { + case jsPDF.API.image_compression.FAST: + predictor = 11; + break; + + case jsPDF.API.image_compression.MEDIUM: + predictor = 13; + break; + + case jsPDF.API.image_compression.SLOW: + predictor = 14; + break; + + default: + predictor = 12; + break; + } + return predictor; +} + +// Extracted helper for Indexed PNGs (palette-based) +function processIndexedPNG(decodedPng) { + const { width, height, data, palette: decodedPalette, depth } = decodedPng; + let needSMask = false; + let palette = []; + let mask = []; + let alphaBytes = undefined; + let hasSemiTransparency = false; + + const maxMaskLength = 1; + let maskLength = 0; + + for (let i = 0; i < decodedPalette.length; i++) { + const [r, g, b, a] = decodedPalette[i]; + palette.push(r, g, b); + if (a != null) { + if (a === 0) { + maskLength++; + if (mask.length < maxMaskLength) { + mask.push(i); + } + } else if (a < 255) { + hasSemiTransparency = true; + } } - - return result; - }; - - var filterPaeth = function(line, colorsPerPixel, prevLine) { - var result = [], - len = line.length, - left, - up, - upLeft, - paeth; - - result[0] = 4; - - for (var i = 0; i < len; i += 1) { - left = line[i - colorsPerPixel] || 0; - up = (prevLine && prevLine[i]) || 0; - upLeft = (prevLine && prevLine[i - colorsPerPixel]) || 0; - paeth = paethPredictor(left, up, upLeft); - result[i + 1] = (line[i] - paeth + 0x0100) & 0xff; + } + + if (hasSemiTransparency || maskLength > maxMaskLength) { + needSMask = true; + mask = undefined; + + const totalPixels = width * height; + alphaBytes = new Uint8Array(totalPixels); + const dataView = new DataView(data.buffer); + for (let p = 0; p < totalPixels; p++) { + const paletteIndex = readSample(dataView, p, depth); + const [, , , alpha] = decodedPalette[paletteIndex]; + alphaBytes[p] = alpha; } - - return result; + } + + return { + colorSpace: "Indexed", + colorsPerPixel: 1, + colorBytes: data, + alphaBytes, + needSMask, + palette, + mask }; +} - var paethPredictor = function(left, up, upLeft) { - if (left === up && up === upLeft) { - return left; +/* + * Splits color and alpha values into separate buffers + */ +function processAlphaPNG(decodedPng) { + const { data, width, height, channels, depth } = decodedPng; + + const colorSpace = channels === 2 ? "DeviceGray" : "DeviceRGB"; + const colorsPerPixel = channels - 1; + + const totalPixels = width * height; + const colorChannels = colorsPerPixel; // 1 for Gray, 3 for RGB + const alphaChannels = 1; + const totalColorSamples = totalPixels * colorChannels; + const totalAlphaSamples = totalPixels * alphaChannels; + + const colorByteLen = Math.ceil((totalColorSamples * depth) / 8); + const alphaByteLen = Math.ceil((totalAlphaSamples * depth) / 8); + const colorBytes = new Uint8Array(colorByteLen); + const alphaBytes = new Uint8Array(alphaByteLen); + + const dataView = new DataView(data.buffer); + const colorView = new DataView(colorBytes.buffer); + const alphaView = new DataView(alphaBytes.buffer); + + let needSMask = false; + for (let p = 0; p < totalPixels; p++) { + const pixelStartIndex = p * channels; + for (let s = 0; s < colorChannels; s++) { + const sampleIndex = pixelStartIndex + s; + const colorValue = readSample(dataView, sampleIndex, depth); + writeSample(colorView, colorValue, p * colorChannels + s, depth); } - var pLeft = Math.abs(up - upLeft), - pUp = Math.abs(left - upLeft), - pUpLeft = Math.abs(left + up - upLeft - upLeft); - return pLeft <= pUp && pLeft <= pUpLeft - ? left - : pUp <= pUpLeft - ? up - : upLeft; - }; - - var getFilterMethods = function() { - return [filterNone, filterSub, filterUp, filterAverage, filterPaeth]; - }; - - var getIndexOfSmallestSum = function(arrays) { - var sum = arrays.map(function(value) { - return value.reduce(function(pv, cv) { - return pv + Math.abs(cv); - }, 0); - }); - return sum.indexOf(Math.min.apply(null, sum)); - }; - - var getPredictorFromCompression = function(compression) { - var predictor; - switch (compression) { - case jsPDFAPI.image_compression.FAST: - predictor = 11; - break; - - case jsPDFAPI.image_compression.MEDIUM: - predictor = 13; - break; - - case jsPDFAPI.image_compression.SLOW: - predictor = 14; - break; - - default: - predictor = 12; - break; + const sampleIndex = pixelStartIndex + colorChannels; + const alphaValue = readSample(dataView, sampleIndex, depth); + if (alphaValue < (1 << depth) - 1) { + needSMask = true; } - return predictor; - }; - - /** - * @name processPNG - * @function - * @ignore - */ - jsPDFAPI.processPNG = function(imageData, index, alias, compression) { - "use strict"; - - var colorSpace, - filter = this.decode.FLATE_DECODE, - bitsPerComponent, - image, - decodeParameters = "", - trns, - colors, - pal, - smask, - pixels, - len, - alphaData, - imgData, - hasColors, - pixel, - i, - n; - - if (this.__addimage__.isArrayBuffer(imageData)) - imageData = new Uint8Array(imageData); - - if (this.__addimage__.isArrayBufferView(imageData)) { - image = new PNG(imageData); - imageData = image.imgData; - bitsPerComponent = image.bits; - colorSpace = image.colorSpace; - colors = image.colors; - - /* - * colorType 6 - Each pixel is an R,G,B triple, followed by an alpha sample. - * - * colorType 4 - Each pixel is a grayscale sample, followed by an alpha sample. - * - * Extract alpha to create two separate images, using the alpha as a sMask - */ - if ([4, 6].indexOf(image.colorType) !== -1) { - /* - * processes 8 bit RGBA and grayscale + alpha images - */ - if (image.bits === 8) { - pixels = - image.pixelBitlength == 32 - ? new Uint32Array(image.decodePixels().buffer) - : image.pixelBitlength == 16 - ? new Uint16Array(image.decodePixels().buffer) - : new Uint8Array(image.decodePixels().buffer); - len = pixels.length; - imgData = new Uint8Array(len * image.colors); - alphaData = new Uint8Array(len); - var pDiff = image.pixelBitlength - image.bits; - i = 0; - n = 0; - var pbl; - - for (; i < len; i++) { - pixel = pixels[i]; - pbl = 0; - - while (pbl < pDiff) { - imgData[n++] = (pixel >>> pbl) & 0xff; - pbl = pbl + image.bits; - } - - alphaData[i] = (pixel >>> pbl) & 0xff; - } - } - - /* - * processes 16 bit RGBA and grayscale + alpha images - */ - if (image.bits === 16) { - pixels = new Uint32Array(image.decodePixels().buffer); - len = pixels.length; - imgData = new Uint8Array( - len * (32 / image.pixelBitlength) * image.colors - ); - alphaData = new Uint8Array(len * (32 / image.pixelBitlength)); - hasColors = image.colors > 1; - i = 0; - n = 0; - var a = 0; - - while (i < len) { - pixel = pixels[i++]; - - imgData[n++] = (pixel >>> 0) & 0xff; - - if (hasColors) { - imgData[n++] = (pixel >>> 16) & 0xff; - - pixel = pixels[i++]; - imgData[n++] = (pixel >>> 0) & 0xff; - } - - alphaData[a++] = (pixel >>> 16) & 0xff; - } - bitsPerComponent = 8; - } - - if (canCompress(compression)) { - imageData = compressBytes( - imgData, - image.width * image.colors, - image.colors, - compression - ); - smask = compressBytes(alphaData, image.width, 1, compression); - } else { - imageData = imgData; - smask = alphaData; - filter = undefined; - } - } - - /* - * Indexed png. Each pixel is a palette index. - */ - if (image.colorType === 3) { - colorSpace = this.color_spaces.INDEXED; - pal = image.palette; - - if (image.transparency.indexed) { - var trans = image.transparency.indexed; - var total = 0; - i = 0; - len = trans.length; - - for (; i < len; ++i) { - total += trans[i]; - } - - total = total / 255; - - /* - * a single color is specified as 100% transparent (0), - * so we set trns to use a /Mask with that index - */ - if (total === len - 1 && trans.indexOf(0) !== -1) { - trns = [trans.indexOf(0)]; - - /* - * there's more than one colour within the palette that specifies - * a transparency value less than 255, so we unroll the pixels to create an image sMask - */ - } else if (total !== len) { - pixels = image.decodePixels(); - alphaData = new Uint8Array(pixels.length); - i = 0; - len = pixels.length; - - for (; i < len; i++) { - alphaData[i] = trans[pixels[i]]; - } - - smask = compressBytes(alphaData, image.width, 1); - } - } - } - - var predictor = getPredictorFromCompression(compression); - - if (filter === this.decode.FLATE_DECODE) { - decodeParameters = "/Predictor " + predictor + " "; - } - decodeParameters += - "/Colors " + - colors + - " /BitsPerComponent " + - bitsPerComponent + - " /Columns " + - image.width; - - if ( - this.__addimage__.isArrayBuffer(imageData) || - this.__addimage__.isArrayBufferView(imageData) - ) { - imageData = this.__addimage__.arrayBufferToBinaryString(imageData); - } - - if ( - (smask && this.__addimage__.isArrayBuffer(smask)) || - this.__addimage__.isArrayBufferView(smask) - ) { - smask = this.__addimage__.arrayBufferToBinaryString(smask); - } + writeSample(alphaView, alphaValue, p * alphaChannels, depth); + } - return { - alias: alias, - data: imageData, - index: index, - filter: filter, - decodeParameters: decodeParameters, - transparency: trns, - palette: pal, - sMask: smask, - predictor: predictor, - width: image.width, - height: image.height, - bitsPerComponent: bitsPerComponent, - colorSpace: colorSpace - }; - } + return { + colorSpace, + colorsPerPixel, + colorBytes, + alphaBytes, + needSMask }; -})(jsPDF.API); +} + +function processOpaquePNG(decodedPng) { + const { data, channels } = decodedPng; + const colorSpace = channels === 1 ? "DeviceGray" : "DeviceRGB"; + const colorsPerPixel = colorSpace === "DeviceGray" ? 1 : 3; + const colorBytes = + data instanceof Uint8Array ? data : new Uint8Array(data.buffer); + return { colorSpace, colorsPerPixel, colorBytes, needSMask: false }; +} + +function readSample(view, sampleIndex, depth) { + const bitIndex = sampleIndex * depth; + const byteIndex = Math.floor(bitIndex / 8); + const bitOffset = 16 - (bitIndex - byteIndex * 8 + depth); + const bitMask = (1 << depth) - 1; + const word = safeGetUint16(view, byteIndex); + return (word >> bitOffset) & bitMask; +} + +function writeSample(view, value, sampleIndex, depth) { + const bitIndex = sampleIndex * depth; + const byteIndex = Math.floor(bitIndex / 8); + const bitOffset = 16 - (bitIndex - byteIndex * 8 + depth); + const bitMask = (1 << depth) - 1; + const writeValue = (value & bitMask) << bitOffset; + const word = + safeGetUint16(view, byteIndex) & ~(bitMask << bitOffset) & 0xffff; + safeSetUint16(view, byteIndex, word | writeValue); +} + +function safeGetUint16(view, byteIndex) { + if (byteIndex + 1 < view.byteLength) { + return view.getUint16(byteIndex, false); + } + const b0 = view.getUint8(byteIndex); + return b0 << 8; +} + +function safeSetUint16(view, byteIndex, value) { + if (byteIndex + 1 < view.byteLength) { + view.setUint16(byteIndex, value, false); + return; + } + const byteToWrite = (value >> 8) & 0xff; + view.setUint8(byteIndex, byteToWrite); +} diff --git a/test/deployment/node/loadGlobals.js b/test/deployment/node/loadGlobals.js index 2e6f875ff..065eee156 100644 --- a/test/deployment/node/loadGlobals.js +++ b/test/deployment/node/loadGlobals.js @@ -1,8 +1,6 @@ /* eslint-disable no-unused-vars */ global.loadGlobals = function() { - global.btoa = require("btoa"); // used in some specs - global.Canvg = require("canvg").Canvg; const jsPDF = require("../../../dist/jspdf.node.js"); global.jsPDF = jsPDF.jsPDF; diff --git a/test/reference/colortype_1_grayscale_16_bit_png.pdf b/test/reference/colortype_1_grayscale_16_bit_png.pdf new file mode 100644 index 000000000..9cf556b60 Binary files /dev/null and b/test/reference/colortype_1_grayscale_16_bit_png.pdf differ diff --git a/test/reference/colortype_1_grayscale_8_bit_png.pdf b/test/reference/colortype_1_grayscale_8_bit_png.pdf deleted file mode 100644 index f40319f65..000000000 Binary files a/test/reference/colortype_1_grayscale_8_bit_png.pdf and /dev/null differ diff --git a/test/reference/colortype_2_rgb_16_bit_png.pdf b/test/reference/colortype_2_rgb_16_bit_png.pdf index 34839d70e..264e1ca79 100644 Binary files a/test/reference/colortype_2_rgb_16_bit_png.pdf and b/test/reference/colortype_2_rgb_16_bit_png.pdf differ diff --git a/test/reference/colortype_2_rgb_8_bit_png.pdf b/test/reference/colortype_2_rgb_8_bit_png.pdf index 766a64c7e..b0438f07a 100644 Binary files a/test/reference/colortype_2_rgb_8_bit_png.pdf and b/test/reference/colortype_2_rgb_8_bit_png.pdf differ diff --git a/test/reference/colortype_3_indexed_multi_colour_alpha_4_bit_png.pdf b/test/reference/colortype_3_indexed_multi_colour_alpha_4_bit_png.pdf index bcf7d72b5..1890c1285 100644 Binary files a/test/reference/colortype_3_indexed_multi_colour_alpha_4_bit_png.pdf and b/test/reference/colortype_3_indexed_multi_colour_alpha_4_bit_png.pdf differ diff --git a/test/reference/colortype_3_indexed_multi_colour_alpha_8_bit_png.pdf b/test/reference/colortype_3_indexed_multi_colour_alpha_8_bit_png.pdf index a19482c37..d14d0d9aa 100644 Binary files a/test/reference/colortype_3_indexed_multi_colour_alpha_8_bit_png.pdf and b/test/reference/colortype_3_indexed_multi_colour_alpha_8_bit_png.pdf differ diff --git a/test/reference/colortype_3_indexed_single_colour_alpha_4_bit_png.pdf b/test/reference/colortype_3_indexed_single_colour_alpha_4_bit_png.pdf index 553a77eaf..271f39fc5 100644 Binary files a/test/reference/colortype_3_indexed_single_colour_alpha_4_bit_png.pdf and b/test/reference/colortype_3_indexed_single_colour_alpha_4_bit_png.pdf differ diff --git a/test/reference/colortype_3_indexed_single_colour_alpha_8_bit_png.pdf b/test/reference/colortype_3_indexed_single_colour_alpha_8_bit_png.pdf index 20976797b..b2a446ab1 100644 Binary files a/test/reference/colortype_3_indexed_single_colour_alpha_8_bit_png.pdf and b/test/reference/colortype_3_indexed_single_colour_alpha_8_bit_png.pdf differ diff --git a/test/reference/colortype_4_grayscale_alpha_16_bit_png.pdf b/test/reference/colortype_4_grayscale_alpha_16_bit_png.pdf index 5019c5599..e21fbcc73 100644 Binary files a/test/reference/colortype_4_grayscale_alpha_16_bit_png.pdf and b/test/reference/colortype_4_grayscale_alpha_16_bit_png.pdf differ diff --git a/test/reference/colortype_4_grayscale_alpha_8_bit_png.pdf b/test/reference/colortype_4_grayscale_alpha_8_bit_png.pdf index 5019c5599..36ef7dd2e 100644 Binary files a/test/reference/colortype_4_grayscale_alpha_8_bit_png.pdf and b/test/reference/colortype_4_grayscale_alpha_8_bit_png.pdf differ diff --git a/test/reference/colortype_6_rgba_16_bit_png.pdf b/test/reference/colortype_6_rgba_16_bit_png.pdf index d164b4186..43a582ed8 100644 Binary files a/test/reference/colortype_6_rgba_16_bit_png.pdf and b/test/reference/colortype_6_rgba_16_bit_png.pdf differ diff --git a/test/reference/colortype_6_rgba_8_bit_png.pdf b/test/reference/colortype_6_rgba_8_bit_png.pdf index b21e4a148..a69cf92c6 100644 Binary files a/test/reference/colortype_6_rgba_8_bit_png.pdf and b/test/reference/colortype_6_rgba_8_bit_png.pdf differ diff --git a/test/reference/colortype_6_rgba_8_bit_png_NONE.pdf b/test/reference/colortype_6_rgba_8_bit_png_NONE.pdf index 353250807..95a3bce7e 100644 Binary files a/test/reference/colortype_6_rgba_8_bit_png_NONE.pdf and b/test/reference/colortype_6_rgba_8_bit_png_NONE.pdf differ diff --git a/test/reference/encrypted_withImage.pdf b/test/reference/encrypted_withImage.pdf index bd7865e7e..9afd38fba 100644 Binary files a/test/reference/encrypted_withImage.pdf and b/test/reference/encrypted_withImage.pdf differ diff --git a/test/reference/html-margin-page-break-image.pdf b/test/reference/html-margin-page-break-image.pdf index d919864c3..e2fb02128 100644 Binary files a/test/reference/html-margin-page-break-image.pdf and b/test/reference/html-margin-page-break-image.pdf differ diff --git a/test/specs/Uint8Array.spec.js b/test/specs/Uint8Array.spec.js index dc7ec3718..ca04fd007 100644 --- a/test/specs/Uint8Array.spec.js +++ b/test/specs/Uint8Array.spec.js @@ -5,9 +5,6 @@ describe("Module: addimage Uint8Array", () => { beforeAll(loadGlobals); - if (typeof global !== "undefined" && global.isNode == true) { - eval("var atob = require('atob')"); - } function convertDataURIToArrayBuffer(dataURI) { var BASE64_MARKER = ";base64,"; var base64Index = dataURI.indexOf(BASE64_MARKER) + BASE64_MARKER.length; diff --git a/test/specs/png.spec.js b/test/specs/png.spec.js index ca28c3f63..10da65df3 100644 --- a/test/specs/png.spec.js +++ b/test/specs/png.spec.js @@ -297,7 +297,7 @@ describe("Module: PNGSupport", () => { ); }); - xit("colortype_3_indexed_multi_colour_alpha_4_bit_png", () => { + it("colortype_3_indexed_multi_colour_alpha_4_bit_png", () => { var colortype_3_indexed_multi_colour_alpha_4_bit_png = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAMFBMVEUAAAD///8AAAD///8AAAD///8AAAD///8AAAD///8AAAD///8AAAD///8AAAD///809TMSAAAAEHRSTlP//8DAoKCAgGBgQEAgIAAATXQTkgAAAJtJREFUCB0BkABv/wAAAAAAAAAAAAAAERERERERAAAjIzMzMzMyMgAjMjMzMzMjMgBFVUVVVVRVVABFVVRVVUVVVABnd3dndnd3dgBnd3d2Z3d3dgCJmZmYiZmZmACJmZmJmJmZmACru7q7u6u7ugCru6u7u7q7ugDN3N3d3d3N3ADNzd3d3d3c3ADu////////7gDu7u7u7u7u7gXuQRWvTQmUAAAAAElFTkSuQmCC"; const doc = new jsPDF({ @@ -371,8 +371,8 @@ describe("Module: PNGSupport", () => { comparePdf(doc.output(), "colortype_2_rgb_16_bit_png.pdf", "addimage"); }); - it("colortype_1_grayscale_8_bit_png", () => { - var colortype_1_grayscale_8_bit_png = + it("colortype_1_grayscale_16_bit_png", () => { + var colortype_1_grayscale_16_bit_png = "data:image/png;base64,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"; const doc = new jsPDF({ orientation: "p", @@ -381,7 +381,7 @@ describe("Module: PNGSupport", () => { floatPrecision: 2 }); doc.addImage( - colortype_1_grayscale_8_bit_png, + colortype_1_grayscale_16_bit_png, "PNG", 100, 200, @@ -391,6 +391,10 @@ describe("Module: PNGSupport", () => { undefined ); - comparePdf(doc.output(), "colortype_1_grayscale_8_bit_png.pdf", "addimage"); + comparePdf( + doc.output(), + "colortype_1_grayscale_16_bit_png.pdf", + "addimage" + ); }); }); diff --git a/test/unit/karma.conf.js b/test/unit/karma.conf.js index 1843a17e7..c85759810 100644 --- a/test/unit/karma.conf.js +++ b/test/unit/karma.conf.js @@ -37,7 +37,8 @@ module.exports = config => { } ], preprocessors: { - "src/libs/fflate.js": ["rollup"] + "src/libs/fflate.js": ["rollup"], + "src/libs/fast-png.js": ["rollup"] }, rollupPreprocessor: { @@ -48,7 +49,7 @@ module.exports = config => { } }, - browsers: ["Chrome", "Firefox"], + browsers: ["ChromeHeadless"], // test results reporter to use // possible values: 'dots', 'progress' // available reporters: https://npmjs.org/browse/keyword/karma-reporter